Changelog
Know what the contract says.
Replies regenerate before a turn fails
If a generated reply fails validation before anything is shown, the service now regenerates it once. That turn takes a few seconds longer and is still charged once; nothing changes in your integration.
Read about turnsFailed turns resolve cleanly
More replies are repaired before they reach you, so fewer turns fail. When a turn does fail it is not charged, and resending it with the same key now returns 409 REQUEST_FAILED: send it again with a new key. A failed opening closes its conversation without charge, so the end user can start a new one right away. An empty consent object at setup is accepted and grants nothing.
Characters that carry the moment
Each character's mood now carries from turn to turn. Every saved turn includes characters: each cast member's expression (one of 16 named states, or a simpler set of five) and whether they are present, have stepped away or have left. Using them is optional. End users can choose No filter heat inside a conversation.
Contract changes: room setups refuse high_care (open practice keeps it), a reused idempotency key returns 422, a different second consent decision returns 409, and expired audio returns 410. Prices are unchanged.
Conversations API released
Conversation practice can now be added to a developer workspace: authored rooms and open practice with one to five participants, Coach, memory, replay, debrief and optional whole-turn audio. At release, text turns were $0.03 each and optional saved audio was $0.05 per turn.
Explore the Conversations APICurrent conversation contract documented
The source-owned OpenAPI 3.1 document covers the current chat request, authentication requirements, JSON refusals and SSE payloads. It includes assignment-scoped credentials, durable request replay, commercial completion receipts and safety status.
This is a documentation revision, not a claim of a hosted release.
Read the reference