How It Works
Include anIdempotency-Key header with a unique value for each distinct operation:
- First request — Creates the resource and returns the response
- Subsequent requests — Returns the cached response from the first request
Idempotency Key Requirements
| Requirement | Details |
|---|---|
| Format | String, 1-255 characters |
| Characters | Alphanumeric, hyphens, underscores |
| Uniqueness | Must be unique per operation per project |
| TTL | Keys are stored for 24 hours |
Recommended Key Patterns
Supported Endpoints
Idempotency keys are supported on allPOST endpoints that create resources or trigger jobs:
| Endpoint | Use Case |
|---|---|
POST /end-users | Creating end users |
POST /devices | Registering devices |
POST /devices/:id/bind | Binding devices to users |
POST /recordings | Creating recordings |
POST /uploads/:id/complete | Completing uploads |
POST /transcriptions | Starting transcription jobs |
POST /summaries | Starting summarization jobs |
POST /webhooks | Creating webhook endpoints |
Response Behavior
Successful Replay
When replaying a previously successful request:Error Replay
If the original request failed with a client error (4xx), the error is returned on replay. Server errors (5xx) are not cached — you can safely retry with the same key.Key Conflict
If you reuse a key with a different request body:Implementation Example
Best Practices
Generate keys client-side
Generate keys client-side
Always generate idempotency keys on the client before making the request. This ensures the same key is used across retries.
Include enough context
Include enough context
Include relevant identifiers in the key (user ID, timestamp) to make debugging easier and prevent accidental collisions.
Don't reuse keys across operations
Don't reuse keys across operations
Each distinct operation should have its own idempotency key. Reusing keys across different operations will cause conflicts.
Store keys for critical operations
Store keys for critical operations
For payment-like operations (e.g., triggering transcription jobs), store the idempotency key in your database so you can retry with the exact same key if needed.

