Legacy synchronous text-to-speech compatibility endpoint for ElevenLabs and Cartesia. New integrations should use audio-generation via POST /processes plus GET /audio/voices so model capabilities, references, process polling, and output lineage match image/video generation. This endpoint still generates spoken audio from a script and stores it as a team audio asset (readable via GET /assets/{assetId} and listed by GET /assets). No polling — the response returns the finished asset. Pass a voiceId from a previous response to reuse a voice, or a voiceQuery (e.g. "warm female narrator") to pick one by description; omitting both uses a neutral narrator. The first 5,000 script characters per team per UTC day are free; characters beyond that bill team credits at 30 credits per 1,000 characters for ElevenLabs voices or 15 credits per 1,000 characters for Cartesia voices (403 insufficient_credits when the team balance cannot cover the request). The response reports creditsCharged and freeCharactersRemainingToday. Always send an Idempotency-Key: retries with the same key and body replay the original response (Idempotency-Replayed: true) instead of double-billing and double-generating; the same key with a different body returns idempotency_conflict.
Authorization
bearerAuth processes:writeIn: header
Scope: processes:write
Header Parameters
Stable caller-provided key for retry-safe speech generation.
1 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/audio/speech" \ -H "Content-Type: application/json" \ -d '{ "script": "string" }'{ "data": { "assetId": "string", "type": "audio", "url": "http://example.com", "duration": 0, "script": "string", "voice": { "voiceId": "string", "provider": "string", "name": "string" }, "creditsCharged": 0, "freeCharactersRemainingToday": 0 }}{ "error": { "code": "string", "message": "string", "requestId": "string" }}{ "error": { "code": "string", "message": "string", "requestId": "string" }}{ "error": { "code": "string", "message": "string", "requestId": "string" }}{ "error": { "code": "string", "message": "string", "requestId": "string" }}{ "error": { "code": "string", "message": "string", "requestId": "string" }}{ "error": { "code": "string", "message": "string", "requestId": "string" }}Unwire two canvas cards DELETE
Removes the wires from the source card into the target card, on every port or only targetPort. not_found when there is no such wire. Shows up live on the canvas in the Yapper web app. Free. Uses the processes:write scope.
Get agent usage GET
The in-app agent's usage for the current billing period: the included allowance shared by every chat, pay-as-you-go credits charged after it ran out, and the split by agent model. Matches the Agent Usage card on the account usage page.