apicheats.dev elevenlabs/llms.txt Raw .md
POST

/v1/convai/agents/{agent_id}/branches/{branch_id}/procedures

ElevenLabs API

Create Procedure

Base URL
https://api.elevenlabs.io
Auth
xi-api-key: <ELEVENLABS_API_KEY>
Last verified
2026-09-03 · upstream hash matched
Actions
Agents: curl -H "Accept: text/markdown" this URL
→ 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/convai/agents/agent-id/branches/branch-id/procedures' \  -H "xi-api-key: $ELEVENLABS_API_KEY" \  -H 'Content-Type: application/json' \  -d '{  "name": "",  "content": "",  "type": "free_form",  "trigger": "string"}'
Get a free ElevenLabs API key → sponsored

Parameters

Name In Type Required Description
agent_id path string Yes Agent ID to get the procedure draft from
branch_id path string Yes Branch ID to get the procedure draft from
name body string No Procedure name
content body string No Initial procedure content
type body string No Request body field type.
trigger body string No When the agent should use this procedure. Empty string means this is a sub-procedure that should only start when another procedure references it. If omitted or null, the trigger is derived from the content instead. Also accepts `description` as an alias.

Response 200 OK

{
  "procedure_id": "agtprc_6qbpwdq8n01bxhk44bgjy6f10ck3"
}