Voiceflow bearer token
Create many playbooks
curl --request POST \
--url https://realtime-api.voiceflow.com/v1/stable/playbook/batch \
--header 'Authorization: Bearer <token>'
--header 'Content-Type: application/json' \
--data '{
"playbooks": [
{
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"endTool": "<AgentEndTool>",
"cardTool": "<AgentCardTool>",
"buttonTool": "<AgentButtonTool>",
"carouselTool": "<AgentCardTool>",
"skipTurnTool": "<AgentSkipTurnTool>",
"webSearchTool": "<AgentWebSearchTool>",
"callForwardTool": "<AgentCallForwardTool>",
"knowledgeBaseTool": "<AgentKnowledgeBaseTool>",
"settings": {}
}
]
}'const response = await fetch('https://realtime-api.voiceflow.com/v1/stable/playbook/batch?projectID=<projectID>&environmentAlias=<environmentAlias>', {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"playbooks": [
{
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"endTool": "<AgentEndTool>",
"cardTool": "<AgentCardTool>",
"buttonTool": "<AgentButtonTool>",
"carouselTool": "<AgentCardTool>",
"skipTurnTool": "<AgentSkipTurnTool>",
"webSearchTool": "<AgentWebSearchTool>",
"callForwardTool": "<AgentCallForwardTool>",
"knowledgeBaseTool": "<AgentKnowledgeBaseTool>",
"settings": {}
}
]
}),
});
const data = await response.json();import requests
response = requests.post(
'https://realtime-api.voiceflow.com/v1/stable/playbook/batch?projectID=<projectID>&environmentAlias=<environmentAlias>',
headers={'Authorization': 'Bearer <token>'},
json={
"playbooks": [
{
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"endTool": "<AgentEndTool>",
"cardTool": "<AgentCardTool>",
"buttonTool": "<AgentButtonTool>",
"carouselTool": "<AgentCardTool>",
"skipTurnTool": "<AgentSkipTurnTool>",
"webSearchTool": "<AgentWebSearchTool>",
"callForwardTool": "<AgentCallForwardTool>",
"knowledgeBaseTool": "<AgentKnowledgeBaseTool>",
"settings": {}
}
]
},
)
data = response.json()vf playbook create-many --project-id <projectID> --environment-alias <environmentAlias> \
< body.json{
"playbooks": [
{
"id": "<string>",
"name": "<string>",
"settings": {
"model": "<AIModel>",
"realtime": {
"voice": "<string>",
"eagerness": "<string>"
},
"maxTokens": 0,
"temperature": 0,
"reasoningEffort": "<AIReasoningEffort>"
},
"createdAt": "2026-09-10T00:00:00.000Z",
"updatedAt": "2026-09-10T00:00:00.000Z",
"description": "<string>",
"instructions": "<string>",
"pathToolOrder": [
"<string>"
],
"endTool": "<AgentEndTool>",
"cardTool": "<AgentCardTool>",
"buttonTool": "<AgentButtonTool>",
"carouselTool": "<AgentCardTool>",
"skipTurnTool": "<AgentSkipTurnTool>",
"webSearchTool": "<AgentWebSearchTool>",
"callForwardTool": "<AgentCallForwardTool>",
"knowledgeBaseTool": "<AgentKnowledgeBaseTool>"
}
],
"unresolvedReferences": "<string>"
}Adds several playbooks to the environment in one request, each taking the fields the single-create call takes. The response carries the created playbooks in the same shape the list call returns.
POST
/v1/stable/playbook/batch
Create many playbooks
curl --request POST \
--url https://realtime-api.voiceflow.com/v1/stable/playbook/batch \
--header 'Authorization: Bearer <token>'
--header 'Content-Type: application/json' \
--data '{
"playbooks": [
{
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"endTool": "<AgentEndTool>",
"cardTool": "<AgentCardTool>",
"buttonTool": "<AgentButtonTool>",
"carouselTool": "<AgentCardTool>",
"skipTurnTool": "<AgentSkipTurnTool>",
"webSearchTool": "<AgentWebSearchTool>",
"callForwardTool": "<AgentCallForwardTool>",
"knowledgeBaseTool": "<AgentKnowledgeBaseTool>",
"settings": {}
}
]
}'const response = await fetch('https://realtime-api.voiceflow.com/v1/stable/playbook/batch?projectID=<projectID>&environmentAlias=<environmentAlias>', {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"playbooks": [
{
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"endTool": "<AgentEndTool>",
"cardTool": "<AgentCardTool>",
"buttonTool": "<AgentButtonTool>",
"carouselTool": "<AgentCardTool>",
"skipTurnTool": "<AgentSkipTurnTool>",
"webSearchTool": "<AgentWebSearchTool>",
"callForwardTool": "<AgentCallForwardTool>",
"knowledgeBaseTool": "<AgentKnowledgeBaseTool>",
"settings": {}
}
]
}),
});
const data = await response.json();import requests
response = requests.post(
'https://realtime-api.voiceflow.com/v1/stable/playbook/batch?projectID=<projectID>&environmentAlias=<environmentAlias>',
headers={'Authorization': 'Bearer <token>'},
json={
"playbooks": [
{
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"endTool": "<AgentEndTool>",
"cardTool": "<AgentCardTool>",
"buttonTool": "<AgentButtonTool>",
"carouselTool": "<AgentCardTool>",
"skipTurnTool": "<AgentSkipTurnTool>",
"webSearchTool": "<AgentWebSearchTool>",
"callForwardTool": "<AgentCallForwardTool>",
"knowledgeBaseTool": "<AgentKnowledgeBaseTool>",
"settings": {}
}
]
},
)
data = response.json()vf playbook create-many --project-id <projectID> --environment-alias <environmentAlias> \
< body.json{
"playbooks": [
{
"id": "<string>",
"name": "<string>",
"settings": {
"model": "<AIModel>",
"realtime": {
"voice": "<string>",
"eagerness": "<string>"
},
"maxTokens": 0,
"temperature": 0,
"reasoningEffort": "<AIReasoningEffort>"
},
"createdAt": "2026-09-10T00:00:00.000Z",
"updatedAt": "2026-09-10T00:00:00.000Z",
"description": "<string>",
"instructions": "<string>",
"pathToolOrder": [
"<string>"
],
"endTool": "<AgentEndTool>",
"cardTool": "<AgentCardTool>",
"buttonTool": "<AgentButtonTool>",
"carouselTool": "<AgentCardTool>",
"skipTurnTool": "<AgentSkipTurnTool>",
"webSearchTool": "<AgentWebSearchTool>",
"callForwardTool": "<AgentCallForwardTool>",
"knowledgeBaseTool": "<AgentKnowledgeBaseTool>"
}
],
"unresolvedReferences": "<string>"
}Authorizations
Query Parameters
Body
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Option 1
string
Option 2 · MarkupSpan
Show child attributes
Option 3 · MarkupToolReference
Show child attributes
Response
201 - application/jsonReturns the playbooks the request created, as an array, each complete with the ID assigned to it.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Markup — see its attributes above
Available options:
phone, sipCallForwardAddressType — see its attributes above
Show child attributes
AgentKnowledgeBaseMetadataKeyFilter — see its attributes above
Was this page helpful?
Thanks for your feedback.