Async results
Generation is asynchronous. Create returns immediately with a status, and you poll the resource until it's done.
Character, generation, audio, and voice creation are asynchronous. The create call returns 201 right away with a status like processing — not the finished media. You then poll the resource until it reaches a terminal state.
(Quote creation is the exception: it’s synchronous and never executes the operation. See Quotes.)
Polling
Call the resource’s GET endpoint repeatedly until status is terminal:
| Resource | Poll | Terminal states |
|---|---|---|
| Generation | GET /v1/generations/:id |
completed, failed |
| Character | GET /v1/characters/:id |
ready, failed |
| Audio | GET /v1/audio/:id |
ready, failed |
| Voice | GET /v1/voices/:id |
ready, failed |
When a generation completes, the media is in data.output.url (a cdn.someone.app URL). When audio is ready, it’s in data.audio_url.
Recommended intervals
- Images: every 3–5 seconds
- Videos: every 10 seconds
Webhooks (temporarily unavailable)
Customer-controlled completion webhooks are disabled until outbound destination enforcement is certified against DNS rebinding and private-network redirects.