Muse Wonder Rate Limits: 3,000 RPM, 4M TPM, Shared by Your Whole Team

Muse Wonder API limits: 3,000 requests and 4M tokens per minute per team, no tiers. How a 1M context eats TPM, headers, backoff, and testing the 429 path.

INEZA Felin-Michel

INEZA Felin-Michel

15 October 2026

Muse Wonder Rate Limits: 3,000 RPM, 4M TPM, Shared by Your Whole Team

Apidog for Enterprise

On-Premises Deploy

SSO & RBAC

SOC 2 Compliant

Explore Apidog Enterprise

Muse Wonder’s rate limits on the Meta Model API are 3,000 requests per minute and 4,000,000 tokens per minute. Both apply per model and per team, not per API key: every key your organization creates draws from the same pool. Background responses get a separate allowance of 600 new submissions per minute. There are no published usage tiers and no documented way to request more. When you exceed a limit you get HTTP 429, and Meta’s guidance is exponential backoff with jitter starting around 500 ms, honoring Retry-After when present.

Those four facts decide how you architect anything that calls muse-wonder-1.0 at scale. This post covers what the limits mean in practice, how a 1M-token context eats a 4M TPM budget, how to read the headers, how to build and test the retry path, and what to do when 3,000 RPM is not enough. For the API basics, start with the Muse Wonder API guide.

button

The limits

Limit Value Scope
Requests per minute 3,000 Per team, per model
Tokens per minute 4,000,000 Per team, per model
Background submissions 600 per minute Per team, on top of the above
Context window 1,048,576 tokens Per request
Usage tiers None published
Limit increases No documented process

The same 3,000 / 4M figures apply to Muse Spark 1.3; the Contributor variant of Spark is capped lower at 150 RPM and 3M TPM. Each model has its own pool, so heavy Wonder traffic does not starve a Spark lane and vice versa. Meta’s injected steering context is not counted against TPM and does not appear in usage.

Tokens run out before requests do

At 4M tokens per minute, the request limit is rarely the binding one for an agent. Three illustrations:

Workload Tokens per request Requests per minute before TPM binds
Short chat turns 3,000 1,333
Document review 50,000 80
Long agent turn, 400K context 400,000 10
Full-window request 1,000,000 4

A team running a handful of agents with large contexts can hit 4M TPM with a dozen concurrent requests. Cached input still counts toward TPM; the cache discount is a billing discount, not a rate-limit one. Reasoning tokens count toward your max_output_tokens and your bill, and output tokens count toward TPM too.

The practical consequence: budget TPM by context size, not by request count. An agent that resends a 300K-token conversation every turn is a 300K-token request each time, and ten such agents stepping once per minute consume three quarters of the team’s allowance.

Plan concurrency from the numbers

The capacity math is one line: concurrent agents, times tokens per turn, times turns per minute, must stay under 4,000,000. Work it for your heaviest lane before you deploy.

Agents Tokens per turn Turns per minute each TPM needed Headroom
4 150,000 2 1,200,000 70%
8 250,000 1 2,000,000 50%
12 300,000 1 3,600,000 10%
20 300,000 1 6,000,000 over the limit

Leave at least 40% headroom. Agent turns are bursty, a retry storm after a transient error doubles demand for a minute, and anyone else on the team is drawing from the same pool. The third row looks fine on paper and fails in practice the first time two agents retry at once.

Two levers shrink the left side of the equation. Compaction keeps tokens per turn from growing without bound: summarize or drop old tool results once a run passes a threshold, as the context window post describes. And stateless encrypted replay on the Responses API lets you control exactly what you resend, where server-managed history with previous_response_id resends everything.

One pool for every key

Meta scopes limits per team. A key for staging, a key for production and a key for a teammate’s laptop all draw from the same 3,000 / 4M. This has two consequences.

First, a load test from one developer can throttle production. Isolate experiments in time, or in a separate team if your organization allows it. Second, per-key monitoring will not show you the whole picture. Aggregate x-ratelimit-* headers across every caller, or you will see 429s on a key that appears to be well under its limit.

Read the headers

Token-based responses carry x-ratelimit-* headers. Log them on every call. The pattern that matters is remaining capacity trending toward zero across all callers within a minute, which is your signal to slow down before the 429 arrives. Transcription responses do not carry these headers; Wonder’s do.

When a 429 does arrive, Meta’s docs are specific: back off exponentially with jitter starting around 500 ms, and if Retry-After is present, wait at least that long. A retry loop that ignores Retry-After and hammers at a fixed interval makes the outage longer for everyone on your team.

