Skip to Content
A2A Public APIRate Limits

Rate Limits

Default limits

LimitValueScope
Requests per minute60Per access grant
Requests per hour1,000Per access grant
Concurrent tasks10Per tenant
Payload size1 MiBPer request
SSE connections50Per tenant
Webhook registrations10Per tenant

Rate limit headers

Every response includes rate limit headers:

X-RateLimit-Limit: 60 X-RateLimit-Remaining: 45 X-RateLimit-Reset: 1782040800

429 handling

When rate-limited, the response includes a Retry-After header:

HTTP/1.1 429 Too Many Requests Retry-After: 30 Content-Type: application/json { "jsonrpc": "2.0", "error": { "code": -32014, "message": "Rate limit exceeded. Retry after 30 seconds.", "data": { "retryAfter": 30, "limit": 60, "window": "1m" } } }

The SDK handles 429 responses automatically with exponential backoff.

Custom limits

Request higher limits via grant caveats when creating an access grant:

const grant = await client.createGrant({ type: 'agent', capabilities: ['agents:invoke'], caveats: { max_calls_per_minute: 120, }, });
Last updated on