Access
Account usage and capacity
Understand operation-specific admission, request identities, reset responses, browser concurrency and voice metering.
Read limits for the actual operation
| Operation | Admission unit or role |
|---|---|
| chat | An admitted account conversation request. Browser dispatch can incur a separate browser admission. |
| video_upload | An admitted source-video ingest request, separate from transferred storage bytes. |
| browser_run | A browser task admission, separate from chat. |
| tts | Requested speech text length; current account route uses text.length. |
| deepgram_token | An authenticated transcription token request. |
| recolor / recolor_preview | Full object render or preview admission. |
| reverse_search / image_embedding | Applicable analysis or image-processing admission. |
| chat_title | Applicable chat title generation admission. |
Minute and day limits are configured per operation. Account overrides and enabled cohort settings can change the effective limits.
Use the server’s current limit, used, resets_at and Retry-After values. Seed defaults are not a commercial entitlement or a permanent account allowance.
The requested action must pass both resource authorization and usage admission. Access approval does not grant ownership or unlimited capacity.
Retain request identity without promising replayed results
Account admission records a request identity and fingerprint. Keep the identity stable only for an identical retry of the same operation and content.
Current clients can send Idempotency-Key. Other request-ID fields exist, but a missing identity can cause the server to generate a new UUID.
An already admitted request can return 409 duplicate_request. The usage receipt does not guarantee replay of the original stream or completed task result.
Changing content while reusing a request identity conflicts with the recorded fingerprint. Use a new identity for a genuinely new request.
A lost response can leave an admission recorded. Inspect the owned conversation, task or revision before repeating work with a new identity.
Handle access and capacity refusals
| Response | Meaning | Next action |
|---|---|---|
| 401 unauthorized | No authenticated account principal. | Restore the authorized account session. |
| 403 account_not_approved | The account lacks the required access approval. | Resolve account access. Retrying the same token does not grant approval. |
| 409 duplicate_request | The same operation request was already admitted. | Inspect prior task or conversation state before creating another request. |
| 429 usage_limit_exceeded | An operation reached its current limit. | Use usage.operation, limit, used, resets_at and Retry-After. |
| 503 usage_service_unavailable | The server cannot establish the usage decision. | Back off and retain the request identity. Do not infer admission or completion. |
{
"error": "usage_limit_exceeded",
"message": "This account has reached its current usage limit.",
"usage": {
"operation": "chat",
"limit": 200,
"used": 200,
"resets_at": "<server reset timestamp>"
},
"request_id": "<request identity>"
} The numbers in this response are illustrative. Read your response’s actual values; do not hardcode this example as an allowance.
Distinguish concurrency, waiting and worker leases
Browser tasks have operation usage and unfinished-run capacity. The default account concurrency is one; account or cohort configuration can change it.
A paused unfinished task can still consume an account slot after its worker lease is released. A dormant worker is not a free account allowance.
UI queueing, admitted commands, available workers and available account capacity are different states. Read the actual task and admission responses.
Browser admission can be recorded before the browser opens. External site failure, cancellation or an unusable result does not establish an automatic refund.
The run lifecycle has configured time and resource bounds. These are operational limits, not a guarantee that a task completes within a advertised duration.
Account speech and embedded Voice differ
The account speech path requires authenticated account admission. Buffered TTS validates text length and currently accepts at most 4,000 JavaScript string units.
TTS uses requested text.length for its account units. Separate speech quota guards can also refuse a request after account admission.
Transcription requires an authenticated token request and microphone permission. Local wake detection keeps pre-wake microphone input local; activated transcription uses the configured service.
Voice interruption stops local speech and the active answer stream. It does not replace an explicit browser cancellation command.
Embedded viewers require the published Voice capability for speech and transcription admissions. Account voice access does not enable Voice in an embed.
Treat embedded viewer quotas separately
Embedded viewer operations bill the experience owner under separate operation names. Visitor identity, published capability and daily experience limits apply independently.
Embedded chat quota admission fails closed when the shared quota store is unavailable. It refuses model work and owner billing for that failed quota decision.
That viewer contract does not define every ordinary account rate-limit policy. Use the endpoint’s own refusal and retry contract.