specification: API Commons Rate Limits specificationVersion: '0.1' schema: https://raw.githubusercontent.com/api-evangelist/interface-research/main/schema/api-commons.yml#/$defs/RateLimits provider: Amazon Lex providerId: amazon-lex generated: '2026-09-17' method: searched source: https://docs.aws.amazon.com/lexv2/latest/dg/quotas.html modified: '2026-09-17' created: '2026-05-04' supersedes: >- The 2026-05-04 bulk-sweep scaffold, which asserted X-RateLimit-* headers and a generic per-tier quota model. Amazon Lex V2 publishes neither. Replaced wholesale with the published quota tables. tags: - Quotas - Throttling - Service Quotas description: >- Amazon Lex V2 limits are AWS Service Quotas — per AWS account, per Region — not per-plan API rate limits. They split into build-time quotas (how large a bot may be) and runtime quotas (how many concurrent conversations an alias may carry). Adjustable quotas are raised through the Service Quotas console; some require a support case. console: https://console.aws.amazon.com/servicequotas/home/services/lex/quotas headers: limit: null remaining: null reset: null retryAfter: null policy: null headers_note: >- MEASURED ABSENCE. Amazon Lex V2 publishes NO rate-limit response headers — no RateLimit-*, no X-RateLimit-*, and no documented Retry-After. An agent gets no advance warning that it is approaching a limit; it learns only from the 429. Current consumption is visible out-of-band through the Service Quotas API and CloudWatch, never on the response. responseCodes: throttled: 429 exception: ThrottlingException quota_exceeded: 402 quota_exception: ServiceQuotaExceededException scope: per AWS account, per AWS Region (some runtime quotas scoped per bot alias) limit_count: 24 limits: - name: Bots per AWS account type: build-time scope: account/region limit: 100 adjustable: true self_service: true - name: Bot channel associations per AWS account type: build-time scope: account/region limit: 5000 adjustable: false - name: Parallel locale builds per AWS account type: build-time scope: account/region limit: 5 adjustable: true self_service: false - name: Versions per bot type: build-time scope: bot limit: 100 adjustable: false - name: Intents per locale in each bot type: build-time scope: bot locale limit: 1000 limit_note: 1,000 in en-AU, en-GB and en-US; 250 in all other locales. adjustable: true self_service: false - name: Slots per locale in each bot type: build-time scope: bot locale limit: 4000 limit_note: 4,000 in en-AU, en-GB and en-US; 2,000 in all other locales. adjustable: false - name: Slots per intent type: build-time scope: intent limit: 100 adjustable: false - name: Sample utterances per intent type: build-time scope: intent limit: 1500 adjustable: true self_service: true - name: Custom slot type values and synonyms per locale type: build-time scope: bot locale limit: 50000 adjustable: false - name: Text response length type: build-time scope: message limit: 4000 unit: characters adjustable: false - name: Size of custom grammar slot type XML file type: build-time scope: slot type limit: 100 unit: KB adjustable: false - name: Concurrent Automated Chatbot Designer analysis jobs type: build-time scope: account/region limit: 10 adjustable: false - name: Input text size for RecognizeText and RecognizeUtterance type: runtime scope: request limit: 1024 unit: characters adjustable: false - name: Speech input length for RecognizeUtterance type: runtime scope: request limit: 55 unit: seconds adjustable: true self_service: false - name: Size of RecognizeUtterance headers type: runtime scope: request limit: 16 unit: KB adjustable: false - name: Concurrent text-mode conversations (TestBotAlias) type: runtime scope: bot alias limit: 2 adjustable: false operations: [RecognizeText, RecognizeUtterance, StartConversation] - name: Concurrent text-mode conversations (other aliases) type: runtime scope: bot alias limit: 50 adjustable: true self_service: false operations: [RecognizeText, RecognizeUtterance, StartConversation] - name: Concurrent voice-mode conversations for RecognizeUtterance (other aliases) type: runtime scope: bot alias limit: 125 adjustable: true self_service: false - name: Concurrent voice-mode conversations for StartConversation (other aliases) type: runtime scope: bot alias limit: 400 adjustable: true self_service: false - name: Concurrent session management operations (other aliases) type: runtime scope: bot alias limit: 50 adjustable: true self_service: false operations: [PutSession, GetSession, DeleteSession] - name: Maximum input size to a Lambda function type: runtime scope: request limit: 12 unit: KB adjustable: false - name: Maximum output size of a Lambda function type: runtime scope: request limit: 50 unit: KB adjustable: false - name: Maximum timeout of a Lambda function type: runtime scope: request limit: 30 unit: seconds adjustable: true self_service: false - name: Maximum duration for a single conversation type: runtime scope: session limit: 15 unit: minutes adjustable: false agent_note: >- The TestBotAlias caps every concurrency dimension at 2. An agent load-testing against TSTALIASID will throttle at two concurrent conversations and conclude the service is far more constrained than it is.