Build the retry path

import random, time
from openai import OpenAI, RateLimitError

client = OpenAI(base_url="https://api.meta.ai/v1", api_key=os.environ["MODEL_API_KEY"])

def call(input_text, attempts=6):
    delay = 0.5
    for i in range(attempts):
        try:
            return client.responses.create(model="muse-wonder-1.0", input=input_text,
                                           reasoning={"effort": "medium"}, max_output_tokens=4096)
        except RateLimitError as e:
            retry_after = e.response.headers.get("retry-after")
            wait = float(retry_after) if retry_after else delay + random.uniform(0, delay)
            time.sleep(wait)
            delay = min(delay * 2, 30)
    raise RuntimeError("rate limited after retries")

Three design points. Cap the backoff so a long outage does not turn into a 20-minute sleep. Keep retries idempotent: a Responses call that creates nothing on your side is safe to repeat, but if your agent’s tool calls have side effects, retry the model call, not the tool. And surface retries in your traces so you can tell a slow model from a throttled one; the tool-call tracing guide covers what to log.

Use background responses for the long tail

Long jobs do not need to hold a connection. background: true queues the response, returns "status": "queued", and lets you poll GET /v1/responses/{id}?stream=true for lifecycle events. Background submissions have their own 600-per-minute allowance in addition to the main limits, so moving batch-style work there frees RPM for interactive traffic. Constraints: no stream: true on the POST, a 1 MiB body cap, and you cancel with POST /v1/responses/{id}/cancel.

When 3,000 RPM is not enough

Meta publishes no tier ladder and no form for raising limits. Your options today:

Test the limit handling in Apidog

Do not discover your retry bugs at 3,001 requests. In Apidog:

  1. Build the Responses request with MODEL_API_KEY as a secret variable, and add a post-processor that reads the x-ratelimit-* headers into environment variables so a scenario can assert remaining capacity never drops below a floor.
  2. Create a mock of /v1/responses with a mock expectation that returns 429 and a Retry-After: 2 header when a request carries a header such as X-Test-Scenario: throttle. Point your client at the mock and assert that it waits at least two seconds and succeeds on the next attempt.
  3. Run a performance test that ramps request volume against the mock to confirm your limiter engages before the API would.
  4. Put the scenario in CI with the Apidog CLI so a change to the retry code cannot ship without passing it.

Download Apidog to set up the mock and the assertions in one project.

Frequently asked questions

Are Muse Wonder rate limits per key or per account? Per team. All keys in a team share one 3,000 RPM / 4M TPM pool per model.

Does cached input count toward TPM? Yes. Caching lowers the price of those tokens, not their weight against the per-minute token limit.

Can I request a higher limit? Meta’s pricing and rate-limits page lists no tiers and no process. Check the page for changes; frontier launches often add tiers within weeks.

What status code and headers do I get? HTTP 429, optionally with Retry-After, plus x-ratelimit-* headers on token-based responses.

Next step

Measure the tokens per request of your heaviest agent turn, multiply by concurrency, and compare it with 4,000,000. If the answer is close, build the limiter and the mock test this week, before the team shares the pool with production.

Explore more

Is Gemini 4 Argon Free?

Is Gemini 4 Argon Free?

Gemini 4 Argon has no free tier. Since its October 13 GA, every route is paid: the Gemini API paid tier ($2/$10 per 1M through Nov 30), the Gemini app on AI Pro or Ultra, Antigravity on Ultra. Here's each route and the free Gemini to build on.

15 October 2026

Gemini 4 Argon is OUT

Gemini 4 Argon is OUT

Gemini 4 Argon was released to developers on October 13, 2026, two weeks after a Fairwind-only announcement. Here's the full timeline, who has it by channel (API, Gemini app, Search, Antigravity), and what changes on December 1.

15 October 2026

Muse Wonder vs Claude Opus 5.5: Same Price, Different Jobs

Muse Wonder vs Claude Opus 5.5: Same Price, Different Jobs

Muse Wonder and Claude Opus 5.5 both cost $4/$20. Benchmarks row by row (Opus 58 vs 52, Wonder wins SWE-Marathon), cost per task, and which job each gets.

15 October 2026

Practice API Design-first in Apidog

Discover an easier way to build and use APIs

Muse Wonder Rate Limits: 3,000 RPM, 4M TPM, Shared by Your Whole Team