POST
POST /v1/flows/templates/{template_id}/runs — ElevenLabs API
ElevenLabs APICreate Template Run
- Base URL
- https://api.elevenlabs.io
- Auth
- xi-api-key: <ELEVENLABS_API_KEY>
- Last verified
- 2026-09-22 · upstream hash matched
Actions Try in browser→
Agents: curl -H "Accept: text/markdown" this URL
→ 227 tokens · Vary: Accept
→ 227 tokens · Vary: Accept
Critical gotchas
Authentication uses the non-standard xi-api-key header, not Authorization: Bearer. Sending a Bearer token returns HTTP 401.
Text-to-speech responses are raw binary audio, not JSON. Write the body to a file (--output speech.mp3) rather than parsing it.
cURL
curl -X POST 'https://api.elevenlabs.io/v1/flows/templates/template-id/runs' \ -H "xi-api-key: $ELEVENLABS_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "inputs": { "prompt": "a corgi on a surfboard", "reference": { "asset_id": "5xM2KqOnZyce22SPZ9d4", "type": "asset" } }, "version_id": "latest", "webhook": { "type": "all" }}'
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| template_id | path | string | Yes | The ID of the template, as shown in the ElevenLabs app or by `GET /v1/flows/templates`. |
| inputs | body | object | Yes | Input values keyed by input port id. Every input port of the version being run must be given; a missing or unknown id is rejected. Pass `{}` for a template with no inputs. |
| version_id | body | string | No | The template snapshot to run. Pass a specific version id to pin that snapshot, or `latest` (the default when omitted) to run the template's most recently published version. Only published versions can be pinned, except by the template's owner, who may also pin an unpublished saved snapshot to try it out before publishing. The live draft is never run through this API. |
| webhook | body | object | No | Include to send the run's result to the workspace's configured flows webhooks once the run's `status` reaches `completed` or `failed`. One event for the whole run: the `flows_template_run` event's `data` matches the terminal response of `GET /v1/flows/templates/{template_id}/runs/{run_id}`. |
Response 200 OK
{
"id": "sess_JWr5N6X9ZTqf8jD2LmQb",
"outputs": {
"marketing_title": {
"content": "Ride the wave.",
"id": "Kx2mP7Y4WVrg9kE3NnRc",
"status": "completed",
"type": "string"
},
"product_demo": {
"id": "QWr5N6X9ZTqf8jD2La3B",
"status": "generating",
"type": "video"
},
"product_still": {
"content_mime_type": "image/png",
"content_url": "https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb",
"id": "JWr5N6X9ZTqf8jD2LmQb",
"status": "completed",
"type": "image"
}
},
"status": "generating",
"template_id": "tmpl_abc123",
"version_id": "ver_01hxyz"
} Get a free ElevenLabs API key → sponsored