Voiceflow bearer token
Create playbook
curl --request POST \
--url https://realtime-api.voiceflow.com/v1/stable/playbook \
--header 'Authorization: Bearer <token>'
--header 'Content-Type: application/json' \
--data '{
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"endTool": {
"enabled": true,
"messages": null,
"toolSound": null,
"description": "<string>"
},
"cardTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"buttonTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"carouselTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"skipTurnTool": {
"enabled": true,
"description": "<string>"
},
"webSearchTool": {
"enabled": true,
"messages": null,
"toolSound": null,
"description": "<string>",
"allowedDomains": [
"<string>"
],
"sourceUrlsCount": 0
},
"callForwardTool": {
"enabled": true,
"address": [
"<string>"
],
"messages": null,
"extension": "<Markup>",
"toolSound": null,
"description": "<string>",
"addressType": "phone",
"callerIDPassthrough": true
},
"knowledgeBaseTool": {
"query": "<Markup>",
"enabled": true,
"filters": [
"<AgentKnowledgeBaseMetadataKeyFilter>"
],
"messages": null,
"toolSound": null,
"chunkLimit": 0,
"description": "<string>",
"queryMode": "<AgentKnowledgeBaseToolQueryMode>",
"sourceUrlsCount": 0
},
"settings": {}
}'const response = await fetch('https://realtime-api.voiceflow.com/v1/stable/playbook?projectID=<projectID>&environmentAlias=<environmentAlias>', {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"endTool": {
"enabled": true,
"messages": null,
"toolSound": null,
"description": "<string>"
},
"cardTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"buttonTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"carouselTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"skipTurnTool": {
"enabled": true,
"description": "<string>"
},
"webSearchTool": {
"enabled": true,
"messages": null,
"toolSound": null,
"description": "<string>",
"allowedDomains": [
"<string>"
],
"sourceUrlsCount": 0
},
"callForwardTool": {
"enabled": true,
"address": [
"<string>"
],
"messages": null,
"extension": "<Markup>",
"toolSound": null,
"description": "<string>",
"addressType": "phone",
"callerIDPassthrough": true
},
"knowledgeBaseTool": {
"query": "<Markup>",
"enabled": true,
"filters": [
"<AgentKnowledgeBaseMetadataKeyFilter>"
],
"messages": null,
"toolSound": null,
"chunkLimit": 0,
"description": "<string>",
"queryMode": "<AgentKnowledgeBaseToolQueryMode>",
"sourceUrlsCount": 0
},
"settings": {}
}),
});
const data = await response.json();import requests
response = requests.post(
'https://realtime-api.voiceflow.com/v1/stable/playbook?projectID=<projectID>&environmentAlias=<environmentAlias>',
headers={'Authorization': 'Bearer <token>'},
json={
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"endTool": {
"enabled": True,
"messages": None,
"toolSound": None,
"description": "<string>"
},
"cardTool": {
"enabled": True,
"messages": None,
"description": "<string>"
},
"buttonTool": {
"enabled": True,
"messages": None,
"description": "<string>"
},
"carouselTool": {
"enabled": True,
"messages": None,
"description": "<string>"
},
"skipTurnTool": {
"enabled": True,
"description": "<string>"
},
"webSearchTool": {
"enabled": True,
"messages": None,
"toolSound": None,
"description": "<string>",
"allowedDomains": [
"<string>"
],
"sourceUrlsCount": 0
},
"callForwardTool": {
"enabled": True,
"address": [
"<string>"
],
"messages": None,
"extension": "<Markup>",
"toolSound": None,
"description": "<string>",
"addressType": "phone",
"callerIDPassthrough": True
},
"knowledgeBaseTool": {
"query": "<Markup>",
"enabled": True,
"filters": [
"<AgentKnowledgeBaseMetadataKeyFilter>"
],
"messages": None,
"toolSound": None,
"chunkLimit": 0,
"description": "<string>",
"queryMode": "<AgentKnowledgeBaseToolQueryMode>",
"sourceUrlsCount": 0
},
"settings": {}
},
)
data = response.json()vf playbook create --project-id <projectID> --environment-alias <environmentAlias> \
< body.json{
"playbook": {
"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": {
"enabled": true,
"messages": null,
"toolSound": null,
"description": "<string>"
},
"cardTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"buttonTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"carouselTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"skipTurnTool": {
"enabled": true,
"description": "<string>"
},
"webSearchTool": {
"enabled": true,
"messages": null,
"toolSound": null,
"description": "<string>",
"allowedDomains": [
"<string>"
],
"sourceUrlsCount": 0
},
"callForwardTool": {
"enabled": true,
"address": "<Markup>",
"messages": null,
"extension": "<Markup>",
"toolSound": null,
"description": "<string>",
"addressType": "<CallForwardAddressType>",
"callerIDPassthrough": true
},
"knowledgeBaseTool": {
"query": "<Markup>",
"enabled": true,
"filters": [
"<AgentKnowledgeBaseMetadataKeyFilter>"
],
"messages": null,
"toolSound": null,
"chunkLimit": 0,
"description": "<string>",
"queryMode": "<AgentKnowledgeBaseToolQueryMode>",
"sourceUrlsCount": 0
}
},
"unresolvedReferences": "<string>"
}Adds a playbook to the environment, a set of instructions that drives an agent toward a goal, calling tools as it needs them. The response carries the ID that later calls address it by.
POST
/v1/stable/playbook
Create playbook
curl --request POST \
--url https://realtime-api.voiceflow.com/v1/stable/playbook \
--header 'Authorization: Bearer <token>'
--header 'Content-Type: application/json' \
--data '{
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"endTool": {
"enabled": true,
"messages": null,
"toolSound": null,
"description": "<string>"
},
"cardTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"buttonTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"carouselTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"skipTurnTool": {
"enabled": true,
"description": "<string>"
},
"webSearchTool": {
"enabled": true,
"messages": null,
"toolSound": null,
"description": "<string>",
"allowedDomains": [
"<string>"
],
"sourceUrlsCount": 0
},
"callForwardTool": {
"enabled": true,
"address": [
"<string>"
],
"messages": null,
"extension": "<Markup>",
"toolSound": null,
"description": "<string>",
"addressType": "phone",
"callerIDPassthrough": true
},
"knowledgeBaseTool": {
"query": "<Markup>",
"enabled": true,
"filters": [
"<AgentKnowledgeBaseMetadataKeyFilter>"
],
"messages": null,
"toolSound": null,
"chunkLimit": 0,
"description": "<string>",
"queryMode": "<AgentKnowledgeBaseToolQueryMode>",
"sourceUrlsCount": 0
},
"settings": {}
}'const response = await fetch('https://realtime-api.voiceflow.com/v1/stable/playbook?projectID=<projectID>&environmentAlias=<environmentAlias>', {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"endTool": {
"enabled": true,
"messages": null,
"toolSound": null,
"description": "<string>"
},
"cardTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"buttonTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"carouselTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"skipTurnTool": {
"enabled": true,
"description": "<string>"
},
"webSearchTool": {
"enabled": true,
"messages": null,
"toolSound": null,
"description": "<string>",
"allowedDomains": [
"<string>"
],
"sourceUrlsCount": 0
},
"callForwardTool": {
"enabled": true,
"address": [
"<string>"
],
"messages": null,
"extension": "<Markup>",
"toolSound": null,
"description": "<string>",
"addressType": "phone",
"callerIDPassthrough": true
},
"knowledgeBaseTool": {
"query": "<Markup>",
"enabled": true,
"filters": [
"<AgentKnowledgeBaseMetadataKeyFilter>"
],
"messages": null,
"toolSound": null,
"chunkLimit": 0,
"description": "<string>",
"queryMode": "<AgentKnowledgeBaseToolQueryMode>",
"sourceUrlsCount": 0
},
"settings": {}
}),
});
const data = await response.json();import requests
response = requests.post(
'https://realtime-api.voiceflow.com/v1/stable/playbook?projectID=<projectID>&environmentAlias=<environmentAlias>',
headers={'Authorization': 'Bearer <token>'},
json={
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"endTool": {
"enabled": True,
"messages": None,
"toolSound": None,
"description": "<string>"
},
"cardTool": {
"enabled": True,
"messages": None,
"description": "<string>"
},
"buttonTool": {
"enabled": True,
"messages": None,
"description": "<string>"
},
"carouselTool": {
"enabled": True,
"messages": None,
"description": "<string>"
},
"skipTurnTool": {
"enabled": True,
"description": "<string>"
},
"webSearchTool": {
"enabled": True,
"messages": None,
"toolSound": None,
"description": "<string>",
"allowedDomains": [
"<string>"
],
"sourceUrlsCount": 0
},
"callForwardTool": {
"enabled": True,
"address": [
"<string>"
],
"messages": None,
"extension": "<Markup>",
"toolSound": None,
"description": "<string>",
"addressType": "phone",
"callerIDPassthrough": True
},
"knowledgeBaseTool": {
"query": "<Markup>",
"enabled": True,
"filters": [
"<AgentKnowledgeBaseMetadataKeyFilter>"
],
"messages": None,
"toolSound": None,
"chunkLimit": 0,
"description": "<string>",
"queryMode": "<AgentKnowledgeBaseToolQueryMode>",
"sourceUrlsCount": 0
},
"settings": {}
},
)
data = response.json()vf playbook create --project-id <projectID> --environment-alias <environmentAlias> \
< body.json{
"playbook": {
"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": {
"enabled": true,
"messages": null,
"toolSound": null,
"description": "<string>"
},
"cardTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"buttonTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"carouselTool": {
"enabled": true,
"messages": null,
"description": "<string>"
},
"skipTurnTool": {
"enabled": true,
"description": "<string>"
},
"webSearchTool": {
"enabled": true,
"messages": null,
"toolSound": null,
"description": "<string>",
"allowedDomains": [
"<string>"
],
"sourceUrlsCount": 0
},
"callForwardTool": {
"enabled": true,
"address": "<Markup>",
"messages": null,
"extension": "<Markup>",
"toolSound": null,
"description": "<string>",
"addressType": "<CallForwardAddressType>",
"callerIDPassthrough": true
},
"knowledgeBaseTool": {
"query": "<Markup>",
"enabled": true,
"filters": [
"<AgentKnowledgeBaseMetadataKeyFilter>"
],
"messages": null,
"toolSound": null,
"chunkLimit": 0,
"description": "<string>",
"queryMode": "<AgentKnowledgeBaseToolQueryMode>",
"sourceUrlsCount": 0
}
},
"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
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
Show child attributes
Show child attributes
Response
201 - application/jsonReturns the newly created playbook in full, including the ID assigned to it and the instructions it was created with.
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.