Teams error 429 Throttled: Throttled - too many requests
Last verified against Microsoft Learn - Status codes from bot conversational APIs
Too many requests.What error 429 Throttled means
You exceeded a rate limit and the platform is pushing back. The status table documents 429 as code Throttled, message "Too many requests" (noting it "also returns when to retry after"), with retry Yes: "Retry using Retry-After header to determine backoff time." The rate-limit guide adds that "all requests are subject to the same rate limiting policy, including sending messages, channel enumerations, and roster fetches," and warns that "the exact values of rate limits are subject to change," so backoff behavior - not constant tuning - is the required response.
Three separate budgets can throttle you. The per-bot-per-thread limit caps what your bot does in one conversation: for send-to-conversation, 7 operations per second, 8 per 2 seconds, 60 per 30 seconds, and 1,800 per hour (the 3,600-second/1,800-operation window "applies only if multiple agent messages are sent to a single user"). The all-bots-per-thread limit shares a conversation across every installed bot: 14 sends per second, 16 per 2 seconds. And the global ceiling is "50 Requests Per Second (RPS) per app per tenant." Roster and conversation reads have their own, higher windows - the full tables are quoted in Teams rate limits.
Microsoft's docs also flag a subtle inflation source: "Message splitting at the service level results in higher than expected RPS" - a long message the service splits counts more than once against your budget. Broadcast scenarios rarely hit per-thread limits (one message per user is one thread each) but hit the 50 RPS tenant ceiling readily.
What it looks like
HTTP/1.1 429 Too Many Requests
Retry-After: 8
{
"error": {
"code": "Throttled",
"message": "Too many requests."
}
}Why it happens
- A notification fan-out sends to many conversations faster than 50 requests per second within one tenant.
- A chatty flow posts several messages per second into a single conversation (over 7/second or 60/30 seconds).
- Roster fetches (get conversation members) run in a tight loop during startup or sync jobs.
- Retries without backoff multiply traffic exactly when the platform asks for less.
- Long messages split by the service count as multiple operations against the same budgets.
How to fix Teams error 429 Throttled
- 1Honor Retry-After: sleep the indicated seconds before retrying that conversation, as the documented strategy says.
- 2Where the header is absent, apply exponential backoff with random jitter (the docs recommend jitter to avoid retry collisions), scoped per thread ID.
- 3In C#, catch HttpOperationException / ErrorResponseException and check for status 429, wiring the SDK call through a retry policy - the rate-limit guide ships a worked BotSdkTransientExceptionDetectionStrategy example.
- 4Batch: replace bursts of small messages into one conversation with a single consolidated message or card.
- 5Smooth broadcasts with a queue and a token bucket capped safely below 50 RPS per tenant.
How to stop it recurring
Rate limiting is a design constraint, not an error condition: build every fan-out on a queue with per-tenant and per-thread pacing, and treat 429 volume as an SLO metric. Keep one central Connector client wrapped in a transient-fault retry policy (429, plus the documented retryable 412/502/504) so no call site can forget. The numbers to design against - all of them quoted from the rate-limit tables - live in Teams bot limits.
Official reference: Microsoft Learn - Status codes from bot conversational APIs. See all Teams error codes or the Teams limits and quotas.
Related codes
- 412 PreconditionFailed: PreconditionFailed - concurrent operations on one conversationPrecondition failed, please try again.
- 502 Bad Gateway: 502 - bot returned an error / service dependency failureFailed to send activity: bot returned an error
- 503 Service Unavailable: 503 - service temporarily unavailableService is unavailable.
- 413 MessageSizeTooBig: MessageSizeTooBig - payload over the size capMessage size too large.
Error 429 Throttled - quick answers
What does Teams error 429 Throttled mean?
You exceeded a rate limit and the platform is pushing back. The status table documents 429 as code Throttled , message "Too many requests" (noting it "also returns when to retry after"), with retry Yes : "Retry using Retry-After header to determine backoff time." The rate-limit guide adds that "all requests are subject to the same rate limiting policy, including sending messages, channel enumerations, and roster fetc
How do I fix Teams error 429 Throttled?
1. Honor Retry-After: sleep the indicated seconds before retrying that conversation, as the documented strategy says. 2. Where the header is absent, apply exponential backoff with random jitter (the docs recommend jitter to avoid retry collisions), scoped per thread ID. 3. In C#, catch HttpOperationException / ErrorResponseException and check for status 429, wiring the SDK call through a retry policy - the rate-limit guide ships a worked…
Can I retry after error 429 Throttled?
Yes - this is a retryable condition. Back off (start around one second and double on each attempt, with jitter) and watch for a retry-after hint from the platform before resending.
Stop debugging Teams by hand
Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.