# Get agent Source: https://www.voiceflow.com/docs/api-reference/agent/get-agent /specs-prettified/realtime/openapi.stable.json get /v1/stable/agent Returns the environment’s agent: the global prompt, the instructions that route a turn, and the settings wrapping both. # Update agent Source: https://www.voiceflow.com/docs/api-reference/agent/update-agent /specs-prettified/realtime/openapi.stable.json patch /v1/stable/agent Changes the agent that shapes every turn - its global prompt, its routing instructions, or its settings - in the environment named by the request. # Query API tool usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-api-tool-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/api-tool-usage/project/{projectID} Reports how often each API tool was called, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query call count Source: https://www.voiceflow.com/docs/api-reference/analytics/query-call-count /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/call-count/project/{projectID} Reports how many voice calls were placed, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query call duration Source: https://www.voiceflow.com/docs/api-reference/analytics/query-call-duration /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/call-duration/project/{projectID} Reports how much time was spent on voice calls, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query category token usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-category-token-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/category-token-usage/project/{projectID} Reports how many tokens each category consumed, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query daily token usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-daily-token-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/daily-token-usage/organization/{organizationID} Reports how many tokens were consumed, bucketed by day, for one organization over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query entity token usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-entity-token-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/entity-token-usage/organization/{organizationID} Reports how many tokens each entity consumed, for one organization over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query function usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-function-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/function-usage/project/{projectID} Reports how often each function ran, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query hourly organization token usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-hourly-organization-token-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/hourly-token-usage/organization/{organizationID} Reports how many tokens were consumed, bucketed by hour, for one organization over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query hourly project token usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-hourly-project-token-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/hourly-token-usage/project/{projectID} Reports how many tokens were consumed, bucketed by hour, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query integration usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-integration-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/integration-usage/project/{projectID} Reports how often each integration ran, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query intent usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-intent-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/intent-usage/project/{projectID} Reports how often each intent matched, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query knowledge base document usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-knowledge-base-document-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/knowledge-base-document-usage/project/{projectID} Reports how often each knowledge base document was retrieved, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query MCP tool usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-mcp-tool-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/mcp-tool-usage/project/{projectID} Reports how often each MCP tool was called, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query organization token usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-organization-token-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/token-usage/organization/{organizationID} Reports how many tokens were consumed, for one organization over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query playbook usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-playbook-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/playbook-usage/project/{projectID} Reports how often each playbook ran, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query project interaction count Source: https://www.voiceflow.com/docs/api-reference/analytics/query-project-interaction-count /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/interaction-count/project/{projectID} Reports how many interactions were exchanged, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query project token usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-project-token-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/token-usage/project/{projectID} Reports how many tokens were consumed, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query project transcript count Source: https://www.voiceflow.com/docs/api-reference/analytics/query-project-transcript-count /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/transcript-count/project/{projectID} Reports how many conversations were recorded, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query prompt usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-prompt-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/prompt-usage/project/{projectID} Reports how often each prompt was used, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query transcript cost Source: https://www.voiceflow.com/docs/api-reference/analytics/query-transcript-cost /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/transcript-cost/project/{projectID} Reports what those conversations cost in model spend, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query unique user count Source: https://www.voiceflow.com/docs/api-reference/analytics/query-unique-user-count /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/unique-user-count/project/{projectID} Reports how many distinct users held a conversation, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query workflow usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-workflow-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/workflow-usage/project/{projectID} Reports how often each workflow ran, for one project over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query workspace interaction count Source: https://www.voiceflow.com/docs/api-reference/analytics/query-workspace-interaction-count /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/interaction-count/workspace/{workspaceID} Reports how many interactions were exchanged, for one workspace over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query workspace token usage Source: https://www.voiceflow.com/docs/api-reference/analytics/query-workspace-token-usage /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/token-usage/workspace/{workspaceID} Reports how many tokens were consumed, for one workspace over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # Query workspace transcript count Source: https://www.voiceflow.com/docs/api-reference/analytics/query-workspace-transcript-count /specs-prettified/realtime/openapi.stable.json post /v1/stable/analytics/query/transcript-count/workspace/{workspaceID} Reports how many conversations were recorded, for one workspace over a date range. The request body takes `startDate`, `endDate` and an `interval`, the same shape the other analytics measures take. # What the REST API covers Source: https://www.voiceflow.com/docs/api-reference/api-overview Everything the Voiceflow REST API can do, grouped by the job you came to do: build an agent, run a conversation, publish it, and measure it. The Voiceflow REST API covers the whole lifecycle of an agent. You can build one from parts, run conversations against it, publish it through environments, and read back what happened, all without opening the Studio. Every request carries a [personal access token](/docs/api-reference/authentication). One credential authenticates the REST API, the `vf` CLI, and the MCP server. ```bash curl "https://realtime-api.voiceflow.com/v1/stable/workspace" \ -H "Authorization: Bearer $VF_PAT" ``` New to the API? [Quickstart](/docs/api-reference/quickstart) gets you a first response in a few minutes. ## Build and run Create and manage the pieces an agent is built from: playbooks, functions, tools, API tools, MCP servers, variables and knowledge base documents. Run conversations against an agent over HTTP. Send what a user would say, read the traces that come back, and inspect or reset the state between turns. Ship changes with environments. Edit a draft, publish it live, clone one to work in isolation, merge it back, and split traffic between versions. Create and administer the containers your agents live in: workspaces that group projects and people, and projects that each own a single agent. ## Measure and improve Read the conversations your agent actually had. Search transcripts, fetch a single one, and attach your own properties to record what happened. Score conversations against criteria you define, so agent quality becomes a number you can track over time instead of a sample you skim. Replay scripted conversations against your agent and assert what it does, so a change that breaks a scenario fails loudly instead of silently. Query usage and cost: tokens, calls, conversations and unique users, plus the spend attributed to individual functions, playbooks and tools. ## Webhooks Receive events whenever conversations start or end, on both chat and voice. Receive events when projects are created, published, or deleted. # Create many variables Source: https://www.voiceflow.com/docs/api-reference/api-tool-variable/create-many-variables /specs-prettified/realtime/openapi.stable.json post /v1/stable/api-tool-variable/batch Adds several API tool variables to its API tool in one request, each taking the fields the single-create call takes. The response carries the created API tool variables in the same shape the list call returns. # Create variable Source: https://www.voiceflow.com/docs/api-reference/api-tool-variable/create-variable /specs-prettified/realtime/openapi.stable.json post /v1/stable/api-tool-variable Adds a API tool variable to its API tool, an input an API tool substitutes into its request. The response carries the ID that later calls address it by. # Delete variable Source: https://www.voiceflow.com/docs/api-reference/api-tool-variable/delete-variable /specs-prettified/realtime/openapi.stable.json delete /v1/stable/api-tool-variable/{variableID} Deletes a single API tool variable by ID. An API tool variable is an input an API tool substitutes into its request. The response carries only a confirmation message, so refetch the API tool variables to see what is left. # Get variable Source: https://www.voiceflow.com/docs/api-reference/api-tool-variable/get-variable /specs-prettified/realtime/openapi.stable.json get /v1/stable/api-tool-variable/{variableID} Returns a single API tool variable by ID, with the fields that define it. An API tool variable is an input an API tool substitutes into its request. # List variables Source: https://www.voiceflow.com/docs/api-reference/api-tool-variable/list-variables /specs-prettified/realtime/openapi.stable.json get /v1/stable/api-tool-variable Returns every API tool variable in its API tool. An API tool variable is an input an API tool substitutes into its request. The call takes no paging parameters, so one request yields the whole set. # Update variable Source: https://www.voiceflow.com/docs/api-reference/api-tool-variable/update-variable /specs-prettified/realtime/openapi.stable.json patch /v1/stable/api-tool-variable/{variableID} Changes an existing API tool variable in place. The response carries only a confirmation message, so refetch the API tool variable to read its new values. # Create API tool Source: https://www.voiceflow.com/docs/api-reference/api-tool/create-api-tool /specs-prettified/realtime/openapi.stable.json post /v1/stable/api-tool Adds a API tool to the environment, a saved HTTP request an agent can make. The response carries the ID that later calls address it by. # Create many API tools Source: https://www.voiceflow.com/docs/api-reference/api-tool/create-many-api-tools /specs-prettified/realtime/openapi.stable.json post /v1/stable/api-tool/batch Adds several API tools to the environment in one request, each taking the fields the single-create call takes. The response carries the created API tools in the same shape the list call returns. # Delete API tool Source: https://www.voiceflow.com/docs/api-reference/api-tool/delete-api-tool /specs-prettified/realtime/openapi.stable.json delete /v1/stable/api-tool/{toolID} Deletes a single API tool by ID. An API tool is a saved HTTP request an agent can make. The response carries only a confirmation message, so refetch the API tools to see what is left. # Get API tool Source: https://www.voiceflow.com/docs/api-reference/api-tool/get-api-tool /specs-prettified/realtime/openapi.stable.json get /v1/stable/api-tool/{toolID} Returns a single API tool by ID, with the fields that define it. An API tool is a saved HTTP request an agent can make. # List API tools Source: https://www.voiceflow.com/docs/api-reference/api-tool/list-api-tools /specs-prettified/realtime/openapi.stable.json get /v1/stable/api-tool Returns every API tool in the environment. An API tool is a saved HTTP request an agent can make. The call takes no paging parameters, so one request yields the whole set. # Update API tool Source: https://www.voiceflow.com/docs/api-reference/api-tool/update-api-tool /specs-prettified/realtime/openapi.stable.json patch /v1/stable/api-tool/{toolID} Changes an existing API tool in place. The response carries only a confirmation message, so refetch the API tool to read its new values. # Personal access tokens Source: https://www.voiceflow.com/docs/api-reference/authentication Create a personal access token in Settings, send it as a Bearer token, and pass the project and environment your request should run against. Every request to the Voiceflow API carries a **personal access token**. The same token authenticates the REST API, the `vf` CLI, and optionally the MCP server, so there is one credential to create and one to rotate. ## Create a token Open **Settings** → **Access tokens** and choose **Create personal access token**. Give it a name you will recognise later and pick how long it should last. The token is shown once, at creation. After you close the dialog only a masked version is visible, so store it somewhere durable before you leave the page. A token looks like this, and always begins with `vfp_`: ```text vfp_a1b2c3d4_e5f6g7h8i9j0k1l2m3n4o5p6 ``` ### Expiry Tokens expire. You choose the lifetime when you create one: | Option | Lifetime | | --- | --- | | In a day | 1 day | | In a week | 7 days | | In a month | 30 days (default) | | In 3 months | 90 days | | In a year | 365 days | There is no non-expiring option, so any long-running integration needs a calendar reminder to issue a replacement before the current token lapses. ### What a token can reach A personal access token acts as **you**. It carries the same access your own account has, across every workspace you belong to, and cannot be narrowed to a single workspace or project. Two consequences worth planning around: - Treat a token like a password. Anyone holding it can do anything you can do. - Tokens can only be created through the dashboard, so a person has to issue and rotate the one your automation uses. ## Send the token Pass it in the `Authorization` header as a Bearer token: ```bash curl "https://realtime-api.voiceflow.com/v1/stable/workspace" \ -H "Authorization: Bearer $VF_PAT" ``` ## Target a project and environment Most endpoints act on one project, and many act on one environment inside it. Both are query parameters rather than path segments: ```bash curl "https://realtime-api.voiceflow.com/v1/stable/function?projectID=$VF_PROJECT_ID&environmentAlias=main" \ -H "Authorization: Bearer $VF_PAT" ``` Find `projectID` in **Settings** → **General** under Metadata. `environmentAlias` names an [environment](/docs/documentation/deploy/environments/overview) in that project. New projects start with a single environment called `main`. Passing an alias the project does not have returns: ```json { "statusCode": 400, "message": "invalid environment tag" } ``` List the aliases a project actually has with [List environments](/docs/api-reference/environment/list-environments). ## Revoke a token Delete it from **Settings** → **Access tokens**. Revocation takes effect immediately, so anything using that token stops working the moment you remove it. Issue and deploy the replacement first. # Delete state Source: https://www.voiceflow.com/docs/api-reference/conversation-state/delete-state /specs-prettified/realtime/openapi.stable.json delete /v1/stable/conversation-state/{userID} Discards the stored state for one conversation, so the next turn on that `userID` begins from the start. The response carries only a confirmation message. # Get state Source: https://www.voiceflow.com/docs/api-reference/conversation-state/get-state /specs-prettified/realtime/openapi.stable.json get /v1/stable/conversation-state/{userID} Returns the stored state for one conversation - where it stands and what its variables hold - addressed by the same `userID` used to run it. # Update state Source: https://www.voiceflow.com/docs/api-reference/conversation-state/update-state /specs-prettified/realtime/openapi.stable.json patch /v1/stable/conversation-state/{userID} Changes the stored state of a live conversation, which is how a caller seeds or corrects variables between turns without replaying the conversation. # Update variables Source: https://www.voiceflow.com/docs/api-reference/conversation-state/update-variables /specs-prettified/realtime/openapi.stable.json patch /v1/stable/conversation-state/{userID}/variables Updates variables in the conversation state by merging with the properties in the request body. # Send Source: https://www.voiceflow.com/docs/api-reference/conversation/send /specs-prettified/realtime/openapi.stable.json put /v1/stable/conversation/{userID} Advances a conversation by one turn: the body carries the action to apply, and the response carries the traces the agent produced in reply. # WebSocket Source: https://www.voiceflow.com/docs/api-reference/conversations-api/interact-socket Hold a persistent socket.io connection to the Voiceflow runtime for real-time conversations, and read the events it emits over that channel. The Voiceflow WebSocket runtime uses [socket.io](https://socket.io/) to establish persistent, bidirectional connections for real-time conversational AI interactions. This is a different transport from the [conversation endpoints](/docs/api-reference/conversation/send), not a different version of them. Those take one turn per request and return when the turn is done. A socket stays open, pushes traces as they are produced, and yields a `sessionKey` that server-side event endpoints need in order to target a running session. Find the [socket.io client](https://github.com/socketio) in your respective development language. This documentation will use javascript, but the fundamentals remain the same. ## Connection configuration ```js import { io } from 'socket.io-client'; const socket = io('https://general-runtime.voiceflow.com', { path: '/v4/interact/socket', timeout: 10000, transports: ['websocket', 'polling', 'webtransport'], // optional fallbacks reconnection: true, tryAllTransports: true, reconnectionDelay: 1000, reconnectionAttempts: 5, reconnectionDelayMax: 5000, }); ``` [socket.io](http://socket.io) allows for fallback transports if the end-client does not allow the websocket protocol (wss://), common in many firewalls and enterprise settings. ## Lifecycle A session is not the same as the socket.io connection. You can disconnect/reconnect multiple times and still continue the same conversation session. For more information on socket.io lifecycle management, reference [documentation](https://socket.io/docs/v4/client-api/). ### Initialization sequence 1. Wait for `connect`. This is a socket.io level connection established. 2. Send `client.start`. Send voiceflow project metadata/config \+ optional `sessionKey`. 3. Wait for `client.started`. Client handshake, confirms configuration. 4. If `client.started` specifies `newSessionRequired`: 1. Send `session.create`. 2. Wait for `session.created`. Save returned `sessionKey` for future use. 5. Agent is now ready for interactions ```ts // save sessionKey on client side for future reconnections let sessionKey: string | undefined; // socket.io level connection socket.on('connect', () => { // voiceflow client handshake socket.emit('client.start', { sessionKey, ...metadata }); socket.once('client.started', (payload: { newSessionRequired: boolean }) => { if (payload.newSessionRequired === false) { return ready(); } // session create handshake socket.emit('session.create', {}); socket.once('session.created', (payload: { sessionKey: string }) => { sessionKey = payload.sessionKey; ready(); }); }); }) ``` ### Action Lifecycle Once the session is ready, you can now send actions to the agent and get responses back. 1. send new action with `action.send`, i.e. `{ type: 'text', payload: 'hello' }` 2. get back a status `action.status` either `status: 'accepted' | 'rejected'` 3. if `status: accepted`: 1. get back agent responses with `action.trace`, display to user 2. get `action.status` with `status: 'completed'` This represents the back and forth conversation with the agent. Try to not send a new action while an existing action is running. While this is supported, it can make it harder to debug user state and lead to certain race conditions. Instead wait for `status: 'completed'` or `status: 'rejected'` after sending an action. ### Conversation Lifecycle #### Start To start the conversation from the beginning, your first action should be: ```ts socket.emit('action.send', { action: { type: 'launch', payload: {} } }); ``` It is also possible to launch from specific points in the conversation with [events](https://docs.voiceflow.com/docs/introduction-to-events): ```ts socket.emit('action.send', { action: { type: 'event', payload: { event: { name: 'event_name' } } } }); ``` #### End The session ending also signals that the conversation has ended. This can also occur because of timeouts. ```ts socket.on('session.ended', () => { // cleanup code }) ``` ## Client events ### `client.start` Initial Voiceflow metadata and configuration to validate and set up the client. This is aways the first message that the client should send to the server after socket.io successfully connects. Server will respond with `client.started`. #### Payload `?:` denotes optional properties. ```ts interface ClientStartPayload { userID: string; // primary user identifier projectID: string; // voiceflow projectID // alias of the environment to use. Omit to route the session via the project's // traffic split (hashed by userID, so a given userID routes consistently). environmentID?: string; // session to reconnect to, ignore if new session sessionKey?: string | null; // voiceflow project API Key (under settings), do not set for public facing clients authorization?: string; config?: { // break up LLM responses into live chunks [default: false] completionEvents: boolean; // timezone in IANA (tz database) for the vf_user_timezone variable userTimezone?: string; audioEvents: boolean; // enable TTS audio chunk responses audioEncoding?: 'audio/x-mulaw' | 'audio/pcm'; // audio response format }; } ``` #### Example Call ```ts socket.emit('client.start', { userID: 'test@test.com', projectID: '6939bedf69c7ce5ee7a108ed', authorization: 'VF.DM...', config: { completionEvents: true }; }); ``` ### `session.create` Creates a new session for the user. Should be sent after `client.started` indicates `newSessionRequired: true`. Server will respond with `session.created`. #### Example Call ```ts socket.emit('session.create', {}); ``` ### `action.send` Sends a user action to the server. A valid session must already exist. Server will respond with `action.status` and `action.trace` events. [See possible action types in the `action` body of interaction requests.](/docs/api-reference/conversation/send). #### Payload ```ts interface ActionSendPayload { action: { // request type: "text" | "intent" | "launch" | "event" | "action" | etc. type: string; // action-specific payload payload?: string | object; }; } ``` #### Example Call ```ts socket.emit('action.send', { action: { type: 'text', payload: 'Hello, how are you?' } }); ``` ## Server events ### `client.started` Server ack to `client.start`, informs if a new session needs to be created #### Payload ```ts interface ClientStartedPayload { newSessionRequired: boolean } ``` #### Example ```ts socket.on('client.started', (payload: ClientStartedPayload) => { if (payload.newSessionRequired) { socket.emit('session.create', {}); } else { // session is now ready for interactions } }); ``` ### `session.created` Confirms that a new session has been created. Client should store the `sessionKey` for future reconnections. #### Payload ```ts interface SessionCreatedPayload { sessionKey: string; // JWT session key to store and use for reconnections } ``` #### Example ```ts socket.on('session.created', (payload: SessionCreatedPayload) => { localStorage.setItem('sessionKey', payload.sessionKey); // session is now ready for interactions }); ``` ### `session.ended` Indicates that the conversation session has ended. Client should close the session and optionally display a workflow to create a new one. #### Payload ```ts interface SessionEndedPayload { // reason for session ending (e.g., "end_of_diagram", "inactivity_timeout", etc.) reason: string; } ``` ### `action.trace` Represents agent responses and debugging information for an action. [See possible trace types](/docs/api-reference/trace-types). #### Payload ```ts type ActionTracePayload = { // trace object containing agent response data (speak, text, audio, etc.) trace: Trace; // message identifier matching the action.send messageID messageID: string; } ``` #### Example ```ts socket.on('action.trace', (payload: ActionTracePayload) => { // Handle trace data (speech, text, audio chunks, etc.) console.log('Trace received:', payload.trace); }); ``` ### `action.status` Indicates the status of an action that was sent via `action.send`. This event is sent when an action is accepted, rejected, or completed. #### Payload ```ts interface ActionStatusPayload { status: 'accepted' | 'rejected' | 'completed'; // action status messageID: string; // message identifier matching the action.send messageID reason?: string; // optional reason for rejection or completion } ``` ### `server.restart` Server is gracefully shutting down and informing the client to reconnect to a different server instance. #### Payload ```ts interface ServerRestartPayload { action?: { type: string; payload?: string | object; diagramID?: string; time?: number; }; // optional action to replay after reconnection } ``` ### `error` General error message from the server. May occur at any point during the connection. #### Payload ```ts interface ErrorPayload { code?: string; // optional error code error: string; // error message } ``` # Create table document Source: https://www.voiceflow.com/docs/api-reference/document/create-table-document /specs-prettified/realtime/openapi.stable.json post /v1/stable/document/table Adds a document to the knowledge base, a source the knowledge base retrieves from. The response carries the ID that later calls address it by. # Create text document Source: https://www.voiceflow.com/docs/api-reference/document/create-text-document /specs-prettified/realtime/openapi.stable.json post /v1/stable/document/text Adds a document to the knowledge base, a source the knowledge base retrieves from. The response carries the ID that later calls address it by. # Create URL document Source: https://www.voiceflow.com/docs/api-reference/document/create-url-document /specs-prettified/realtime/openapi.stable.json post /v1/stable/document/url Adds a document to the knowledge base, a source the knowledge base retrieves from. The response carries the ID that later calls address it by. # Delete document Source: https://www.voiceflow.com/docs/api-reference/document/delete-document /specs-prettified/realtime/openapi.stable.json delete /v1/stable/document/{documentID} Deletes a single document by ID. A document is a source the knowledge base retrieves from. The response carries only a confirmation message, so refetch the documents to see what is left. # Get document Source: https://www.voiceflow.com/docs/api-reference/document/get-document /specs-prettified/realtime/openapi.stable.json get /v1/stable/document/{documentID} Returns a single document by ID, with the fields that define it. A document is a source the knowledge base retrieves from. # List documents Source: https://www.voiceflow.com/docs/api-reference/document/list-documents /specs-prettified/realtime/openapi.stable.json get /v1/stable/document Returns every document in the knowledge base. A document is a source the knowledge base retrieves from. The call takes no paging parameters, so one request yields the whole set. # Update document Source: https://www.voiceflow.com/docs/api-reference/document/update-document /specs-prettified/realtime/openapi.stable.json patch /v1/stable/document/{documentID} Changes an existing document in place. The response carries only a confirmation message, so refetch the document to read its new values. # Clone environment Source: https://www.voiceflow.com/docs/api-reference/environment/clone-environment /specs-prettified/realtime/openapi.stable.json post /v1/stable/environment/{environmentAlias}/clone Copies an environment into a new one under an alias you choose, giving somewhere to change the agent without touching the environment being cloned. # Compile environment Source: https://www.voiceflow.com/docs/api-reference/environment/compile-environment /specs-prettified/realtime/openapi.stable.json put /v1/stable/environment/{environmentAlias}/compile Rebuilds the environment’s runtime form from its current definition, which is what a conversation actually executes against. # Delete environment Source: https://www.voiceflow.com/docs/api-reference/environment/delete-environment /specs-prettified/realtime/openapi.stable.json delete /v1/stable/environment/{environmentAlias} Deletes a single environment by ID. An environment is one draft-and-published copy of the agent. The response carries only a confirmation message, so refetch the environments to see what is left. # Export environment Source: https://www.voiceflow.com/docs/api-reference/environment/export-environment /specs-prettified/realtime/openapi.stable.json get /v1/stable/environment/{environmentAlias}/export Serialises the whole environment - its agent, playbooks, tools and knowledge base - into a single document you can archive or move to another project. # Get environment Source: https://www.voiceflow.com/docs/api-reference/environment/get-environment /specs-prettified/realtime/openapi.stable.json get /v1/stable/environment/{environmentAlias} Returns a single environment by ID, with the fields that define it. An environment is one draft-and-published copy of the agent. # List environments Source: https://www.voiceflow.com/docs/api-reference/environment/list-environments /specs-prettified/realtime/openapi.stable.json get /v1/stable/environment Returns every environment in the project. An environment is one draft-and-published copy of the agent. The call takes no paging parameters, so one request yields the whole set. # Merge environments Source: https://www.voiceflow.com/docs/api-reference/environment/merge-environments /specs-prettified/realtime/openapi.stable.json put /v1/stable/environment/merge Folds the contents of one environment into another, so work done in a clone can be brought back to the environment it was cloned from. # Publish environment Source: https://www.voiceflow.com/docs/api-reference/environment/publish-environment /specs-prettified/realtime/openapi.stable.json post /v1/stable/environment/{environmentAlias}/publish Promotes the environment’s draft to its published version, which is the copy real traffic reaches. The request names the release so it can be told apart in the history. # Update environment Source: https://www.voiceflow.com/docs/api-reference/environment/update-environment /specs-prettified/realtime/openapi.stable.json patch /v1/stable/environment/{environmentAlias} Changes an existing environment in place. The response carries only a confirmation message, so refetch the environment to read its new values. # Update traffic split Source: https://www.voiceflow.com/docs/api-reference/environment/update-traffic-split /specs-prettified/realtime/openapi.stable.json put /v1/stable/environment/update-traffic-split Changes an existing environment in place. The response carries only a confirmation message, so refetch the environment to read its new values. # Create evaluation Source: https://www.voiceflow.com/docs/api-reference/evaluation/create-evaluation /specs-prettified/realtime/openapi.stable.json post /v1/stable/evaluation Adds a evaluation to the project, a criterion a model scores past conversations against. The response carries the ID that later calls address it by. # Delete evaluation Source: https://www.voiceflow.com/docs/api-reference/evaluation/delete-evaluation /specs-prettified/realtime/openapi.stable.json delete /v1/stable/evaluation/{evaluationID} Deletes a single evaluation by ID. An evaluation is a criterion a model scores past conversations against. The response carries only a confirmation message, so refetch the evaluations to see what is left. # Get evaluation Source: https://www.voiceflow.com/docs/api-reference/evaluation/get-evaluation /specs-prettified/realtime/openapi.stable.json get /v1/stable/evaluation/{evaluationID} Returns a single evaluation by ID, with the fields that define it. An evaluation is a criterion a model scores past conversations against. # List evaluations Source: https://www.voiceflow.com/docs/api-reference/evaluation/list-evaluations /specs-prettified/realtime/openapi.stable.json get /v1/stable/evaluation Returns every evaluation in the project. An evaluation is a criterion a model scores past conversations against. The call takes no paging parameters, so one request yields the whole set. # Run evaluation Source: https://www.voiceflow.com/docs/api-reference/evaluation/run-evaluation /specs-prettified/realtime/openapi.stable.json post /v1/stable/evaluation/{evaluationID}/run Scores one finished conversation against an evaluation. The response carries the verdict together with the reasoning behind it, so a low score says why. # Update evaluation Source: https://www.voiceflow.com/docs/api-reference/evaluation/update-evaluation /specs-prettified/realtime/openapi.stable.json patch /v1/stable/evaluation/{evaluationID} Changes an existing evaluation in place. The response carries only a confirmation message, so refetch the evaluation to read its new values. # Create many paths Source: https://www.voiceflow.com/docs/api-reference/function-path/create-many-paths /specs-prettified/realtime/openapi.stable.json post /v1/stable/function-path/batch Adds several function paths to its function in one request, each taking the fields the single-create call takes. The response carries the created function paths in the same shape the list call returns. # Create path Source: https://www.voiceflow.com/docs/api-reference/function-path/create-path /specs-prettified/realtime/openapi.stable.json post /v1/stable/function-path Adds a function path to its function, one of the named exits a function can return through. The response carries the ID that later calls address it by. # Delete path Source: https://www.voiceflow.com/docs/api-reference/function-path/delete-path /specs-prettified/realtime/openapi.stable.json delete /v1/stable/function-path/{pathID} Deletes a single function path by ID. A function path is one of the named exits a function can return through. The response carries only a confirmation message, so refetch the function paths to see what is left. # Get path Source: https://www.voiceflow.com/docs/api-reference/function-path/get-path /specs-prettified/realtime/openapi.stable.json get /v1/stable/function-path/{pathID} Returns a single function path by ID, with the fields that define it. A function path is one of the named exits a function can return through. # List paths Source: https://www.voiceflow.com/docs/api-reference/function-path/list-paths /specs-prettified/realtime/openapi.stable.json get /v1/stable/function-path Returns every function path in its function. A function path is one of the named exits a function can return through. The call takes no paging parameters, so one request yields the whole set. # Update path Source: https://www.voiceflow.com/docs/api-reference/function-path/update-path /specs-prettified/realtime/openapi.stable.json patch /v1/stable/function-path/{pathID} Changes an existing function path in place. The response carries only a confirmation message, so refetch the function path to read its new values. # Create many variables Source: https://www.voiceflow.com/docs/api-reference/function-variable/create-many-variables /specs-prettified/realtime/openapi.stable.json post /v1/stable/function-variable/batch Adds several function variables to its function in one request, each taking the fields the single-create call takes. The response carries the created function variables in the same shape the list call returns. # Create variable Source: https://www.voiceflow.com/docs/api-reference/function-variable/create-variable /specs-prettified/realtime/openapi.stable.json post /v1/stable/function-variable Adds a function variable to its function, an input or output a function declares. The response carries the ID that later calls address it by. # Delete variable Source: https://www.voiceflow.com/docs/api-reference/function-variable/delete-variable /specs-prettified/realtime/openapi.stable.json delete /v1/stable/function-variable/{variableID} Deletes a single function variable by ID. A function variable is an input or output a function declares. The response carries only a confirmation message, so refetch the function variables to see what is left. # Get variable Source: https://www.voiceflow.com/docs/api-reference/function-variable/get-variable /specs-prettified/realtime/openapi.stable.json get /v1/stable/function-variable/{variableID} Returns a single function variable by ID, with the fields that define it. A function variable is an input or output a function declares. # List variables Source: https://www.voiceflow.com/docs/api-reference/function-variable/list-variables /specs-prettified/realtime/openapi.stable.json get /v1/stable/function-variable Returns every function variable in its function. A function variable is an input or output a function declares. The call takes no paging parameters, so one request yields the whole set. # Update variable Source: https://www.voiceflow.com/docs/api-reference/function-variable/update-variable /specs-prettified/realtime/openapi.stable.json patch /v1/stable/function-variable/{variableID} Changes an existing function variable in place. The response carries only a confirmation message, so refetch the function variable to read its new values. # Create function Source: https://www.voiceflow.com/docs/api-reference/function/create-function /specs-prettified/realtime/openapi.stable.json post /v1/stable/function Adds a function to the environment, custom JavaScript that runs in Voiceflow’s sandbox and returns through a named path. The response carries the ID that later calls address it by. # Create many functions Source: https://www.voiceflow.com/docs/api-reference/function/create-many-functions /specs-prettified/realtime/openapi.stable.json post /v1/stable/function/batch Adds several functions to the environment in one request, each taking the fields the single-create call takes. The response carries the created functions in the same shape the list call returns. # Delete function Source: https://www.voiceflow.com/docs/api-reference/function/delete-function /specs-prettified/realtime/openapi.stable.json delete /v1/stable/function/{functionID} Deletes a single function by ID. A function is custom JavaScript that runs in Voiceflow’s sandbox and returns through a named path. The response carries only a confirmation message, so refetch the functions to see what is left. # Get function Source: https://www.voiceflow.com/docs/api-reference/function/get-function /specs-prettified/realtime/openapi.stable.json get /v1/stable/function/{functionID} Returns a single function by ID, with the fields that define it. A function is custom JavaScript that runs in Voiceflow’s sandbox and returns through a named path. # List functions Source: https://www.voiceflow.com/docs/api-reference/function/list-functions /specs-prettified/realtime/openapi.stable.json get /v1/stable/function Returns every function in the environment. A function is custom JavaScript that runs in Voiceflow’s sandbox and returns through a named path. The call takes no paging parameters, so one request yields the whole set. # Update function Source: https://www.voiceflow.com/docs/api-reference/function/update-function /specs-prettified/realtime/openapi.stable.json patch /v1/stable/function/{functionID} Changes an existing function in place. The response carries only a confirmation message, so refetch the function to read its new values. # Query knowledge base Source: https://www.voiceflow.com/docs/api-reference/knowledge-base/query-knowledge-base /specs-prettified/realtime/openapi.stable.json post /v1/stable/knowledge-base/query Searches the knowledge base and returns the passages a retrieval would surface, which is how to see what an agent will be grounded on before it answers. # Create MCP server Source: https://www.voiceflow.com/docs/api-reference/mcp-server/create-mcp-server /specs-prettified/realtime/openapi.stable.json post /v1/stable/mcp-server Adds a MCP server to the environment, a registered Model Context Protocol server whose tools an agent can call. The response carries the ID that later calls address it by. # Delete MCP server Source: https://www.voiceflow.com/docs/api-reference/mcp-server/delete-mcp-server /specs-prettified/realtime/openapi.stable.json delete /v1/stable/mcp-server/{serverID} Deletes a single MCP server by ID. A MCP server is a registered Model Context Protocol server whose tools an agent can call. The response carries only a confirmation message, so refetch the MCP servers to see what is left. # Get MCP server Source: https://www.voiceflow.com/docs/api-reference/mcp-server/get-mcp-server /specs-prettified/realtime/openapi.stable.json get /v1/stable/mcp-server/{serverID} Returns a single MCP server by ID, with the fields that define it. A MCP server is a registered Model Context Protocol server whose tools an agent can call. # List MCP servers Source: https://www.voiceflow.com/docs/api-reference/mcp-server/list-mcp-servers /specs-prettified/realtime/openapi.stable.json get /v1/stable/mcp-server Returns every MCP server in the environment. A MCP server is a registered Model Context Protocol server whose tools an agent can call. The call takes no paging parameters, so one request yields the whole set. # Sync MCP server Source: https://www.voiceflow.com/docs/api-reference/mcp-server/sync-mcp-server /specs-prettified/realtime/openapi.stable.json put /v1/stable/mcp-server/{serverID}/sync Refreshes the stored list of tools an MCP server advertises, which is how MCP tools come to exist rather than being created by hand. # Update MCP server Source: https://www.voiceflow.com/docs/api-reference/mcp-server/update-mcp-server /specs-prettified/realtime/openapi.stable.json patch /v1/stable/mcp-server/{serverID} Changes an existing MCP server in place. The response carries only a confirmation message, so refetch the MCP server to read its new values. # Get MCP tool Source: https://www.voiceflow.com/docs/api-reference/mcp-tool/get-mcp-tool /specs-prettified/realtime/openapi.stable.json get /v1/stable/mcp-tool/{toolID} Returns a single MCP tool by ID, with the fields that define it. A MCP tool is a tool an MCP server advertises, populated by syncing the server rather than by hand. # List MCP tools Source: https://www.voiceflow.com/docs/api-reference/mcp-tool/list-mcp-tools /specs-prettified/realtime/openapi.stable.json get /v1/stable/mcp-tool Returns every MCP tool in its server. A MCP tool is a tool an MCP server advertises, populated by syncing the server rather than by hand. The call takes no paging parameters, so one request yields the whole set. # Create many playbooks Source: https://www.voiceflow.com/docs/api-reference/playbook/create-many-playbooks /specs-prettified/realtime/openapi.stable.json post /v1/stable/playbook/batch 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. # Create playbook Source: https://www.voiceflow.com/docs/api-reference/playbook/create-playbook /specs-prettified/realtime/openapi.stable.json post /v1/stable/playbook 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. # Delete playbook Source: https://www.voiceflow.com/docs/api-reference/playbook/delete-playbook /specs-prettified/realtime/openapi.stable.json delete /v1/stable/playbook/{playbookID} Deletes a single playbook by ID. A playbook is a set of instructions that drives an agent toward a goal, calling tools as it needs them. The response carries only a confirmation message, so refetch the playbooks to see what is left. # Get playbook Source: https://www.voiceflow.com/docs/api-reference/playbook/get-playbook /specs-prettified/realtime/openapi.stable.json get /v1/stable/playbook/{playbookID} Returns a single playbook by ID, with the fields that define it. A playbook is a set of instructions that drives an agent toward a goal, calling tools as it needs them. # List playbooks Source: https://www.voiceflow.com/docs/api-reference/playbook/list-playbooks /specs-prettified/realtime/openapi.stable.json get /v1/stable/playbook Returns every playbook in the environment. A playbook is a set of instructions that drives an agent toward a goal, calling tools as it needs them. The call takes no paging parameters, so one request yields the whole set. # Update playbook Source: https://www.voiceflow.com/docs/api-reference/playbook/update-playbook /specs-prettified/realtime/openapi.stable.json patch /v1/stable/playbook/{playbookID} Changes an existing playbook in place. The response carries only a confirmation message, so refetch the playbook to read its new values. # Create project Source: https://www.voiceflow.com/docs/api-reference/project/create-project /specs-prettified/realtime/openapi.stable.json post /v1/stable/project Adds a project to the workspace, the container that owns exactly one agent. The response carries the ID that later calls address it by. # Delete project Source: https://www.voiceflow.com/docs/api-reference/project/delete-project /specs-prettified/realtime/openapi.stable.json delete /v1/stable/project/{projectID} Deletes a single project by ID. A project is the container that owns exactly one agent. The response carries only a confirmation message, so refetch the projects to see what is left. # Get project Source: https://www.voiceflow.com/docs/api-reference/project/get-project /specs-prettified/realtime/openapi.stable.json get /v1/stable/project/{projectID} Returns a single project by ID, with the fields that define it. A project is the container that owns exactly one agent. # List projects Source: https://www.voiceflow.com/docs/api-reference/project/list-projects /specs-prettified/realtime/openapi.stable.json get /v1/stable/project Returns every project in the workspace. A project is the container that owns exactly one agent. The call takes no paging parameters, so one request yields the whole set. # Update project Source: https://www.voiceflow.com/docs/api-reference/project/update-project /specs-prettified/realtime/openapi.stable.json patch /v1/stable/project/{projectID} Changes an existing project in place. The response carries only a confirmation message, so refetch the project to read its new values. # Your first API request Source: https://www.voiceflow.com/docs/api-reference/quickstart Run a real conversation turn against your agent in three curl calls: start a session, launch the conversation, and send a message. Running a conversation over the API takes two calls: launch the agent, then send what the user said. A conversation is identified by the `userID` in the path, so there is no session to create and nothing to thread between calls. ## The recipe ```bash main.sh #!/usr/bin/env bash # Recipe: first-conversation-turn # # Runs a real conversation against a Voiceflow agent over the REST API: launch # it, then send a user message, reading the traces returned at each step. # # Required environment: # VF_PAT personal access token (Settings -> Access tokens), vfp_..._... # VF_PROJECT_ID the project ID (Settings -> General -> Metadata) set -euo pipefail : "${VF_PAT:?set VF_PAT to a personal access token from Settings -> Access tokens}" : "${VF_PROJECT_ID:?set VF_PROJECT_ID to the project ID}" BASE="https://realtime-api.voiceflow.com/v1/stable" ENVIRONMENT="${VF_ENVIRONMENT:-main}" # A conversation is identified by the userID in the path. There is no separate # session to create: the first call starts one, and later calls with the same # userID continue it. USER_ID="cookbook-$(date +%s)" # The runtime can emit raw control characters inside trace payload strings, # which strict JSON parsers reject. Strip them before jq. json() { tr -d '\000-\037'; } # The runner keys on this prefix to tell a product change (exit 20) from a # broken script (exit 30). Always route step failures through it. fail() { echo "FAIL at $1" >&2; exit 1; } send() { curl -sf -X PUT "$BASE/conversation/$USER_ID?projectID=$VF_PROJECT_ID&environmentAlias=$ENVIRONMENT" \ -H "Authorization: Bearer $VF_PAT" \ -H "Content-Type: application/json" \ -d "$1" } # 1. Launch the conversation. `version` selects the draft or the published # build of the environment, so the same call can exercise either. LAUNCH=$(send '{ "action": { "type": "launch" }, "version": "published" }') \ || fail "launch the conversation (a 401 here means the token is wrong or expired; a 400 saying 'invalid environment tag' means the environmentAlias does not exist on this project)" printf '%s' "$LAUNCH" | json | jq -e '.traces | length > 0' > /dev/null \ || fail "launch returned no traces" # 2. Send a user message to the SAME userID. The agent picks up where the # launch left off - nothing needs to be threaded through by hand. REPLY=$(send '{ "action": { "type": "text", "payload": "What can you help me with?" }, "version": "published" }') \ || fail "send a user message" printf '%s' "$REPLY" | json | jq -e '.traces | length > 0' > /dev/null \ || fail "reply returned no traces" # 3. The agent's words arrive as `text` traces. Assert one came back, so the # recipe proves a real answer rather than just a 200. printf '%s' "$REPLY" | json | jq -e '[.traces[] | select(.type == "text")] | length > 0' > /dev/null \ || fail "reply contained no text trace (a voice agent answers with speak instead)" echo "ok: launch returned $(printf '%s' "$LAUNCH" | json | jq '.traces | length') trace(s), reply returned $(printf '%s' "$REPLY" | json | jq '.traces | length') trace(s), types: $(printf '%s' "$REPLY" | json | jq -c '[.traces[].type] | unique')" ``` ## How it works - The `userID` in the path IS the conversation. Call the same path again and the agent picks up where it left off; call it with a new `userID` and you get a fresh conversation. - `action` is what the user did. `launch` starts the agent from its entry point, `text` sends something they typed. The full set is in the [trace reference](/docs/api-reference/trace-types). - `version` chooses which build answers: `published` runs the live version of the environment, `draft` runs what you are currently editing. A project that has never been published has no published build yet, so use `draft` until the first publish. - The response is an array of [traces](/docs/api-reference/trace-types) describing what the agent did. `text` carries the words a chat agent said; a voice agent answers with `speak` instead. - `environmentAlias` names the environment to run. New projects start with `main`. ## When it fails | Symptom | Cause | Fix | | --- | --- | --- | | `401` | The token is missing, wrong, or expired | Personal access tokens expire, up to a maximum of a year. Create a new one under **Settings** → **Access tokens** | | `400 invalid environment tag` | The `environmentAlias` does not exist on this project | List the real ones with `GET /v1/stable/environment?projectID=...`. New projects use `main`, not `production` | | Launch fails or returns nothing on a brand new project | The environment has never been published, so there is no published build to run | Send `"version": "draft"`, which runs what you are editing and works on a fresh project | | `jq` reports invalid JSON | The runtime emits raw control characters inside trace payload strings | Strip them before parsing, as this recipe does with `tr -d '\000-\037'` | | Traces come back but none is `text` | The agent replied with audio | A voice agent answers with `speak`; assert on that instead | # Analytics overview Source: https://www.voiceflow.com/docs/api-reference/sections/analytics Query usage and cost: tokens, calls, conversations and unique users, plus the spend attributed to individual functions, playbooks and tools. Every conversation an agent handles spends tokens, costs money, and exercises some subset of its playbooks, functions and tools. Analytics turns that into numbers you can query: scoped to an organization, a workspace or a single project, and broken down by the component that caused the spend. ## Endpoints ### Analytics query | Endpoint | Description | | --- | --- | | POST [Query call count](/docs/api-reference/analytics/query-call-count) | Query call count for a project. | | POST [Query call duration](/docs/api-reference/analytics/query-call-duration) | Query real call duration (talk time) for a project. | | POST [Query workspace transcript count](/docs/api-reference/analytics/query-workspace-transcript-count) | Query transcript count for a workspace. | | POST [Query project transcript count](/docs/api-reference/analytics/query-project-transcript-count) | Query transcript count for a project. | | POST [Query transcript cost](/docs/api-reference/analytics/query-transcript-cost) | Query per-interval cost and transcript count for a project. | | POST [Query workspace interaction count](/docs/api-reference/analytics/query-workspace-interaction-count) | Query interaction count for a workspace. | | POST [Query project interaction count](/docs/api-reference/analytics/query-project-interaction-count) | Query interaction count for a project. | | POST [Query organization token usage](/docs/api-reference/analytics/query-organization-token-usage) | Query token usage for an organization. | | POST [Query workspace token usage](/docs/api-reference/analytics/query-workspace-token-usage) | Query token usage for a workspace. | | POST [Query project token usage](/docs/api-reference/analytics/query-project-token-usage) | Query token usage for a project. | | POST [Query hourly organization token usage](/docs/api-reference/analytics/query-hourly-organization-token-usage) | Query hourly token usage for an organization with optional workspace/project filters. | | POST [Query hourly project token usage](/docs/api-reference/analytics/query-hourly-project-token-usage) | Query timezone-aware hourly token usage for a project. | | POST [Query daily token usage](/docs/api-reference/analytics/query-daily-token-usage) | Daily breakdown of organization token usage grouped by class and category within a date range. | | POST [Query entity token usage](/docs/api-reference/analytics/query-entity-token-usage) | Token totals grouped per project and per workspace for an organization. | | POST [Query category token usage](/docs/api-reference/analytics/query-category-token-usage) | Query timezone-aware hourly token usage for a project grouped by usage category. | | POST [Query playbook usage](/docs/api-reference/analytics/query-playbook-usage) | Query playbook usage for a project. | | POST [Query workflow usage](/docs/api-reference/analytics/query-workflow-usage) | Query workflow usage for a project. | | POST [Query prompt usage](/docs/api-reference/analytics/query-prompt-usage) | Query prompt usage for a project. | | POST [Query intent usage](/docs/api-reference/analytics/query-intent-usage) | Query intent usage for a project. | | POST [Query function usage](/docs/api-reference/analytics/query-function-usage) | Query function usage for a project. | | POST [Query API tool usage](/docs/api-reference/analytics/query-api-tool-usage) | Query API tool usage for a project. | | POST [Query MCP tool usage](/docs/api-reference/analytics/query-mcp-tool-usage) | Query MCP tool usage for a project. | | POST [Query knowledge base document usage](/docs/api-reference/analytics/query-knowledge-base-document-usage) | Query knowledge base document usage for a project. | | POST [Query integration usage](/docs/api-reference/analytics/query-integration-usage) | Query integration usage for a project. | | POST [Query unique user count](/docs/api-reference/analytics/query-unique-user-count) | Query unique users for a project. | ## Every query has a scope Analytics endpoints end in the level they measure, and the level is part of the path: ```text /v1/stable/analytics/query/token-usage/organization/{organizationID} /v1/stable/analytics/query/token-usage/workspace/{workspaceID} /v1/stable/analytics/query/token-usage/project/{projectID} ``` Not every metric exists at every level, which is itself informative: interaction counts are project and workspace, entity token usage is organization only. ## What you can measure - **Spend** - token usage overall, by hour, by day, by category, and by entity; plus transcript cost. - **Volume** - interactions, transcripts, unique users, call count and call duration. - **Where it goes** - usage attributed to functions, playbooks, workflows, intents, prompts, integrations, API tools, MCP tools and knowledge base documents. That last group is the one most people skip. It answers which parts of an agent are actually costing money, rather than what the agent cost in total. ## Sending a query Each query takes a request body describing the window and grouping you want, so they are `POST` rather than `GET` despite being reads. ## What analytics does not return Analytics returns numbers about conversations, never the conversations themselves. To read what was actually said, use [Observe](/docs/api-reference/sections/observe). # Build overview Source: https://www.voiceflow.com/docs/api-reference/sections/build Create and manage the pieces an agent is built from: playbooks, functions, tools, API tools, MCP servers, variables and knowledge base documents. An agent is assembled from parts: a playbook and the tools it can call, a function with its branches and variables, an API tool, an MCP server, the project's variables, and the documents its knowledge base retrieves from. All of them can be created and changed from outside the Studio, which is what makes generating agents from a template, importing them from another system, or keeping a set of projects consistent with each other possible. ## Endpoints ### Agent | Endpoint | Description | | --- | --- | | GET [Get agent](/docs/api-reference/agent/get-agent) | Get agent configuration. | | PATCH [Update agent](/docs/api-reference/agent/update-agent) | Update agent configuration. | ### Playbook | Endpoint | Description | | --- | --- | | GET [List playbooks](/docs/api-reference/playbook/list-playbooks) | List all playbooks by project ID. | | POST [Create playbook](/docs/api-reference/playbook/create-playbook) | Create a new playbook. | | POST [Create many playbooks](/docs/api-reference/playbook/create-many-playbooks) | Create multiple new playbooks. | | GET [Get playbook](/docs/api-reference/playbook/get-playbook) | Get a playbook by ID. | | PATCH [Update playbook](/docs/api-reference/playbook/update-playbook) | Update a playbook by ID. | | DELETE [Delete playbook](/docs/api-reference/playbook/delete-playbook) | Delete a playbook by ID. | ### Function | Endpoint | Description | | --- | --- | | GET [List functions](/docs/api-reference/function/list-functions) | List all functions by project ID. | | POST [Create function](/docs/api-reference/function/create-function) | Create a new function. | | POST [Create many functions](/docs/api-reference/function/create-many-functions) | Create multiple new functions. | | GET [Get function](/docs/api-reference/function/get-function) | Get a function by ID. | | PATCH [Update function](/docs/api-reference/function/update-function) | Update a function by ID. | | DELETE [Delete function](/docs/api-reference/function/delete-function) | Delete a function by ID. | ### Function path | Endpoint | Description | | --- | --- | | GET [List paths](/docs/api-reference/function-path/list-paths) | List all paths by function ID. | | POST [Create path](/docs/api-reference/function-path/create-path) | Create a new path. | | POST [Create many paths](/docs/api-reference/function-path/create-many-paths) | Create multiple new paths. | | GET [Get path](/docs/api-reference/function-path/get-path) | Get a path by ID. | | PATCH [Update path](/docs/api-reference/function-path/update-path) | Update a path by ID. | | DELETE [Delete path](/docs/api-reference/function-path/delete-path) | Delete a path by ID. | ### Function variable | Endpoint | Description | | --- | --- | | GET [List variables](/docs/api-reference/function-variable/list-variables) | List all variables by function ID. | | POST [Create variable](/docs/api-reference/function-variable/create-variable) | Create a new variable. | | POST [Create many variables](/docs/api-reference/function-variable/create-many-variables) | Create multiple new variables. | | GET [Get variable](/docs/api-reference/function-variable/get-variable) | Get a variable by ID. | | PATCH [Update variable](/docs/api-reference/function-variable/update-variable) | Update a variable by ID. | | DELETE [Delete variable](/docs/api-reference/function-variable/delete-variable) | Delete a variable by ID. | ### Tool | Endpoint | Description | | --- | --- | | GET [List tools](/docs/api-reference/tool/list-tools) | List all tools for the agent or a specific playbook. | | POST [Create tool](/docs/api-reference/tool/create-tool) | Create a new tool. | | POST [Create many tools](/docs/api-reference/tool/create-many-tools) | Create multiple new tools. | | GET [Get tool](/docs/api-reference/tool/get-tool) | Get a tool by ID. | | PATCH [Update tool](/docs/api-reference/tool/update-tool) | Update a tool by ID. | | DELETE [Delete tool](/docs/api-reference/tool/delete-tool) | Delete a tool by ID. | ### API tool | Endpoint | Description | | --- | --- | | GET [List API tools](/docs/api-reference/api-tool/list-api-tools) | List all API tools by project ID. | | POST [Create API tool](/docs/api-reference/api-tool/create-api-tool) | Create a new API tool. | | POST [Create many API tools](/docs/api-reference/api-tool/create-many-api-tools) | Create multiple new API tools. | | GET [Get API tool](/docs/api-reference/api-tool/get-api-tool) | Get an API tool by ID. | | PATCH [Update API tool](/docs/api-reference/api-tool/update-api-tool) | Update an API tool by ID. | | DELETE [Delete API tool](/docs/api-reference/api-tool/delete-api-tool) | Delete an API tool by ID. | ### API tool variable | Endpoint | Description | | --- | --- | | GET [List variables](/docs/api-reference/api-tool-variable/list-variables) | List all variables by API tool ID. | | POST [Create variable](/docs/api-reference/api-tool-variable/create-variable) | Create a new variable. | | POST [Create many variables](/docs/api-reference/api-tool-variable/create-many-variables) | Create multiple new variables. | | GET [Get variable](/docs/api-reference/api-tool-variable/get-variable) | Get an variable by ID. | | PATCH [Update variable](/docs/api-reference/api-tool-variable/update-variable) | Update an variable by ID. | | DELETE [Delete variable](/docs/api-reference/api-tool-variable/delete-variable) | Delete an variable by ID. | ### Variable | Endpoint | Description | | --- | --- | | GET [List variables](/docs/api-reference/variable/list-variables) | List all variables by project ID. | | POST [Create variable](/docs/api-reference/variable/create-variable) | Create a new variable. | | POST [Create many variables](/docs/api-reference/variable/create-many-variables) | Create multiple new variables. | | GET [Get variable](/docs/api-reference/variable/get-variable) | Get a variable by ID. | | PATCH [Update variable](/docs/api-reference/variable/update-variable) | Update a variable by ID. | | DELETE [Delete variable](/docs/api-reference/variable/delete-variable) | Delete a variable by ID. | ### MCP server | Endpoint | Description | | --- | --- | | GET [List MCP servers](/docs/api-reference/mcp-server/list-mcp-servers) | List all MCP servers by project ID. | | POST [Create MCP server](/docs/api-reference/mcp-server/create-mcp-server) | Create a new MCP server. | | GET [Get MCP server](/docs/api-reference/mcp-server/get-mcp-server) | Get an MCP server by ID. | | PATCH [Update MCP server](/docs/api-reference/mcp-server/update-mcp-server) | Update an MCP server by ID. | | DELETE [Delete MCP server](/docs/api-reference/mcp-server/delete-mcp-server) | Delete an MCP server by ID. | | PUT [Sync MCP server](/docs/api-reference/mcp-server/sync-mcp-server) | Sync tool changes for an MCP server by ID. | ### MCP tool | Endpoint | Description | | --- | --- | | GET [List MCP tools](/docs/api-reference/mcp-tool/list-mcp-tools) | List all MCP tools by project ID. | | GET [Get MCP tool](/docs/api-reference/mcp-tool/get-mcp-tool) | Get an MCP tool by ID. | ### Knowledge base document | Endpoint | Description | | --- | --- | | GET [List documents](/docs/api-reference/document/list-documents) | List all documents by project ID. | | POST [Create URL document](/docs/api-reference/document/create-url-document) | Create a new document from a URL. | | POST [Create text document](/docs/api-reference/document/create-text-document) | Create a new document from raw text. | | POST [Create table document](/docs/api-reference/document/create-table-document) | Create a new document from structured data. | | GET [Get document](/docs/api-reference/document/get-document) | Get a document by ID. | | PATCH [Update document](/docs/api-reference/document/update-document) | Update a document by ID. | | DELETE [Delete document](/docs/api-reference/document/delete-document) | Delete a document by ID. | ## How the build endpoints are shaped Every resource follows the same six-verb pattern, so learning one teaches the rest: | Verb | Path | Purpose | | --- | --- | --- | | `GET` | `/{resource}` | list everything in the project | | `POST` | `/{resource}` | create one | | `POST` | `/{resource}/batch` | create many in a single call | | `GET` | `/{resource}/{id}` | fetch one | | `PATCH` | `/{resource}/{id}` | change part of one | | `DELETE` | `/{resource}/{id}` | remove one | The `batch` variant matters when you are importing. Creating fifty variables one call at a time is fifty round trips and fifty chances to end up half migrated; one batch call is atomic from your side. ## Scoping every call Build endpoints act inside one environment of one project, so both are required query parameters: ```bash curl "https://realtime-api.voiceflow.com/v1/stable/function?projectID=$VF_PROJECT_ID&environmentAlias=main" \ -H "Authorization: Bearer $VF_PAT" ``` Editing `main` changes what your team sees in the Creator. To stage changes without touching it, clone an environment first, build against the clone, and [merge](/docs/api-reference/environment/merge-environments) when you are satisfied. ## How the pieces relate - A **playbook** is the unit of agent behaviour. It holds instructions and the tools it may call. - **Tools** are what a playbook can do. An **API tool** calls an HTTP endpoint; a **function** runs your own code; an **MCP server** contributes a set of **MCP tools** discovered from that server. - **Function paths** are the branches a function can exit through, and **function variables** are its inputs and outputs. Both belong to a function and are managed separately, so you can add a branch without rewriting the function. - **Variables** are project state that persists across a conversation. - **Knowledge base documents** are the corpus the agent retrieves from. Create them from a URL, from text, or by uploading a table. ## Where to go next Once an agent is built, [publish it](/docs/api-reference/sections/publishing) to make the changes live, and [run a conversation](/docs/api-reference/sections/running-agents) against it to see how it behaves. # Insights overview Source: https://www.voiceflow.com/docs/api-reference/sections/insights Score conversations against criteria you define, so agent quality becomes a number you can track over time instead of a sample you skim. An evaluation is a set of criteria you define and then run against conversations that already happened. It turns "is the agent doing a good job" into a score you can watch over time, rather than a handful of transcripts somebody read on a Friday. ## Endpoints ### Evaluation | Endpoint | Description | | --- | --- | | GET [List evaluations](/docs/api-reference/evaluation/list-evaluations) | List all evaluations by project ID. | | POST [Create evaluation](/docs/api-reference/evaluation/create-evaluation) | Create a new evaluation. | | GET [Get evaluation](/docs/api-reference/evaluation/get-evaluation) | Get an evaluation by ID. | | PATCH [Update evaluation](/docs/api-reference/evaluation/update-evaluation) | Update an evaluation by ID. | | DELETE [Delete evaluation](/docs/api-reference/evaluation/delete-evaluation) | Delete an evaluation by ID. | | POST [Run evaluation](/docs/api-reference/evaluation/run-evaluation) | Run an evaluation. | ## The shape An **evaluation** is a definition: what you are measuring and how. Creating one does not score anything by itself. Running it applies it and produces a result. ```bash curl -X POST "https://realtime-api.voiceflow.com/v1/stable/evaluation/$EVALUATION_ID/run" \ -H "Authorization: Bearer $VF_PAT" ``` That split is deliberate. The definition is stable and version-controlled by you; runs accumulate against it, so a score means something over time rather than being a one-off measurement with its own private criteria. ## Evaluations and transcripts Evaluations score conversations that already happened, which makes [Observe](/docs/api-reference/sections/observe) the source of what they measure. Search for the transcripts you care about, then evaluate that set. ## How this differs from automated testing Evaluations judge real conversations after the fact. [QA](/docs/api-reference/sections/qa) does the opposite: it replays scripted conversations you wrote, and asserts the agent still answers the way you decided it should. Use evaluations to find out what is happening in production, and QA to stop a change breaking what already worked. ## Where to go next Once you know what to look for, encode it as a [test](/docs/api-reference/sections/qa) so a regression fails loudly instead of showing up in next month's numbers. # Manage overview Source: https://www.voiceflow.com/docs/api-reference/sections/manage Create and administer the containers your agents live in: workspaces that group projects and people, and projects that each own a single agent. Workspaces group projects and the people who can reach them. A project owns a single agent and everything inside it. These endpoints create and administer both, and they are where you get the `projectID` that almost every other endpoint in this API asks for. ## Endpoints ### Project | Endpoint | Description | | --- | --- | | GET [List projects](/docs/api-reference/project/list-projects) | List all projects by workspace ID. | | POST [Create project](/docs/api-reference/project/create-project) | Create a new project. | | GET [Get project](/docs/api-reference/project/get-project) | Get a project by ID. | | PATCH [Update project](/docs/api-reference/project/update-project) | Update a project by ID. | | DELETE [Delete project](/docs/api-reference/project/delete-project) | Delete a project by ID. | ### Workspace | Endpoint | Description | | --- | --- | | GET [List workspaces](/docs/api-reference/workspace/list-workspaces) | List all workspaces the authorized account is a member of. | | POST [Create workspace](/docs/api-reference/workspace/create-workspace) | Create a new workspace. | | GET [Get workspace](/docs/api-reference/workspace/get-workspace) | Get a single workspace by ID. | | PATCH [Update workspace](/docs/api-reference/workspace/update-workspace) | Update a single workspace by ID. | | DELETE [Delete workspace](/docs/api-reference/workspace/delete-workspace) | Delete a single workspace by ID. | ## The hierarchy An organization contains **workspaces**. A workspace contains **projects**. A project owns exactly one agent, along with its playbooks, tools, variables, knowledge base and environments. Most other endpoints in this API take a `projectID`, which you get by listing the projects in a workspace: ```bash curl "https://realtime-api.voiceflow.com/v1/stable/project?workspaceID=$VF_WORKSPACE_ID" \ -H "Authorization: Bearer $VF_PAT" ``` ## What a token can see A [personal access token](/docs/api-reference/authentication) carries your own access. Listing workspaces returns every workspace your account belongs to, not a subset scoped to the integration, so a script that iterates workspaces will reach further than you might expect. Pin the IDs you mean to operate on rather than discovering them at runtime. ## Deleting Deleting a project removes the agent and everything in it, including transcripts. Deleting a workspace removes every project inside it. Neither is recoverable through the API. ## Where to go next With a project in hand, [build its agent](/docs/api-reference/sections/build) and [ship it through environments](/docs/api-reference/sections/publishing). # Observe overview Source: https://www.voiceflow.com/docs/api-reference/sections/observe Read the conversations your agent actually had. Search transcripts, fetch a single one, and attach your own properties to record what happened. Every conversation your agent has is kept as a transcript. These endpoints let you search them, read an individual one turn by turn, and attach your own fields to record things the runtime cannot know, such as whether the conversation was escalated or how it ended. ## Endpoints ### Transcript | Endpoint | Description | | --- | --- | | POST [Search transcripts](/docs/api-reference/transcript/search-transcripts) | Search transcripts by project ID. | | GET [Get transcript](/docs/api-reference/transcript/get-transcript) | Get a transcript by ID. | ### Transcript property | Endpoint | Description | | --- | --- | | GET [List properties](/docs/api-reference/transcript-property/list-properties) | List all properties by project ID. | | POST [Create property](/docs/api-reference/transcript-property/create-property) | Create a new property. | | GET [Get property](/docs/api-reference/transcript-property/get-property) | Get property by ID. | | PATCH [Update property](/docs/api-reference/transcript-property/update-property) | Update a property by ID. | | DELETE [Delete property](/docs/api-reference/transcript-property/delete-property) | Delete a property by ID. | | PUT [Set property value](/docs/api-reference/transcript-property/set-property-value) | Set a property value on a transcript. | ## Finding conversations Transcript search is a `POST` rather than a `GET`, because the filters are rich enough to need a body: ```bash curl -X POST "https://realtime-api.voiceflow.com/v1/stable/transcript/search" \ -H "Authorization: Bearer $VF_PAT" \ -H "Content-Type: application/json" \ -d '{ "projectID": "'"$VF_PROJECT_ID"'" }' ``` Fetching a single transcript by ID returns its turns, so a common shape is search for the conversations you care about, then fetch each one. ## Properties are your own metadata A **transcript property** is a field you define on the project, and a property value is that field set on one transcript. Use them to record things the runtime cannot know: whether the conversation was escalated, which experiment a user was in, what the outcome was. Define the property once, then set its value per transcript. Because properties are project-level, they also become the vocabulary you filter searches by. ## What transcripts are not for Transcript endpoints return conversations, not counts. If you want totals, costs, or usage over time, that is [Analytics](/docs/api-reference/sections/analytics). If you want quality scored against criteria, that is [Insights](/docs/api-reference/sections/insights). ## Where to go next Transcripts are the input to [evaluations](/docs/api-reference/sections/insights) - you can run an evaluation over conversations that already happened. # Publishing overview Source: https://www.voiceflow.com/docs/api-reference/sections/publishing Ship changes with environments. Edit a draft, publish it live, clone one to work in isolation, merge it back, and split traffic between versions. An environment is a copy of your agent with its own draft and its own live version. Publishing promotes the draft; until you do, nothing you change reaches users. These endpoints let you work in an environment of your own, merge it back when it is ready, and route a share of real traffic to it to compare two versions against each other. ## Endpoints ### Environment | Endpoint | Description | | --- | --- | | GET [List environments](/docs/api-reference/environment/list-environments) | List all environments by project ID. | | PUT [Merge environments](/docs/api-reference/environment/merge-environments) | Merge one environment into another. | | PUT [Update traffic split](/docs/api-reference/environment/update-traffic-split) | Update the percentage of traffic routed to each environment. | | GET [Get environment](/docs/api-reference/environment/get-environment) | Get an environment by alias or ID. | | PATCH [Update environment](/docs/api-reference/environment/update-environment) | Update a environment by alias or ID. | | DELETE [Delete environment](/docs/api-reference/environment/delete-environment) | Delete an environment by alias or ID. | | GET [Export environment](/docs/api-reference/environment/export-environment) | Export all data from environment. | | PUT [Compile environment](/docs/api-reference/environment/compile-environment) | Compile an environment. | | POST [Clone environment](/docs/api-reference/environment/clone-environment) | Clone an environment. | | POST [Publish environment](/docs/api-reference/environment/publish-environment) | Publish live version of an environment. | ## Draft and published Every environment holds two versions of the agent. The **draft** is what you edit and what `version: "draft"` runs when you [send a conversation](/docs/api-reference/sections/running-agents). The **published** version is what real traffic reaches. Publishing promotes the draft to published; nothing you change before that is visible to users. New projects start with a single environment called `main`. Passing an alias the project does not have returns `400 invalid environment tag`, so list them first if you are not sure: ```bash curl "https://realtime-api.voiceflow.com/v1/stable/environment?projectID=$VF_PROJECT_ID" \ -H "Authorization: Bearer $VF_PAT" ``` ## Working with more than one - **Clone** copies an existing environment into a new one. This is how you get a second environment to build against without touching `main`. - **Merge** folds one environment's changes back into another. - **Publish** promotes an environment's draft to its published version. - **Update traffic split** routes a share of live conversations to a different environment, which is how you run one version against another on real traffic. - **Export** returns the environment as JSON, for backup or for inspecting a build outside Voiceflow. - **Compile** builds the environment without publishing it, so you can surface errors before users would. ## Secrets Secret values are environment-scoped, so the same secret name can hold a test value in one environment and a production value in another. They are not managed through the environment endpoints today. ## Where to go next After publishing, [watch what happens](/docs/api-reference/sections/observe) in the transcripts, and [measure it](/docs/api-reference/sections/insights). # QA overview Source: https://www.voiceflow.com/docs/api-reference/sections/qa Replay scripted conversations against your agent and assert what it does, so a change that breaks a scenario fails loudly instead of silently. A test is a conversation you have written down, together with the assertions that must hold when it runs. Execute it after a change and a broken scenario fails immediately, instead of surfacing later in production. ## Endpoints ### Test | Endpoint | Description | | --- | --- | | GET [List tests](/docs/api-reference/test/list-tests) | List all tests by project ID. | | POST [Create test](/docs/api-reference/test/create-test) | Create a new test. | | POST [Create many tests](/docs/api-reference/test/create-many-tests) | Create multiple new tests. | | GET [Get test](/docs/api-reference/test/get-test) | Get a test by ID. | | PATCH [Update test](/docs/api-reference/test/update-test) | Update a test by ID. | | DELETE [Delete test](/docs/api-reference/test/delete-test) | Delete a test by ID. | ### Test turn | Endpoint | Description | | --- | --- | | GET [List turns](/docs/api-reference/test-turn/list-turns) | List all turns by test ID. | | POST [Create turn](/docs/api-reference/test-turn/create-turn) | Create a new turn. | | POST [Create many turns](/docs/api-reference/test-turn/create-many-turns) | Create multiple new turns. | | GET [Get turn](/docs/api-reference/test-turn/get-turn) | Get a turn by ID. | | PATCH [Update turn](/docs/api-reference/test-turn/update-turn) | Update a turn by ID. | | DELETE [Delete turn](/docs/api-reference/test-turn/delete-turn) | Delete a turn by ID. | ### Test check | Endpoint | Description | | --- | --- | | GET [List checks](/docs/api-reference/test-check/list-checks) | List all checks by turn ID. | | POST [Create check](/docs/api-reference/test-check/create-check) | Create a new check. | | POST [Create many checks](/docs/api-reference/test-check/create-many-checks) | Create multiple new checks. | | GET [Get check](/docs/api-reference/test-check/get-check) | Get a check by ID. | | PATCH [Update check](/docs/api-reference/test-check/update-check) | Update a check by ID. | | DELETE [Delete check](/docs/api-reference/test-check/delete-check) | Delete a check by ID. | ### Test run | Endpoint | Description | | --- | --- | | POST [Search runs](/docs/api-reference/test-run/search-runs) | Search runs by project ID. | | POST [Create run](/docs/api-reference/test-run/create-run) | Create a new run. | | POST [Create many runs](/docs/api-reference/test-run/create-many-runs) | Create multiple new runs. | | GET [Get run](/docs/api-reference/test-run/get-run) | Get a run by ID. | ## Four resources, one idea | Resource | What it is | | --- | --- | | **Test** | the scenario: a named conversation you want to keep working | | **Test turn** | one exchange inside it, in order | | **Test check** | an assertion about what the agent should do | | **Test run** | one execution of a test, and its result | A test is the container. Turns are the script. Checks are what must be true. Runs are what happened each time you executed it. Turns and checks are managed independently of the test, so you can add a check to an existing scenario without rewriting the conversation, or extend the conversation without touching the assertions. ## Creating a suite Each resource has a `batch` endpoint, which is what you want when defining a suite from a file rather than clicking through it: ```bash curl -X POST "https://realtime-api.voiceflow.com/v1/stable/test/batch?projectID=$VF_PROJECT_ID&environmentAlias=main" \ -H "Authorization: Bearer $VF_PAT" \ -H "Content-Type: application/json" \ -d '{ "data": [ ... ] }' ``` ## Reading results Runs are searchable rather than merely listable, so the useful question is not "what ran" but "what failed, and since when". Search runs, then fetch the ones you care about. ## How this differs from evaluations These are different jobs and it is worth keeping them apart. QA replays conversations *you* wrote and fails when the agent stops behaving as decided. [Insights](/docs/api-reference/sections/insights) scores conversations *real users* had, and tells you how it is going. One protects against regressions; the other finds things you did not think to test. ## Where to go next Run tests against a cloned [environment](/docs/api-reference/sections/publishing) before merging into `main`, so a failing check blocks the change rather than reporting on it afterwards. # Running agents overview Source: https://www.voiceflow.com/docs/api-reference/sections/running-agents Run conversations against an agent over HTTP. Send what a user would say, read the traces that come back, and inspect or reset the state between turns. A conversation is the agent doing its job: a user says something, the agent decides what to do, and everything it did comes back as typed events. Driving that from your own code is how you put the agent behind a different interface, or check how a change behaves before anyone else sees it. Conversation state sits alongside, so you can read what the agent currently believes, change a variable mid-turn, or start over. ## Endpoints ### Conversation | Endpoint | Description | | --- | --- | | PUT [Send](/docs/api-reference/conversation/send) | Send message to a conversation. | ### Conversation state | Endpoint | Description | | --- | --- | | GET [Get state](/docs/api-reference/conversation-state/get-state) | Get conversation state for a user. | | PATCH [Update state](/docs/api-reference/conversation-state/update-state) | Update conversation state for a user. | | DELETE [Delete state](/docs/api-reference/conversation-state/delete-state) | Delete conversation state for a user. | | PATCH [Update variables](/docs/api-reference/conversation-state/update-variables) | Updates variables in the conversation state by merging with the properties in the request body. | ### Knowledge base query | Endpoint | Description | | --- | --- | | POST [Query knowledge base](/docs/api-reference/knowledge-base/query-knowledge-base) | Execute a query against documents in the knowledge base. | ## A conversation is a userID There is no session to create. The `userID` in the path *is* the conversation: call the same path again and the agent continues where it left off, call it with a new `userID` and you get a fresh one. ```bash curl -X PUT "https://realtime-api.voiceflow.com/v1/stable/conversation/user-123?projectID=$VF_PROJECT_ID&environmentAlias=main" \ -H "Authorization: Bearer $VF_PAT" \ -H "Content-Type: application/json" \ -d '{ "action": { "type": "launch" }, "version": "published" }' ``` That returns an array of [traces](/docs/api-reference/trace-types) describing everything the agent did in response. ## The two fields that matter `action` is what the user did. `launch` starts the agent from its entry point; `text` sends something they typed: ```json { "action": { "type": "text", "payload": "What can you help me with?" }, "version": "published" } ``` `version` chooses which build answers. `published` runs the live version of the environment; `draft` runs what you are currently editing, which is what you want while testing a change. ## Reading the response The agent's output is a list of traces, not a single message. A chat agent's words arrive as `text` traces; a voice agent answers with `speak`. Buttons, cards, carousels and debug output each have their own type, and the [trace reference](/docs/api-reference/trace-types) documents every one. Two things worth handling from the start: - Iterate the traces rather than taking the first. A single turn routinely returns a message, then buttons, then debug output. - Strip control characters before parsing. The runtime can emit raw control characters inside trace payload strings, which strict JSON parsers reject. ## Conversation state The state endpoints let you inspect what the agent currently believes, change a variable mid-conversation, or delete the state to start over without changing the `userID`. ## Where to go next The [first conversation turn](/docs/cookbook/first-conversation-turn) recipe is this flow as a script you can run, verified against a live agent. # Create check Source: https://www.voiceflow.com/docs/api-reference/test-check/create-check /specs-prettified/realtime/openapi.stable.json post /v1/stable/test-check Adds a test check to its turn, one assertion about an agent turn, comparing the reply or the behaviour behind it. The response carries the ID that later calls address it by. # Create many checks Source: https://www.voiceflow.com/docs/api-reference/test-check/create-many-checks /specs-prettified/realtime/openapi.stable.json post /v1/stable/test-check/batch Adds several test checks to its turn in one request, each taking the fields the single-create call takes. The response carries the created test checks in the same shape the list call returns. # Delete check Source: https://www.voiceflow.com/docs/api-reference/test-check/delete-check /specs-prettified/realtime/openapi.stable.json delete /v1/stable/test-check/{checkID} Deletes a single test check by ID. A test check is one assertion about an agent turn, comparing the reply or the behaviour behind it. The response carries only a confirmation message, so refetch the test checks to see what is left. # Get check Source: https://www.voiceflow.com/docs/api-reference/test-check/get-check /specs-prettified/realtime/openapi.stable.json get /v1/stable/test-check/{checkID} Returns a single test check by ID, with the fields that define it. A test check is one assertion about an agent turn, comparing the reply or the behaviour behind it. # List checks Source: https://www.voiceflow.com/docs/api-reference/test-check/list-checks /specs-prettified/realtime/openapi.stable.json get /v1/stable/test-check Returns every test check in its turn. A test check is one assertion about an agent turn, comparing the reply or the behaviour behind it. The call takes no paging parameters, so one request yields the whole set. # Update check Source: https://www.voiceflow.com/docs/api-reference/test-check/update-check /specs-prettified/realtime/openapi.stable.json patch /v1/stable/test-check/{checkID} Changes an existing test check in place. The response carries only a confirmation message, so refetch the test check to read its new values. # Create many runs Source: https://www.voiceflow.com/docs/api-reference/test-run/create-many-runs /specs-prettified/realtime/openapi.stable.json post /v1/stable/test-run/batch Adds several test runs to the environment in one request, each taking the fields the single-create call takes. The response carries the created test runs in the same shape the list call returns. # Create run Source: https://www.voiceflow.com/docs/api-reference/test-run/create-run /specs-prettified/realtime/openapi.stable.json post /v1/stable/test-run Adds a test run to the environment, one execution of a test, carrying how many of its checks passed. The response carries the ID that later calls address it by. # Get run Source: https://www.voiceflow.com/docs/api-reference/test-run/get-run /specs-prettified/realtime/openapi.stable.json get /v1/stable/test-run/{runID} Returns a single test run by ID, with the fields that define it. A test run is one execution of a test, carrying how many of its checks passed. # Search runs Source: https://www.voiceflow.com/docs/api-reference/test-run/search-runs /specs-prettified/realtime/openapi.stable.json post /v1/stable/test-run/search Finds past runs of a test, each carrying how many of its checks passed. The body takes `take` and `skip`, so results arrive a page at a time rather than all at once. # Create many turns Source: https://www.voiceflow.com/docs/api-reference/test-turn/create-many-turns /specs-prettified/realtime/openapi.stable.json post /v1/stable/test-turn/batch Adds several test turns to its test in one request, each taking the fields the single-create call takes. The response carries the created test turns in the same shape the list call returns. # Create turn Source: https://www.voiceflow.com/docs/api-reference/test-turn/create-turn /specs-prettified/realtime/openapi.stable.json post /v1/stable/test-turn Adds a test turn to its test, one side of a scripted conversation, either what the user says or the agent reply the checks assert on. The response carries the ID that later calls address it by. # Delete turn Source: https://www.voiceflow.com/docs/api-reference/test-turn/delete-turn /specs-prettified/realtime/openapi.stable.json delete /v1/stable/test-turn/{turnID} Deletes a single test turn by ID. A test turn is one side of a scripted conversation, either what the user says or the agent reply the checks assert on. The response carries only a confirmation message, so refetch the test turns to see what is left. # Get turn Source: https://www.voiceflow.com/docs/api-reference/test-turn/get-turn /specs-prettified/realtime/openapi.stable.json get /v1/stable/test-turn/{turnID} Returns a single test turn by ID, with the fields that define it. A test turn is one side of a scripted conversation, either what the user says or the agent reply the checks assert on. # List turns Source: https://www.voiceflow.com/docs/api-reference/test-turn/list-turns /specs-prettified/realtime/openapi.stable.json get /v1/stable/test-turn Returns every test turn in its test. A test turn is one side of a scripted conversation, either what the user says or the agent reply the checks assert on. The call takes no paging parameters, so one request yields the whole set. # Update turn Source: https://www.voiceflow.com/docs/api-reference/test-turn/update-turn /specs-prettified/realtime/openapi.stable.json patch /v1/stable/test-turn/{turnID} Changes an existing test turn in place. The response carries only a confirmation message, so refetch the test turn to read its new values. # Create many tests Source: https://www.voiceflow.com/docs/api-reference/test/create-many-tests /specs-prettified/realtime/openapi.stable.json post /v1/stable/test/batch Adds several tests to the environment in one request, each taking the fields the single-create call takes. The response carries the created tests in the same shape the list call returns. # Create test Source: https://www.voiceflow.com/docs/api-reference/test/create-test /specs-prettified/realtime/openapi.stable.json post /v1/stable/test Adds a test to the environment, a scripted conversation replayed against the agent. The response carries the ID that later calls address it by. # Delete test Source: https://www.voiceflow.com/docs/api-reference/test/delete-test /specs-prettified/realtime/openapi.stable.json delete /v1/stable/test/{testID} Deletes a single test by ID. A test is a scripted conversation replayed against the agent. The response carries only a confirmation message, so refetch the tests to see what is left. # Get test Source: https://www.voiceflow.com/docs/api-reference/test/get-test /specs-prettified/realtime/openapi.stable.json get /v1/stable/test/{testID} Returns a single test by ID, with the fields that define it. A test is a scripted conversation replayed against the agent. # List tests Source: https://www.voiceflow.com/docs/api-reference/test/list-tests /specs-prettified/realtime/openapi.stable.json get /v1/stable/test Returns every test in the environment. A test is a scripted conversation replayed against the agent. The call takes no paging parameters, so one request yields the whole set. # Update test Source: https://www.voiceflow.com/docs/api-reference/test/update-test /specs-prettified/realtime/openapi.stable.json patch /v1/stable/test/{testID} Changes an existing test in place. The response carries only a confirmation message, so refetch the test to read its new values. # Create many tools Source: https://www.voiceflow.com/docs/api-reference/tool/create-many-tools /specs-prettified/realtime/openapi.stable.json post /v1/stable/tool/batch Adds several tools to the environment in one request, each taking the fields the single-create call takes. The response carries the created tools in the same shape the list call returns. # Create tool Source: https://www.voiceflow.com/docs/api-reference/tool/create-tool /specs-prettified/realtime/openapi.stable.json post /v1/stable/tool Adds a tool to the environment, something a playbook can call during a conversation. The response carries the ID that later calls address it by. # Delete tool Source: https://www.voiceflow.com/docs/api-reference/tool/delete-tool /specs-prettified/realtime/openapi.stable.json delete /v1/stable/tool/{toolID} Deletes a single tool by ID. A tool is something a playbook can call during a conversation. The response carries only a confirmation message, so refetch the tools to see what is left. # Get tool Source: https://www.voiceflow.com/docs/api-reference/tool/get-tool /specs-prettified/realtime/openapi.stable.json get /v1/stable/tool/{toolID} Returns a single tool by ID, with the fields that define it. A tool is something a playbook can call during a conversation. # List tools Source: https://www.voiceflow.com/docs/api-reference/tool/list-tools /specs-prettified/realtime/openapi.stable.json get /v1/stable/tool Returns every tool in the environment. A tool is something a playbook can call during a conversation. The call takes no paging parameters, so one request yields the whole set. # Update tool Source: https://www.voiceflow.com/docs/api-reference/tool/update-tool /specs-prettified/realtime/openapi.stable.json patch /v1/stable/tool/{toolID} Changes an existing tool in place. The response carries only a confirmation message, so refetch the tool to read its new values. # Traces Source: https://www.voiceflow.com/docs/api-reference/trace-types Reference for every trace type returned by the Conversations API. Traces are the output of a Voiceflow agent. Each time your application sends an action to the [Conversations API](/docs/api-reference/sections/running-agents), the runtime returns an array of trace objects describing how the agent responded. A single turn often produces multiple traces in sequence - for example, a message followed by a set of buttons. Every trace has a `type` field that identifies what it contains, a `payload` with the relevant data, and a `time` value recording when that trace was generated as a Unix timestamp. The `time` field can be useful for debugging: steps like message generation may take noticeably longer than simple text steps, and the timestamps make that visible. ## Trace types ### text Returned by the [Message step](/docs/documentation/build/steps/message), [Playbooks](/docs/documentation/build/steps/playbook), and no-match and no-reply reprompts. ```json { "type": "text", "time": 1720552033, "payload": { "slate": { "id": "unique-id", "content": [ { "children": [{ "text": "Hello there!" }] }, { "children": [{ "text": "Select an option or ask me a question" }] } ], "messageDelayMilliseconds": 1000 }, "message": "Hello there!\n\nSelect an option or ask me a question", "delay": 1000 } } ``` The `message` field contains the plain text content. The `slate` field contains the same content in a structured rich-text format. `delay` controls the pause in milliseconds before the next trace is rendered, defaulting to 1000ms. ### cardV2 Returned by the [Card step](/docs/documentation/build/steps/card). When a card contains buttons, each button's `request.type` is a Voiceflow-generated path ID. Pass that value as the `action.type` in your next request to advance the conversation along the corresponding path. ```json { "type": "cardV2", "time": 1720552033, "payload": { "title": "This is a Card title", "description": { "text": "This is a Card description", "slate": [ { "children": [{ "text": "This is a Card description" }] } ] }, "imageUrl": "https://assets-global.website-files.com/example-file.png", "buttons": [ { "name": "Click for next step", "request": { "type": "path-generated-by-voiceflow", "payload": { "actions": [], "label": "Click for next step" } } } ] } } ``` ### carousel Returned by the [Carousel step](/docs/documentation/build/steps/card). The same button handling applies as with `cardV2` - pass the button's `request.type` as the `action.type` in your next request. ```json { "type": "carousel", "time": 1720552033, "payload": { "layout": "Carousel", "cards": [ { "id": "unique-id", "title": "This is a Carousel card title", "description": { "text": "This is a Carousel card description", "slate": [ { "children": [{ "text": "This is a Carousel card description" }] } ] }, "imageUrl": "https://assets-global.website-files.com/example-file.png", "buttons": [ { "name": "Click for next step", "request": { "type": "path-generated-by-voiceflow", "payload": { "label": "Click for next step", "actions": [] } } } ] } ] } } ``` ### choice Returned by the [Condition step](/docs/documentation/build/steps/condition) and [Playbooks](/docs/documentation/build/playbooks) or the Agent when the [buttons system tool](/docs/documentation/build/tools/system-tools) is enabled. How you handle a choice trace depends on what's in each button's `request.type`. #### Path buttons When buttons are connected to specific paths in your workflow, `request.type` is a Voiceflow-generated path ID. Pass it directly as `action.type` in your next request. The `label` field is optional - if included, its value is set as the `last_utterance` variable. ```json { "type": "choice", "time": 1753108390491, "payload": { "buttons": [ { "name": "Order coffee", "request": { "type": "path-cmd906pp400433b7ujbsbiotm", "payload": { "label": "Order coffee" } } } ] } } ``` To handle this button click, send: ```json { "action": { "type": "path-cmd906pp400433b7ujbsbiotm", "payload": { "label": "Order coffee" } } } ``` #### Agent-generated buttons When the [buttons system tool](/docs/documentation/build/tools/system-tools) is enabled on Playbook or on the Agent, the agent may dynamically generate buttons. These use `request.type: "text"` and simulate raw user input rather than triggering a specific path: ```json { "type": "choice", "time": 1753110520157, "payload": { "buttons": [ { "name": "Check account balance", "request": { "type": "text", "payload": "Check account balance" } } ] } } ``` ### no-reply Returned when a No Reply timeout is active. The `timeout` value is in seconds. ```json { "type": "no-reply", "time": 1720552033, "payload": { "timeout": 10 } } ``` If the user doesn't respond within the timeout window, send a `no-reply` action to retrieve the configured reprompt: ```json { "action": { "type": "no-reply" } } ``` {/* gen:start id=traces/spec sha=342b0736e5f8 */} ## Additional trace types Every remaining `type` value in the runtime schema. Field tables are projected from the spec. Some payloads have several shapes, distinguished by a field such as `state`; where they do, the table says under which condition each field appears, and marks a field required only when every shape requires it. ### `audio` An audio response event. The payload's `state` field selects the shape: `start` announces a `messageID`, `content` carries the audio in `content` with its `encoding`, and `end` carries the state alone. | Field | Type | Required | Present when | | --- | --- | --- | --- | | `content` | string | no | `state` is `content` | | `delay` | number | no | `state` is `start` | | `duration` | number | no | `state` is `content` | | `encoding` | `"audio/mp3"` or `"audio/x-mulaw"` or `"audio/pcm"` | no | `state` is `content` | | `messageID` | string | no | `state` is `start` | | `state` | `"start"` or `"content"` or `"end"` | yes | always | ### `block` Marks the conversation entering a block, identified by its block ID. | Field | Type | Required | | --- | --- | --- | | `blockID` | string | yes | ### `call-forward` Signals that the call is being forwarded. The payload always carries the destination in `address` and its kind in `addressType`; a `phone` forward may also carry an `extension` and a `callerIDPassthrough` flag. See the call forward step for configuration. | Field | Type | Required | Present when | | --- | --- | --- | --- | | `address` | string | yes | always | | `addressType` | `"phone"` or `"sip"` | yes | always | | `callerIDPassthrough` | boolean | no | `addressType` is `phone` | | `extension` | string | no | `addressType` is `phone` | ### `channel-action` A channel-specific action, named by the channel integration, with an action-defined payload. | Field | Type | Required | | --- | --- | --- | | `name` | string | yes | | `payload` | object | yes | ### `completion` Marks a model completion event during the turn. Streaming clients receive the completion lifecycle described under completion event traces. | Field | Type | Required | Present when | | --- | --- | --- | --- | | `ai` | boolean | no | `state` is `start` | | `content` | string | no | `state` is `content` | | `delay` | number | no | `state` is `start` | | `messageID` | string | no | `state` is `start` | | `ref` | DebugTraceRef | no | `state` is `start` or `end` | | `sourceUrls` | object[] | no | `state` is `start` | | `state` | `"start"` or `"content"` or `"end"` | yes | always | ### `debug` Debug output for the turn, with a message and optional level, context, and metadata. Surfaced in agent logs rather than to end users. | Field | Type | Required | | --- | --- | --- | | `context` | string | no | | `level` | `"fatal"` or `"error"` or `"warn"` or `"info"` or `"debug"` | no | | `message` | string | yes | | `metadata` | object | no | | `ref` | DebugTraceRef | no | | `type` | string | no | ### `dtmf` Configures keypad (DTMF) input collection on a call: whether it is enabled, the timeout, the ending delimiter, and the digit cap. | Field | Type | Required | | --- | --- | --- | | `delimiter` | `"#"` or `"*"`[] | yes | | `enabled` | boolean | yes | | `maxDigits` | number | yes | | `timeoutInSeconds` | number | yes | ### `entity-filling` Requests a value for a named entity, wrapping the intent request being filled. | Field | Type | Required | | --- | --- | --- | | `entityToFill` | string | yes | | `intent` | IntentRequest | yes | ### `flow` Marks the conversation entering a flow, identified by its diagram ID. | Field | Type | Required | | --- | --- | --- | | `diagramID` | string | yes | | `name` | string | no | ### `goto` Instructs the client to re-send the wrapped request on the next turn. | Field | Type | Required | | --- | --- | --- | | `request` | BaseRequest | yes | ### `knowledgeBase` Reports a knowledge base retrieval: the chunks returned and the query that produced them. | Field | Type | Required | | --- | --- | --- | | `chunks` | object[] | yes | | `query` | object | no | ### `live-agent-handoff` Signals a handoff of the conversation to a live agent platform. Every shape of the payload carries `conversationID`, `message`, and `event`; the remaining fields vary by shape, and some carry a `provider` naming the platform. This payload has 4 shapes; a field is listed once, and marked required only when every shape both has and requires it. | Field | Type | Required | Present when | | --- | --- | --- | --- | | `agent` | object | no | always | | `config` | LiveAgentHandoffWidgetConfig | no | some shapes (1 of 4) | | `continueMessage` | string | no | some shapes (1 of 4) | | `conversationID` | string | yes | always | | `downloadMessage` | string | no | some shapes (1 of 4) | | `event` | `"chat_started"` | yes | always | | `file` | object | no | some shapes (1 of 4) | | `message` | string | yes | always | | `newConversationMessage` | string | no | some shapes (1 of 4) | | `provider` | `"ujet"` or `"genesys"` or `"kustomer"` or `"dixa"` | no | some shapes (1 of 4) | | `translationKey` | string | no | always | | `translationParams` | object | no | always | ### `log` Diagnostic log output attached to the turn. The `payload` is always present and is a free-form object: the spec declares no named fields on it and permits any. ### `path` Reports which path the conversation took out of a step. | Field | Type | Required | | --- | --- | --- | | `path` | string | yes | ### `realtime-agent` Marks realtime agent activity on the turn. The payload's `action` field selects the shape: `START` carries `input` and `output`, while `END` and `INTERRUPTED` carry the action alone. | Field | Type | Required | Present when | | --- | --- | --- | --- | | `action` | `"START"` or `"END"` or `"INTERRUPTED"` | yes | always | | `input` | object | no | `action` is `START` | | `output` | object | no | `action` is `START` | ### `reasoning` Marks model reasoning activity during the turn. The payload's `state` field selects the shape: `content` carries a `content` string, `final` carries a `message`, and `start` and `end` carry the state alone. | Field | Type | Required | Present when | | --- | --- | --- | --- | | `content` | string | no | `state` is `content` | | `message` | string | no | `state` is `final` | | `state` | `"start"` or `"content"` or `"end"` or `"final"` | yes | always | ### `speak` A spoken response for voice channels, carrying the message text and optionally a synthesized audio source and voice name. | Field | Type | Required | | --- | --- | --- | | `ai` | boolean | no | | `isPrompt` | boolean | no | | `message` | string | yes | | `src` | string | no | | `type` | `"audio"` or `"message"` | yes | | `voice` | string | no | ### `stream` An audio stream event. The payload carries the source in `src`, a `token`, and an `action` of `LOOP`, `PLAY`, `PAUSE`, or `END`; `title`, `description`, `iconImage`, `backgroundImage`, and `loop` are optional. | Field | Type | Required | | --- | --- | --- | | `action` | `"LOOP"` or `"PLAY"` or `"PAUSE"` or `"END"` | yes | | `backgroundImage` | string | no | | `description` | string | no | | `iconImage` | string | no | | `loop` | boolean | no | | `src` | string | yes | | `title` | string | no | | `token` | string | yes | ### `tool-call` Marks a tool call made by the agent during the turn. The payload always carries the `callID` and a `state` of `start` or `end`; a `start` may also carry a `sound`. | Field | Type | Required | Present when | | --- | --- | --- | --- | | `callID` | string | yes | always | | `sound` | object | no | `state` is `start` | | `state` | `"start"` or `"end"` | yes | always | ### `visual` Displays an image, with optional device sizing and layout options. | Field | Type | Required | | --- | --- | --- | | `canvasVisibility` | `"full"` or `"hidden"` or `"cropped"` | no | | `device` | string | no | | `dimensions` | object | no | | `frameType` | string | no | | `image` | string | yes | | `options` | object | no | | `visualType` | `"image"` | no | {/* gen:end id=traces/spec */} ### Custom actions Custom action traces can be returned by functions and use the string you defined in Voiceflow as the `type` value. The `defaultPath` field indicates which path is set as the default: `0` for the first path, `1` for the second, and so on. Their payload is provided as JSON, as shown: ```json { "type": "calendar", "time": 1720552033, "payload": { "today": 1700096585398 }, "defaultPath": 0, "paths": [ { "event": { "type": "done" } }, { "event": { "type": "cancel" } } ] } ``` ### end Returned when the conversation reaches an End step. On receiving this trace, your application should treat the session as closed. ```json { "type": "end", "time": 1720552033, "payload": null } ``` ## Completion event traces When using the streaming endpoint, you may also encounter `completion` traces. A single `completion` type marks the lifecycle of an AI generation event within a stream: the payload's `state` field moves through `start`, `content`, and `end`. See [Completion events](/docs/api-reference/conversations-api/completion-events) for the full stream format. # Create property Source: https://www.voiceflow.com/docs/api-reference/transcript-property/create-property /specs-prettified/realtime/openapi.stable.json post /v1/stable/transcript-property Adds a transcript property to the project, a label you define once and then set on individual conversations. The response carries the ID that later calls address it by. # Delete property Source: https://www.voiceflow.com/docs/api-reference/transcript-property/delete-property /specs-prettified/realtime/openapi.stable.json delete /v1/stable/transcript-property/{propertyID} Deletes a single transcript property by ID. A transcript property is a label you define once and then set on individual conversations. The response carries only a confirmation message, so refetch the transcript properties to see what is left. # Get property Source: https://www.voiceflow.com/docs/api-reference/transcript-property/get-property /specs-prettified/realtime/openapi.stable.json get /v1/stable/transcript-property/{propertyID} Returns a single transcript property by ID, with the fields that define it. A transcript property is a label you define once and then set on individual conversations. # List properties Source: https://www.voiceflow.com/docs/api-reference/transcript-property/list-properties /specs-prettified/realtime/openapi.stable.json get /v1/stable/transcript-property Returns every transcript property in the project. A transcript property is a label you define once and then set on individual conversations. The call takes no paging parameters, so one request yields the whole set. # Set property value Source: https://www.voiceflow.com/docs/api-reference/transcript-property/set-property-value /specs-prettified/realtime/openapi.stable.json put /v1/stable/transcript-property/{propertyID}/value Sets a property’s value on one conversation. Defining the property and setting it are separate calls, so the definition is reused across every transcript that carries it. # Update property Source: https://www.voiceflow.com/docs/api-reference/transcript-property/update-property /specs-prettified/realtime/openapi.stable.json patch /v1/stable/transcript-property/{propertyID} Changes an existing transcript property in place. The response carries only a confirmation message, so refetch the transcript property to read its new values. # Get transcript Source: https://www.voiceflow.com/docs/api-reference/transcript/get-transcript /specs-prettified/realtime/openapi.stable.json get /v1/stable/transcript/{transcriptID} Returns one recorded conversation, including the turns exchanged and the traces behind them. Set `filterConversation` to keep only `text`, `speak`, and `live-agent-handoff` traces, plus any types listed in `customTraceTypes`. # Search transcripts Source: https://www.voiceflow.com/docs/api-reference/transcript/search-transcripts /specs-prettified/realtime/openapi.stable.json post /v1/stable/transcript/search Finds recorded conversations matching a filter. Unlike the list calls elsewhere in this API, the body takes `take` and `skip`, so results arrive a page at a time. # Create many variables Source: https://www.voiceflow.com/docs/api-reference/variable/create-many-variables /specs-prettified/realtime/openapi.stable.json post /v1/stable/variable/batch Adds several variables to the project in one request, each taking the fields the single-create call takes. The response carries the created variables in the same shape the list call returns. # Create variable Source: https://www.voiceflow.com/docs/api-reference/variable/create-variable /specs-prettified/realtime/openapi.stable.json post /v1/stable/variable Adds a variable to the project, a named slot of project state an agent can read and write. The response carries the ID that later calls address it by. # Delete variable Source: https://www.voiceflow.com/docs/api-reference/variable/delete-variable /specs-prettified/realtime/openapi.stable.json delete /v1/stable/variable/{variableID} Deletes a single variable by ID. A variable is a named slot of project state an agent can read and write. The response carries only a confirmation message, so refetch the variables to see what is left. # Get variable Source: https://www.voiceflow.com/docs/api-reference/variable/get-variable /specs-prettified/realtime/openapi.stable.json get /v1/stable/variable/{variableID} Returns a single variable by ID, with the fields that define it. A variable is a named slot of project state an agent can read and write. # List variables Source: https://www.voiceflow.com/docs/api-reference/variable/list-variables /specs-prettified/realtime/openapi.stable.json get /v1/stable/variable Returns every variable in the project. A variable is a named slot of project state an agent can read and write. The call takes no paging parameters, so one request yields the whole set. # Update variable Source: https://www.voiceflow.com/docs/api-reference/variable/update-variable /specs-prettified/realtime/openapi.stable.json patch /v1/stable/variable/{variableID} Changes an existing variable in place. The response carries only a confirmation message, so refetch the variable to read its new values. # Organization events webhooks Source: https://www.voiceflow.com/docs/api-reference/webhooks/org-events Receive organization level events to your webhooks. If you're using Voiceflow within a larger organization, you might want to integrate with your existing observability or testing tools. Organization events webhooks let you automatically receive updates whenever something happens in your organization - for example, when a new project is created. Just provide a webhook URL, and Voiceflow will send event data there in real time. ## Configuring your webhook settings If you're less technical, we recommend using a tool like Make to generate a webhook URL and run automations. If you're a developer, you can hook into your existing infrastructure using any tool that can receive and process JSON payloads. To enable sending data to a webhook whenever key events happen within an organization, head to your [Voiceflow dashboard](https://creator.voiceflow.com), click the **Settings** button in the bottom left corner, then select **Organization**. You can then add the URL that you'd like to send events to in the box provided. Once you've set a webhook URL, all future events will be automatically sent to it. ## Supported events The following organization-level events will be sent to the provided URL: | Human-readable name | Name | | -------------------------------- | ----------------------------------------------------------------------------------------------------- | | New project created | [`organization.project.created`](#organization-project-created) | | Project deleted | [`organization.project.deleted`](#organization-project-deleted) | | Project environment created | [`organization.project.environment.created`](#organization-project-environment-created) | | Project environment published | [`organization.project.environment.published`](#organization-project-environment-published) | | Project environment merged | [`organization.project.environment.merged`](#organization-project-environment-merged) | | Project environment deleted | [`organization.project.environment.deleted`](#organization-project-environment-deleted) | ### `organization.project.created` Sent when a new project is created in the organization. ```typescript { "type": "organization.project.created", "data": { "createdBy": { "type": string, // e.g. "user" "userEmail": string }, "organizationID": string, "projectID": string, "projectMetadata": { "name": string }, "workspaceID": string }, "resource": string, // organization-{organizationID} "time": number // unix timestamp MS, event time } ``` ```json { "data": { "createdBy": { "type": "user", "userEmail": "user@voiceflow.com" }, "organizationID": "LVkmPy8AE2", "projectID": "6a16f4549e4196323d8a49b9", "projectMetadata": { "name": "My new project" }, "workspaceID": "95kwAZ63nO" }, "resource": "organization-LVkmPy8AE2", "time": 1779889237608, "type": "organization.project.created" } ``` ### `organization.project.deleted` Sent when a project is deleted from the organization. ```typescript { "type": "organization.project.deleted", "data": { "deletedBy": { "type": string, // e.g. "user" "userEmail": string }, "organizationID": string, "projectID": string, "projectMetadata": { "name": string }, "workspaceID": string }, "resource": string, // organization-{organizationID} "time": number // unix timestamp MS, event time } ``` ```json { "data": { "deletedBy": { "type": "user", "userEmail": "user@voiceflow.com" }, "organizationID": "LVkmPy8AE2", "projectID": "6a16f4789e4196323d8a49c3", "projectMetadata": { "name": "Legacy support agent" }, "workspaceID": "95kwAZ63nO" }, "resource": "organization-LVkmPy8AE2", "time": 1779889287387, "type": "organization.project.deleted" } ``` ### `organization.project.environment.created` Sent when a new environment is created within a project. The `source` describes the environment the new one was branched from. ```typescript { "type": "organization.project.environment.created", "data": { "createdBy": { "type": string, // e.g. "user" "userEmail": string }, "createdProjectEnvironmentID": string, "createdProjectEnvironmentMetadata": { "alias": string, "isLive": boolean, "name": string, "trafficPercentage": number }, "organizationID": string, "projectID": string, "projectMetadata": { "name": string }, "source": { "environmentID": string, "environmentMetadata": { "alias": string, "isLive": boolean, "name": string, "trafficPercentage": number }, "type": string // e.g. "environment" }, "workspaceID": string }, "resource": string, // organization-{organizationID} "time": number // unix timestamp MS, event time } ``` ```json { "data": { "createdBy": { "type": "user", "userEmail": "user@voiceflow.com" }, "createdProjectEnvironmentID": "6a16f4dc9e4196323d8a49e5", "createdProjectEnvironmentMetadata": { "alias": "optimizeglobalprompt", "isLive": false, "name": "Optimize global prompt", "trafficPercentage": 0 }, "organizationID": "LVkmPy8AE2", "projectID": "69e8b60a99c9a35e1a5e8872", "projectMetadata": { "name": "My support agent" }, "source": { "environmentID": "69e8b60a99c9a35e1a5e8875", "environmentMetadata": { "alias": "main", "isLive": true, "name": "Main", "trafficPercentage": 70 }, "type": "environment" }, "workspaceID": "95kwAZ63nO" }, "resource": "organization-LVkmPy8AE2", "time": 1779889372749, "type": "organization.project.environment.created" } ``` ### `organization.project.environment.published` Sent when an environment within a project is published. `publishedVersionIDBefore` and `publishedVersionIDAfter` let you track what changed. ```typescript { "type": "organization.project.environment.published", "data": { "organizationID": string, "projectID": string, "projectMetadata": { "name": string }, "publishedBy": { "type": string, // e.g. "user" "userEmail": string }, "publishedProjectEnvironmentID": string, "publishedProjectEnvironmentMetadata": { "alias": string, "isLive": boolean, "name": string, "trafficPercentage": number }, "publishedVersionIDAfter": string, "publishedVersionIDBefore": string, "workspaceID": string }, "resource": string, // organization-{organizationID} "time": number // unix timestamp MS, event time } ``` ```json { "data": { "organizationID": "LVkmPy8AE2", "projectID": "69e8b60a99c9a35e1a5e8872", "projectMetadata": { "name": "My support agent" }, "publishedBy": { "type": "user", "userEmail": "user@voiceflow.com" }, "publishedProjectEnvironmentID": "69e8b60a99c9a35e1a5e8875", "publishedProjectEnvironmentMetadata": { "alias": "main", "isLive": true, "name": "Main", "trafficPercentage": 70 }, "publishedVersionIDAfter": "6a16f4b29e4196323d8a49db", "publishedVersionIDBefore": "69e8e543ce546b913fc2c965", "workspaceID": "95kwAZ63nO" }, "resource": "organization-LVkmPy8AE2", "time": 1779889330124, "type": "organization.project.environment.published" } ``` ```json { "data": { "organizationID": "LVkmPy8AE2", "projectID": "69e8b60a99c9a35e1a5e8872", "projectMetadata": { "name": "My support agent" }, "publishedBy": { "type": "user", "userEmail": "user@voiceflow.com" }, "publishedProjectEnvironmentID": "6a16f4dc9e4196323d8a49e5", "publishedProjectEnvironmentMetadata": { "alias": "optimizeglobalprompt", "isLive": false, "name": "Optimize global prompt", "trafficPercentage": 0 }, "publishedVersionIDAfter": "6a16f5129e4196323d8a49f1", "publishedVersionIDBefore": "6a16f4dc9e4196323d8a49e3", "workspaceID": "95kwAZ63nO" }, "resource": "organization-LVkmPy8AE2", "time": 1779889426435, "type": "organization.project.environment.published" } ``` ### `organization.project.environment.merged` Sent when one environment is merged into another. `sourceProjectEnvironmentRemoved` indicates whether the source environment was deleted as part of the merge. ```typescript { "type": "organization.project.environment.merged", "data": { "mergedBy": { "type": string, // e.g. "user" "userEmail": string }, "organizationID": string, "projectID": string, "projectMetadata": { "name": string }, "sourceProjectEnvironmentID": string, "sourceProjectEnvironmentMetadata": { "alias": string, "isLive": boolean, "name": string, "trafficPercentage": number }, "sourceProjectEnvironmentRemoved": boolean, "targetProjectEnvironmentID": string, "targetProjectEnvironmentMetadata": { "alias": string, "isLive": boolean, "name": string, "trafficPercentage": number }, "workspaceID": string }, "resource": string, // organization-{organizationID} "time": number // unix timestamp MS, event time } ``` ```json { "data": { "mergedBy": { "type": "user", "userEmail": "user@voiceflow.com" }, "organizationID": "LVkmPy8AE2", "projectID": "69e8b60a99c9a35e1a5e8872", "projectMetadata": { "name": "My support agent" }, "sourceProjectEnvironmentID": "6a16f4dc9e4196323d8a49e5", "sourceProjectEnvironmentMetadata": { "alias": "optimizeglobalprompt", "isLive": false, "name": "Optimize global prompt", "trafficPercentage": 0 }, "sourceProjectEnvironmentRemoved": true, "targetProjectEnvironmentID": "69e8b60a99c9a35e1a5e8875", "targetProjectEnvironmentMetadata": { "alias": "main", "isLive": true, "name": "Main", "trafficPercentage": 70 }, "workspaceID": "95kwAZ63nO" }, "resource": "organization-LVkmPy8AE2", "time": 1779889488361, "type": "organization.project.environment.merged" } ``` ### `organization.project.environment.deleted` Sent when an environment is deleted from a project. ```typescript { "type": "organization.project.environment.deleted", "data": { "deletedBy": { "type": string, // e.g. "user" "userEmail": string }, "deletedProjectEnvironmentID": string, "deletedProjectEnvironmentMetadata": { "alias": string, "isLive": boolean, "name": string, "trafficPercentage": number }, "organizationID": string, "projectID": string, "projectMetadata": { "name": string }, "workspaceID": string }, "resource": string, // organization-{organizationID} "time": number // unix timestamp MS, event time } ``` ```json { "data": { "deletedBy": { "type": "user", "userEmail": "user@voiceflow.com" }, "deletedProjectEnvironmentID": "69e8b64d99c9a35e1a5e888b", "deletedProjectEnvironmentMetadata": { "alias": "feature-upselling", "isLive": false, "name": "Old unused environment", "trafficPercentage": 0 }, "organizationID": "LVkmPy8AE2", "projectID": "69e8b60a99c9a35e1a5e8872", "projectMetadata": { "name": "My support agent" }, "workspaceID": "95kwAZ63nO" }, "resource": "organization-LVkmPy8AE2", "time": 1779889527687, "type": "organization.project.environment.deleted" } ``` ## Verifying requests come from Voiceflow Once you enter a webhook URL into the settings page, you'll automatically be provided with a webhook secret. This can be used to verify that events received by the webhook were really sent by Voiceflow. [Follow these instructions to learn how to verify events using the webhook secret](https://docs.svix.com/receiving/verifying-payloads/how-manual). If you accidentally leak your webhook secret, you can regenerate it using the 🔄 button on the settings page. Note that your previous webhook secret will remain valid for 24 hours after you regenerate it. If you're receiving data from behind a restrictive firewall, you should know that events will come from one of [Svix's IP addresses](https://docs.svix.com/receiving/source-ips), rather than Voiceflow's. # Session lifecycle webhook Source: https://www.voiceflow.com/docs/api-reference/webhooks/session-lifecycle Subscribe to session and call lifecycle webhook events so external systems get notified when Voiceflow conversations start and end. The session lifecycle webhook notifies your systems in real time whenever a conversation starts or ends, letting you run automations around each conversation without polling for changes. A common use is running automations once a conversation ends, without adding latency to the conversation itself. For example, you can sync conversation data to your CRM, kick off a downstream workflow in your own systems, or notify another service that a conversation has wrapped up. Because this work runs on your side in response to the webhook, none of it slows down the live conversation. Add your webhook URL to your project under **Settings → Webhooks**. ![The session lifecycle webhook settings, showing the webhook URL, the event selection checklist grouped into call events and session events, and the webhook secret](/docs/images/webhook-event-selection.png) A new webhook listens for every event. To narrow that down, choose **Listen for specific events** and tick only the ones you want: each is listed with its event name, grouped into [session events](#session-events) and [call events](#call-events). You can change the selection at any time, and deprecated events are labelled as such in the list. ## Events Voiceflow will send POST requests to your webhook URL on the following events. | Human-readable name | Name | Category | | --- | --- | --- | | Session started | [`runtime.session.start`](#runtime-session-start) | [Session events](#session-events) | | Session ended | [`runtime.session.end`](#runtime-session-end) | [Session events](#session-events) | | Call started | [`runtime.call.start`](#runtime-call-start) | [Call events](#call-events) | | Call ended | [`runtime.call.end`](#runtime-call-end) | [Call events](#call-events) | Three older `.v2` variants are deprecated and stop firing on **October 9, 2026**. See [Deprecated events](#deprecated-events). ## Session events Session events fire whenever a conversation starts or ends, across every project and every channel. A session is the conversation itself, the state your agent builds up as it goes, so every conversation has one. These are the events most integrations listen for. A session has to exist for these events to fire. The chat widget, voice conversations, and the Start session endpoint each create one; the deprecated legacy Interact endpoints don't, so conversations run through those produce no session events. ### `runtime.session.start` This event is sent when a new session is started for a user. ```typescript { "type": "runtime.session.start", "data": { "userID": string, "projectID": string, "environmentID": string, "sessionID": string, "startTime": number, // unix timestamp MS // the fields below may be null or absent — see "Optional fields" "versionID"?: string | null, // same value as environmentID "transcriptID"?: string | null, "versionVariant"?: "draft" | "published" | null, "projectEnvironmentID"?: string | null, "projectEnvironmentAlias"?: string | null } "time": number // unix timestamp MS, event time "resource": string // project-{projectID} } ``` ```json { "type": "runtime.session.start", "data": { "environmentID": "6a15b5f6a85b1b570a8773cf", "projectID": "69f9fa36eeb8f50e7cfd2d5f", "sessionID": "6a15b6093f95e60007ec4e04", "startTime": 1779807753396, "userID": "g4dq75wr6asov6z571860xg0", "versionID": "6a15b5f6a85b1b570a8773cf", "transcriptID": "6a15b6093f95e60007ec4e04", "versionVariant": "published", "projectEnvironmentID": "6a15b5f6a85b1b570a8773d4", "projectEnvironmentAlias": "production" }, "resource": "project-69f9fa36eeb8f50e7cfd2d5f", "time": 1779807753433 } ``` ### `runtime.session.end` This event is sent when a session ends: because the conversation reached an end, because the caller hung up, or because the session sat idle past its timeout. This event doesn't necessarily arrive when the user stops talking to your agent. Closing a chat widget sends no end signal, so unless your agent explicitly ends the conversation, the session runs to its idle timeout and the event arrives then, potentially long after the user left. To react the moment a conversation stops, drive it from your agent's own end-of-conversation logic. ```typescript { "type": "runtime.session.end", "data": { "userID": string, "projectID": string, "environmentID": string, "sessionID": string, "startTime": number, // unix timestamp MS "endTime": number, // unix timestamp MS // the fields below may be null or absent — see "Optional fields" "endReason"?: string | null, // why the session ended, arbitrary string "versionID"?: string | null, // same value as environmentID "transcriptID"?: string | null, "versionVariant"?: "draft" | "published" | null, "projectEnvironmentID"?: string | null, "projectEnvironmentAlias"?: string | null } "time": number // unix timestamp MS, event time "resource": string // project-{projectID} } ``` ```json { "type": "runtime.session.end", "data": { "endTime": 1779807762998, "environmentID": "6a15b5f6a85b1b570a8773cf", "projectID": "69f9fa36eeb8f50e7cfd2d5f", "sessionID": "6a15b6093f95e60007ec4e04", "startTime": 1779807753396, "userID": "g4dq75wr6asov6z571860xg0", "endReason": "Session ended due to inactivity timeout", "versionID": "6a15b5f6a85b1b570a8773cf", "transcriptID": "6a15b6093f95e60007ec4e04", "versionVariant": "published", "projectEnvironmentID": "6a15b5f6a85b1b570a8773d4", "projectEnvironmentAlias": "production" }, "resource": "project-69f9fa36eeb8f50e7cfd2d5f", "time": 1779807763081 } ``` ## Call events Call events fire on voice conversations only. They carry call-level details that exist only on a call, such as the phone numbers involved and why the call ended. A voice conversation emits call events **and** session events, because the two describe different things: the call is the voice connection, and the session is the conversation carried over it. Check `type` to tell which event you're handling, and use `data.sessionID` to join the two. Their end events are not interchangeable either: - `runtime.call.end` fires when the voice connection is torn down. - `runtime.session.end` fires when the session expires. On a normal hangup that follows within a few seconds, because hanging up marks the session as expired. If the hangup never reaches Voiceflow, the session ends on its idle timeout instead, which can be much later. Use `runtime.call.end` for call duration and `runtime.session.end` for conversation lifetime. Calls and sessions aren't one-to-one. A caller who reaches your agent again while their previous session is still active reuses that session, so the second call emits `runtime.call.start` and `runtime.call.end` with no new `runtime.session.start`. That session's `runtime.session.end` arrives once the session itself expires, after the last call. On a reused session, `data.sessionID` and `data.transcriptID` are `null` on `runtime.call.start`, so that event can't be joined to its session. ### `runtime.call.start` This event is sent when a voice call starts: an inbound or outbound phone call, or a voice call from the web widget, including test calls in the Voiceflow editor. ```typescript { "type": "runtime.call.start", "data": { "userID": string, "projectID": string, "environmentID": string, "startTime": number, // unix timestamp MS "platform": "twilio" | "telnyx" | "vonage" | "voiceflow" | "web-voice", "metadata": object, // depends on "platform" // the fields below may be null or absent — see "Optional fields" "sessionID"?: string | null, // the session this call is attached to "versionID"?: string | null, // same value as environmentID "transcriptID"?: string | null, "versionVariant"?: "draft" | "published" | null, "projectEnvironmentID"?: string | null, "projectEnvironmentAlias"?: string | null } "time": number // unix timestamp MS, event time "resource": string // project-{projectID} } ``` ```json { "type": "runtime.call.start", "data": { "userID": "+19876543210", "environmentID": "69f3df348d8088f34a622739", "projectID": "6772da2e485189279fa5b9da", "startTime": 1743563467788, "platform": "twilio", "metadata": { "callSid": "CA01ed76f14fee29c50f5de59400474006", "callType": "inbound", "userNumber": "+19876543210", "agentNumber": "+17782006110" }, "sessionID": "69f3df3a3f95e60007ec4e04", "versionID": "69f3df348d8088f34a622739", "transcriptID": "69f3df3a3f95e60007ec4e04", "versionVariant": "published", "projectEnvironmentID": "69f3df348d8088f34a62273f", "projectEnvironmentAlias": "production" }, "time": 1743563467874, "resource": "project-6772da2e485189279fa5b9da" } ``` ### `runtime.call.end` This event is sent when a call is completed. ```typescript { "type": "runtime.call.end", "data": { "userID": string, "projectID": string, "environmentID": string, "startTime": number, // unix timestamp MS "endTime": number, // unix timestamp MS "endReason": string, // why the call ended, arbitrary string, common reasons include "hangup" "end trace" "twiml" "answering machine" "platform": "twilio" | "telnyx" | "vonage" | "voiceflow" | "web-voice", "metadata": object, // depends on "platform" // the fields below may be null or absent — see "Optional fields" "sessionID"?: string | null, // the session this call was attached to "versionID"?: string | null, // same value as environmentID "transcriptID"?: string | null, "versionVariant"?: "draft" | "published" | null, "projectEnvironmentID"?: string | null, "projectEnvironmentAlias"?: string | null } "time": number // unix timestamp MS "resource": string // project-{projectID} } ``` ```json { "type": "runtime.call.end", "data": { "userID": "+19876543210", "environmentID": "69f3df348d8088f34a622739", "projectID": "6772da2e485189279fa5b9da", "startTime": 1743563467788, "endTime": 1743563467834, "endReason": "hangup", "platform": "twilio", "metadata": { "callSid": "CA01ed76f14fee29c50f5de59400474006", "callType": "inbound", "userNumber": "+19876543210", "agentNumber": "+17782006110" }, "sessionID": "69f3df3a3f95e60007ec4e04", "versionID": "69f3df348d8088f34a622739", "transcriptID": "69f3df3a3f95e60007ec4e04", "versionVariant": "published", "projectEnvironmentID": "69f3df348d8088f34a62273f", "projectEnvironmentAlias": "production" }, "time": 1743563467874, "resource": "project-6772da2e485189279fa5b9da" } ``` ## Optional fields Several fields on the four events above are **optional and nullable**: `versionID`, `transcriptID`, `versionVariant`, `projectEnvironmentID`, `projectEnvironmentAlias`, `sessionID` (call events only), and `endReason` (on `runtime.session.end`). They are populated whenever the value is available, and are `null` otherwise. Treat a missing or `null` value as "not known for this conversation" rather than as an error, and don't require them to be present when parsing a payload. `endReason` on `runtime.session.end` is typed as nullable but in practice always carries a value. Sessions that simply time out report `"Session ended due to inactivity timeout"`, and a session displaced by a new one reports `"Session expired because a new one was started"`. It's an arbitrary string, so match on it defensively rather than treating the set as fixed. `versionID` carries the same value as `environmentID`. It exists so that consumers written against the deprecated `.v2` events, which used the name `versionID`, keep working after migrating. `transcriptID` carries the same value as `sessionID`, because a conversation's transcript is keyed on the session that produced it. It's `null` when transcripts are disabled for the session, which is the case to guard against if you use it to build transcript links. ## Deprecated events `runtime.session.start.v2`, `runtime.call.start.v2` and `runtime.call.end.v2` are deprecated. They will **stop firing on October 9, 2026**. If you subscribe to any of them, switch to the corresponding event without the `.v2` suffix before then. Until that date the deprecated events keep firing exactly as they do today, alongside their replacements, so you can migrate at your own pace. If you subscribe to both an event and its `.v2` variant during this window you'll receive both, and should ignore one of them. | Deprecated event | Replace with | | --- | --- | | `runtime.session.start.v2` | [`runtime.session.start`](#runtime-session-start) | | `runtime.call.start.v2` | [`runtime.call.start`](#runtime-call-start) | | `runtime.call.end.v2` | [`runtime.call.end`](#runtime-call-end) | The `.v2` events existed only to add richer metadata. That metadata now ships on the standard events, so the two payloads carry the same information. Differences to handle when you migrate: | Field on the `.v2` event | On the replacement event | | --- | --- | | `versionID` | `versionID`, carrying the same value. The replacement events also include `environmentID` with that value. | | `sessionID`, `transcriptID`, `versionVariant`, `projectEnvironmentID`, `projectEnvironmentAlias` | Same names and values, but [optional and nullable](#optional-fields). The `.v2` events only fired when these were all known; the replacements fire on every session or call, so your handler needs to tolerate `null`. | | `endReason` (on `runtime.call.end.v2`) | `endReason` on `runtime.call.end`, always present and never `null`. | `runtime.session.end.v2` has also been removed. Unlike the events above it never fired, because its trigger condition depended on data that was never recorded, so it has no subscribers and no migration path is needed. Use [`runtime.session.end`](#runtime-session-end), which now carries the fields `runtime.session.end.v2` was intended to add. ## Best practices - Check `type` when evaluating a response. There may be additional types of events in the future with a different shaped request body, as well as new properties and metadata. - **Parse payloads permissively.** New fields are added to existing events without introducing a new event name or version, so treat unrecognized properties as expected. A new event *name* is only introduced when an existing field's meaning or shape changes. - Don't require the [optional fields](#optional-fields) to be present. Handle `null`. - `data.metadata` is only included on call events. Check `data.platform` before reading it, as the available fields vary by platform (eg: `data.metadata.callSid` isn't present on a `"web-voice"` call). - Join call events to session events on `data.sessionID` where it's present, and don't assume one call per session. See [Call events](#call-events). - If you're using the same webhook URL across multiple projects, check `data.projectID` to tell them apart. # Create workspace Source: https://www.voiceflow.com/docs/api-reference/workspace/create-workspace /specs-prettified/realtime/openapi.stable.json post /v1/stable/workspace Adds a workspace to the account, the container that groups projects and the people who work on them. The response carries the ID that later calls address it by. # Delete workspace Source: https://www.voiceflow.com/docs/api-reference/workspace/delete-workspace /specs-prettified/realtime/openapi.stable.json delete /v1/stable/workspace/{workspaceID} Deletes a single workspace by ID. A workspace is the container that groups projects and the people who work on them. The response carries only a confirmation message, so refetch the workspaces to see what is left. # Get workspace Source: https://www.voiceflow.com/docs/api-reference/workspace/get-workspace /specs-prettified/realtime/openapi.stable.json get /v1/stable/workspace/{workspaceID} Returns a single workspace by ID, with the fields that define it. A workspace is the container that groups projects and the people who work on them. # List workspaces Source: https://www.voiceflow.com/docs/api-reference/workspace/list-workspaces /specs-prettified/realtime/openapi.stable.json get /v1/stable/workspace Returns every workspace in the account. A workspace is the container that groups projects and the people who work on them. The call takes no paging parameters, so one request yields the whole set. # Update workspace Source: https://www.voiceflow.com/docs/api-reference/workspace/update-workspace /specs-prettified/realtime/openapi.stable.json patch /v1/stable/workspace/{workspaceID} Changes an existing workspace in place. The response carries only a confirmation message, so refetch the workspace to read its new values. # Changelog Source: https://www.voiceflow.com/docs/changelog/changelog Stay up to date with Voiceflow product updates, new features, bug fixes, and platform improvements shipped across the agent builder and APIs. ## Instruction patching Agent instructions, global prompts, and playbook instructions can now be read, searched, and patched line by line through the API. You can edit a single line in a 20,000-line prompt without re-sending the entire document, and search instructions to locate specific lines. Use the new patch endpoints to update individual lines by their line number or search pattern. This applies to instructions at the agent level, global prompt level, and within playbooks. Full document replacement remains available. Line-by-line patching is an alternative for large instruction sets where targeted edits are more efficient. {/* manifest: agent-instructions-the-global-prompt-and-playbook-instructio */} ## Atlas reads your conversations Atlas can now answer questions about your conversations in bulk. Ask why calls dropped last Tuesday, or which conversations scored badly on an evaluation, and it searches your transcripts, reads the ones that matter, and reports back, instead of you opening them one at a time. Point it at a date range, an environment, or an evaluation score. It can summarize a single conversation from a link, or run named evaluations across everything it found in one batch. Batches spend your workspace's evaluation quota and write scores onto the transcripts, so Atlas tells you the cost before it starts. {/* manifest: atlas-searches-reads-and-scores-conversations-through-purpos */} ## Reasoning effort You can now set how hard a Claude model thinks before it answers. Pick a Claude model served through Bedrock and a **Reasoning effort** slider appears, with stops for Off, Adaptive, Low, Medium and High. Leave it alone and the model keeps its own default. Set it in **Settings** → **Behaviour** → **Model & reasoning**, or from the **Model** popover on a playbook or prompt. Thinking tokens are billed as output, so Off is a cost control as much as a speed one. ![Reasoning effort](/docs/images/changelog_images/reasoning-effort.png "Reasoning effort") {/* manifest: reasoning-effort-including-off-and-adaptive-is-selectable-fo */} ## Phone call audio We have improved how phone call audio is processed before the agent hears it. There were cases where noise cancellation was stripping parts of what the caller said, so the agent missed some of the utterance and it did not reach the transcript. Callers now come through in full. Nothing to configure, and this applies to every phone call. {/* manifest: noise-cancellation-on-phone-calls-no-longer-removes-the-call */} ## Evaluation run scope An evaluation can now be scoped to conversations that ran on a published environment, or to draft ones, instead of scoring everything. Resolution rate and Conversion rate are published-only by default, so test traffic no longer skews them. Set `runScope` to `published`, `draft` or `both` through the API. It applies to automatic scoring only: a batch run from the Transcripts tab still runs on exactly the transcripts you pick. Evaluations score what already happened. Tests pin what must happen. {/* manifest: an-evaluation-can-be-scoped-to-run-automatically-on-publishe */} ## Billing user role Billing access is now decided by a member's workspace role alone. Owner, Admin and Billing roles keep it, as do organization admins. Giving someone edit or admin access to a single project used to carry billing access with it. If you were relying on that, give them the workspace **Billing** role instead. ![Billing user role](/docs/images/changelog_images/billing-user.png "Billing User Role") {/* manifest: workspace-billing-permissions-are-decided-by-the-workspace-r */} ## Atlas writes your tests Atlas can now create tests in the **Tests** tab: scripted turn-by-turn conversations, persona simulations, and checks on what the agent said, where it routed and which tools it called. It can also turn a conversation into a regression test, whether that conversation worked or failed. After a smoke conversation passes, Atlas offers to pin it as a test. Before a publish or merge to Main, it offers to run the suite first. Atlas writes the test and hands the run back to you to trigger. {/* manifest: atlas-can-author-convert-and-read-saved-agent-tests-through- */} ## Atlas improvements Atlas now edits prompts in front of you. Ask it to change your global prompt, agent instructions or a playbook's instructions, and you watch the rewrite happen in the editor rather than waiting for a finished result. In Safe mode the proposal appears as a word-level diff you accept or reject; in Autonomous mode the text is typed straight in. You can also ask about one part of a prompt instead of the whole thing. Select any text in an editor and choose **Ask Atlas** from the toolbar above the selection, and that passage is attached to your next question as a chip. And Atlas can set up credentials with you. When something needs a secret, an integration or an MCP server, it offers a card that opens the normal Voiceflow flow. You fill it in, the card reports back, and Atlas carries on from where it stopped. **The credential is entered by you and never passes through the chat or the model.** {/* manifest: atlas-s-prompt-and-instruction-edits-stream-into-the-prompt-, ask-atlas-about-a-selected-passage-of-a-prompt-from-the-edit, atlas-sets-up-secrets-integrations-and-mcp-servers-by-offeri */} ## Secret and integration endpoints Secrets and third-party integrations can now be listed, created, connected and disconnected through the stable API, the CLI and the Voiceflow MCP server, scoped by project. Secret values are write-only and never returned. Integrations report whether they can be connected through the API at all. Browser-flow ones such as Zendesk and Salesforce still have to be connected in the builder. A credential value is refused when it arrives from an MCP client. {/* manifest: secret-and-integration-resource-families-on-the-stable-api-w */} ## Pending changes indicator An environment with unpublished work now says so. The **Publish** control carries an amber dot, and its menu offers **View pending changes** so you can read the diff without opening the Publish form. The environments table shows the same dot in place of the old Draft tag. ![Pending changes indicator](/docs/images/changelog_images/pending-changes.png "Pending Changes Indicator") {/* manifest: an-environment-with-unpublished-work-is-marked-on-the-publis */} ## Safe mode in Atlas Safe mode is how Atlas works by default: it pauses and asks before anything that changes your project, and runs read-only work such as listing, fetching, exporting, querying analytics and searching transcripts without interrupting you. It now decides what counts as a change per operation, rather than inferring it from the operation's name. Anything implemented as a write asks first even if it reads like a lookup, and any newly added operation asks until it is classified. Switch between Safe and Autonomous from the pill in the Atlas composer footer. ![Atlas Safe mode](/docs/images/changelog_images/atlas-approve-change-box.png "Atlas Safe Mode") {/* manifest: atlas-safe-mode-gates-every-product-write-from-an-explicit-p */} ## Atlas Meet Atlas, your in-app copilot for building and monitoring agents. Ask how an agent performed this week, how that compares to last week, or where customers are dropping off. Ask for a change to the agent and Atlas makes it. ![Atlas](/docs/images/changelog_images/atlas-workspace-level.png "Atlas") Atlas holds a single conversation as you move around the product, so you never have to re-explain what you are working on. You can watch it think: a live activity line shows the tools it is calling and the reasoning behind each step. Anything you find yourself asking repeatedly can become a Skill. Save your own in **Settings → Skills**, then pick them from Atlas whenever you need them. Atlas is in Beta, available on agentic projects, and its usage is broken out in your workspace usage charts. {/* manifest: atlas-the-builder-ai-assistant-rebuilt-as-a-persistent-panel */} ## Markdown source view The fullscreen global prompt and playbook instruction editors can now be switched to their markdown source and edited as plain text, so you can see and change exactly what the agent will read. Use **Show markdown source** in the floating actions, and **Show rendered markdown** to switch back. Source mode has syntax highlighting and tab indentation, and your choice is remembered per editor. The rendered view is still the default, so nothing changes unless you switch. Copying from the rendered view now gives you markdown. ![Markdown source view](/docs/images/changelog_images/markdown-editor-plain-text.png "Markdown Source View") {/* manifest: a-markdown-source-view-in-the-global-prompt-and-playbook-ins */} ## Transcript keyword search You can now find transcripts by what was actually said in them. Search for a phrase and the list narrows to conversations containing it, with each result showing how many messages matched and a short excerpt around the first hit. You can also narrow to just what the user said, or just the agent. Search terms can be up to 256 characters, and the same filter is available on the transcript search API. ![Transcript keyword search](/docs/images/changelog_images/transcript_search.png "Transcript Keyword Search") {/* manifest: transcripts-can-be-searched-by-keywords-in-user-and-agent-me */} ## Max conversation duration Voice conversations can now run up to sixty minutes, double the previous ceiling. You can set the limit from **Behaviour → Session & timeout**. Agents that had the setting switched off move to a thirty-minute default. If you previously entered a value above thirty minutes, note that it was silently capped before and will now apply in full. ![Max conversation duration](/docs/images/changelog_images/max-conversation-duration.png "Max Conversation Duration") {/* manifest: max-conversation-duration-is-always-on-set-with-a-slider-and */} ## MCP token authentication The Voiceflow MCP server now accepts a personal access token as a bearer credential, so a client that cannot open a browser for OAuth can connect using the same token that authenticates the REST API and the CLI. Send it in the `Authorization` header instead of completing the browser sign-in. The OAuth flow is unchanged. {/* manifest: the-voiceflow-mcp-server-accepts-a-personal-access-token-ins */} ## Trace filtering on the conversation endpoint A caller of the stable conversation endpoint can now list trace types to drop from the response, so an integration only receives the traces it renders. Send a `config` object alongside the action with `excludeTypes` listing the types to drop. Omit it and every trace comes back as before. One trace is always returned even when its type is excluded: the debug trace reporting that the credit limit was reached. {/* manifest: trace-types-can-be-excluded-from-the-stable-conversation-end */} ## Late variable writes A variable set after the agent has already replied, which is the normal case for an asynchronous tool that finishes late, now survives into the following turn instead of being quietly reverted. The agent reads what was actually written. Nothing to configure. If your agent was built to expect late writes to be discarded, note that it will now see the updated values instead. {/* manifest: a-variable-written-after-a-turn-is-sealed-is-no-longer-rever */} ## Multilingual Cartesia voices Cartesia text-to-speech now covers over forty languages, up from fifteen. Each voice declares which languages it speaks, and the preview sample plays in the language you selected. Choose a provider, voice and language from **Settings → Behaviour → Voice output**. The voice menu now filters by language, so a voice that does not support the language you pick will not appear in the list. Existing selections are untouched. {/* manifest: cartesia-voices-support-forty-languages-with-samples-that-pl */} ## Knowledge base logs in evaluations **Knowledge base logs** joins Playbook, Workflow and Tool logs in an evaluation's **Log visibility** settings. With it on, the evaluating model can see the knowledge base searches your agent ran, so a criterion about whether an answer came from your content is something it can actually check. As with the other log types, including them makes each prompt longer and raises the average cost per evaluation. ![Knowledge base logs](/docs/images/changelog_images/evaluation-settings-kb-logs.png "Knowledge Base Logs") {/* manifest: an-evaluation-can-be-given-the-agent-s-knowledge-base-search */} ## Transcript environment fields A transcript fetched from the REST API now reports which environment the conversation ran in, and whether it ran against the draft or published version. Both fields are null for conversations recorded before environments existed. {/* manifest: transcripts-from-the-stable-rest-api-carry-their-environment */} ## Live agent typing indicator When a live agent is composing a reply during a handoff, the user now sees that the agent is typing instead of waiting in silence. Nothing to configure. This currently applies to handoffs to Dixa; other providers are unchanged. {/* manifest: a-typing-indicator-while-a-live-agent-is-replying-during-a-h */} ## Parallel tool calls When an agent makes several tool calls in a single turn, all of them now run and every result comes back. Previously all but the last were discarded, so an agent that searched the knowledge base three times answered from one search. Nothing to configure. This covers every kind of tool call an agent makes in a turn, including knowledge base searches, API tools, functions and integrations. Each result is matched back to the call that asked for it, and turns that make several calls are faster. {/* manifest: more-than-one-knowledge-base-search-in-a-single-turn-no-long */} ## Tool message traces The message an agent speaks while a slow tool runs now reaches applications that call the API without streaming. It arrives as an ordinary `text` trace for chat or a `speak` trace for voice, generated through the same path as any other agent message. Previously it was dropped. Nothing to configure. If your integration consumes completion events, it keeps receiving the message as a completion sequence. If it does not, responses from non-streaming endpoints now carry one additional trace. {/* manifest: a-generated-tool-call-message-reaches-callers-that-do-not-co */} ## Out-of-credit call handling Phone calls are now declined when your organization has run out of credits, instead of connecting to an agent that cannot respond. The caller hears that no agents are available. A test call from the builder tells you to add credits. Organization admins are emailed when this occurs. {/* manifest: voice-calls-are-declined-when-the-organization-has-run-out-o */} ## Personal access tokens You can now create a personal access token with an expiry you choose, and use it in place of the shared project API key for Voiceflow's APIs and the CLI. Create and revoke tokens from **Settings → Access tokens**. Project API keys will keep working. Pick an expiry when you create a token, and copy the value once. A searchable table lists your tokens with their expiry and the actions available for each. ![Access tokens](/docs/images/changelog_images/personal-access-tokens.png "Access Tokens") {/* manifest: personal-access-token-management-page-with-project-api-keys- */} ## Live transcripts You can now follow a conversation while it is still in progress. Open **Transcripts** and click a conversation that has not ended, and each turn appears as it happens while the view scrolls itself, so you no longer have to wait for a conversation to finish before you can read it. The view refreshes every four seconds and pauses while the browser tab is in the background. Once the conversation closes it keeps listening briefly so the final message still arrives, then settles. ![Live transcripts](/docs/images/changelog_images/live-transcripts.png "Live Transcripts") {/* manifest: a-transcript-for-a-conversation-still-in-progress-follows-it */} ## Tag tools, playbooks, and workflows in your instructions You can now reference a resource directly instead of naming it in plain text. Press `/` in the global prompt, agent instructions, or playbook instructions, choose a type (playbook, workflow, system tool, or tool), then pick from your project. It's inserted as a chip bound to that resource. Variables continue to be referenced using `{`. If a tagged resource isn't available in that context, the chip flags it rather than silently failing. ![Image](/docs/images/changelog_images/2026-08-10-markdown-resource-tagging.png "Markdown Resource Tagging") ## Markdown editor The global prompt, agent instructions, and playbook instructions now use a Markdown editor. Structure your instructions with headings, lists, bold and italic, either with standard Markdown shortcuts (`## ` for a heading, `**bold**`, `> ` for a quote) or by pressing `/` to open the formatting menu. Agents built from a prompt come back formatted this way by default. Existing instructions migrate automatically. The underlying data is unchanged, only how it's rendered and edited. ![Image](/docs/images/changelog_images/2026-08-10-markdown-prompt-editor.png "Markdown Prompt Editor") ## Widget width You can now set the chat widget's width from Interface → Widget, instead of overriding the `vfrc-chat` class with custom CSS. Minimum is 320px, and the widget stays responsive if the width you set exceeds the browser window. ![Image](/docs/images/changelog_images/august-10-2026-widget-width/widget-width-setting.png "Widget Width Setting") {/* manifest: the-chat-widget-s-width-is-a-setting-instead-of-a-custom-css */} ## Session lifecycle webhook: richer payloads, `.v2` events deprecated All four session lifecycle events (`runtime.session.start`, `runtime.session.end`, `runtime.call.start` and `runtime.call.end`) now carry the metadata that previously appeared only on their `.v2` variants: `versionID`, `transcriptID`, `versionVariant`, `projectEnvironmentID` and `projectEnvironmentAlias`, plus `endReason` on `runtime.session.end` and `sessionID` on the call events. `sessionID` on call events is new information: call and session events can now be correlated with each other for the first time. These fields are **optional and nullable**. The `.v2` events only fired when every one of them was known, whereas the standard events fire on every session and call, so your handler should tolerate `null`. `versionID` carries the same value as `environmentID`. **Deprecation:** `runtime.session.start.v2`, `runtime.call.start.v2` and `runtime.call.end.v2` will **stop firing on October 9, 2026**. Until then they continue to be delivered alongside their replacements, so you can migrate at your own pace. Switch to the event name without the `.v2` suffix. `runtime.session.end.v2` has been removed. It never fired, because its trigger condition depended on data that was never recorded, so it had no subscribers. We've also clarified a point that causes recurring confusion: session events fire on **every channel**, chat included. A voice conversation emits both `runtime.call.*` and `runtime.session.*` because a call and a session are different things with different end conditions. See [Session lifecycle webhook](/docs/api-reference/webhooks/session-lifecycle) for the full breakdown. ## Soniox speech to text model Voiceflow now supports Soniox's V5 real-time speech to text model. ![Clean Shot 2026 08 05 At 09 35 26@2x](/docs/images/CleanShot-2026-08-05-at-09.35.26@2x.png "Clean Shot 2026 08 05 At 09 35 26@2x") ## Generative tool messages In addition to scripted tool messages, you can now provide generative tool messages that use the conversation history to provide a contextually correct tool message at that point in the conversation. You can accompany generative tool messages with examples as hints for how your agent should reply. Generative tool messages also work nicely in multilingual agents and will reply in the language of the current conversation. ![Clean Shot 2026 08 05 At 09 32 28@2x](/docs/images/CleanShot-2026-08-05-at-09.32.28@2x.png "Clean Shot 2026 08 05 At 09 32 28@2x") ## Handoff configuration A Live agent handoff step's **Configuration** field now controls the wait-time message and can hide file upload for the duration of a handoff. `waitTimeMessage` takes None, Delay, Time or Position; a mode your provider cannot render falls back to that provider's default rather than turning the message off. `disableFileUpload` hides the widget's upload control, and it stays hidden if the visitor reopens the chat. Variables can now be written into the Configuration JSON the normal quoted way without voiding the rest of the object, and an invalid key drops only itself rather than the whole object. If you use Kustomer, Genesys, Ujet or Dixa, note that this changes what an untouched step sends to them. {/* manifest: live-agent-handoff-step-gains-a-configuration-field-with-wai */} ## Project Analytics Updates We made it easier to understand your agent's performance and ROI, by introducing a summary section on the **Analytics** page. Key evaluations and metrics now sit at the top: resolution rate and customer satisfaction are surfaced by default, alongside total conversations, spend, and average cost per conversation. A number of new metrics were also added. This includes: - LLM Cost - TTS Cost - SST Cost ## Environment Protection You can now lock down individual environments so only admins or owners can publish or merge into them. Turn on **Environment protection** from the environment's ••• menu in **Settings → Environments**. Everyone else keeps their normal access to build and test - they just can't merge changes into that environment. This is most useful on Main and on any environment carrying live traffic. Anyone can still create a new environment, this protects production environments from accidental or unauthorized changes. ![Clean Shot 2026 07 31 At 10 04 09@2x](/docs/images/CleanShot-2026-07-31-at-10.04.09@2x.png "Clean Shot 2026 07 31 At 10 04 09@2x") ## Cost limit per conversation You can now set a maximum spend per conversation. Define a dollar amount, and once a session's cost exceeds it, Voiceflow ends the session automatically - a hard ceiling on any single conversation, no matter how long it runs or how many tools it calls. For voice calls, this pairs with Max conversation duration: duration caps how long a conversation lasts, while cost limit caps what it spends. A short conversation that hammers an expensive model can cost more than a long, quiet one, so the two guardrails catch different failure modes. As with duration, you can set an optional **End message** that's sent before the session closes. This setting is off by default. Find it in **Settings → Behaviour.** ![Clean Shot 2026 07 31 At 10 02 39@2x](/docs/images/CleanShot-2026-07-31-at-10.02.39@2x.png "Clean Shot 2026 07 31 At 10 02 39@2x") ## Max conversation duration for phone calls You can now cap how long a single conversation is allowed to run. Set a limit in seconds, and once a conversation hits it, Voiceflow ends it automatically - so a caller who stays on the line indefinitely, or an agent stuck in a loop, can't quietly burn through credits. You can also define an optional **End message** that plays before the conversation closes, so the user gets a graceful sign-off instead of a dropped call. This setting is off by default. Find it in **Behaviour → Session & timeout**. ![Clean Shot 2026 07 31 At 10 03 07@2x](/docs/images/CleanShot-2026-07-31-at-10.03.07@2x.png "Clean Shot 2026 07 31 At 10 03 07@2x") ## File upload in chat widget The chat widget now natively supports file and image uploads for both AI agent and human handoff conversations. To turn file uploads on, open **Widget → Modality & Interface** and enable **Allow file attachments**. Users can upload up to 10 files during a conversation. Supported file types include PDF, JPEG, JPG, PNG and WEBP. Files are stored in a secure Voiceflow storage repository and are never publicly accessible. [Learn more](https://docs.voiceflow.com/documentation/deploy/widget/custom-web-chat-styling#enabling-file-uploads) ![Clean Shot 2026 07 31 At 10 09 37@2x](/docs/images/CleanShot-2026-07-31-at-10.09.37@2x.png "Clean Shot 2026 07 31 At 10 09 37@2x") ## Improvements to tool call sounds Tool call sounds now: 1. Have manual volume control 2. Include more sound options 3. Automatically decrease volume when agent it talking over it 4. Fade in and out to create a more natural dialog ![Clean Shot 2026 07 15 At 12 27 34@2x](/docs/images/CleanShot-2026-07-15-at-12.27.34@2x.png) ## Background audio for all telephony providers All Telephony providers (Voiceflow, Twilio, Vonage, Telnyx) now support background audio. Background audio configuration can be found in the behaviour tab of your project. ![Clean Shot 2026 07 15 At 12 18 46@2x](/docs/images/CleanShot-2026-07-15-at-12.18.46@2x.png) ## Secrets conflict resolution When merging an environment into Main, Voiceflow detects secrets whose values differ between the two environments. Before the merge completes, you choose how to resolve them: keep Main's existing values (default), or enable **Override Main secrets** to replace them with the incoming environment's values. This prevents merges from silently overwriting production credentials - like API keys pointed at staging systems - without an explicit decision. ![Clean Shot 2026 07 09 At 09 49 15@2x](/docs/images/CleanShot-2026-07-09-at-09.49.15@2x.png) ## Evaluations with log visibility Evaluations just got a lot more observant. With the new **Log visibility** setting, you control exactly what your evaluating model can see when it scores a transcript - going beyond the conversation itself and into what your agent actually _did_ behind the scenes. Choose which logs to include in each evaluation: - **Playbook logs** - see which playbooks fired and how they reasoned toward their goal - **Workflow logs** - trace the deterministic steps a conversation passed through - **Tool logs** - inspect every tool call, input, and response Each log type is opt-in, so you stay in control of the trade-off: more logs give the evaluating model richer context, while fewer logs keep credit usage lean. Enable all three, mix and match, or include none - whatever fits the question you're trying to answer. ![Clean Shot 2026 07 03 At 17 09 43@2x](/docs/images/CleanShot-2026-07-03-at-17.09.43@2x.png) ## Variable persistence control You can now control whether individual variables persists across user sessions. Define what should carry across sessions (name, preferences, tier) for returning users, and ignore what shouldn't. [Learn more](https://docs.voiceflow.com/documentation/build/data/variables#persisting-variables-across-sessions) ![Clean Shot 2026 07 03 At 12 10 12@2x](/docs/images/CleanShot-2026-07-03-at-12.10.12@2x.png) ## Required variables for workflows & playbooks Specify variables that must be filled before a playbook or workflow can be routed to. Until every required variable has a value, the agent won't hand off to it. ![Clean Shot 2026 06 24 At 09 10 52@2x](/docs/images/CleanShot-2026-06-24-at-09.10.52@2x.png) ## Entry conditions You can now gate playbooks and workflows behind entry conditions - deterministic checks that must evaluate to true before the agent can access that playbook or workflow. If the conditions aren't met, the playbook/workflow stays unavailable for routing, giving you precise, rule-based control over when each one becomes reachable. ![Clean Shot 2026 06 24 At 08 58 30@2x](/docs/images/CleanShot-2026-06-24-at-08.58.30@2x.png) ## Organization level usage breakdown You can now see exactly where your spend is going from a birds eye view. Usage breakdowns now include spend across workspaces and projects, broken down by Runtime, Measure, Development, and Generation features. Drill into a specific workspace, project, or date range to track costs over time and understand what's driving them. ![Clean Shot 2026 06 17 At 18 12 18@2x](/docs/images/CleanShot-2026-06-17-at-18.12.18@2x.png) ## Transcript filtering by workflow, playbook and tool usage You can now filter transcripts by a specific workflow, playbook, or tool and see only the conversations where it was used. ![Clean Shot 2026 06 17 At 18 32 22@2x](/docs/images/CleanShot-2026-06-17-at-18.32.22@2x.png) ## Caller ID passthrough When using the Call forward system tool, the forwarded destination can now see the original caller's number. This can be helpful to ensure your contact center platform receives accurate caller information for routing, logging, and CRM matching. ![Clean Shot 2026 06 17 At 17 24 40@2x](/docs/images/CleanShot-2026-06-17-at-17.24.40@2x.png) ## Save tool responses to properties Tool outputs can now be saved to [properties](https://docs.voiceflow.com/documentation/measure/transcripts#attaching-custom-properties), not just variables. Previously, when an agent called a tool, you could capture the response to a Voiceflow variable - now you can map it to a property as well, which is useful for tracking and transcript tagging. ![Clean Shot 2026 06 17 At 18 33 06@2x](/docs/images/CleanShot-2026-06-17-at-18.33.06@2x.png) ## Merge conflict awareness When merging an environment back into main, you can now see whether main has changed since you branched off it. This makes it clear when your branch is working from an outdated version of main, so you can review and reconcile those changes before merging. ![Clean Shot 2026 06 15 At 17 39 57@2x](/docs/images/CleanShot-2026-06-15-at-17.39.57@2x.png) ## Personas Personas let you test conversations with specific variable values already in place. They’re useful for testing how your agent handles different customer types or account states without setting things up by hand each time. [Learn more](/docs/documentation/build/data/personas) ## Tests Tests let you verify your agent’s behaviour before real users see it. Each test simulates a conversation between a user and your agent, then checks that things like the agent’s responses, where it routed, and which tools it called match what you expected. [Learn more](/docs/documentation/measure/tests) ![Tests Cover](/docs/images/tests-cover.avif) ## Project converter You can convert a chat project to voice (or voice to chat) right from your workspace dashboard. Select the project, click the ellipsis (•••) button, and choose **Convert to voice** or **Convert to chat**. ## Query re-writing When enabled, the model rewrites the user’s last message before searching based on your instructions - improving retrieval for conversational or ambiguous inputs. Useful when users don’t phrase questions the way your content is written. [Learn more](https://docs.voiceflow.com/documentation/build/querying-the-knowledge-base#query-re-writing) ![Query Re Writing Docs 1](/docs/images/Query-re-writing-docs-1.png) ## New model: Voiceflow Core Voiceflow Core is our first model, optimized for the kinds of tasks agents actually do - tool calling, multi-turn reasoning, instruction following inside playbooks. We benchmarked it on Voiceflow's agentic framework against the models we currently support (Anthropic, OpenAI, Gemini) and saw stronger quality, at a lower per-token cost. Core is rolling out as a selectable model across all plans. ![Voiceflow Core Docs](/docs/images/VoiceflowCore-docs.png) ## Pronunciation dictionaries The pronunciation dictionary rewrites words or phrases in your agent’s responses before they’re sent to text-to-speech. This ensures correct pronunciation of names, places, or technical terms. You can find this setting in Behaviour/Voice Output/Pronunciation dictionary. [Learn more](https://docs.voiceflow.com/documentation/build/behaviour#pronunciation-dictionary) ![Pronunciation Dic](/docs/images/Pronunciation-dic.png) ## Environments Work on multiple versions of your agent in parallel, conduct A/B tests with traffic splits, and roll changes back with confidence. [Learn more](/docs/documentation/deploy/environments/overview) ![Traffic Splitting](/docs/images/Traffic-splitting.png) ## Tool call sounds You can now play an audio snippets while a tool call is running, so users aren't sitting in dead air during longer-running tools. Pick from sounds like keyboard typing, elevator music, and others directly in the tool call configuration. This is a voice specific feature, so it's only available on voice projects. ![Tool Call Sounds Docs](/docs/images/Tool-call-sounds-docs.png) ## Evaluation preview cards Evaluation results now open with summary cards at the top of the page, so you can see the key numbers at a glance without digging into the details. ![Eval Preview Chips](/docs/images/Eval-Preview-Chips.png) ## Flux multilingual Flux Multilingual extends Flux to 10 languages. We highly recommend switching to Flux as it's the most performant STT model in market. ![Flux Multi](/docs/images/Flux-multi.png) ## Skip turn system tool The skip turn tool lets the agent stay quiet and wait for the user instead of replying. Use it when the user asks for a moment - things like "hold on," "give me a sec," "let me think," or "one moment" - so the agent doesn't talk over them or fill the pause with something unnecessary. ![Skip Turn](/docs/images/Skip-turn.png) ## New default properties for chat transcripts Chat transcripts now include OS, Device, Browser & Country properties by default. You can also filter your transcripts or evaluation results by any of these properties. ![Meta Data Filters](/docs/images/Meta-data-filters.png) ## Shopify tools Connect your Shopify store to Voiceflow in a couple of clicks and give your agent instant access to real order and product data - no custom API wiring required. What your agent can now do out of the box: - **Answer product questions with live data** - stock levels, sizing, variants, and specs pulled straight from your catalog, so customers get accurate answers instead of hallucinated ones - **Resolve "where's my order?" without a human** - customers self-serve status, tracking, and history just by asking - **Turn support chats into revenue** - recommend the right next product based on what the customer is already looking at or buying - **Handle cancellations end-to-end** - refund-ready cancellations happen inside the conversation instead of in a support queue ![Shopify Tool Docs](/docs/images/Shopify-tool-docs.png) ## Native fail path on Function and API steps You can now enable a native failure path on Function and API tool steps. When a tool responds with an error code, or times out, the failure path triggers if enabled. - If the Failure path is disabled and the tool errors or times out, the step exits through the first available port. - This does not apply to API or Function tools used in the global agent or playbooks - the agent handles all cases. - If the Failure path is disabled and the tool errors or times out, the step exits through the first available port. - This does not apply to API or Function tools used in the global agent or playbooks - the agent handles all cases. - If the Failure path is disabled and the tool errors or times out, the step exits through the first available port. - This does not apply to API or Function tools used in the global agent or playbooks - the agent handles all cases. ## Workflow usage You can now see workflow usage, alongside playbook usage in analytics. If you're not immediately seeing it in your analytics view, try adding it by editing the view from the page header. ![Workflow Usage Docs](/docs/images/Workflow-usagae-docs.png) ## Global tools You can now add [API](/docs/documentation/build/tools/api-tool), [MCP](/docs/documentation/build/tools/mcp-tool), [integration](/docs/documentation/build/tools/overview) and [function](/docs/documentation/build/tools/function-tool) tools directly at the agent level, making them available across your agent. [Global tools are available](https://docs.voiceflow.com/documentation/build/tools/global-tools#when-are-global-tools-are-available-for-my-agent-to-use) any time the user is in an agentic context. ![Global Tools Docs 1](/docs/images/Global-tools-docs-1.png) ## Custom timeouts for API and function tools You can now configure a custom timeout on [API](/docs/documentation/build/tools/api-tool) and [function](/docs/documentation/build/tools/function-tool) tools. If a tool doesn't respond within the set limit, it times out and triggers the fail path - so any fail tool messages or fallback paths you've configured will fire on timeout as well. The default timeout is 20 seconds. Maximum timeout limits by plan: | Plan | Maximum timeout | | --- | --- | | Enterprise | 600s (10 min) | | Business | 150s (2.5 min) | | Pro | 150s (2.5 min) | | Trial | 60s (1 min) | ![Request Timeout Docs 1](/docs/images/Request-timeout-docs-1.png) ## Live conversations indication in transcripts Your Transcripts table just got a heartbeat. Active conversations now appear have an indicator, alongside current cost - giving you a live pulse on every session as it happens. Refresh the table to pull in the latest updates without leaving the page. ![Live Conversations Docs](/docs/images/Live-conversations-docs.png) ## Interact with responses while they stream Links are now clickable and text is copyable while the agent is still generating a response - so you can act on information the moment it appears, not after the last word lands. ## Resizable conversation editor in run mode The conversation editor in run mode can now be resized, giving you more space when you need it. ## Run mode & transcript improvements Run mode and historical transcripts now surface three new layers of detail to make testing and reviewing your AI agents more informative: **Agent navigation** - When routing occurs, the transcript shows the path inline (eg: _Agent → Reservations specialist)_, giving you a clear trace of how conversations are routed throughout your AI agent. **Latency indicators** - Each agent response shows its response time in milliseconds or seconds, making it easy to spot slow steps in your flow. Hover a latency chip to see more detail. **Input types** - User turns are tagged with how the input was received (eg: _Voice input_, _Keypad input_, _Button input_, _Text input_), so you can better understand how your customers are interacting with your agent. ![Run Updates Docs](/docs/images/Run-updates-docs.png) ## Improved evaluation filters You can now apply more granular filters to your evaluations - making it easier to track performance trends, compare results across specific time ranges, and pinpoint where your agent is improving or regressing. ![Eval Filters Docs](/docs/images/Eval-filters-docs.png) ## Customize widget loader You can now choose how your agent looks while it's thinking. Pick between a spinner with text or a minimal dots loader, and customize the loading message to match your brand. Find it under Interface → Widget. This is a chat only feature. ![Loader Type Docs](/docs/images/Loader-type-docs.png) ## Async tool response capture API and Function tools running asynchronously can now save their response to a Voiceflow variable. Previously, async was fire-and-forget - useful for logging and side effects, but the response was lost. Now you can fire an async call, continue the conversation, and reference the result as soon as it arrives. This unlocks predictive experiences. Fetch a customer's recent orders during authentication, pull account data while the agent greets the user, or query a slow third-party service while the conversation moves forward. ![Async Docs 1](/docs/images/Async-docs-1.png) ## ElevenLabs Scribe v2 Realtime STT We’ve added support for ElevenLabs' newest and most accurate speech-to-speech model, Scribe v2 Realtime. Supporting 90\+ languages. ![Scribe Changelog](/docs/images/Scribe-changelog.png) ## Eleven v3 TTS We’ve added support for ElevenLabs' newest and most expressive text-to-speech model, Eleven v3. Supporting 70\+ languages. ![Eleven3 Changelog](/docs/images/Eleven3-changelog.png) ## Show source URLs in responses When enabled, the agent includes the source URL (If public URL) alongside its response so users can verify or learn more. Recommended for help centers and documentation. This feature is available for both the knowledge base and web search system tools.

You can set the maximum number of sources you want to show per agent message (defaulted to 1). ![Show Source Url Kb Docs 1](/docs/images/Show-source-url-kb-docs-1.png)
## Async functions and API tools You can now run Function and API tool steps asynchronously. Async execution allows the conversation to continue immediately without waiting for the tools to complete. No outputs or variables from the step will be returned or updated. This is ideal for non-blocking tasks such as logging, analytics, telemetry, or background reporting that don’t affect the conversation. Note: This setting applies to the reference of the Function or API tool - either where the tool is attached to an agent or where it’s used as a step on the canvas. It is not part of the underlying API or function definition, which allows the same tool to be reused with different async behaviour throughout your project. ![Async functions and API tools](/docs/images/changelog_images/January_27th,_2026_Async_functions_and_API_tools/e0054d0f209b16ded7284c4b9d5bcec0b547d01f8637dde9c05994c767e887cc-CleanShot_2026-01-27_at_14.45.392x.png) ## Tool messages Tool messages let you define static messages that are surfaced to the user as a tool progresses through its lifecycle: 1. Start - Message delivered when the tool is initiated 2. Complete - Message delivered when the tool finishes successfully 3. Failed - Message delivered if the tool encounters an error 4. Delayed - Message delivered if the tool takes longer than a specified duration (default: 3000ms, configurable) This provides clear, predictable feedback during tool execution, improving transparency and user trust - especially for long-running or failure-prone tools. ![Tool messages](/docs/images/changelog_images/January_8th,_2026_Tool_messages/e10e6fa4e60475d5c2cb53d537599101b5fe8307f4f4fd9216234163a8522078-CleanShot_2026-01-08_at_10.32.522x.png) ## GPT 5.2 Added global support for GPT 5.2 ![GPT 5.2](/docs/images/changelog_images/January_8th,_2026_GPT_5.2/dac926fc53de12728c51e5dbaa6a112b6bda8d71d010496438da27405be57a9a-CleanShot_2026-01-08_at_10.27.372x.png) ## Voice mode in web widget Your web widget now supports hands-free, real-time voice conversations. Enable it from the Widget tab for existing projects - it’s on by default for new ones. Users can talk naturally, see transcripts stream in instantly, and get a frictionless voice-first experience. It also doubles as the perfect in-browser way to test your phone conversations - no dialing in, just open the widget and run the full voice flow instantly. ![Voice mode in web widget](/docs/images/changelog_images/December_5th,_2025_Voice_mode_in_web_widget/6304f2fa3891792ea71fe42cdfde7853afbc31cf5eaa2355cf77f5d26e7f287b-ezgif-8a4a7d6c05eab371.gif) ![Voice mode in web widget](/docs/images/changelog_images/December_5th,_2025_Voice_mode_in_web_widget/5caa633ab568f04e526e166d3c996555e62606f007baabe3512235e2a3617228-CleanShot_2025-12-05_at_10.04.432x.png) ![Voice mode in web widget](/docs/images/changelog_images/December_5th,_2025_Voice_mode_in_web_widget/8ac89748035ec2b298f47ce90cee81dbde2e8e7d79cb5a034deda91dfe34195c-CleanShot_2025-12-05_at_10.05.462x.png) ## Native web search tool We’ve shipped a native Web Search tool so your agents can look up real-time information on the web mid-conversation - no custom integrations required. - Toggle on the web search tool in any agent to answer questions that need live data (news, prices, schedules, etc.). - Configure search prompts and guardrails so the agent only pulls what you want it to. - Results are summarized and grounded back into the conversation for more accurate, up-to-date answers. - Toggle on the web search tool in any agent to answer questions that need live data (news, prices, schedules, etc.). - Configure search prompts and guardrails so the agent only pulls what you want it to. - Results are summarized and grounded back into the conversation for more accurate, up-to-date answers. - Toggle on the web search tool in any agent to answer questions that need live data (news, prices, schedules, etc.). - Configure search prompts and guardrails so the agent only pulls what you want it to. - Results are summarized and grounded back into the conversation for more accurate, up-to-date answers. ![Native web search tool](/docs/images/changelog_images/November_27th,_2025_Native_web_search_tool/4833aab6f3db28b0a3b9dbf9fa9e31be34ceb2be7b8f72595e0b55422fbb48e0-CleanShot_2025-11-27_at_09.38.572x.png) ## Telnyx telephony integration You can now connect your Telnyx account to import and manage phone numbers directly in Voiceflow, enabling Telnyx as your telephony provider for both inbound and outbound calls.. ![Telnyx telephony integration](/docs/images/changelog_images/November_11th,_2025_Telnyx_telephony_integration/d574df792ae922fdf58b842a3d219a9406cc8621a954d9d3e6183d6103bf244c-CleanShot_2025-11-11_at_10.05.202x.png) ## Native support for keypad input (DTMF) Added native support for DTMF keypad input in phone conversations. Users can now enter digits via their phone keypad, sending a DTMF trace to the runtime. Configure timeout and delimiters (#, \*) to control when input is processed. See [documentation here](/docs/documentation/build/behaviour). - Keypad input is off by default and can be turned on from Settings/Behaviour/Voice. - When on in project settings, keypad input can be turned off at the step level via the "Listen for other triggers" toggle. - [View full documentation here](/docs/documentation/build/behaviour) - Keypad input is off by default and can be turned on from Settings/Behaviour/Voice. - When on in project settings, keypad input can be turned off at the step level via the "Listen for other triggers" toggle. - [View full documentation here](/docs/documentation/build/behaviour) - Keypad input is off by default and can be turned on from Settings/Behaviour/Voice. - When on in project settings, keypad input can be turned off at the step level via the "Listen for other triggers" toggle. - [View full documentation here](/docs/documentation/build/behaviour) ![Native support for keypad input (DTMF)](/docs/images/changelog_images/November_10th,_2025_Native_support_for_keypad_input_\(DTMF\)/cde84932767adb0d81388512a5095eb21cdd6f3d9d2f7ae5ac97cb384842ec6c-CleanShot_2025-11-10_at_11.50.552x.png) ## Knowledge base metadata Add metadata to your Knowledge Base sources to deliver more relevant, localized, and precise answers, helping customers find what they need faster and improving overall resolution speed. 1. Adding metadata on knowledge import When uploading files, URLs, or tabular data to the Knowledge Base, you can attach metadata at import time. This metadata is stored with each document or data chunk, enabling structured filtering and contextual retrieval later. For example, when importing car rental policies, you might tag each file with metadata like "locale": "US, CA, EU", or "serviceType": "car\_rental, equipment\_rental". This ensures that when the agent queries using metadata filters (static or dynamic), it only retrieves content relevant to the user’s local region or service context. 2. Dynamically, or statically apply metadata at runtime From the Knowledge Base tool in your agent, define the metadata your agent should use when querying the tool. You can specify a static value (or variable) to consistently filter results, or let the agent dynamically assign metadata at runtime - allowing it to query the Knowledge Base contextually based on each unique conversation. Example - Car Booking Service If your Knowledge Base includes information for multiple locales (eg: US, CA, EU), you can set a metadata field like locale. Instead of hardcoding a single locale, the agent can dynamically apply the user’s locale at runtime - for example: If a user says “I want to book a car in New York,” the agent automatically filters Knowledge Base results with locale: US, ensuring responses only reference policies, pricing, and availability relevant to that locale. ![Knowledge base metadata](/docs/images/changelog_images/October_31st,_2025_Knowledge_base_metadata/bcc1ce71b0660cc042cf8da92ab81eaaf7e45b3a547a03b10d65f2effff61d6e-CleanShot_2025-10-31_at_14.16.002x.png) ![Knowledge base metadata](/docs/images/changelog_images/October_31st,_2025_Knowledge_base_metadata/1b06a1504f441c32a5b2d5746d8d6fe98091cb9b067257eec9d3ed992e95553d-CleanShot_2025-10-31_at_14.16.362x.png) ## Built-in time variables We’ve added a set of built-in time variables that make it easier to access and use time within your agents - no external API calls or workarounds required. Perfect for agents that depend on current or relative time inputs. Project timezone can be set in project/behaviour settings: ![Built-in time variables](/docs/images/changelog_images/October_29th,_2025_Built-in_time_variables/fcdef0273694a068b2457af8856cdf7b52a68596e25749ff4aa5e76794689709-CleanShot_2025-10-29_at_13.28.47.png) ## Deepgram Flux ASR model We've added [Deepgram Flux](https://flux.deepgram.com/), their ASR newest model built specifically for Voice AI. Flux is the first conversational speech recognition model built specifically for voice agents. Unlike traditional STT that just transcribes words, Flux understands conversational flow and automatically handles turn-taking. Flux tackles the most critical challenges for voice agents today: knowing when to listen, when to think, and when to speak. The model features first-of-its-kind model-integrated end-of-turn detection, configurable turn-taking dynamics, and ultra-low latency optimized for voice agent pipelines, all with Nova-3 level accuracy. Flux is Perfect for: turn-based voice agents, customer service bots, phone assistants, and real-time conversation tools. Key Benefits: - Smart turn detection - Knows when speakers finish talking - Ultra-low latency - ~260ms end-of-turn detection - Early LLM responses - EagerEndOfTurn events for faster replies - Turn-based transcripts - Clean conversation structure - Natural interruptions - Built-in barge-in handling - Nova-3 accuracy - Best-in-class transcription quality ![Deepgram Flux ASR model](/docs/images/changelog_images/October_20th,_2025_Deepgram_Flux_ASR_model/4e71ede01a33ca9cf97d015f803e993eb962bf42aaf877283848361aca7666f3-CleanShot_2025-10-20_at_10.29.342x.png) ## Sync audio and text output Converts text to speech in real time and keeps the spoken audio perfectly aligned with the displayed text. This ensures call transcripts are an accurate, word-for-word representation of what was actually said. ![Sync audio and text output](/docs/images/changelog_images/October_17th,_2025_Sync_audio_and_text_output/f7c6119f62a94ea333e65e342492d3191364ab051b1d651e6817241785fcadcb-CleanShot_2025-10-17_at_10.23.332x.png) ## Transcript inactivity timeout This setting lets you define how long a conversation can stay inactive before the transcript automatically ends. This is different from session timeout - the session stays open, but the transcript closes after the set inactivity period, enabling more accurate reporting and evaluations. Important: ending the transcript does not end the user’s ability to re-engage. If the user responds again, a new transcript will begin within the same session. ![Transcript inactivity timeout](/docs/images/changelog_images/October_16th,_2025_Transcript_inactivity_timeout/87477a3dbf2126f505d672328fd71fb43f8231c0f86c4cdae8586e7cc8d3703d-CleanShot_2025-10-16_at_10.59.132x.png) ## Priority processing for Open AI models We’ve added a new [Priority Processing](https://openai.com/api-priority-processing/) setting for OAI-supported models. When enabled, your requests will be given higher processing priority for faster response times and reduced latency. Note: this will consume more credits. ![Priority processing for Open AI models](/docs/images/changelog_images/October_14th,_2025_Priority_processing_for_Open_AI_models/a768c0c6aeceba9ac0b810161fca588acca242027c5053a8fb11843976128f1d-CleanShot_2025-10-14_at_16.52.132x.png) ## MCP tools Supercharge your agents by connecting directly to MCP servers. - 🔌 Connect to MCP servers in just a few clicks - 📥 Add MCP server tools to your agents - 🔄 Sync MCP servers to stay up-to-date Bring in any tool, expand what your agents can do, and take your workflows to the next level. [Documentation](/docs/documentation/build/tools/mcp-tool) ![MCP tools](/docs/images/changelog_images/September_29th,_2025_MCP_tools/bb4f13b06db9a8ed554515b301a4e57b7b5ee6c3985ecbb72d9baeffed70fc4e-CleanShot_2025-09-29_at_13.57.202x.png) ## Call forwarding tool in agents You can now enable your agents to forward calls to a different number, SIP address, or extension. - 📞 Seamlessly transfer callers to the right person or agent - 🔀 Supports phone numbers, SIP addresses, and extensions - 🛠️ Configure forwarding directly in your agent’s tools This makes it easier to connect customers with the right destination without breaking the flow of the conversation. ![Call forwarding tool in agents](/docs/images/changelog_images/September_23rd,_2025_Call_forwarding_tool_in_agents/0e2c617601290ea3c7ee4819e21575c955c342bb97b008ca82e7f542271624e6-CleanShot_2025-09-23_at_13.39.322x.png) ## Control reasoning effort for supporting GPT models We've added a reasoning effort slider for all supporting GPT models (GPT-5, GPT-5 mini, GPT-5 nano, GPT-o3 and GPT-o4-mini). ![Control reasoning effort for supporting GPT models](/docs/images/changelog_images/September_12th,_2025_Control_reasoning_effort_for_supporting_GPT_models/fdef0f633910a7561ac216aa297afb1e843dde68ac1595f0bd03b0bb0bfeb28a-CleanShot_2025-09-12_at_10.25.352x.png) ## Shareable links now match your AI agent Shareable links have been upgraded to better reflect the agent you’re building. Each link now points to a hosted version of your AI agent that mirrors your selected environment (dev, staging, production) and interface, so what you share is exactly what others will experience. Password protection is also available for secure access. - 🔗 Sharable links now mirror your actual AI agent - 🛠️ Environment-specific links (dev, staging, production) - 🎨 Customize the look and feel via the Interfaces tab - 🔒 Optional password protection for secure sharing ![Shareable links now match your AI agent](/docs/images/changelog_images/September_11th,_2025_Shareable_links_now_match_your_AI_agent/2f723431f98ac5b99a9f926d5d738010cf52d5996d2de0af43a894f1f4a8db88-CleanShot_2025-09-11_at_17.42.022x.png) ## Staging environment added We’ve introduced a new staging environment to help you manage deployments more effectively. You can now publish between development, staging, and production to test changes before going live. - New staging environment for pre-production testing - Publish across dev → staging → production - More control and confidence in deployment flows - Override secrets per environment for greater flexibility ![Staging environment added](/docs/images/changelog_images/September_11th,_2025_Staging_environment_added/3c355c0da66ae5d49e5554a69d27383d59d7f6004b3373fbad4a52f955ea6d95-CleanShot_2025-09-11_at_17.27.592x.png) ## Duplicating projects now clones knowledge base You can now duplicate projects along with their entire knowledge base. When cloning a project, all connected documents and data sources are copied as well - so your new project starts with the same knowledge setup as the original. This enhancement only applies to project duplication. Knowledge bases are not yet cloned when using project import. ## Control saving of empty transcripts You can now choose whether to save transcripts where the bot spoke but the user never replied. Use this toggle to keep your transcript logs cleaner and focused on real interactions. By default, all new projects will save all conversations to transcripts. ![Control saving of empty transcripts](/docs/images/changelog_images/August_28th,_2025_Control_saving_of_empty_transcripts/2af05683580919ff481007da67c318f5ae425925b15422a309009a221b746c39-CleanShot_2025-08-28_at_12.35.012x.png) ## Save input variables in tool calls Previous to this release, you could only capture the output of a tool call (eg: the response from an API). Now, you can also persist the inputs (the parameters sent to the tool) as Voiceflow variables. This means both sides of the transaction - request and response - can be tracked, reused, or referenced later in the conversation. ![Save input variables in tool calls](/docs/images/changelog_images/August_21st,_2025_Save_input_variables_in_tool_calls/cdb1bdfe3d458fce34a5567b954ea6a5bcd38c261a5ce38aad63757a17adda25-CleanShot_2025-08-21_at_10.09.512x.png) ## GPT-5 models GPT-5 models are now available in Voiceflow. ![GPT-5 models](/docs/images/changelog_images/August_14th,_2025_GPT-5_models/a6d6d378c35236595e6a3dcef016003b4d874c0f5da8a4f93f0b0fc916d1c5f8-CleanShot_2025-08-14_at_09.46.162x.png) ## Double-click to open agent step You can now double-click an agent step to jump straight into its editor - saving yourself an extra click. ## Tool step You can now run tools outside of the agent step using the new Tool Step. This lets you trigger any tool in your agent - like sending an email or making an API call - anywhere in your workflows. 🛠️ You’ll find the call forwarding Step in the ‘Dev’ section of the step menu for now. Tools can also be used as actions: ![Tool step](/docs/images/changelog_images/August_5th,_2025_Tool_step/d18a9ac48b14f06f0fd40e95b018fd0582d1dbfce7a2672be83157afc34594d4-CleanShot_2025-08-05_at_14.08.182x.png) ![Tool step](/docs/images/changelog_images/August_5th,_2025_Tool_step/602171e884646385bb4ffe102dd0eab33704537db3e893ce070d1362cc7a11fd-CleanShot_2025-08-05_at_14.12.282x.png) ## New analytics API A few months ago, we released a new analytics view - giving you deeper insights into agent performance, tool usage, credit consumption, and more. Today, we're releasing an updated [Analytics API](/docs/api-reference/usage/query-usage) to match. This new version gives you programmatic access to the same powerful data, so you can: Track agent performance over time Monitor tool and credit usage Build custom dashboards and reports Use the new API to integrate analytics directly into your workflows and get the insights you need - where you need them. ## Custom query control & chunk limit for knowledge base tool You now have more control over how your agents retrieve knowledge. Customize the query your agent uses to search the knowledge base, and fine-tune the chunk size limit to better match your content. This gives you more precision, better answers, and smarter agents. ![Custom query control & chunk limit for knowledge base tool](/docs/images/changelog_images/July_29th,_2025_Custom_query_control_&_chunk_limit_for_knowledge_base_tool/f1b4c72d8f70e8289947d71cc6d8a955493beda32ca6a7ae0163864b7e5eae45-CleanShot_2025-07-29_at_14.54.242x.png) ## Better transcripts. Custom evaluations. Better AI agents. Your AI agents just got a massive upgrade: [**🔥 What’s new**](#-whats-new) - Transcripts, reimagined - Replay calls, debug step-by-step, filter with precision, and visualize user actions like button clicks - all in a faster, cleaner UI. - Evaluations, your way - Define what “good” looks like with customizable evaluation templates, multiple scoring types (rating, binary, text), auto-run support, and performance tracking over time. [**📝 Transcripts**](#-transcripts) A full overhaul of the transcripts experience, built to help teams analyze, debug, and improve agents faster. 1. Call recordings - Replay conversations to hear how your agent performs in the real world 2. Robust debug logs - Trace agent decisions step-by-step 3. Granular filtering - Slice data by time, user ID, evaluation result, and more 4. Button click visualization - See exactly where users clicked in the conversation 5. Cleaner UI - Faster load times, more usable data [**📊 Evaluations**](#-evaluations) Define what “good” looks like - and measure it, your way. Build (or generate) your own evaluation criteria, tailor analysis to your business goals, and iterate with confidence. Eval types - support for: 1. ⭐ Rating evals (eg: 1-5) 2. ✅ Binary evals (Pass/Fail) 3. 📝 Text evals (open-ended notes) Also includes: - Batch or auto-run - Evaluate hundreds of transcripts in a few clicks, or automatically as they come in - Analytics & logs - See detailed results per message or overall trends over time [**APIs**](#apis) - We've release a brand new [Evaluations API](https://link.voiceflow.com/evals-api) - We've release a new [Transcripts API](https://link.voiceflow.com/transcript-api) The legacy Transcripts API is still supported and currently has no deprecation timeline 🕓 Transition Period: Until September 28, 2025, all transcripts will be available in the legacy view, for existing projects. On September 28th, 2025 the old view will be hidden and the new transcripts view will be the default. Transcripts older than 60 days will still be accessible via API for the foreseeable future. ![Better transcripts. Custom evaluations. Better AI agents.](/docs/images/changelog_images/July_28th,_2025_Better_transcripts._Custom_evaluations._Better_AI_agents./dad6eeed328350abb2f607579fd2cc50fe8e69b782b1c380bedeed85c5f512c0-System_shows_overview_when_call_recording_exists.png) ![Better transcripts. Custom evaluations. Better AI agents.](/docs/images/changelog_images/July_28th,_2025_Better_transcripts._Custom_evaluations._Better_AI_agents./5948180270badf7ac43f6cd0eb37d9a3574b88a4b5db76cec7b973148753aea2-CleanShot_2025-07-28_at_15.40.012x.png) ![Better transcripts. Custom evaluations. Better AI agents.](/docs/images/changelog_images/July_28th,_2025_Better_transcripts._Custom_evaluations._Better_AI_agents./491e374d7a68ac9a31ef3a786a2b62fff6c6ca080641278cd50c292ea919f38b-CleanShot_2025-07-28_at_15.40.592x.png) ![Better transcripts. Custom evaluations. Better AI agents.](/docs/images/changelog_images/July_28th,_2025_Better_transcripts._Custom_evaluations._Better_AI_agents./0a3228e567c2b655ea6aeec28c27e4ac3a5acdf30cd4cfec01858864e1fe73d0-CleanShot_2025-07-28_at_15.44.422x.png) ![Better transcripts. Custom evaluations. Better AI agents.](/docs/images/changelog_images/July_28th,_2025_Better_transcripts._Custom_evaluations._Better_AI_agents./7f5aeb99eacd4e96d79a3940f13812c57bd0336e6f8f85adcd4040cd3a12471d-CleanShot_2025-07-28_at_15.46.212x.png) ![Better transcripts. Custom evaluations. Better AI agents.](/docs/images/changelog_images/July_28th,_2025_Better_transcripts._Custom_evaluations._Better_AI_agents./77a7875d4adfaab4378739405828eec5266961115ba4a43461475f6f5fc954c7-CleanShot_2025-07-28_at_15.51.282x.png) ![Better transcripts. Custom evaluations. Better AI agents.](/docs/images/changelog_images/July_28th,_2025_Better_transcripts._Custom_evaluations._Better_AI_agents./61290780205589b0d4e468c9ea80227aed7ef96b8cc6db35640b4a6d34d18545-CleanShot_2025-07-28_at_15.53.012x.png) ![Better transcripts. Custom evaluations. Better AI agents.](/docs/images/changelog_images/July_28th,_2025_Better_transcripts._Custom_evaluations._Better_AI_agents./04ac777f1dd48e289eab497323a2b589ec7ac68da3f92bdf11de0d5025f0bc76-CleanShot_2025-07-28_at_15.53.422x.png) ## Gmail tools: let your AI agents send emails Agents can now send emails seamlessly as part of any conversation. Whether it’s a confirmation, follow-up, or lead nurture message - the new Send Email tool makes it easy to automate communication right from your agent. Just connect your Gmail account and you’re ready to go. Make sure to instruct your agent on how to use this tool properly. Give it a try in the agent step! ![Gmail tools: let your AI agents send emails](/docs/images/changelog_images/July_28th,_2025_Gmail_tools_let_your_AI_agents_send_emails/58f98818239956c04a9688f24bf18e9ae13054bbe39d35b224a89900c92551e3-CleanShot_2025-07-28_at_10.58.502x.png) ![Gmail tools: let your AI agents send emails](/docs/images/changelog_images/July_28th,_2025_Gmail_tools_let_your_AI_agents_send_emails/327858ba1851bba7fe132f7598587b9e9c5bf6d215549b8e04a6c28bccfe6b5f-CleanShot_2025-07-28_at_11.00.372x.png) ## Call forwarding step Seamlessly connect your voice AI agent to the real world with call forwarding. The new call forwarding step lets your AI agent hand off calls to a real person (or another AI agent) - instantly and smoothly. - ✅ Route to phone numbers - ✅ Include optional extensions - ✅ Support for SIP addresses Build smarter, more human-ready voice agents - without sacrificing automation. 🛠️ You’ll find the call forwarding Step in the ‘Dev’ section of the step menu for now. We’re planning to introduce a dedicated voice section soon - stay tuned! ![Call forwarding step](/docs/images/changelog_images/July_25th,_2025_Call_forwarding_step/224cf13ff154677844782b7bf4699bed7ce642ea234dbb598e160c289f0a11fd-CleanShot_2025-07-25_at_15.30.062x.png) ## Hubspot tools Connect your agents to Hubspot to create contacts, leads and tickets. ![Hubspot tools](/docs/images/changelog_images/July_23rd,_2025_Hubspot_tools/db3d1a3cefd7b9009e8645e9bffb6a7255fbe83d80fa1ab952daf36043ca6b7d-CleanShot_2025-07-23_at_08.43.552x.png) ![Hubspot tools](/docs/images/changelog_images/July_23rd,_2025_Hubspot_tools/fd41399af99129a7fdbd6ccf309b3c009eaac95d8f6285efed17b6769f5d7a88-CleanShot_2025-07-23_at_08.43.182x.png) ## SMS messaging with Twilio tools Enable your agents to send SMS messages with an effortless connection to Twilio. Try it now in the agent step. ![SMS messaging with Twilio tools](/docs/images/changelog_images/July_23rd,_2025_SMS_messaging_with_Twilio_tools/7f3335cb865b702fceac3a004f97d8d1b1ce6452ace34dbe823fa34609cd2695-CleanShot_2025-07-23_at_08.39.272x.png) ## Create AI agents instantly - from just a prompt We’ve made building AI agents dramatically faster. You can now generate a fully-functional agent by simply describing what you want it to do. No setup. No manual flow-building. Just write a detailed prompt - and Voiceflow will generate everything for you: ✅ Agent instructions ✅ Tools and workflows ✅ Conversation logic and components This means less time configuring, more time testing and refining your agent behavior. Today, we’re launching: 1. Prompt-to-project generation - go from idea to working prototype in seconds 2. Prompt-to-workflow generation - describe a capability, get a complete workflow 3. Prompt-to-component generation - create specific tools and logic on the fly This is a foundational leap in how AI agents get built on Voiceflow - we can’t wait to see what you create. ![Create AI agents instantly - from just a prompt](/docs/images/changelog_images/July_15th,_2025_Create_AI_agents_instantly_from_just_a_prompt/40d95e7e1d89f36d4be0570692ded7014c035ddafad5c5889562cc53d21ceacd-CleanShot_2025-07-15_at_11.00.342x.png) ## Vonage integration for telephony Voiceflow now supports importing phone numbers from Vonage as an alternative to Twilio. Vonage offers a minor latency improvement (~200-400ms) over Twilio, for more responsive calls. For more information: [https://dashboard.nexmo.com/](https://dashboard.nexmo.com/) [https://www.vonage.ca/en/communications-apis/voice/](https://www.vonage.ca/en/communications-apis/voice/) ![Vonage integration for telephony](/docs/images/changelog_images/July_10th,_2025_Vonage_integration_for_telephony/d2f1ac7e4093d3874fbe4efffe808a02c392be9ebaf46dd650c0861747db3632-Capture_decran_le_2025-07-10_a_10.09.01.png) ## Smarter knowledge base building with LLM chunking strategies Your Knowledge Base just got a major upgrade. With our new LLM chunking strategies, you can now prep your data for AI like a pro - no manual formatting needed. We’ve introduced 5 powerful strategies to help structure and optimize your content for maximum retrieval performance: 🧠 Smart chunking Automatically breaks content into logical, topic-based sections. Ideal for complex documents with multiple subjects. ❓ FAQ optimization Generates sample questions per section, perfect for creating high-impact FAQs. 🧹HTML & noise removal Cleans up messy website markup and boilerplate. Best used on content pulled from the web or markdown. 📝Add topic headers Inserts short, helpful summaries above each section. Great for longform content that needs context. 🔍 Summarize Distills each section to its key points, removing fluff. Perfect for dense reports or research. These chunking strategies help you get more accurate, more relevant answers from your AI - especially for data sources not originally built for Retrieval-Augmented Generation (RAG). Ready to make your Knowledge Base smarter? Try out some LLM chunking strategies and watch the results speak for themselves. Note - LLM chunking strategies use credits. Before processing, we’ll show you a clear estimate of how many credits will be used - so you’re always in control. ![Smarter knowledge base building with LLM chunking strategies](/docs/images/changelog_images/July_9th,_2025_Smarter_knowledge_base_building_with_LLM_chunking_strategies/218badbb9bdabedac1d93a7d457c81643b923d8bf4094464d9fd44c2a709fc96-CleanShot_2025-07-09_at_13.04.402x.png) ![Smarter knowledge base building with LLM chunking strategies](/docs/images/changelog_images/July_9th,_2025_Smarter_knowledge_base_building_with_LLM_chunking_strategies/b49e5d1d35b1bba5fb033cd2fbe2b1948f4c4c199b2455a34b5fc7c403442a5f-CleanShot_2025-07-09_at_13.11.332x.png) ## Make.com tool Connect your agents to Make.com with a couple clicks to run your automations from your Voiceflow AI agents. ![Make.com tool](/docs/images/changelog_images/July_8th,_2025_Make.com_tool/ff95d7b2e24e12b1b2d5ec4b74f993bde35b5321c0d8bf0197f690361e692378-CleanShot_2025-07-08_at_16.25.312x.png) ![Make.com tool](/docs/images/changelog_images/July_8th,_2025_Make.com_tool/3d942c3e8c87dda3189e7a41b6015893a3f63cb1a5dbd1d6d3385d36169fcf5c-CleanShot_2025-07-08_at_16.26.092x.png) ## Airtable tools Connect your agents to Airtable with a couple clicks. Supported tools include: Create records, Delete records, Get record, List records, Update records. ![Airtable tools](/docs/images/changelog_images/July_8th,_2025_Airtable_tools/e7e5867509b7190c3d707a93ef857e1a5684cbf41ee31a9d2277b59c744ea17d-CleanShot_2025-07-08_at_13.33.102x.png) ![Airtable tools](/docs/images/changelog_images/July_8th,_2025_Airtable_tools/1b683e990ea6b611db6cae79ebe4826307eabc549bd78f92b49f58a5a7d31fd3-CleanShot_2025-07-08_at_13.33.512x.png) ## Agents can now automatically use buttons, cards, and carousels to enrich conversations By enabling these options and providing guidance on when to use (or avoid) each special tool, your agent will intelligently enhance interactions with visual tools like buttons, cards, and carousels. Note: these configurations are ignored during phone-based conversations, meaning it will not prohibit your ability to create multi-modal AI agents with Voiceflow. ![Agents can now automatically use buttons, cards, and carousels to enrich conversations](/docs/images/changelog_images/July_2nd,_2025_Agents_can_now_automatically_use_buttons,_cards,_and_carousels_to_enrich_conversations/3ba12cb0d1f093a4efaf42fe08b7a8493ad7d3dbe799a3c41d2c0174256b458e-CleanShot_2025-07-02_at_15.46.402x.png) ## \[Deprecation\] Dialog Manager API Logs Legacy `log` traces are no longer supported, which are sent when with the query parameter `?log=true`. This system has not been updated for a significant period and is out of date, especially with new steps. `log` traces will no longer be returned, after Friday, July 4th, 2025. This affects a small subset of users and should not impact the output or performance of an agent. Going forward, it will be unified with a more robust `debug` trace system, along with a new debugger UI. ## New Speech-to-Text Providers - Added Cartesia's [Ink-Whisper](https://cartesia.ai/blog/introducing-ink-speech-to-text) STT model This leverages OpenAI's whisper model, upgraded for realtime call performance Expanded language support and selection - Added AssemblyAI [Universal](https://www.assemblyai.com/products/speech-to-text) STT model Advanced tuning options - Added specific model selection for Deepgram STT Nova-2, Nova-3, and Nova-3 Medical ![New Speech-to-Text Providers](/docs/images/changelog_images/June_18th,_2025_New_Speech-to-Text_Providers/308931b6c0f1f565e43a1639831c7b04e04043518316e3f29548008897a5ac63-Capture_decran_le_2025-06-18_a_11.52.13.png) ## Google Sheets tools Connect your agents to Google Sheets with a couple clicks. Supported tools include: Add to sheet, Create new sheet, Get rows, Get sheet, Update sheet. ![Google Sheets tools](/docs/images/changelog_images/June_16th,_2025_Google_Sheets_tools/22fca54c1ee9017393b89eff34a25cb4ae93272516ca657a1b9a356c409dd04c-2B.Image.png) ## Cartesia voices We've added Cartesia to Voiceflow. You can select from over 100 new voices across two Cartesia models (Sonic 2 & Sonic Turbo). ![Cartesia voices](/docs/images/changelog_images/June_10th,_2025_Cartesia_voices/691b75bb935dbc5c415fcd1d05c8dc849a906604bec6fda411f8b34d64ff10f4-CleanShot_2025-06-10_at_09.41.452x.png) ## Added tool usage to project analytics We've added all tool types to your projects analytics dashboard: - Integration tools - API tools - Function tools You can now see the number of times each tool has been used, along with the average latency and success/failure rate if you hover a specific tool. ![Added tool usage to project analytics](/docs/images/changelog_images/June_5th,_2025_Added_tool_usage_to_project_analytics/800f165abf4c0a466705c132124b8dc43f8d00bc5af8c4c4c3e8ab80a40507aa-CleanShot_2025-06-05_at_12.35.112x.png) ## New workspace dashboard - We've made updates to the workspace dashboard to make it easier to organize your projects, and manage your workspace. - We've added folders, to further organize your projects. Note, if you previously used the Kanban view (deprecated), we've automatically converted swim-lanes into folders. - Home tab (coming soon) - Community tab (coming soon) - Tutorials tab (coming soon) ![New workspace dashboard](/docs/images/changelog_images/June_4th,_2025_New_workspace_dashboard/aaa2c963d5fcdd01890543d5006ec74f9ea5dccdaa5386ddaaaa686f35f3b55f-User_hovers_button_and_system_exposes_tooltip.png) ## New navigation We've listened to your feedback and made Voiceflow easier to navigate. It's the same Voiceflow, just faster to get around! ![New navigation](/docs/images/changelog_images/May_28th,_2025_New_navigation/9ec868711793385b1f8e03a3baa647bac8fd64dbb7fb55a84f590d6b6c8b4326-IA.png) ## Claude Opus 4 & Sonnet 4 We've added Claude Opus 4 & Claude Sonnet 4 to Voiceflow. ![Claude Opus 4 & Sonnet 4](/docs/images/changelog_images/May_28th,_2025_Claude_Opus_4_&_Sonnet_4/644ec398803aefb49746f1f59cab66263224d17217d67652a89c21b3a8602742-CleanShot_2025-05-28_at_11.26.232x.png) ## Gemini 2.5 Pro & 2.5 Flash We've added Gemini 2.5 Pro & 2.5 Flash to Voiceflow. ![Gemini 2.5 Pro & 2.5 Flash](/docs/images/changelog_images/May_28th,_2025_Gemini_2.5_Pro_&_2.5_Flash/be4561c037346e4ebfd86808218ef2664756f3896b7668ac70deced78e8bf801-CleanShot_2025-05-28_at_11.24.342x.png) ## Security Settings for Widget - Ability to whitelist domains - Ability to have a custom privacy message before users engage with your AI agent - Ability to not save transcripts ![Security Settings for Widget](/docs/images/changelog_images/May_23rd,_2025_Security_Settings_for_Widget/5942a8dc9fb93339360b36087112223cc9158340c8f98ba4827f76e9a9ffc108-CleanShot_2025-05-23_at_10.54.292x.png) ## Generative No Reply Use generative no-reply to dynamically re-engage users that haven't responded in a while. Responses will be contextual to the conversation. ![Generative No Reply](/docs/images/changelog_images/May_23rd,_2025_Generative_No_Reply/b1b4864c17f068727df7342d43370a8e87cf454cafa010c3fc7d157d03f06600-CleanShot_2025-05-23_at_10.49.442x.png) ## API Raw Content-Type select The API (agent) tool and step now have a content-type option on POST requests with a "Raw" body. This will automatically apply the `Content-Type` header, for a quality-of-life convenience. ![API Raw Content-Type select](/docs/images/changelog_images/May_16th,_2025_API_Raw_Content-Type_select/88893602b6dff4f1c4b135e8b2d36cbda3223c3455ff1035e25cad1f536c9e7c-Capture_decran_le_2025-05-16_a_10.25.54.png) ## Rimelabs Arcana Voices Rimelabs recently released a new set of [Arcana](https://www.rime.ai/blog/introducing-arcana/) voices, that sound far more natural with intonations and speech patterns such as breathing, pauses. Arcana is still under development and we are working with the Rimelabs team to improve it, we're aware of some issues with consistency and slurring of speech. Arcana adds ~250ms of latency to the voice pipeline, roughly the same as 11labs. In the future it may be possible to define your own voices by description, eg: "old man with hoarse southern accent" ![Rimelabs Arcana Voices](/docs/images/changelog_images/May_16th,_2025_Rimelabs_Arcana_Voices/af7f42336d67136e20066f2d9a66321a146e8c0be873394191947335f0b0561a-Capture_decran_le_2025-05-16_a_10.44.27.png) ## Krisp Noise Cancellation [**Krisp Noise Cancellation**](#krisp-noise-cancellation) Latency is one piece of the puzzle - but quality matters too. That’s why we’ve added [Krisp](https://krisp.ai/noise-cancellation/). Background noise, especially speech or music, can seriously throw off voice agents. STT systems transcribe everything they hear, so voices in a coffee shop or lyrics from background music can easily get mistaken for the user’s input, leading to weird or incorrect responses. It can also confuse the agent into thinking the user isn’t done talking, delaying responses or interrupting playback. In short: noise kills both quality and speed. All voice projects (web-voice widget and Twilio) automatically have Krisp noise cancellation applied. [**Before Krisp:**](#before-krisp) [**After Krisp:**](#after-krisp) Here are two spectrograms, the upper one visualizing the audio that would be heard by STT without Krisp, and the lower one showing the audio after having been processed with Krisp. Through our testing: We've determined that this significantly boosts the accuracy of speech detection and transcription in noisy environments: cafes, offices, on the street, background broadcasts, etc. Krisp noise cancellation adds ~20ms of latency to the audio pipeline, while drastically improving speech detection and transcription accuracy. This ultimately leads to faster final transcriptions, reducing overall speech-to-speech latency by ~100ms. ![Krisp Noise Cancellation](/docs/images/changelog_images/May_16th,_2025_Krisp_Noise_Cancellation/33235bd4b6d4236c7e2fbbd51bdb6e970f1193d7179fbca544d83ecd18ac0302-image.png) ## Salesforce tools We've added Salesforce tools to the agent step. You can now authenticate with Salesforce and add tools to enable your agent to get work done in Salesforce. ![Salesforce tools](/docs/images/changelog_images/May_15th,_2025_Salesforce_tools/f653802973e7700173817044e85a8287deb521de130ba10d3346a5c9583e7a99-CleanShot_2025-05-15_at_11.09.422x.png) ![Salesforce tools](/docs/images/changelog_images/May_15th,_2025_Salesforce_tools/fb0ea09a88d182e4c90338983fa30fc445898d5f6549792d713d49e609088ef3-CleanShot_2025-05-15_at_11.10.132x.png) ## Zendesk tools We've added Zendesk tools to the agent step. You can now authenticate with Zendesk and add tools to enable your agent to get work done in Zendesk. ![Zendesk tools](/docs/images/changelog_images/May_15th,_2025_Zendesk_tools/c2923a92d72b2935e840380ed569fe75ee27f3a83e114d82c029b7861fbb503d-CleanShot_2025-05-15_at_11.04.462x.png) ![Zendesk tools](/docs/images/changelog_images/May_15th,_2025_Zendesk_tools/12f977d52c2c69b297d5982af25906e93a3baa616dc11c683fc9afa3411fa09a-CleanShot_2025-05-15_at_11.06.062x.png) ## Voice Keywords / Multilingual Speech-to-text [**Keywords**](#keywords) For voice calls we're introducing keywords. This allows your agent to understand hard to pronounce proper nouns (like product and company names), industry jargon, phrases and more. This is an optional field. [**Multilingual**](#multilingual) We're exposing Deepgram's latest [Nova-3](https://deepgram.com/learn/introducing-nova-3-speech-to-text-api) multilingual model as an STT option, capable of understanding and transcribing 8 different languages. In addition, the standard English STT is being updated from Nova-2 to Nova-3, for a boost in performance. ![Voice Keywords / Multilingual Speech-to-text](/docs/images/changelog_images/May_5th,_2025_Voice_Keywords__Multilingual_Speech-to-text/0a8710c0887a8518f22cd3db1ce78c6c5b750a6a6e9d2ff9ffcd63a1b78b99cd-image.png) ![Voice Keywords / Multilingual Speech-to-text](/docs/images/changelog_images/May_5th,_2025_Voice_Keywords__Multilingual_Speech-to-text/b9809a479c576b6a77368a39162a2adc255ca8b7551ecf4ce12acb9829c7bbfe-image.png) ## Introducing Voiceflow Credits: A simpler way to track usage Today marks a significant milestone in Voiceflow's journey as we officially launch our new credit-based billing system. This update represents a fundamental shift in how you'll track, manage, and optimize your Voiceflow usage - all designed to bring greater simplicity, transparency, and predictability to your experience. [**What's New**](#whats-new) [**🎉 Voiceflow Credits**](#-voiceflow-credits) We've completely overhauled our billing system, moving away from the complex token-based approach to a streamlined credit system that unifies tracking across all platform features: - Simplified Measurement: One unified credit system for all actions (calls, messages, LLM responses, TTS) - Predictable Costs: Clear pricing tiers that make budget planning straightforward - Transparent Usage: Detailed visibility into exactly how your credits are being consumed - Developer-Friendly: Messages only count toward credits when your agent is used in production - not when developing in-app or using shareable prototypes [**📊 New Usage Dashboard**](#-new-usage-dashboard) We've launched a brand-new Usage Dashboard that gives you comprehensive insights into your credit consumption. The dashboard allows you to: - View your total available and used credits - Track usage across all agents or drill down into specific ones - Monitor editor and agent allocation - Analyze usage patterns over time [**💼 Enhanced Team Management**](#-enhanced-team-management) Additional editor seats are now just \$50 per month with no complicated caps or restrictions. Add as many team members as needed, whenever you need them. [**🏢 Business Plans (formerly Teams)**](#-business-plans-formerly-teams) As part of this update, we're renaming our Teams plans to Business plans, with enhanced features and capabilities for enterprise customers. [**Resources to Help You Transition**](#resources-to-help-you-transition) We've created dedicated resources to help you understand and make the most of the new credit system: - [What are Voiceflow Credits?](https://www.voiceflow.com/blog) - A comprehensive guide to understanding how credits work - [Introducing Voiceflow Credits](https://www.voiceflow.com/pathways/introducing-voiceflow-credits) - Learn about the philosophy behind the change and how it benefits you - [Credit Calculator](https://www.voiceflow.com/pathways/introducing-voiceflow-credits#calculator) - Estimate your credit needs based on your specific usage patterns [**Frequently Asked Questions**](#frequently-asked-questions) What do I need to do? Use our [Credit Calculator](https://www.voiceflow.com/pathways/introducing-voiceflow-credits#calculator) to understand your usage. For most users, no action is required. Will my monthly bill increase? Most organizations will see a decrease in costs, particularly those with multiple editor seats. There are three changes to be aware of: - Annual plans now offer a 10% discount (previously 20%) - Editor seats now cost \$50/month with no restrictions (a price reduction) - Business plan (formerly Teams) base tier increases from \$125 to \$150 Do credits roll over? Credits expire at the end of your subscription period. For monthly plans, unused credits don't roll over month-to-month. Annual subscribers receive all credits at once to use throughout the year. What happens if I exceed my credit allocation? You'll receive a notification as you approach your limit. There's no automatic charging - you can choose whether to upgrade to a higher credit package. Do messages in development count toward my credit usage? No, messages only count toward credits when your agent is used in production. Messages sent while developing in-app or when using shareable prototypes don't consume credits, giving you the freedom to build and test without worrying about credit usage. We're committed to making this transition as smooth as possible. If you have any questions or need assistance, please reach out to [support@voiceflow.com](mailto:support@voiceflow.com). ![Introducing Voiceflow Credits: A simpler way to track usage](/docs/images/changelog_images/April_29th,_2025_Introducing_Voiceflow_Credits_A_simpler_way_to_track_usage/f259af3fa0edb8e739968b3109eb5233211eb514cf1c0fb6d8b8c49a5a49789b-CleanShot_2025-04-29_at_14.31.072x.png) ## Support for OpenAI o3 and o4 mini [**Added:**](#added) - Support for OpenAI o3 and o4 mini ![Support for OpenAI o3 and o4 mini](/docs/images/changelog_images/April_25th,_2025_Support_for_OpenAI_o3_and_o4_mini/58615952fee0758445198df58206cc46c80cf5bcbd3e099320e6f1ac6af56889-CleanShot_2025-04-25_at_12.29.162x.png) ## Support for GPT 4.1 models [**Added:**](#added) - Support for GPT 4.1, GPT 4.1 mini and GPT 4.1 nano ![Support for GPT 4.1 models](/docs/images/changelog_images/April_16th,_2025_Support_for_GPT_4.1_models/197ba8bb49bc606230a0d6d2bd978195d2db2131f7a288ea38084bc002c35878-CleanShot_2025-04-16_at_12.38.152x.png) ## Minor Updates / Fixes [**Improvements:**](#improvements) - Voice Widget latency decreased by up to 750ms - Voice Widget now streams with more consistent linear16@16kHz encoding [**Fixes:**](#fixes) - Reset memory when a new conversation is launched (launch request) - Global no reply not working on Agent steps - The maximum allowed length for `{userID}` in the [Dialog API](/docs/api-reference/v4interact/interact-stream) will be set to 128 characters, effective April 18th - Unable to remove webhook URLs - Analytics visualization UI bug - Voice Widget always setting userID to test on transcripts - Chat Widget no audio output after page reload - Export variables fails when project has large number of variables ## Call Events Webhook [**Changes:**](#changes) - New support added to subscribe to call events via webhook, for both twilio IVR and voice widget projects [Call Events Documentation](/docs/api-reference/webhooks/session-lifecycle) Webhook system is capable of broadcasting additional events in the future ![Call Events Webhook](/docs/images/changelog_images/April_7th,_2025_Call_Events_Webhook/ca091837ebae8d3f9d6fe47852a7037838632296c3d470780b2f9dffc9b7a57f-Capture_decran_le_2025-04-08_a_01.06.04.png) ## Streaming Text in Chat Widget Now Optional [**Changes:**](#changes) - Added option to disable streaming text in chat widget Stream text can now be turned off in the Modality & interface settings When disabled, the full agent response will be displayed at once instead of being streamed out. Useful for situations where streaming longer messages is not desired ![Streaming Text in Chat Widget Now Optional](/docs/images/changelog_images/April_1st,_2025_Streaming_Text_in_Chat_Widget_Now_Optional/13748170b217afac3e7304254f8b373a679efa94102b7b899c3c1e0f38a806b6-image.png) ## Max Memory Turns Setting Conversation memory is a critical component of the Agent and Prompt steps. Having longer memory gives the LLM model more context about the conversation so far, and make better decisions based on previous dialogs. However, larger memory adds latency and costs more input tokens, so there is a drawback. Before, memory was always set to 10 turns. All new projects will now have a default of 25 turns in memory. This can now be adjusted this in the settings, up to 100 turns. For more information on how memory works, reference: [https://docs.voiceflow.com/docs/memory](/docs/documentation/build/behaviour) ![Max Memory Turns Setting](/docs/images/changelog_images/March_31st,_2025_Max_Memory_Turns_Setting/9f442556f0bf5a4fe6fdb5d6b5a9f9307feedd50a26a4508056e975e99afb7c6-Capture_decran_le_2025-03-31_a_17.13.55.png) ## Agent Step, Structured Output Improvements, Gemini 2.0 Flash We're excited to introduce several major updates that enhance the capabilities of the Agent step and expand our model offerings. These improvements provide more flexibility, control, and opportunities for creating powerful AI agents. [**🧠 Agent Step: Your All-in-One Solution**](#-agent-step-your-all-in-one-solution) The Agent step has been supercharged to create AI agents that can intelligently respond to user queries, search knowledge bases, follow specific conversation paths, and execute functions - all within a single step. Key features include: - Intelligent Prompting: Craft detailed instructions to guide your agent's behavior and responses. - Function Integration: Connect your agent with external services to retrieve and update data. - Conversation Paths: Define specific flows for your agent to follow based on user intent. - Knowledge Base Integration: Enable your agent to automatically search your knowledge base for relevant information. For a comprehensive guide on using the Agent step, check out our [Agent Step Documentation](/docs/documentation/build/overview). [**🎨 Expanded Support for Structured Output**](#-expanded-support-for-structured-output) We've significantly expanded our support for structured output, unlocking more use cases and giving you greater control over your agent's responses: - Arrays and Nested Arrays: You can now define arrays and nested arrays in your output structure. - Nested Objects: Structured output now supports nested objects, allowing for more complex data structures. These enhancements enable you to create more sophisticated agents that generate highly structured and detailed responses, reducing the risk of hallucinations and ensuring more accurate outputs. [**⚡ Gemini 2.0 Flash Support**](#-gemini-20-flash-support) We've added support for the Gemini 2.0 Flash model, offering you even more options for powering your AI agents. Gemini 2.0 Flash delivers exceptional performance and speed, enabling faster response times and improved user experiences. To start using Gemini 2.0 Flash, simply select it from the model dropdown when configuring your Agent step. We can't wait to see what you'll build with these new features and capabilities! As always, we welcome your feedback and suggestions as we continue to improve our platform. Happy building! 🛠️ The Voiceflow Team ![Agent Step, Structured Output Improvements, Gemini 2.0 Flash](/docs/images/changelog_images/March_31st,_2025_Agent_Step,_Structured_Output_Improvements,_Gemini_2.0_Flash/f9257557d4af514910389299ac712bf91e5c3df810b03601147130a2c8ddbae0-image.png) ## Variable Handling Update: Consistent Behavior for Undefined Values [**Changes:**](#changes) - Updated Voiceflow variable handling for consistency in previously undefined behavior: Variables can be any JavaScript object that is JSON serializable. Any variable set to `undefined` will be saved as `null` (this conversion happens at the end of the step, so it does not affect the internal workings of JavaScript steps and functions). Functions can now return `null` (rather than throwing an error) and can no longer return `undefined` (which could cause agents to crash). Functions that attempt to return `undefined` will now return `null` (to ensure backwards compatibility). These changes will go info effect March 31st. ## New Analytics Dashboard: Gain Deeper Insights into Your Agent's Performance We've revamped our Agent Analytics Dashboard, not only giving it a fresh new look but also introducing a range of powerful visualizations that provide unprecedented visibility into your agent's performance. [**🌟 New Visualizations**](#-new-visualizations) The updated Analytics Dashboard offers a comprehensive set of visualizations that allow you to track and analyze various aspects of your agent's performance: - Tokens Usage: Monitor AI token consumption over time across all models, giving you a clear picture of your agent's token utilization. - Total Interactions: Keep track of the total number of interactions (requests) between users and your agent over time, providing insights into engagement levels. - Latency Monitoring: Measure the average response time of your agent to ensure optimal performance and identify any potential bottlenecks. - Total Call Minutes: Gain visibility into the cumulative duration of voice calls in minutes, helping you understand the volume and significance of voice interactions. - Unique Users: Identify the count of distinct users interacting with your agent over time, allowing you to track adoption and growth. - KB Documents Usage: Analyze the frequency of knowledge base document access, with the ability to toggle between ascending and descending order to identify the most or least used documents. - Intents Usage: Visualize the distribution of triggered intents, with sorting options to analyze intent frequency and identify popular or underutilized intents. - Functions Usage: Monitor the frequency of function calls, their success/failure and latency, with sorting capabilities to identify the most or least used functions and optimize your agent's functionality. - Prompts Usage: Gain insights into the usage frequency of agent prompts, with the ability to toggle between ascending and descending order to analyze prompt utilization and effectiveness. [**📅 Data Availability**](#-data-availability) Please note that the new Analytics Dashboard service only has data starting from February 9th, 2025. If you require data prior to that date, you can still access it through our Analytics API. [**🔧 Upcoming Analytics API Update**](#-upcoming-analytics-api-update) We're also working on a new version of the Analytics API that will include the additional data points tracked by the new Analytics Dashboard service. Stay tuned for more information on this exciting update! ![New Analytics Dashboard: Gain Deeper Insights into Your Agent's Performance](/docs/images/changelog_images/March_6th,_2025_New_Analytics_Dashboard_Gain_Deeper_Insights_into_Your_Agent's_Performance/d36d98733a17caf4067caaa8c564bfbe22c384f8c8d9c7aa6d103cafeebcab27-CleanShot_2025-03-06_at_12.21.11.png) ## New Models, Function Editor Enhancements, and Call Recording We're thrilled to announce several exciting updates that expand your AI agent building capabilities and improve your workflow. Let's dive into what's new! [**🧠 New Models: Deepseek R1, Llama 3.1 Instant, and Llama 3.2**](#-new-models-deepseek-r1-llama-31-instant-and-llama-32) We've expanded our model offerings to give you even more options for creating powerful AI agents: - Deepseek R1: Harness the potential of Deepseek's R1 model for enhanced natural language understanding and generation. - Llama 3.1 Instant: Experience lightning-fast responses with the Llama 3.1 Instant model. - Llama 3.2: Leverage the advanced capabilities of Llama 3.2 These new models are available on all paid plans. [**⚙️ Function Editor Enhancements: Modal View and Snippets**](#️-function-editor-enhancements-modal-view-and-snippets) We've made some significant improvements to the Function Editor to streamline your development process: - Modal View: You can now open the Function Editor as a modal directly from the canvas. This allows you to make quick updates and navigate between your functions and the canvas seamlessly. - Snippets: We've introduced a new snippets feature that enables you to insert pre-written code snippets for common concepts in Voiceflow functions. [**📞 Call Recording for Twilio Phone Calls**](#-call-recording-for-twilio-phone-calls) We're excited to introduce call recording functionality for phone calls made through Twilio: - Automatic Call Recording: All phone calls between users and your AI agent will now be automatically recorded. - Twilio Integration: The call recordings will be accessible directly in your Twilio account for easy review and management. You can enable this option in the Agent Settings page under Voice. ![New Models, Function Editor Enhancements, and Call Recording](/docs/images/changelog_images/February_27th,_2025_New_Models,_Function_Editor_Enhancements,_and_Call_Recording/6fbfae34da32ceb35ac2138cc8a46f8ad6a3e8a52ee82a36361296a5d1aa1edc-image.png) ![New Models, Function Editor Enhancements, and Call Recording](/docs/images/changelog_images/February_27th,_2025_New_Models,_Function_Editor_Enhancements,_and_Call_Recording/4214cc2d8375259e8db9d11030540ebe4fdefd05ecbb5f05136a8825956cafbd-image.png) ## Retrieval-Augmented Generation (RAG) for Intent Recognition We're excited to announce a significant upgrade to our intent recognition system, moving from the traditional Natural Language Understanding (NLU) approach to Retrieval-Augmented Generation (RAG) model using embeddings. This transition brings notable improvements to the speed, accuracy, and overall user experience when interacting with AI agents on our platform. [**📅 Phased Rollout**](#-phased-rollout) To ensure a smooth adoption, we will be rolling out the RAG-based intent recognition system to all users in phases over the next week. This gradual deployment allows us to monitor performance and gather feedback while providing ample time for you to adjust to the new system. [**🆕 Default for New Projects**](#-default-for-new-projects) For all new projects created on our platform, the RAG-based intent recognition will be the default system. This means that new AI agents will automatically benefit from the enhanced speed, accuracy, and natural conversation capabilities offered by RAG. [**🌟 Faster Training and Interaction**](#-faster-training-and-interaction) With the new RAG system, agent training and intent recognition are now substantially faster and more efficient. For example, an agent with 37 intents and 305 utterances now trains about 20 times faster, in just around 1 second. This means quicker agent development and smoother conversations for end-users. [**🧠 Automatic Agent Training**](#-automatic-agent-training) Thanks to the advanced training speed enabled by RAG, explicit training is no longer necessary. Simply test your agent, and the training will happen automatically behind the scenes, streamlining your workflow. [**🎯 Enhanced Understanding of Complex Queries**](#-enhanced-understanding-of-complex-queries) RAG leverages embeddings to capture the deeper context and meaning behind words, even when phrased differently. This allows the system to better understand and accurately match complex, detailed questions to the appropriate intents, providing more precise responses to users. [**🗣️ More Natural Conversations**](#️-more-natural-conversations) With the improved understanding of casual language, slang, and diverse phrasing, the RAG system enables a more natural, conversational experience for users interacting with AI agents on our platform. [**🔄 Seamless Transition for Existing Projects**](#-seamless-transition-for-existing-projects) For existing projects, we will keep both the NLU and RAG systems running concurrently for a period of time. This allows you to explore the new system, test it thoroughly, and make any necessary adjustments to your agents. You can easily switch between the NLU and RAG systems in the intent classification settings within the Intents CMS. We're thrilled to bring you this enhanced experience and look forward to hearing your feedback as you interact with the new RAG-based intent recognition system. Your input is invaluable in helping us continue to innovate and improve our platform to better serve your needs. ![Retrieval-Augmented Generation (RAG) for Intent Recognition](/docs/images/changelog_images/February_27th,_2025_Retrieval-Augmented_Generation_\(RAG\)_for_Intent_Recognition/57c510d9a8056fb12195a4bb1522dd15694b942f794421db4bdba86b9af825e7-CleanShot_2025-02-27_at_10.55.212x.png) ## Expanding the Possibilities of User Interaction with Voice In our mission to redefine how users interact with AI agents, we have introduced a new voice modality option to our web widget. This addition is a step towards creating more natural, intuitive, and engaging user experiences. By enabling voice-based conversations, we are empowering businesses to connect with their customers in a way that feels authentic and effortless. Voice technology has become an increasingly popular and preferred mode of interaction for many users. By integrating voice functionality into our web widget, we are meeting users where they are and providing them with a seamless way to engage with AI agents. This not only enhances the user experience but also opens up new possibilities for businesses to assist, inform, and guide their customers throughout the customer journey. [**Natural Voice Interaction**](#natural-voice-interaction) The web widget now supports voice-based communication, allowing users to speak naturally with AI agents. Businesses can integrate this feature to provide their customers with a hands-free, intuitive way to ask questions, receive recommendations, and get assistance while browsing the site. [**Customization Options**](#customization-options) The voice widget offers customization options to ensure seamless integration with your website's branding: - Launcher Style: Select a launcher style that complements your site's design. - Color Palette: Choose colors that match your brand guidelines. - Font Family: Pick a font that aligns with your website's typography. These options allow you to maintain a consistent brand experience across all customer touchpoints. [**Powered by Advanced Voice Tech**](#powered-by-advanced-voice-tech) The voice functionality in the widget leverages the best in voice technologies to deliver high-quality conversations: - Automated Speech Recognition: Our platform uses advanced STT technology from Deepgram to accurately transcribe user speech in real-time. - Organic Text-to-Speech: We've integrated with leading providers like 11 Labs and Rime to offer a variety of natural-sounding voices that bring AI agents to life. These technologies ensure that conversations with AI agents feel authentic, engaging, and representative of your brand's personality. [**Start Exploring Voice**](#start-exploring-voice) We invite all our users to start experimenting with the voice capabilities. As you explore voice functionality, we value your feedback and ideas s- join our Discord community! Your input plays a crucial role in shaping the future of voice-based interactions in the web widget and helping us refine the user experience. ![Expanding the Possibilities of User Interaction with Voice](/docs/images/changelog_images/February_20th,_2025_Expanding_the_Possibilities_of_User_Interaction_with_Voice/e3ac8dc46c5a6247b8174a7dc6e278ff66b9e984e0eb1fb78f89547a3cc28bc0-CleanShot_2025-02-20_at_13.18.112x.png) ![Expanding the Possibilities of User Interaction with Voice](/docs/images/changelog_images/February_20th,_2025_Expanding_the_Possibilities_of_User_Interaction_with_Voice/b8a688f2e8e9a0afae8a1a07c8b1e870d22346494784dca51b7b2c3c4d59e7a5-CleanShot_2025-02-20_at_13.21.172x.png) ## AI Fallback We're excited to introduce AI Fallback, a powerful new feature in beta that enhances the reliability and continuity of your AI operations. This feature ensures your AI services remain operational even during provider outages or service interruptions. [**🔄 Automatic Fallback Switching**](#-automatic-fallback-switching) AI Fallback automatically switches between models when issues arise. When your primary AI model experiences difficulties, the system seamlessly transitions to your configured backup model, ensuring continuous operation of your AI services. [**⚙️ Easy Configuration**](#️-easy-configuration) Setting up AI Fallback is straightforward: 1. Access your agent 2. Navigate to agent settings 3. Set your preferred fallback model by provider That's all there is to it! The system handles everything else automatically. [**📈 Enhanced Reliability**](#-enhanced-reliability) AI Fallback delivers key benefits: - Minimizes service disruptions during model outages - Maintains consistent AI performance - Reduces operational impact of provider issues - Ensures business continuity [**🔬 Under the Hood**](#-under-the-hood) The system continuously monitors your primary AI model's performance and availability. When issues are detected, it automatically: - Identifies the next available model in your sequence - Switches ongoing operations to the backup model - Returns to the primary model once issues are resolved [**🚀 Getting Started**](#-getting-started) AI Model Fallback is available exclusively for Teams and Enterprise customers. We're excited to hear your feedback during the beta phase! 🎯 ![AI Fallback](/docs/images/changelog_images/February_11th,_2025_AI_Fallback/82a47056cbe2eb31c18c1ba6c6d5f554f1a706aed46f7c185bc1075ae30ee54f-CleanShot_2025-02-12_at_14.40.10.png) ## New Features: Structured Outputs and Variable Pathing Today we're introducing two powerful new capabilities in Voiceflow: Structured Outputs and Variable Pathing. These features expand the possibilities for working with data from large language models (LLMs) in your agents. Let's explore what they enable! [**🎉 Structured Outputs**](#-structured-outputs) Structured Outputs let you define the format of the data you expect an LLM to return, giving you more control and predictability over the results. - In a prompt step, enable the new "JSON Output" option to specify the structure of the LLM's response. - Today, Structured Outputs support the following data types: String Number Boolean Integer Enum - Support for arrays and nested objects is planned for the near future. - Structured Outputs are available with `gpt-4o-mini` and `gpt-4o` models. [**💪 Variable Pathing**](#-variable-pathing) Variable Pathing provides a streamlined way to work with complex data structures in your Voiceflow project. - Store an entire object in a single variable, then access its properties using dot notation (eg: `user.name`, `user.email`). - Capture Structured Output responses or API results as objects. - Use object properties directly in conditions, messages, and other steps. - Reduce the need for multiple variables to represent a single entity. [**🍰 Bringing it All Together**](#-bringing-it-all-together) Combining Structured Outputs and Variable Pathing opens up new design patterns for crafting agent experiences: - Define precise data requirements for LLMs to provide relevant information - Capture responses as feature-rich objects in a single step - Access and manipulate object properties throughout your project - Streamline your project's design while expanding its capabilities We're excited to see the voice experiences you create with these new tools! Feel free to share your questions and feedback with us. ![New Features: Structured Outputs and Variable Pathing](/docs/images/changelog_images/February_3rd,_2025_New_Features_Structured_Outputs_and_Variable_Pathing/25d61d7f71cc8f1cb7ec00a8212bfb072e07fd7df070fbef2d238f40ea1ee5b8-CleanShot_2025-02-03_at_09.41.38.png) ![New Features: Structured Outputs and Variable Pathing](/docs/images/changelog_images/February_3rd,_2025_New_Features_Structured_Outputs_and_Variable_Pathing/569b093f723d7a24b0acb66f2758988eb318d1f925852965ff0e1a54c1d8fc42-CleanShot_2025-02-03_at_09.44.36.png) ## Voiceflow Telephony We're excited to announce the release of Voiceflow Telephony, bringing enterprise-grade voice capabilities to your conversational experiences. This release represents a significant milestone in our mission to provide comprehensive, low-latency voice solutions for businesses of all sizes. [**Native Twilio Integration**](#native-twilio-integration) We've integrated with Twilio to make phone-based interactions as simple as possible. The new integration allows you to: - Import existing Twilio phone numbers directly into Voiceflow - Associate phone numbers with specific agents - Configure separate numbers for development and production environments - Test different versions of your agent against different phone numbers Setting up telephony is straightforward: simply connect your Twilio account with existing phone numbers, import them into Voiceflow, and assign them to your agents. Your voice experience will be live within minutes. [**High-Performance Voice**](#high-performance-voice) [**Streaming Technology**](#streaming-technology) We've built our telephony feature on top of our streaming API, delivering exceptional performance improvements: - Dramatically reduced response times - Near real-time agent reactions - Optimized voice processing pipeline [**Speech Recognition**](#speech-recognition) We've selected Deepgram to provide industry-leading Speech To Text (STT): - High-accuracy transcription - Low-latency processing - Support for over 20 languages [**Advanced Voice Capabilities**](#advanced-voice-capabilities) [**Outbound Calling**](#outbound-calling) We've introduced powerful outbound calling capabilities: - Programmatically initiate calls to any phone number - Test outbound calls directly from the Voiceflow interface - Integrate outbound calling into your existing workflows [**Voice Technology Stack**](#voice-technology-stack) Our comprehensive voice stack includes: - Premium text-to-speech voices from industry leaders, such as: ElevenLabs Rime Google - Support for advanced telephony features through custom actions: Call forwarding DTMF handling Interruption behaviour [**Voice Experience Configuration**](#voice-experience-configuration) We've exposed detailed configuration options to fine-tune your voice experiences: [**Audio Settings**](#audio-settings) - Background audio customization - Audio cue configuration [**Interaction Parameters**](#interaction-parameters) - Interruption threshold controls - Utterance end detection - Response timing optimization - User input acceptance timing [**Beta Program Details**](#beta-program-details) [**Access and Limitations**](#access-and-limitations) During the beta period, all users will have access to telephony features with the following concurrent call limits: [**Coming Soon**](#coming-soon) - Enhanced call analytics and reporting - Additional voice customization options ![Voiceflow Telephony](/docs/images/changelog_images/January_23rd,_2025_Voiceflow_Telephony/6ae7d67b51c77b9d2792ca288ccb020648b9bb976974b5add098153c8bfe1188-CleanShot_2025-01-23_at_09.20.322x.png) ![Voiceflow Telephony](/docs/images/changelog_images/January_23rd,_2025_Voiceflow_Telephony/e3bbcf96730659f9f946d231ff8fbbfe57aa3dfc07964a08ba437b0c2dfe23a0-CleanShot_2025-01-23_at_09.18.372x.png) ![Voiceflow Telephony](/docs/images/changelog_images/January_23rd,_2025_Voiceflow_Telephony/1503cd01692f7c6011497cc206a5aab4a8b256c88a5ead425e0cc822db3d9365-CleanShot_2025-01-23_at_09.16.322x.png) ![Voiceflow Telephony](/docs/images/changelog_images/January_23rd,_2025_Voiceflow_Telephony/e298dce83384c9b105eb6ac87fc9a68ae190fc2129073f9fbeed140e686817c5-CleanShot_2025-01-23_at_09.13.512x.png) ## New AI-Native Webchat We're excited to announce a complete reimagining of the Voiceflow webchat experience. This new version introduces AI-native capabilities, enhanced customization options, and flexible deployment methods to help you create more engaging conversational experiences. [**AI-Native**](#ai-native) Our webchat has been rebuilt from the ground up to provide a more natural, AI-driven conversation experience: - Streaming Text Support: Experience real-time message generation with character-by-word streaming, creating a more engaging and dynamic conversation flow. Users can see responses being crafted in real-time, similar to popular AI chat interfaces. - AI Disclaimers: Built-in support for displaying AI disclosure messages and customizable AI usage notifications to maintain transparency with your users. [**Enhanced Customization**](#enhanced-customization) We've significantly expanded the customization capabilities to give you more control over your chat interface: [**Interface Types**](#interface-types) You can now choose from three distinct interface modes: - Widget: Traditional chat window that appears in the corner of your website - Popover: Full-screen chat experience that overlays your content - Embed: Seamlessly integrate the chat interface directly into your webpage layout [**Visual Customization**](#visual-customization) The new version introduces comprehensive styling options: - Color System: Expanded colour palette support with primary, secondary, and accent colour definitions - Typography: Custom font family support - Launcher Variations: Classic bubble launcher with customizable icons Button-style launcher with text support [**Important Notes**](#important-notes) - Chat Persistence: Now configured through the snippet rather than UI settings. - Custom CSS: Maintained compatibility with most existing class names. - Proactive Messages: Temporarily unavailable in this release, with support coming soon You can find more details [here](/docs/documentation/deploy/widget/embedding-the-chat-widget). [**Migration**](#migration) For detailed instructions on migrating from the legacy webchat, please refer to our [Migration Guide](/docs/documentation/deploy/widget/embedding-the-chat-widget). ![New AI-Native Webchat](/docs/images/changelog_images/January_22nd,_2025_New_AI-Native_Webchat/d40480fe732539569c80a6019711b5a97a48f771e452f2ae4e96d1fa645aeea8-CleanShot_2025-01-22_at_12.27.41.png) ![New AI-Native Webchat](/docs/images/changelog_images/January_22nd,_2025_New_AI-Native_Webchat/fd18d87781702534443f2327e46efef82b3629b0f1ef76c63d8c7698f3141c2b-CleanShot_2025-01-22_at_12.28.42.png) ## Function libraries, starter templates and ElevenLabs support [**Function Libraries**](#function-libraries) Integrate your agent with your favorite tools using our new function libraries. Access pre-built functions for popular platforms like Hubspot, Intercom, Shopify, Zendesk, and Zapier. These functions, sourced from Voiceflow and the community, make it easier than ever to connect Rev with your existing workflows. Showcase readily available integrations to your team and clients. [**Transcript Review Hotkeys**](#transcript-review-hotkeys) Reviewing transcripts just got faster and more efficient. You can now press `R` to mark a transcript as Reviewed or `S` to Save it for Later. These handy shortcut keys are perfect for power users who review a high volume of transcripts. [**Project Starter Templates**](#project-starter-templates) Getting started is now a breeze. When creating a new project, choose from a set of templates tailored for common use cases like customer support, ecommerce support, and scheduling. These templates help you hit the ground running without the need for extensive setup and customization. Ideal for new users and busy teams. [**Expanded Voice Support**](#expanded-voice-support) We now offer an even greater selection of natural-sounding AI voices. We've added support for a variety of new options from ElevenLabs and Rime. Please note that using these voices consumes AI tokens. Check them out for your projects that could benefit from additional voice choices. ![Function libraries, starter templates and ElevenLabs support](/docs/images/changelog_images/January_17th,_2025_Function_libraries,_starter_templates_and_ElevenLabs_support/38302c5867521b729b5528f3a368185f789faceaa26f56b2a5299439aba63f35-image.png) ![Function libraries, starter templates and ElevenLabs support](/docs/images/changelog_images/January_17th,_2025_Function_libraries,_starter_templates_and_ElevenLabs_support/77882a5a4f443a06191533ec4c69abed39b0c26854b7689117bc4c475026d04f-image.png) ![Function libraries, starter templates and ElevenLabs support](/docs/images/changelog_images/January_17th,_2025_Function_libraries,_starter_templates_and_ElevenLabs_support/74208dd702b61a9b683d9277b111a1c4406e74fb672a0b1f477d94c5c0e5cb29-CleanShot_2025-01-21_at_08.15.32.png) ## Important Update: Deprecation of AI Response and AI Set Steps This is an important update to our platform. As part of our ongoing commitment to enhancing your experience and providing the most advanced tools for AI agent development, we have made the decision to deprecate the AI Response and AI Set steps. What does this mean for you? - On February 4th, 2025, the AI Response and AI Set steps will be disabled from the step toolbar in the Voiceflow interface to encourage users to move away of these deprecated steps. Existing steps will remain untouched and will continue working as per normal. - On June 3rd, 2025, these steps will no longer be supported. Any existing projects using these steps will need to be migrated to the new [Prompt](/docs/documentation/build/steps/message) and [Set](/docs/documentation/build/steps/set) steps. We will be sending out additional communication in advance to the sunset date. We understand that this change may require some adjustments to your workflow, but rest assured that we are here to support you throughout this transition. The new Prompt and Set steps, along with our powerful Prompt CMS, offer even more flexibility and control over your conversational experiences. Some key benefits of the new approach include: - Centralized prompt management:[The Prompt CMS](/docs/documentation/build/global-prompt) serves as a hub for all your prompts, making it easy to create, edit, and reuse them across your projects. - Advanced prompt configuration: Leverage system prompts, message pairs, conversation history, and variables to craft highly contextual and dynamic responses. - Seamless integration: The Prompt step allows you to bring your prompts directly into your conversation flows, while the Set step lets you assign prompt outputs to variables for enhanced logic and control. - Continued innovation: We are committed to expanding the capabilities of these new features, with exciting updates planned for the near future. For those using the Knowledge Base, we recommend transitioning to the[KB Search step](/docs/documentation/build/querying-the-knowledge-base). This step allows you to query your Knowledge Base and feed the results into a prompt, enabling even more intelligent and relevant responses. To help guide you through migrating from the AI steps to the Prompt step, check our walkthrough below: We value your feedback and are here to address any questions or concerns you may have. Our team is dedicated to ensuring a smooth transition and helping you unlock the full potential of these powerful new features. Thank you for your understanding and continued support. We are excited about the future of conversational AI development on Voiceflow and look forward to seeing the incredible experiences you will create with these enhanced capabilities. Best regards, Voiceflow # Authenticate the vf CLI Source: https://www.voiceflow.com/docs/cli/authentication Authenticate the vf CLI with the VF_TOKEN environment variable, the token flag, or an interactive login, and check what is configured with vf auth whoami. The CLI resolves credentials from three sources, in priority order: the global `--token` flag, the `VF_TOKEN` environment variable, and credentials stored locally by an interactive login. ## Interactive login ```bash vf auth login ``` Walks you through configuring credentials interactively. All fields are optional, press Enter to skip any field you don't need. ## Check who you are ```bash vf auth whoami ``` Shows which credential source is configured (flag, environment variable, keychain, or config file), with the token masked. Also available as the top-level alias `vf whoami`. `whoami` runs entirely offline. It does not validate the token against the API, so for a live check run a real command such as `vf workspace list`. ## Sign out ```bash vf auth logout ``` Clears all stored credentials. ## Non-interactive use (CI and coding agents) The CLI reads the `VF_TOKEN` environment variable natively, so there is no login step and nothing stored on disk: ```bash export VF_TOKEN=vfp_... vf workspace list --output-format json ``` Every command also accepts the token directly with the global `--token` flag: ```bash vf workspace list --token "$VF_TOKEN" ``` Store the token as a secret in your CI provider. Never commit it: the token grants the same access as your account. Full flag reference: [vf auth](/docs/cli/commands/auth). # vf agent - Operations for agent Source: https://www.voiceflow.com/docs/cli/commands/agent vf agent: operations for agent. Groups 2 subcommands: get, update. Operations for agent. ## Usage ```bash vf agent [flags] ``` ## Flags ```text -h, --help help for agent ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf agent get](/docs/cli/commands/agent/get) - Get agent - [vf agent update](/docs/cli/commands/agent/update) - Update agent # vf agent get - Get agent Source: https://www.voiceflow.com/docs/cli/commands/agent/get vf agent get: get agent. Requires --environment-alias and --project-id, with a worked example. Get agent configuration. ## Usage ```bash vf agent get [flags] ``` ## Examples ```bash vf agent get --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for get -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf agent](/docs/cli/commands/agent) - Operations for agent # vf agent update - Update agent Source: https://www.voiceflow.com/docs/cli/commands/agent/update vf agent update: update agent. Requires --environment-alias and --project-id, with a worked example. Update agent configuration. ## Usage ```bash vf agent update [flags] ``` ## Examples ```bash vf agent update --project-id --environment-alias ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -b, --button-tool string JSON object --call-forward-tool string JSON object --card-tool string JSON object --carousel-tool string JSON object --end-tool string JSON object --environment-alias string [required] -h, --help help for update --include-guidelines Whether to append the default prompting guidelines to the global prompt. --instructions string list of values -k, --knowledge-base-tool string JSON object -l, --llm string JSON object --path-tool-order stringArray The ordered list of path tool IDs that controls the order of the agent exit paths. --playbooks string Playbooks available for the agent to invoke. --project-id string [required] --prompt string list of values -s, --skip-turn-tool string JSON object -v, --voice string JSON object --web-search-tool string JSON object --workflows string Workflows available for the agent to invoke. ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf agent](/docs/cli/commands/agent) - Operations for agent # vf analytics - Operations for analytics Source: https://www.voiceflow.com/docs/cli/commands/analytics vf analytics: operations for analytics. Groups 1 subcommand: query. Operations for analytics. ## Usage ```bash vf analytics [flags] ``` ## Flags ```text -h, --help help for analytics ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query Source: https://www.voiceflow.com/docs/cli/commands/analytics/query vf analytics query: operations for query. Groups 25 subcommands, including api-tool-usage, call-count, call-duration, category-token-usage, daily-token-usage. Operations for query. ## Usage ```bash vf analytics query [flags] ``` ## Flags ```text -h, --help help for query ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics](/docs/cli/commands/analytics) - Operations for analytics - [vf analytics query api-tool-usage](/docs/cli/commands/analytics/query/api-tool-usage) - Query API tool usage - [vf analytics query call-count](/docs/cli/commands/analytics/query/call-count) - Query call count - [vf analytics query call-duration](/docs/cli/commands/analytics/query/call-duration) - Query call duration - [vf analytics query category-token-usage](/docs/cli/commands/analytics/query/category-token-usage) - Query category token usage - [vf analytics query daily-token-usage](/docs/cli/commands/analytics/query/daily-token-usage) - Query daily token usage - [vf analytics query entity-token-usage](/docs/cli/commands/analytics/query/entity-token-usage) - Query entity token usage - [vf analytics query function-usage](/docs/cli/commands/analytics/query/function-usage) - Query function usage - [vf analytics query hourly-organization-token-usage](/docs/cli/commands/analytics/query/hourly-organization-token-usage) - Query hourly organization token usage - [vf analytics query hourly-project-token-usage](/docs/cli/commands/analytics/query/hourly-project-token-usage) - Query hourly project token usage - [vf analytics query integration-usage](/docs/cli/commands/analytics/query/integration-usage) - Query integration usage - [vf analytics query intent-usage](/docs/cli/commands/analytics/query/intent-usage) - Query intent usage - [vf analytics query knowledge-base-document-usage](/docs/cli/commands/analytics/query/knowledge-base-document-usage) - Query knowledge base document usage - [vf analytics query mcp-tool-usage](/docs/cli/commands/analytics/query/mcp-tool-usage) - Query MCP tool usage - [vf analytics query organization-token-usage](/docs/cli/commands/analytics/query/organization-token-usage) - Query organization token usage - [vf analytics query playbook-usage](/docs/cli/commands/analytics/query/playbook-usage) - Query playbook usage - [vf analytics query project-interaction-count](/docs/cli/commands/analytics/query/project-interaction-count) - Query project interaction count - [vf analytics query project-token-usage](/docs/cli/commands/analytics/query/project-token-usage) - Query project token usage - [vf analytics query project-transcript-cost](/docs/cli/commands/analytics/query/project-transcript-cost) - Query transcript cost - [vf analytics query project-transcript-count](/docs/cli/commands/analytics/query/project-transcript-count) - Query project transcript count - [vf analytics query prompt-usage](/docs/cli/commands/analytics/query/prompt-usage) - Query prompt usage - [vf analytics query unique-user-count](/docs/cli/commands/analytics/query/unique-user-count) - Query unique user count - [vf analytics query workflow-usage](/docs/cli/commands/analytics/query/workflow-usage) - Query workflow usage - [vf analytics query workspace-interaction-count](/docs/cli/commands/analytics/query/workspace-interaction-count) - Query workspace interaction count - [vf analytics query workspace-token-usage](/docs/cli/commands/analytics/query/workspace-token-usage) - Query workspace token usage - [vf analytics query workspace-transcript-count](/docs/cli/commands/analytics/query/workspace-transcript-count) - Query workspace transcript count # vf analytics query api-tool-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/api-tool-usage vf analytics query api-tool-usage: query API tool usage. Requires --end-date, --project-id and --start-date, with a worked example. Query API tool usage for a project. ## Usage ```bash vf analytics query api-tool-usage [flags] ``` ## Examples ```bash vf query api-tool-usage --project-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. --exclude-id stringArray list of values -h, --help help for api-tool-usage -l, --limit float number value (default 10) --order-by string options: count, averageLatencyMS --order-direction string options: ASC, DESC -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query call-count Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/call-count vf analytics query call-count: query call count. Requires --end-date, --interval, --project-id and --start-date, with a worked example. Query call count for a project. ## Usage ```bash vf analytics query call-count [flags] ``` ## Examples ```bash vf query call-count --project-id --end-date --start-date --interval week ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. -h, --help help for call-count -i, --interval string options: hour, day, week, month [required] -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query call-duration Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/call-duration vf analytics query call-duration: query call duration. Requires --end-date, --interval, --project-id and --start-date, with a worked example. Query real call duration (talk time) for a project. ## Usage ```bash vf analytics query call-duration [flags] ``` ## Examples ```bash vf query call-duration --project-id --end-date --start-date --interval week ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. -h, --help help for call-duration -i, --interval string options: hour, day, week, month [required] -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query category-token-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/category-token-usage vf analytics query category-token-usage: query category token usage. Requires --end-date, --interval, --project-id and --start-date, with a worked example. Query timezone-aware hourly token usage for a project grouped by usage category. ## Usage ```bash vf analytics query category-token-usage [flags] ``` ## Examples ```bash vf query category-token-usage --project-id --end-date --start-date --interval day ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. -h, --help help for category-token-usage -i, --interval string options: hour, day, week, month [required] -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -u, --usage-class string options: Host, Build, Test, Monitor -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query daily-token-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/daily-token-usage vf analytics query daily-token-usage: query daily token usage. Requires --end-date, --organization-id and --start-date, with a worked example. Daily breakdown of organization token usage grouped by class and category within a date range. ## Usage ```bash vf analytics query daily-token-usage [flags] ``` ## Examples ```bash vf query daily-token-usage --organization-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --end-date string [required] -h, --help help for daily-token-usage --organization-id string [required] -p, --project-ids stringArray The IDs of the projects to filter results by. Defaults to all projects in the workspace. -s, --start-date string [required] -t, --timezone string string value -w, --workspace-ids stringArray list of values ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query entity-token-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/entity-token-usage vf analytics query entity-token-usage: query entity token usage. Requires --end-date, --organization-id and --start-date, with a worked example. Token totals grouped per project and per workspace for an organization. ## Usage ```bash vf analytics query entity-token-usage [flags] ``` ## Examples ```bash vf query entity-token-usage --organization-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --end-date string [required] -h, --help help for entity-token-usage --organization-id string [required] -s, --start-date string [required] -t, --timezone string string value ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query function-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/function-usage vf analytics query function-usage: query function usage. Requires --end-date, --project-id and --start-date, with a worked example. Query function usage for a project. ## Usage ```bash vf analytics query function-usage [flags] ``` ## Examples ```bash vf query function-usage --project-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. --exclude-id stringArray list of values -h, --help help for function-usage -l, --limit float number value (default 10) --order-by string options: count, averageLatencyMS --order-direction string options: ASC, DESC -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query hourly-organization-token-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/hourly-organization-token-usage vf analytics query hourly-organization-token-usage: query hourly organization token usage. Requires --end-date, --organization-id and --start-date. Query hourly token usage for an organization with optional workspace/project filters. ## Usage ```bash vf analytics query hourly-organization-token-usage [flags] ``` ## Examples ```bash vf query hourly-organization-token-usage --organization-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --end-date string [required] -h, --help help for hourly-organization-token-usage --organization-id string [required] -p, --project-ids stringArray The IDs of the projects to filter results by. Defaults to all projects in the workspace. -s, --start-date string [required] -t, --timezone string string value -w, --workspace-ids stringArray list of values ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query hourly-project-token-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/hourly-project-token-usage vf analytics query hourly-project-token-usage: query hourly project token usage. Requires --end-date, --interval, --project-id and --start-date. Query timezone-aware hourly token usage for a project. ## Usage ```bash vf analytics query hourly-project-token-usage [flags] ``` ## Examples ```bash vf query hourly-project-token-usage --project-id --end-date --start-date --interval hour ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. -h, --help help for hourly-project-token-usage -i, --interval string options: hour, day, week, month [required] -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -u, --usage-class string options: Host, Build, Test, Monitor -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query integration-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/integration-usage vf analytics query integration-usage: query integration usage. Requires --end-date, --project-id and --start-date, with a worked example. Query integration usage for a project. ## Usage ```bash vf analytics query integration-usage [flags] ``` ## Examples ```bash vf query integration-usage --project-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. --exclude-id stringArray list of values -h, --help help for integration-usage -l, --limit float number value (default 10) --order-by string options: count, averageLatencyMS --order-direction string options: ASC, DESC -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query intent-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/intent-usage vf analytics query intent-usage: query intent usage. Requires --end-date, --project-id and --start-date, with a worked example. Query intent usage for a project. ## Usage ```bash vf analytics query intent-usage [flags] ``` ## Examples ```bash vf query intent-usage --project-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. --exclude-id stringArray list of values -h, --help help for intent-usage -l, --limit float number value (default 10) --order-direction string options: ASC, DESC -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query knowledge-base-document-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/knowledge-base-document-usage vf analytics query knowledge-base-document-usage: query knowledge base document usage. Requires --end-date, --project-id and --start-date. Query knowledge base document usage for a project. ## Usage ```bash vf analytics query knowledge-base-document-usage [flags] ``` ## Examples ```bash vf query knowledge-base-document-usage --project-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. --exclude-id stringArray list of values -h, --help help for knowledge-base-document-usage -l, --limit float number value (default 10) --order-direction string options: ASC, DESC -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query mcp-tool-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/mcp-tool-usage vf analytics query mcp-tool-usage: query MCP tool usage. Requires --end-date, --project-id and --start-date, with a worked example. Query MCP tool usage for a project. ## Usage ```bash vf analytics query mcp-tool-usage [flags] ``` ## Examples ```bash vf query mcp-tool-usage --project-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. --exclude-id stringArray list of values -h, --help help for mcp-tool-usage -l, --limit float number value (default 10) --order-by string options: count, averageLatencyMS --order-direction string options: ASC, DESC -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query organization-token-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/organization-token-usage vf analytics query organization-token-usage: query organization token usage. Requires --end-date, --organization-id and --start-date, with a worked example. Query token usage for an organization. ## Usage ```bash vf analytics query organization-token-usage [flags] ``` ## Examples ```bash vf query organization-token-usage --organization-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --end-date string [required] -h, --help help for organization-token-usage --organization-id string [required] -p, --project-ids stringArray The IDs of the projects to filter results by. Defaults to all projects in the workspace. -s, --start-date string [required] -t, --timezone string string value -w, --workspace-ids stringArray list of values ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query playbook-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/playbook-usage vf analytics query playbook-usage: query playbook usage. Requires --end-date, --project-id and --start-date, with a worked example. Query playbook usage for a project. ## Usage ```bash vf analytics query playbook-usage [flags] ``` ## Examples ```bash vf query playbook-usage --project-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. --exclude-id stringArray list of values -h, --help help for playbook-usage -l, --limit float number value (default 10) --order-by string options: count, averageLatencyMS --order-direction string options: ASC, DESC -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query project-interaction-count Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/project-interaction-count vf analytics query project-interaction-count: query project interaction count. Requires --end-date, --interval, --project-id and --start-date. Query interaction count for a project. ## Usage ```bash vf analytics query project-interaction-count [flags] ``` ## Examples ```bash vf query project-interaction-count --project-id --end-date --start-date --interval week ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. -h, --help help for project-interaction-count -i, --interval string options: hour, day, week, month [required] -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query project-token-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/project-token-usage vf analytics query project-token-usage: query project token usage. Requires --end-date, --interval, --project-id and --start-date, with a worked example. Query token usage for a project. ## Usage ```bash vf analytics query project-token-usage [flags] ``` ## Examples ```bash vf query project-token-usage --project-id --end-date --start-date --interval hour ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. -h, --help help for project-token-usage -i, --interval string options: hour, day, week, month [required] -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query project-transcript-cost Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/project-transcript-cost vf analytics query project-transcript-cost: query transcript cost. Requires --end-date, --interval, --project-id and --start-date, with a worked example. Query per-interval cost and transcript count for a project. ## Usage ```bash vf analytics query project-transcript-cost [flags] ``` ## Examples ```bash vf query project-transcript-cost --project-id --end-date --start-date --interval month ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. -h, --help help for project-transcript-cost -i, --interval string options: hour, day, week, month [required] -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -u, --usage-class string options: Host, Build, Test, Monitor -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query project-transcript-count Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/project-transcript-count vf analytics query project-transcript-count: query project transcript count. Requires --end-date, --interval, --project-id and --start-date. Query transcript count for a project. ## Usage ```bash vf analytics query project-transcript-count [flags] ``` ## Examples ```bash vf query project-transcript-count --project-id --end-date --start-date --interval hour ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. -h, --help help for project-transcript-count -i, --interval string options: hour, day, week, month [required] -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query prompt-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/prompt-usage vf analytics query prompt-usage: query prompt usage. Requires --end-date, --project-id and --start-date, with a worked example. Query prompt usage for a project. ## Usage ```bash vf analytics query prompt-usage [flags] ``` ## Examples ```bash vf query prompt-usage --project-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. --exclude-id stringArray list of values -h, --help help for prompt-usage -l, --limit float number value (default 10) --order-by string options: count, averageLatencyMS --order-direction string options: ASC, DESC -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query unique-user-count Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/unique-user-count vf analytics query unique-user-count: query unique user count. Requires --end-date, --interval, --project-id and --start-date, with a worked example. Query unique users for a project. ## Usage ```bash vf analytics query unique-user-count [flags] ``` ## Examples ```bash vf query unique-user-count --project-id --end-date --start-date --interval hour ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. -h, --help help for unique-user-count -i, --interval string options: hour, day, week, month [required] -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query workflow-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/workflow-usage vf analytics query workflow-usage: query workflow usage. Requires --end-date, --project-id and --start-date, with a worked example. Query workflow usage for a project. ## Usage ```bash vf analytics query workflow-usage [flags] ``` ## Examples ```bash vf query workflow-usage --project-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string [required] --environment-alias string The ID or alias of the environment to filter results by. Defaults to all environments. --exclude-id stringArray list of values -h, --help help for workflow-usage -l, --limit float number value (default 10) --order-direction string options: ASC, DESC -p, --project-id string [required] -s, --start-date string [required] -t, --timezone string string value -v, --version-param string Filters results to the draft or published version of the environment. Defaults to both. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query workspace-interaction-count Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/workspace-interaction-count vf analytics query workspace-interaction-count: query workspace interaction count. Requires --end-date, --start-date and --workspace-id, with a worked example. Query interaction count for a workspace. ## Usage ```bash vf analytics query workspace-interaction-count [flags] ``` ## Examples ```bash vf query workspace-interaction-count --workspace-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --end-date string [required] -h, --help help for workspace-interaction-count -p, --project-ids stringArray The IDs of the projects to filter results by. Defaults to all projects in the workspace. -s, --start-date string [required] -t, --timezone string string value -w, --workspace-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query workspace-token-usage Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/workspace-token-usage vf analytics query workspace-token-usage: query workspace token usage. Requires --end-date, --start-date and --workspace-id, with a worked example. Query token usage for a workspace. ## Usage ```bash vf analytics query workspace-token-usage [flags] ``` ## Examples ```bash vf query workspace-token-usage --workspace-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --end-date string [required] -h, --help help for workspace-token-usage -p, --project-ids stringArray The IDs of the projects to filter results by. Defaults to all projects in the workspace. -s, --start-date string [required] -t, --timezone string string value -w, --workspace-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf analytics query workspace-transcript-count Source: https://www.voiceflow.com/docs/cli/commands/analytics/query/workspace-transcript-count vf analytics query workspace-transcript-count: query workspace transcript count. Requires --end-date, --start-date and --workspace-id, with a worked example. Query transcript count for a workspace. ## Usage ```bash vf analytics query workspace-transcript-count [flags] ``` ## Examples ```bash vf query workspace-transcript-count --workspace-id --end-date --start-date ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --end-date string [required] -h, --help help for workspace-transcript-count -p, --project-ids stringArray The IDs of the projects to filter results by. Defaults to all projects in the workspace. -s, --start-date string [required] -t, --timezone string string value -w, --workspace-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf analytics query](/docs/cli/commands/analytics/query) - Operations for query # vf api-tool - Operations for api-tool Source: https://www.voiceflow.com/docs/cli/commands/api-tool vf api-tool: operations for api-tool. Groups 6 subcommands: create, delete, get, list, update, variable. Operations for api-tool. ## Usage ```bash vf api-tool [flags] ``` ## Flags ```text -h, --help help for api-tool ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf api-tool create](/docs/cli/commands/api-tool/create) - Create API tool - [vf api-tool delete](/docs/cli/commands/api-tool/delete) - Delete API tool - [vf api-tool get](/docs/cli/commands/api-tool/get) - Get API tool - [vf api-tool list](/docs/cli/commands/api-tool/list) - List API tools - [vf api-tool update](/docs/cli/commands/api-tool/update) - Update API tool - [vf api-tool variable](/docs/cli/commands/api-tool/variable) - Operations for api-tool-variable # vf api-tool create - Create API tool Source: https://www.voiceflow.com/docs/cli/commands/api-tool/create vf api-tool create: create API tool. Requires --environment-alias, --http-method, --name and --project-id, with a worked example. Create a new API tool. ## Usage ```bash vf api-tool create [flags] ``` ## Examples ```bash vf api-tool create --project-id --environment-alias --name --http-method put ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -b, --body-param string JSON value (variants: raw-input: { type: string, contentType: string, content: value[] }, form-data: { type: string, formData: object[] }, url-encoded: { type: string, params: object[] }) --body-param.form-data string StableAPIToolCreateRequest_APIToolFormDataBody variant as JSON --body-param.raw-input string StableAPIToolCreateRequest_APIToolRawBody variant as JSON --body-param.url-encoded string StableAPIToolCreateRequest_APIToolURLEncodedBody variant as JSON --description string A description of what the API tool does, used by the agent to decide when to call it. -e, --environment-alias string [required] --headers string list of values -h, --help help for create --http-method string options: get, put, post, patch, delete [required] -n, --name string [required] -p, --project-id string [required] --query-parameters string list of values -s, --settings string JSON object -u, --url string list of values ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf api-tool](/docs/cli/commands/api-tool) - Operations for api-tool # vf api-tool delete - Delete API tool Source: https://www.voiceflow.com/docs/cli/commands/api-tool/delete vf api-tool delete: delete API tool. Requires --environment-alias, --project-id and --tool-id, with a worked example. Delete an API tool by ID. ## Usage ```bash vf api-tool delete [flags] ``` ## Examples ```bash vf api-tool delete --tool-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for delete -p, --project-id string [required] -t, --tool-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf api-tool](/docs/cli/commands/api-tool) - Operations for api-tool # vf api-tool get - Get API tool Source: https://www.voiceflow.com/docs/cli/commands/api-tool/get vf api-tool get: get API tool. Requires --environment-alias, --project-id and --tool-id, with a worked example. Get an API tool by ID. ## Usage ```bash vf api-tool get [flags] ``` ## Examples ```bash vf api-tool get --tool-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for get -p, --project-id string [required] -t, --tool-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf api-tool](/docs/cli/commands/api-tool) - Operations for api-tool # vf api-tool list - List API tools Source: https://www.voiceflow.com/docs/cli/commands/api-tool/list vf api-tool list: list API tools. Requires --environment-alias and --project-id, with a worked example. List all API tools by project ID. ## Usage ```bash vf api-tool list [flags] ``` ## Examples ```bash vf api-tool list --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for list -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf api-tool](/docs/cli/commands/api-tool) - Operations for api-tool # vf api-tool update - Update API tool Source: https://www.voiceflow.com/docs/cli/commands/api-tool/update vf api-tool update: update API tool. Requires --environment-alias, --project-id and --tool-id, with a worked example. Update an API tool by ID. ## Usage ```bash vf api-tool update [flags] ``` ## Examples ```bash vf api-tool update --tool-id --project-id --environment-alias ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -b, --body-param string JSON value (variants: raw-input: { type: string, contentType: string, content: value[] }, form-data: { type: string, formData: object[] }, url-encoded: { type: string, params: object[] }) --body-param.form-data string StableAPIToolUpdateRequest_APIToolFormDataBody variant as JSON --body-param.raw-input string StableAPIToolUpdateRequest_APIToolRawBody variant as JSON --body-param.url-encoded string StableAPIToolUpdateRequest_APIToolURLEncodedBody variant as JSON --description string A description of what the API tool does, used by the agent to decide when to call it. -e, --environment-alias string [required] --headers string list of values -h, --help help for update --http-method string options: get, put, post, patch, delete -n, --name string string value -p, --project-id string [required] --query-parameters string list of values -s, --settings string JSON object -t, --tool-id string [required] -u, --url string list of values ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf api-tool](/docs/cli/commands/api-tool) - Operations for api-tool # vf api-tool variable Source: https://www.voiceflow.com/docs/cli/commands/api-tool/variable vf api-tool variable: operations for api-tool-variable. Groups 5 subcommands: create, delete, get, list, update. Operations for api-tool-variable. ## Usage ```bash vf api-tool variable [flags] ``` ## Flags ```text -h, --help help for variable ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf api-tool](/docs/cli/commands/api-tool) - Operations for api-tool - [vf api-tool variable create](/docs/cli/commands/api-tool/variable/create) - Create variable - [vf api-tool variable delete](/docs/cli/commands/api-tool/variable/delete) - Delete variable - [vf api-tool variable get](/docs/cli/commands/api-tool/variable/get) - Get variable - [vf api-tool variable list](/docs/cli/commands/api-tool/variable/list) - List variables - [vf api-tool variable update](/docs/cli/commands/api-tool/variable/update) - Update variable # vf api-tool variable create Source: https://www.voiceflow.com/docs/cli/commands/api-tool/variable/create vf api-tool variable create: create variable. Requires --api-tool-id, --environment-alias, --name and --project-id, with a worked example. Create a new variable. ## Usage ```bash vf api-tool variable create [flags] ``` ## Examples ```bash vf api-tool-variable create --project-id --environment-alias --name --api-tool-id ``` ## Flags ```text -a, --api-tool-id string The ID of the API tool this variable belongs to. [required] --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --description string A description of the variable, used by the agent to determine what value to provide. -e, --environment-alias string [required] -h, --help help for create -n, --name string The name of the variable, referenced within the API tool request. [required] -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf api-tool variable](/docs/cli/commands/api-tool/variable) - Operations for api-tool-variable # vf api-tool variable delete Source: https://www.voiceflow.com/docs/cli/commands/api-tool/variable/delete vf api-tool variable delete: delete variable. Requires --environment-alias, --project-id and --variable-id, with a worked example. Delete an variable by ID. ## Usage ```bash vf api-tool variable delete [flags] ``` ## Examples ```bash vf api-tool-variable delete --variable-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for delete -p, --project-id string [required] -v, --variable-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf api-tool variable](/docs/cli/commands/api-tool/variable) - Operations for api-tool-variable # vf api-tool variable get - Get variable Source: https://www.voiceflow.com/docs/cli/commands/api-tool/variable/get vf api-tool variable get: get variable. Requires --environment-alias, --project-id and --variable-id, with a worked example. Get an variable by ID. ## Usage ```bash vf api-tool variable get [flags] ``` ## Examples ```bash vf api-tool-variable get --variable-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for get -p, --project-id string [required] -v, --variable-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf api-tool variable](/docs/cli/commands/api-tool/variable) - Operations for api-tool-variable # vf api-tool variable list - List variables Source: https://www.voiceflow.com/docs/cli/commands/api-tool/variable/list vf api-tool variable list: list variables. Requires --api-tool-id, --environment-alias and --project-id, with a worked example. List all variables by API tool ID. ## Usage ```bash vf api-tool variable list [flags] ``` ## Examples ```bash vf api-tool-variable list --project-id --environment-alias --api-tool-id ``` ## Flags ```text -a, --api-tool-id string [required] -e, --environment-alias string [required] -h, --help help for list -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf api-tool variable](/docs/cli/commands/api-tool/variable) - Operations for api-tool-variable # vf api-tool variable update Source: https://www.voiceflow.com/docs/cli/commands/api-tool/variable/update vf api-tool variable update: update variable. Requires --environment-alias, --project-id and --variable-id, with a worked example. Update an variable by ID. ## Usage ```bash vf api-tool variable update [flags] ``` ## Examples ```bash vf api-tool-variable update --variable-id --project-id --environment-alias ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --description string A description of the variable, used by the agent to determine what value to provide. -e, --environment-alias string [required] -h, --help help for update -n, --name string The name of the variable, referenced within the API tool request. -p, --project-id string [required] -v, --variable-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf api-tool variable](/docs/cli/commands/api-tool/variable) - Operations for api-tool-variable # vf auth Source: https://www.voiceflow.com/docs/cli/commands/auth vf auth: manage authentication credentials. Groups 3 subcommands: login, logout, whoami. Manage authentication credentials. ## Usage ```bash ``` ## Flags ```text -h, --help help for auth ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf auth login](/docs/cli/commands/auth/login) - Interactively configure authentication credentials - [vf auth logout](/docs/cli/commands/auth/logout) - Clear all stored authentication credentials - [vf auth whoami](/docs/cli/commands/auth/whoami) - Display current authentication configuration # vf auth login Source: https://www.voiceflow.com/docs/cli/commands/auth/login vf auth login: interactively configure authentication credentials. Takes no required flags. Interactively configure authentication credentials for vf. Secret credentials are stored in the OS keychain when available, with a config file fallback. All fields are optional, press Enter to skip any field you don't need. Use the configure command for both authentication and global parameters. ## Usage ```bash vf auth login [flags] ``` ## Flags ```text -h, --help help for login ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf auth](/docs/cli/commands/auth) - Manage authentication credentials # vf auth logout Source: https://www.voiceflow.com/docs/cli/commands/auth/logout vf auth logout: clear all stored authentication credentials. Takes no required flags. Clear all stored authentication credentials from both the OS keychain and config file. This removes all credentials previously set via auth login or configure. ## Usage ```bash vf auth logout [flags] ``` ## Flags ```text -h, --help help for logout ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf auth](/docs/cli/commands/auth) - Manage authentication credentials # vf auth whoami Source: https://www.voiceflow.com/docs/cli/commands/auth/whoami vf auth whoami: display current authentication configuration. Takes no required flags. Display the currently configured settings and their sources. Sources are shown as: [flag] - Set via command line flag [env] - Set via environment variable (VF_*) [keyring] - Set via OS keychain (stored by login/configure command) [config] - Set via config file (~/.config/vf/config.yaml) [unset] - Not configured Credential values are masked for security. ## Usage ```bash vf auth whoami [flags] ``` ## Flags ```text -h, --help help for whoami ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf auth](/docs/cli/commands/auth) - Manage authentication credentials # vf configure Source: https://www.voiceflow.com/docs/cli/commands/configure vf configure: configure authentication credentials and preferences. Takes no required flags. Interactively configure authentication credentials and preferences for the CLI. Settings are stored in ~/.config/vf/config.yaml. Secret credentials are stored in the OS keychain when available. You can also set values via environment variables with the VF_ prefix (eg: VF_API_KEY) or pass them as flags to individual commands. Priority: CLI flags > environment variables > OS keychain > config file ## Usage ```bash vf configure [flags] ``` ## Flags ```text -h, --help help for configure ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service # vf conversation Source: https://www.voiceflow.com/docs/cli/commands/conversation vf conversation: operations for conversation. Groups 2 subcommands: send, state. Operations for conversation. ## Usage ```bash vf conversation [flags] ``` ## Flags ```text -h, --help help for conversation ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf conversation send](/docs/cli/commands/conversation/send) - Send - [vf conversation state](/docs/cli/commands/conversation/state) - Operations for state # vf conversation send - Send Source: https://www.voiceflow.com/docs/cli/commands/conversation/send vf conversation send: send. Requires --environment-alias, --project-id, --user-id and --version-param, with a worked example. Send message to a conversation. ## Usage ```bash vf conversation send [flags] ``` ## Examples ```bash vf conversation send --user-id --project-id --environment-alias --action '{"type":"end"}' --version-param draft ``` ## Flags ```text -a, --action string JSON value (one of: { type: string, payload: object, diagramID: string, time: number, ... } | { type: string, payload: string, diagramID: string, time: number, ... } | { type: string, diagramID: string, time: number, metadata: object, ... } | { type: string, payload: value, diagramID: string, time: number, ... }) --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --environment-alias string [required] -h, --help help for send -p, --project-id string [required] -s, --session-id string The unique ID of the conversation session to continue. -u, --user-id string [required] -v, --version-param string Whether to run the conversation against the draft or published version of the environment. (options: draft, published) [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf conversation](/docs/cli/commands/conversation) - Operations for conversation # vf conversation state Source: https://www.voiceflow.com/docs/cli/commands/conversation/state vf conversation state: operations for state. Groups 4 subcommands: delete, get, update, update-variables. Operations for state. ## Usage ```bash vf conversation state [flags] ``` ## Flags ```text -h, --help help for state ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf conversation](/docs/cli/commands/conversation) - Operations for conversation - [vf conversation state delete](/docs/cli/commands/conversation/state/delete) - Delete state - [vf conversation state get](/docs/cli/commands/conversation/state/get) - Get state - [vf conversation state update](/docs/cli/commands/conversation/state/update) - Update state - [vf conversation state update-variables](/docs/cli/commands/conversation/state/update-variables) - Update variables # vf conversation state delete Source: https://www.voiceflow.com/docs/cli/commands/conversation/state/delete vf conversation state delete: delete state. Requires --environment-alias, --project-id, --user-id and --version-param, with a worked example. Delete conversation state for a user. ## Usage ```bash vf conversation state delete [flags] ``` ## Examples ```bash vf state delete --user-id --project-id --environment-alias --version-param draft ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for delete -p, --project-id string [required] -u, --user-id string [required] -v, --version-param string options: draft, published [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf conversation state](/docs/cli/commands/conversation/state) - Operations for state # vf conversation state get - Get state Source: https://www.voiceflow.com/docs/cli/commands/conversation/state/get vf conversation state get: get state. Requires --environment-alias, --project-id, --user-id and --version-param, with a worked example. Get conversation state for a user. ## Usage ```bash vf conversation state get [flags] ``` ## Examples ```bash vf state get --user-id --project-id --environment-alias --version-param draft ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for get -p, --project-id string [required] -u, --user-id string [required] -v, --version-param string options: draft, published [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf conversation state](/docs/cli/commands/conversation/state) - Operations for state # vf conversation state update Source: https://www.voiceflow.com/docs/cli/commands/conversation/state/update vf conversation state update: update state. Requires --environment-alias, --project-id, --stack, --storage, --user-id, --variables and --version-param. Update conversation state for a user. ## Usage ```bash vf conversation state update [flags] ``` ## Examples ```bash vf state update --user-id --project-id --environment-alias --version-param published --stack '[]' ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --environment-alias string [required] -h, --help help for update -p, --project-id string [required] --stack string The execution stack for the conversation, from root to innermost frame. [required] --storage string Internal runtime storage persisted across turns of the session. [required] -u, --user-id string [required] --variables string The current values of the agent variables for this session. [required] --version-param string options: draft, published [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf conversation state](/docs/cli/commands/conversation/state) - Operations for state # vf conversation state update-variables Source: https://www.voiceflow.com/docs/cli/commands/conversation/state/update-variables vf conversation state update-variables: update variables. Requires --environment-alias, --project-id, --user-id, --variables and --version-param. Updates variables in the conversation state by merging with the properties in the request body. ## Usage ```bash vf conversation state update-variables [flags] ``` ## Examples ```bash vf state update-variables --user-id --project-id --environment-alias --version-param published --variables '{"key":"","key1":"","key2":""}' ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --environment-alias string [required] -h, --help help for update-variables -p, --project-id string [required] -u, --user-id string [required] --variables string Variable values to set on the conversation session, keyed by variable name. [required] --version-param string options: draft, published [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf conversation state](/docs/cli/commands/conversation/state) - Operations for state # vf document Source: https://www.voiceflow.com/docs/cli/commands/document vf document: operations for document. Groups 7 subcommands: create-table, create-text, create-url, delete, get, list, update. Operations for document. ## Usage ```bash vf document [flags] ``` ## Flags ```text -h, --help help for document ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf document create-table](/docs/cli/commands/document/create-table) - Create table document - [vf document create-text](/docs/cli/commands/document/create-text) - Create text document - [vf document create-url](/docs/cli/commands/document/create-url) - Create URL document - [vf document delete](/docs/cli/commands/document/delete) - Delete document - [vf document get](/docs/cli/commands/document/get) - Get document - [vf document list](/docs/cli/commands/document/list) - List documents - [vf document update](/docs/cli/commands/document/update) - Update document # vf document create-table Source: https://www.voiceflow.com/docs/cli/commands/document/create-table vf document create-table: create table document. Requires --environment-alias, --items, --name, --project-id and --schema, with a worked example. Create a new document from structured data. ## Usage ```bash vf document create-table [flags] ``` ## Examples ```bash vf document create-table --project-id --environment-alias --name --items '[{"key":""},{},{}]' --schema '{"searchableFields":["","",""]}' ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --environment-alias string [required] -h, --help help for create-table -i, --items string The table rows to ingest; each row is a flat object and becomes its own chunk. [required] --llm-based-chunks string JSON value (one of: boolean | StableDocumentController_createTable_llmBasedChunks_enum) --llm-content-summarization string JSON value (one of: boolean | StableDocumentController_createTable_llmContentSummarization_enum) --llm-generated-q string JSON value (one of: boolean | StableDocumentController_createTable_llmGeneratedQ_enum) --llm-prepend-context string JSON value (one of: boolean | StableDocumentController_createTable_llmPrependContext_enum) --markdown-conversion string JSON value (one of: boolean | StableDocumentController_createTable_markdownConversion_enum) --max-chunk-size string JSON value (one of: string | number) --metadata string Properties that can be filtered on at runtime (static or dynamic from a variable). Put your most common filter dimensions here. -n, --name string [required] --overwrite string JSON value (one of: boolean | StableDocumentController_createTable_overwrite_enum) -p, --project-id string [required] -s, --schema string Declares which top-level keys of each row are full-text searchable versus row-level metadata. [required] -u, --url string An optional source URL to associate with the table document. ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf document](/docs/cli/commands/document) - Operations for document # vf document create-text Source: https://www.voiceflow.com/docs/cli/commands/document/create-text vf document create-text: create text document. Requires --environment-alias, --file and --project-id, with a worked example. Create a new document from raw text. ## Usage ```bash vf document create-text [flags] ``` ## Examples ```bash vf document create-text --project-id --environment-alias ``` ## Flags ```text -c, --can-edit If true, the document content can be edited in the Creator after upload. -e, --environment-alias string [required] -f, --file string Path to file to upload [required] -h, --help help for create-text --llm-based-chunks string JSON value (one of: boolean | StableDocumentController_createText_llmBasedChunks_enum) --llm-content-summarization string JSON value (one of: boolean | StableDocumentController_createText_llmContentSummarization_enum) --llm-generated-q string JSON value (one of: boolean | StableDocumentController_createText_llmGeneratedQ_enum) --llm-prepend-context string JSON value (one of: boolean | StableDocumentController_createText_llmPrependContext_enum) --markdown-conversion string JSON value (one of: boolean | StableDocumentController_createText_markdownConversion_enum) --max-chunk-size string JSON value (one of: string | number) --metadata { key, values } A JSON-encoded array of { key, values } metadata tags attached to the document, used to filter knowledge base retrieval at runtime. --overwrite string JSON value (one of: boolean | StableDocumentController_createText_overwrite_enum) -p, --project-id string [required] -u, --url string An optional source URL to associate with the uploaded document. ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf document](/docs/cli/commands/document) - Operations for document # vf document create-url Source: https://www.voiceflow.com/docs/cli/commands/document/create-url vf document create-url: create URL document. Requires --environment-alias, --project-id and --url, with a worked example. Create a new document from a URL. ## Usage ```bash vf document create-url [flags] ``` ## Examples ```bash vf document create-url --project-id --environment-alias --url https://deserted-swordfish.info/ ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --environment-alias string [required] -h, --help help for create-url --llm-based-chunks string JSON value (one of: boolean | StableDocumentController_createURL_llmBasedChunks_enum) --llm-content-summarization string JSON value (one of: boolean | StableDocumentController_createURL_llmContentSummarization_enum) --llm-generated-q string JSON value (one of: boolean | StableDocumentController_createURL_llmGeneratedQ_enum) --llm-prepend-context string JSON value (one of: boolean | StableDocumentController_createURL_llmPrependContext_enum) --markdown-conversion string JSON value (one of: boolean | StableDocumentController_createURL_markdownConversion_enum) --max-chunk-size string JSON value (one of: string | number) --metadata string Metadata tags attached to the document, used to filter knowledge base retrieval at runtime. --overwrite string JSON value (one of: boolean | StableDocumentController_createURL_overwrite_enum) -p, --project-id string [required] -r, --refresh-rate string How often the URL is automatically re-crawled to refresh the document content. (options: daily, weekly, monthly, never) -u, --url string The URL of the web page to crawl and ingest into the knowledge base. [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf document](/docs/cli/commands/document) - Operations for document # vf document delete Source: https://www.voiceflow.com/docs/cli/commands/document/delete vf document delete: delete document. Requires --document-id, --environment-alias and --project-id, with a worked example. Delete a document by ID. ## Usage ```bash vf document delete [flags] ``` ## Examples ```bash vf document delete --document-id --project-id --environment-alias ``` ## Flags ```text --document-id string [required] -e, --environment-alias string [required] -h, --help help for delete -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf document](/docs/cli/commands/document) - Operations for document # vf document get - Get document Source: https://www.voiceflow.com/docs/cli/commands/document/get vf document get: get document. Requires --document-id, --environment-alias and --project-id, with a worked example. Get a document by ID. ## Usage ```bash vf document get [flags] ``` ## Examples ```bash vf document get --document-id --project-id --environment-alias ``` ## Flags ```text --document-id string [required] -e, --environment-alias string [required] -h, --help help for get -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf document](/docs/cli/commands/document) - Operations for document # vf document list - List documents Source: https://www.voiceflow.com/docs/cli/commands/document/list vf document list: list documents. Requires --environment-alias and --project-id, with a worked example. List all documents by project ID. ## Usage ```bash vf document list [flags] ``` ## Examples ```bash vf document list --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for list -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf document](/docs/cli/commands/document) - Operations for document # vf document update Source: https://www.voiceflow.com/docs/cli/commands/document/update vf document update: update document. Requires --document-id, --environment-alias, --metadata and --project-id, with a worked example. Update a document by ID. ## Usage ```bash vf document update [flags] ``` ## Examples ```bash vf document update --document-id --project-id --environment-alias --metadata '[]' ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --document-id string [required] -e, --environment-alias string [required] -h, --help help for update -m, --metadata string Metadata tags attached to the document, used to filter knowledge base retrieval at runtime. [required] -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf document](/docs/cli/commands/document) - Operations for document # vf environment Source: https://www.voiceflow.com/docs/cli/commands/environment vf environment: operations for environment. Groups 9 subcommands: clone, compile, delete, get, list, merge, publish, update, update-traffic-split. Operations for environment. ## Usage ```bash vf environment [flags] ``` ## Flags ```text -h, --help help for environment ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf environment clone](/docs/cli/commands/environment/clone) - Clone environment - [vf environment compile](/docs/cli/commands/environment/compile) - Compile environment - [vf environment delete](/docs/cli/commands/environment/delete) - Delete environment - [vf environment get](/docs/cli/commands/environment/get) - Get environment - [vf environment list](/docs/cli/commands/environment/list) - List environments - [vf environment merge](/docs/cli/commands/environment/merge) - Merge environments - [vf environment publish](/docs/cli/commands/environment/publish) - Publish environment - [vf environment update](/docs/cli/commands/environment/update) - Update environment - [vf environment update-traffic-split](/docs/cli/commands/environment/update-traffic-split) - Update traffic split # vf environment clone Source: https://www.voiceflow.com/docs/cli/commands/environment/clone vf environment clone: clone environment. Requires --alias, --environment-alias, --name and --project-id, with a worked example. Clone an environment. ## Usage ```bash vf environment clone [flags] ``` ## Examples ```bash vf environment clone --environment-alias --project-id --name --alias ``` ## Flags ```text -a, --alias string Short URL-safe identifier; cannot be 'main' (reserved). [required] --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --environment-alias string [required] -h, --help help for clone -n, --name string The display name of the new environment. [required] -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf environment](/docs/cli/commands/environment) - Operations for environment # vf environment compile Source: https://www.voiceflow.com/docs/cli/commands/environment/compile vf environment compile: compile environment. Requires --environment-alias and --project-id, with a worked example. Compile an environment. ## Usage ```bash vf environment compile [flags] ``` ## Examples ```bash vf environment compile --environment-alias --project-id ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for compile -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf environment](/docs/cli/commands/environment) - Operations for environment # vf environment delete Source: https://www.voiceflow.com/docs/cli/commands/environment/delete vf environment delete: delete environment. Requires --environment-alias and --project-id, with a worked example. Delete an environment by alias or ID. ## Usage ```bash vf environment delete [flags] ``` ## Examples ```bash vf environment delete --environment-alias --project-id ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for delete -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf environment](/docs/cli/commands/environment) - Operations for environment # vf environment get - Get environment Source: https://www.voiceflow.com/docs/cli/commands/environment/get vf environment get: get environment. Requires --environment-alias and --project-id, with a worked example. Get an environment by alias or ID. ## Usage ```bash vf environment get [flags] ``` ## Examples ```bash vf environment get --environment-alias --project-id ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for get -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf environment](/docs/cli/commands/environment) - Operations for environment # vf environment list Source: https://www.voiceflow.com/docs/cli/commands/environment/list vf environment list: list environments. Requires --project-id, with a worked example. List all environments by project ID. ## Usage ```bash vf environment list [flags] ``` ## Examples ```bash vf environment list --project-id ``` ## Flags ```text -h, --help help for list -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf environment](/docs/cli/commands/environment) - Operations for environment # vf environment merge Source: https://www.voiceflow.com/docs/cli/commands/environment/merge vf environment merge: merge environments. Requires --project-id, --source-environment-alias and --target-environment-alias, with a worked example. Merge one environment into another. ## Usage ```bash vf environment merge [flags] ``` ## Examples ```bash vf environment merge --project-id --source-environment-alias --target-environment-alias ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -h, --help help for merge -p, --project-id string [required] -r, --remove-source-environment If true, the source environment is deleted after the merge. -s, --source-environment-alias string The alias of the environment whose changes are merged. [required] -t, --target-environment-alias string The alias of the environment that receives the merged changes. [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf environment](/docs/cli/commands/environment) - Operations for environment # vf environment publish Source: https://www.voiceflow.com/docs/cli/commands/environment/publish vf environment publish: publish environment. Requires --environment-alias, --name and --project-id, with a worked example. Publish live version of an environment. ## Usage ```bash vf environment publish [flags] ``` ## Examples ```bash vf environment publish --environment-alias --project-id --name ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --description string An optional description of what changed in this release. (default "null") -e, --environment-alias string [required] -h, --help help for publish -n, --name string The name of the release created by publishing. [required] -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf environment](/docs/cli/commands/environment) - Operations for environment # vf environment update Source: https://www.voiceflow.com/docs/cli/commands/environment/update vf environment update: update environment. Requires --environment-alias and --project-id, with a worked example. Update a environment by alias or ID. ## Usage ```bash vf environment update [flags] ``` ## Examples ```bash vf environment update --environment-alias --project-id ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --environment-alias string [required] -h, --help help for update -n, --name string string value -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf environment](/docs/cli/commands/environment) - Operations for environment # vf environment update-traffic-split Source: https://www.voiceflow.com/docs/cli/commands/environment/update-traffic-split vf environment update-traffic-split: update traffic split. Requires --project-id and --traffic, with a worked example. Update the percentage of traffic routed to each environment. ## Usage ```bash vf environment update-traffic-split [flags] ``` ## Examples ```bash vf environment update-traffic-split --project-id --traffic '{"key":1314.98,"key1":2310.29}' ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -h, --help help for update-traffic-split -p, --project-id string [required] -t, --traffic string Map of environmentAlias → traffic percentage (0-100). Values must sum to 100. [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf environment](/docs/cli/commands/environment) - Operations for environment # vf evaluation Source: https://www.voiceflow.com/docs/cli/commands/evaluation vf evaluation: operations for evaluation. Groups 6 subcommands: create, delete, get, list, run, update. Operations for evaluation. ## Usage ```bash vf evaluation [flags] ``` ## Flags ```text -h, --help help for evaluation ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf evaluation create](/docs/cli/commands/evaluation/create) - Create evaluation - [vf evaluation delete](/docs/cli/commands/evaluation/delete) - Delete evaluation - [vf evaluation get](/docs/cli/commands/evaluation/get) - Get evaluation - [vf evaluation list](/docs/cli/commands/evaluation/list) - List evaluations - [vf evaluation run](/docs/cli/commands/evaluation/run) - Run evaluation - [vf evaluation update](/docs/cli/commands/evaluation/update) - Update evaluation # vf evaluation create Source: https://www.voiceflow.com/docs/cli/commands/evaluation/create vf evaluation create: create evaluation. Requires --body-param and --project-id, with a worked example. Create a new evaluation. ## Usage ```bash vf evaluation create [flags] ``` ## Examples ```bash vf evaluation create --project-id ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -b, --body-param string JSON value (variants: boolean: { type: string, truePrompt: string, falsePrompt: string, name: string, ... }, number: { type: string, minimumValue: number, maximumValue: number, minimumPrompt: string, ... }, string: { type: string, name: string, prompt: string, enabled: boolean, ... }, option: { type: string, options: object[], name: string, prompt: string, ... }) --body-param.boolean string StableEvaluationCreateRequest_Boolean variant as JSON --body-param.boolean.description string A human-readable description of what this evaluation measures. --body-param.boolean.enabled Whether this evaluation runs automatically against new transcripts. [required] --body-param.boolean.false-prompt false The criteria describing when the evaluator should return false. [required] --body-param.boolean.name string [required] --body-param.boolean.prompt string The criteria the evaluator uses to judge a transcript. [required] --body-param.boolean.true-prompt true The criteria describing when the evaluator should return true. [required] --body-param.number string StableEvaluationCreateRequest_Number variant as JSON --body-param.number.description string A human-readable description of what this evaluation measures. --body-param.number.enabled Whether this evaluation runs automatically against new transcripts. [required] --body-param.number.maximum-prompt maximumValue The criteria describing what warrants the maximumValue score. [required] --body-param.number.maximum-value float The highest score the evaluator can assign. [required] --body-param.number.minimum-prompt minimumValue The criteria describing what warrants the minimumValue score. [required] --body-param.number.minimum-value float The lowest score the evaluator can assign. [required] --body-param.number.name string [required] --body-param.number.prompt string The criteria the evaluator uses to judge a transcript. [required] --body-param.option string StableEvaluationCreateRequest_Option_2 variant as JSON --body-param.string string StableEvaluationCreateRequest_String variant as JSON --body-param.string.description string A human-readable description of what this evaluation measures. --body-param.string.enabled Whether this evaluation runs automatically against new transcripts. [required] --body-param.string.name string [required] --body-param.string.prompt string The criteria the evaluator uses to judge a transcript. [required] -h, --help help for create -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf evaluation](/docs/cli/commands/evaluation) - Operations for evaluation # vf evaluation delete Source: https://www.voiceflow.com/docs/cli/commands/evaluation/delete vf evaluation delete: delete evaluation. Requires --evaluation-id and --project-id, with a worked example. Delete an evaluation by ID. ## Usage ```bash vf evaluation delete [flags] ``` ## Examples ```bash vf evaluation delete --evaluation-id --project-id ``` ## Flags ```text -e, --evaluation-id string [required] -h, --help help for delete -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf evaluation](/docs/cli/commands/evaluation) - Operations for evaluation # vf evaluation get - Get evaluation Source: https://www.voiceflow.com/docs/cli/commands/evaluation/get vf evaluation get: get evaluation. Requires --evaluation-id and --project-id, with a worked example. Get an evaluation by ID. ## Usage ```bash vf evaluation get [flags] ``` ## Examples ```bash vf evaluation get --evaluation-id --project-id ``` ## Flags ```text -e, --evaluation-id string [required] -h, --help help for get -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf evaluation](/docs/cli/commands/evaluation) - Operations for evaluation # vf evaluation list - List evaluations Source: https://www.voiceflow.com/docs/cli/commands/evaluation/list vf evaluation list: list evaluations. Requires --project-id, with a worked example. List all evaluations by project ID. ## Usage ```bash vf evaluation list [flags] ``` ## Examples ```bash vf evaluation list --project-id ``` ## Flags ```text -h, --help help for list -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf evaluation](/docs/cli/commands/evaluation) - Operations for evaluation # vf evaluation run - Run evaluation Source: https://www.voiceflow.com/docs/cli/commands/evaluation/run vf evaluation run: run evaluation. Requires --evaluation-id, --project-id and --transcript-id, with a worked example. Run an evaluation. ## Usage ```bash vf evaluation run [flags] ``` ## Examples ```bash vf evaluation run --evaluation-id --project-id --transcript-id ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --evaluation-id string [required] -h, --help help for run -p, --project-id string [required] -t, --transcript-id string The ID of the transcript to run the evaluation against. [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf evaluation](/docs/cli/commands/evaluation) - Operations for evaluation # vf evaluation update Source: https://www.voiceflow.com/docs/cli/commands/evaluation/update vf evaluation update: update evaluation. Requires --evaluation-id and --project-id, with a worked example. Update an evaluation by ID. ## Usage ```bash vf evaluation update [flags] ``` ## Examples ```bash vf evaluation update --evaluation-id --project-id ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -b, --body-param string JSON value (variants: boolean: { truePrompt: string, falsePrompt: string, name: string, prompt: string, ... }, number: { minimumValue: number, maximumValue: number, minimumPrompt: string, maximumPrompt: string, ... }, string: { name: string, prompt: string, enabled: boolean, settings: object, ... }, option: { options: object[], name: string, prompt: string, enabled: boolean, ... }) --body-param.boolean string StableEvaluationUpdateRequest_Boolean variant as JSON --body-param.number string StableEvaluationUpdateRequest_Number variant as JSON --body-param.option string StableEvaluationUpdateRequest_Option_2 variant as JSON --body-param.string string StableEvaluationUpdateRequest_String variant as JSON -e, --evaluation-id string [required] -h, --help help for update -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf evaluation](/docs/cli/commands/evaluation) - Operations for evaluation # vf explore Source: https://www.voiceflow.com/docs/cli/commands/explore vf explore: interactively browse and run commands. Takes no required flags. Launch an interactive command explorer to browse available commands, view their descriptions and flags, and execute them. ## Usage ```bash vf explore [flags] ``` ## Flags ```text -h, --help help for explore ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service # vf function - Operations for function Source: https://www.voiceflow.com/docs/cli/commands/function vf function: operations for function. Groups 7 subcommands: create, delete, get, list, path, update, variable. Operations for function. ## Usage ```bash vf function [flags] ``` ## Flags ```text -h, --help help for function ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf function create](/docs/cli/commands/function/create) - Create function - [vf function delete](/docs/cli/commands/function/delete) - Delete function - [vf function get](/docs/cli/commands/function/get) - Get function - [vf function list](/docs/cli/commands/function/list) - List functions - [vf function path](/docs/cli/commands/function/path) - Operations for path - [vf function update](/docs/cli/commands/function/update) - Update function - [vf function variable](/docs/cli/commands/function/variable) - Operations for function-variable # vf function create - Create function Source: https://www.voiceflow.com/docs/cli/commands/function/create vf function create: create function. Requires --code, --environment-alias, --name and --project-id, with a worked example. Create a new function. ## Usage ```bash vf function create [flags] ``` ## Examples ```bash vf function create --project-id --environment-alias --name --code ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -c, --code string The JavaScript source code executed when the function runs. [required] --description string A human-readable description of what the function does. -e, --environment-alias string [required] -h, --help help for create -n, --name string [required] -p, --project-id string [required] -s, --settings string JSON object ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function](/docs/cli/commands/function) - Operations for function # vf function delete - Delete function Source: https://www.voiceflow.com/docs/cli/commands/function/delete vf function delete: delete function. Requires --environment-alias, --function-id and --project-id, with a worked example. Delete a function by ID. ## Usage ```bash vf function delete [flags] ``` ## Examples ```bash vf function delete --function-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -f, --function-id string [required] -h, --help help for delete -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function](/docs/cli/commands/function) - Operations for function # vf function get - Get function Source: https://www.voiceflow.com/docs/cli/commands/function/get vf function get: get function. Requires --environment-alias, --function-id and --project-id, with a worked example. Get a function by ID. ## Usage ```bash vf function get [flags] ``` ## Examples ```bash vf function get --function-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -f, --function-id string [required] -h, --help help for get -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function](/docs/cli/commands/function) - Operations for function # vf function list - List functions Source: https://www.voiceflow.com/docs/cli/commands/function/list vf function list: list functions. Requires --environment-alias and --project-id, with a worked example. List all functions by project ID. ## Usage ```bash vf function list [flags] ``` ## Examples ```bash vf function list --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for list -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function](/docs/cli/commands/function) - Operations for function # vf function path - Operations for path Source: https://www.voiceflow.com/docs/cli/commands/function/path vf function path: operations for path. Groups 5 subcommands: create, delete, get, list, update. Operations for path. ## Usage ```bash vf function path [flags] ``` ## Flags ```text -h, --help help for path ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function](/docs/cli/commands/function) - Operations for function - [vf function path create](/docs/cli/commands/function/path/create) - Create path - [vf function path delete](/docs/cli/commands/function/path/delete) - Delete path - [vf function path get](/docs/cli/commands/function/path/get) - Get path - [vf function path list](/docs/cli/commands/function/path/list) - List paths - [vf function path update](/docs/cli/commands/function/path/update) - Update path # vf function path create - Create path Source: https://www.voiceflow.com/docs/cli/commands/function/path/create vf function path create: create path. Requires --environment-alias, --function-id, --name and --project-id, with a worked example. Create a new path. ## Usage ```bash vf function path create [flags] ``` ## Examples ```bash vf path create --project-id --environment-alias --name --function-id ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --environment-alias string [required] -f, --function-id string The ID of the function this path belongs to. [required] -h, --help help for create -l, --label name The display label shown for this path in the Voiceflow UI; falls back to name when null. (default "null") -n, --name string The name of the exit path, referenced by the function code when returning which path to take. [required] -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function path](/docs/cli/commands/function/path) - Operations for path # vf function path delete - Delete path Source: https://www.voiceflow.com/docs/cli/commands/function/path/delete vf function path delete: delete path. Requires --environment-alias, --path-id and --project-id, with a worked example. Delete a path by ID. ## Usage ```bash vf function path delete [flags] ``` ## Examples ```bash vf path delete --path-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for delete --path-id string [required] --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function path](/docs/cli/commands/function/path) - Operations for path # vf function path get - Get path Source: https://www.voiceflow.com/docs/cli/commands/function/path/get vf function path get: get path. Requires --environment-alias, --path-id and --project-id, with a worked example. Get a path by ID. ## Usage ```bash vf function path get [flags] ``` ## Examples ```bash vf path get --path-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for get --path-id string [required] --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function path](/docs/cli/commands/function/path) - Operations for path # vf function path list - List paths Source: https://www.voiceflow.com/docs/cli/commands/function/path/list vf function path list: list paths. Requires --environment-alias, --function-id and --project-id, with a worked example. List all paths by function ID. ## Usage ```bash vf function path list [flags] ``` ## Examples ```bash vf path list --project-id --environment-alias --function-id ``` ## Flags ```text -e, --environment-alias string [required] -f, --function-id string [required] -h, --help help for list -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function path](/docs/cli/commands/function/path) - Operations for path # vf function path update - Update path Source: https://www.voiceflow.com/docs/cli/commands/function/path/update vf function path update: update path. Requires --environment-alias, --path-id and --project-id, with a worked example. Update a path by ID. ## Usage ```bash vf function path update [flags] ``` ## Examples ```bash vf path update --path-id --project-id --environment-alias ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -e, --environment-alias string [required] -h, --help help for update -l, --label name The display label shown for this path in the Voiceflow UI; falls back to name when null. -n, --name string The name of the exit path, referenced by the function code when returning which path to take. --path-id string [required] --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function path](/docs/cli/commands/function/path) - Operations for path # vf function update - Update function Source: https://www.voiceflow.com/docs/cli/commands/function/update vf function update: update function. Requires --environment-alias, --function-id and --project-id, with a worked example. Update a function by ID. ## Usage ```bash vf function update [flags] ``` ## Examples ```bash vf function update --function-id --project-id --environment-alias ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -c, --code string The JavaScript source code executed when the function runs. --description string A human-readable description of what the function does. -e, --environment-alias string [required] -f, --function-id string [required] -h, --help help for update -n, --name string string value --path-order stringArray An ordered list of path IDs controlling the display order of the function's exit paths. --project-id string [required] -s, --settings string JSON object ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function](/docs/cli/commands/function) - Operations for function # vf function variable Source: https://www.voiceflow.com/docs/cli/commands/function/variable vf function variable: operations for function-variable. Groups 5 subcommands: create, delete, get, list, update. Operations for function-variable. ## Usage ```bash vf function variable [flags] ``` ## Flags ```text -h, --help help for variable ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function](/docs/cli/commands/function) - Operations for function - [vf function variable create](/docs/cli/commands/function/variable/create) - Create variable - [vf function variable delete](/docs/cli/commands/function/variable/delete) - Delete variable - [vf function variable get](/docs/cli/commands/function/variable/get) - Get variable - [vf function variable list](/docs/cli/commands/function/variable/list) - List variables - [vf function variable update](/docs/cli/commands/function/variable/update) - Update variable # vf function variable create Source: https://www.voiceflow.com/docs/cli/commands/function/variable/create vf function variable create: create variable. Requires --environment-alias, --function-id, --name, --project-id and --type, with a worked example. Create a new variable. ## Usage ```bash vf function variable create [flags] ``` ## Examples ```bash vf function-variable create --project-id --environment-alias --name --type input --function-id ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --description string A human-readable description of what the variable holds. -e, --environment-alias string [required] -f, --function-id string The ID of the function this variable belongs to. [required] -h, --help help for create -n, --name string The name used to reference the variable in the function code. [required] -p, --project-id string [required] -t, --type string options: input, output [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function variable](/docs/cli/commands/function/variable) - Operations for function-variable # vf function variable delete Source: https://www.voiceflow.com/docs/cli/commands/function/variable/delete vf function variable delete: delete variable. Requires --environment-alias, --project-id and --variable-id, with a worked example. Delete a variable by ID. ## Usage ```bash vf function variable delete [flags] ``` ## Examples ```bash vf function-variable delete --variable-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for delete -p, --project-id string [required] -v, --variable-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function variable](/docs/cli/commands/function/variable) - Operations for function-variable # vf function variable get - Get variable Source: https://www.voiceflow.com/docs/cli/commands/function/variable/get vf function variable get: get variable. Requires --environment-alias, --project-id and --variable-id, with a worked example. Get a variable by ID. ## Usage ```bash vf function variable get [flags] ``` ## Examples ```bash vf function-variable get --variable-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for get -p, --project-id string [required] -v, --variable-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function variable](/docs/cli/commands/function/variable) - Operations for function-variable # vf function variable list - List variables Source: https://www.voiceflow.com/docs/cli/commands/function/variable/list vf function variable list: list variables. Requires --environment-alias, --function-id and --project-id, with a worked example. List all variables by function ID. ## Usage ```bash vf function variable list [flags] ``` ## Examples ```bash vf function-variable list --project-id --environment-alias --function-id ``` ## Flags ```text -e, --environment-alias string [required] -f, --function-id string [required] -h, --help help for list -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function variable](/docs/cli/commands/function/variable) - Operations for function-variable # vf function variable update Source: https://www.voiceflow.com/docs/cli/commands/function/variable/update vf function variable update: update variable. Requires --environment-alias, --project-id and --variable-id, with a worked example. Update a variable by ID. ## Usage ```bash vf function variable update [flags] ``` ## Examples ```bash vf function-variable update --variable-id --project-id --environment-alias ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --description string A human-readable description of what the variable holds. -e, --environment-alias string [required] -h, --help help for update -n, --name string The name used to reference the variable in the function code. -p, --project-id string [required] -v, --variable-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf function variable](/docs/cli/commands/function/variable) - Operations for function-variable # vf knowledge-base Source: https://www.voiceflow.com/docs/cli/commands/knowledge-base vf knowledge-base: operations for knowledge-base. Groups 1 subcommand: query. Operations for knowledge-base. ## Usage ```bash vf knowledge-base [flags] ``` ## Flags ```text -h, --help help for knowledge-base ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf knowledge-base query](/docs/cli/commands/knowledge-base/query) - Query knowledge base # vf knowledge-base query Source: https://www.voiceflow.com/docs/cli/commands/knowledge-base/query vf knowledge-base query: query knowledge base. Requires --environment-alias, --project-id, --question and --version-param, with a worked example. Execute a query against documents in the knowledge base. ## Usage ```bash vf knowledge-base query [flags] ``` ## Examples ```bash vf knowledge-base query --project-id --environment-alias --version-param published --question ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -c, --chunk-limit int The maximum number of document chunks to retrieve. -e, --environment-alias string [required] -f, --filters string Metadata filters used to narrow down which document chunks are searched. -h, --help help for query -i, --instruction string An additional instruction applied when synthesizing the answer from the retrieved chunks. -p, --project-id string [required] --question string The natural-language question to ask the knowledge base. [required] --settings string JSON object --synthesis Whether to synthesize an answer from the retrieved chunks; when false, only raw chunks are returned. -v, --version-param string Whether to query the draft or the published version of the knowledge base. (options: draft, published) [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf knowledge-base](/docs/cli/commands/knowledge-base) - Operations for knowledge-base # vf mcp-server Source: https://www.voiceflow.com/docs/cli/commands/mcp-server vf mcp-server: operations for mcp-server. Groups 6 subcommands: create, delete, get, list, sync, update. Operations for mcp-server. ## Usage ```bash vf mcp-server [flags] ``` ## Flags ```text -h, --help help for mcp-server ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf mcp-server create](/docs/cli/commands/mcp-server/create) - Create MCP server - [vf mcp-server delete](/docs/cli/commands/mcp-server/delete) - Delete MCP server - [vf mcp-server get](/docs/cli/commands/mcp-server/get) - Get MCP server - [vf mcp-server list](/docs/cli/commands/mcp-server/list) - List MCP servers - [vf mcp-server sync](/docs/cli/commands/mcp-server/sync) - Sync MCP server - [vf mcp-server update](/docs/cli/commands/mcp-server/update) - Update MCP server # vf mcp-server create Source: https://www.voiceflow.com/docs/cli/commands/mcp-server/create vf mcp-server create: create MCP server. Requires --environment-alias, --name, --project-id and --url, with a worked example. Create a new MCP server. ## Usage ```bash vf mcp-server create [flags] ``` ## Examples ```bash vf mcp-server create --project-id --environment-alias --name --url '[]' ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --description string A human-readable description of what the MCP server provides. (default "null") -e, --environment-alias string [required] --headers string list of values -h, --help help for create -n, --name string [required] -p, --project-id string [required] -s, --specification string options: 2025-03-26, 2025-06-18 (default "2025-06-18") -u, --url string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf mcp-server](/docs/cli/commands/mcp-server) - Operations for mcp-server # vf mcp-server delete Source: https://www.voiceflow.com/docs/cli/commands/mcp-server/delete vf mcp-server delete: delete MCP server. Requires --environment-alias, --project-id and --server-id, with a worked example. Delete an MCP server by ID. ## Usage ```bash vf mcp-server delete [flags] ``` ## Examples ```bash vf mcp-server delete --server-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for delete -p, --project-id string [required] -s, --server-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf mcp-server](/docs/cli/commands/mcp-server) - Operations for mcp-server # vf mcp-server get - Get MCP server Source: https://www.voiceflow.com/docs/cli/commands/mcp-server/get vf mcp-server get: get MCP server. Requires --environment-alias, --project-id and --server-id, with a worked example. Get an MCP server by ID. ## Usage ```bash vf mcp-server get [flags] ``` ## Examples ```bash vf mcp-server get --server-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for get -p, --project-id string [required] -s, --server-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf mcp-server](/docs/cli/commands/mcp-server) - Operations for mcp-server # vf mcp-server list - List MCP servers Source: https://www.voiceflow.com/docs/cli/commands/mcp-server/list vf mcp-server list: list MCP servers. Requires --environment-alias and --project-id, with a worked example. List all MCP servers by project ID. ## Usage ```bash vf mcp-server list [flags] ``` ## Examples ```bash vf mcp-server list --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for list -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf mcp-server](/docs/cli/commands/mcp-server) - Operations for mcp-server # vf mcp-server sync Source: https://www.voiceflow.com/docs/cli/commands/mcp-server/sync vf mcp-server sync: sync MCP server. Requires --environment-alias, --project-id and --server-id, with a worked example. Sync tool changes for an MCP server by ID. ## Usage ```bash vf mcp-server sync [flags] ``` ## Examples ```bash vf mcp-server sync --server-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for sync -p, --project-id string [required] -s, --server-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf mcp-server](/docs/cli/commands/mcp-server) - Operations for mcp-server # vf mcp-server update Source: https://www.voiceflow.com/docs/cli/commands/mcp-server/update vf mcp-server update: update MCP server. Requires --environment-alias, --project-id and --server-id, with a worked example. Update an MCP server by ID. ## Usage ```bash vf mcp-server update [flags] ``` ## Examples ```bash vf mcp-server update --server-id --project-id --environment-alias ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --description string A human-readable description of what the MCP server provides. -e, --environment-alias string [required] --headers string list of values -h, --help help for update -n, --name string string value -p, --project-id string [required] --server-id string [required] --specification string options: 2025-03-26, 2025-06-18 -u, --url string list of values ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf mcp-server](/docs/cli/commands/mcp-server) - Operations for mcp-server # vf mcp-tool - Operations for mcp-tool Source: https://www.voiceflow.com/docs/cli/commands/mcp-tool vf mcp-tool: operations for mcp-tool. Groups 2 subcommands: get, list. Operations for mcp-tool. ## Usage ```bash vf mcp-tool [flags] ``` ## Flags ```text -h, --help help for mcp-tool ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf mcp-tool get](/docs/cli/commands/mcp-tool/get) - Get MCP tool - [vf mcp-tool list](/docs/cli/commands/mcp-tool/list) - List MCP tools # vf mcp-tool get - Get MCP tool Source: https://www.voiceflow.com/docs/cli/commands/mcp-tool/get vf mcp-tool get: get MCP tool. Requires --environment-alias, --project-id and --tool-id, with a worked example. Get an MCP tool by ID. ## Usage ```bash vf mcp-tool get [flags] ``` ## Examples ```bash vf mcp-tool get --tool-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for get -p, --project-id string [required] -t, --tool-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf mcp-tool](/docs/cli/commands/mcp-tool) - Operations for mcp-tool # vf mcp-tool list - List MCP tools Source: https://www.voiceflow.com/docs/cli/commands/mcp-tool/list vf mcp-tool list: list MCP tools. Requires --environment-alias and --project-id, with a worked example. List all MCP tools by project ID. ## Usage ```bash vf mcp-tool list [flags] ``` ## Examples ```bash vf mcp-tool list --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for list -p, --project-id string [required] -s, --server-id string string value ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf mcp-tool](/docs/cli/commands/mcp-tool) - Operations for mcp-tool # vf Source: https://www.voiceflow.com/docs/cli/commands/overview vf - Realtime: Realtime gateway API service. Groups 22 subcommands, including agent, analytics, api-tool, auth, configure, conversation, document, environment. Realtime: Realtime gateway API service. ## Usage ```bash vf [flags] ``` ## Flags ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. -h, --help help for vf --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf agent](/docs/cli/commands/agent) - Operations for agent - [vf analytics](/docs/cli/commands/analytics) - Operations for analytics - [vf api-tool](/docs/cli/commands/api-tool) - Operations for api-tool - [vf auth](/docs/cli/commands/auth) - Manage authentication credentials - [vf configure](/docs/cli/commands/configure) - Configure authentication credentials and preferences - [vf conversation](/docs/cli/commands/conversation) - Operations for conversation - [vf document](/docs/cli/commands/document) - Operations for document - [vf environment](/docs/cli/commands/environment) - Operations for environment - [vf evaluation](/docs/cli/commands/evaluation) - Operations for evaluation - [vf explore](/docs/cli/commands/explore) - Interactively browse and run commands - [vf function](/docs/cli/commands/function) - Operations for function - [vf knowledge-base](/docs/cli/commands/knowledge-base) - Operations for knowledge-base - [vf mcp-server](/docs/cli/commands/mcp-server) - Operations for mcp-server - [vf mcp-tool](/docs/cli/commands/mcp-tool) - Operations for mcp-tool - [vf playbook](/docs/cli/commands/playbook) - Operations for playbook - [vf project](/docs/cli/commands/project) - Operations for project - [vf tool](/docs/cli/commands/tool) - Operations for tool - [vf transcript](/docs/cli/commands/transcript) - Operations for transcript - [vf variable](/docs/cli/commands/variable) - Operations for variable - [vf version](/docs/cli/commands/version) - Print the CLI version - [vf whoami](/docs/cli/commands/whoami) - Display current authentication configuration - [vf workspace](/docs/cli/commands/workspace) - Operations for workspace # vf playbook - Operations for playbook Source: https://www.voiceflow.com/docs/cli/commands/playbook vf playbook: operations for playbook. Groups 5 subcommands: create, delete, get, list, update. Operations for playbook. ## Usage ```bash vf playbook [flags] ``` ## Flags ```text -h, --help help for playbook ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf playbook create](/docs/cli/commands/playbook/create) - Create playbook - [vf playbook delete](/docs/cli/commands/playbook/delete) - Delete playbook - [vf playbook get](/docs/cli/commands/playbook/get) - Get playbook - [vf playbook list](/docs/cli/commands/playbook/list) - List playbooks - [vf playbook update](/docs/cli/commands/playbook/update) - Update playbook # vf playbook create - Create playbook Source: https://www.voiceflow.com/docs/cli/commands/playbook/create vf playbook create: create playbook. Requires --environment-alias, --name and --project-id, with a worked example. Create a new playbook. ## Usage ```bash vf playbook create [flags] ``` ## Examples ```bash vf playbook create --project-id --environment-alias --name ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -b, --button-tool string JSON object --call-forward-tool string JSON object --card-tool string JSON object --carousel-tool string JSON object --description string A human-readable description of what the playbook does. --end-tool string JSON object --environment-alias string [required] -h, --help help for create -i, --instructions string list of values -k, --knowledge-base-tool string JSON object -n, --name string [required] -p, --project-id string [required] --settings string JSON object --skip-turn-tool string JSON object -w, --web-search-tool string JSON object ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf playbook](/docs/cli/commands/playbook) - Operations for playbook # vf playbook delete - Delete playbook Source: https://www.voiceflow.com/docs/cli/commands/playbook/delete vf playbook delete: delete playbook. Requires --environment-alias, --playbook-id and --project-id, with a worked example. Delete a playbook by ID. ## Usage ```bash vf playbook delete [flags] ``` ## Examples ```bash vf playbook delete --playbook-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for delete --playbook-id string [required] --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf playbook](/docs/cli/commands/playbook) - Operations for playbook # vf playbook get - Get playbook Source: https://www.voiceflow.com/docs/cli/commands/playbook/get vf playbook get: get playbook. Requires --environment-alias, --playbook-id and --project-id, with a worked example. Get a playbook by ID. ## Usage ```bash vf playbook get [flags] ``` ## Examples ```bash vf playbook get --playbook-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for get --playbook-id string [required] --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf playbook](/docs/cli/commands/playbook) - Operations for playbook # vf playbook list - List playbooks Source: https://www.voiceflow.com/docs/cli/commands/playbook/list vf playbook list: list playbooks. Requires --environment-alias and --project-id, with a worked example. List all playbooks by project ID. ## Usage ```bash vf playbook list [flags] ``` ## Examples ```bash vf playbook list --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for list -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf playbook](/docs/cli/commands/playbook) - Operations for playbook # vf playbook update Source: https://www.voiceflow.com/docs/cli/commands/playbook/update vf playbook update: update playbook. Requires --environment-alias, --playbook-id and --project-id, with a worked example. Update a playbook by ID. ## Usage ```bash vf playbook update [flags] ``` ## Examples ```bash vf playbook update --playbook-id --project-id --environment-alias ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -b, --button-tool string JSON object --call-forward-tool string JSON object --card-tool string JSON object --carousel-tool string JSON object --description string A human-readable description of what the playbook does. --end-tool string JSON object --environment-alias string [required] -h, --help help for update -i, --instructions string list of values -k, --knowledge-base-tool string JSON object -n, --name string string value --playbook-id string [required] --project-id string [required] --settings string JSON object --skip-turn-tool string JSON object -w, --web-search-tool string JSON object ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf playbook](/docs/cli/commands/playbook) - Operations for playbook # vf project - Operations for project Source: https://www.voiceflow.com/docs/cli/commands/project vf project: operations for project. Groups 5 subcommands: create, delete, get, list, update. Operations for project. ## Usage ```bash vf project [flags] ``` ## Flags ```text -h, --help help for project ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf project create](/docs/cli/commands/project/create) - Create project - [vf project delete](/docs/cli/commands/project/delete) - Delete project - [vf project get](/docs/cli/commands/project/get) - Get project - [vf project list](/docs/cli/commands/project/list) - List projects - [vf project update](/docs/cli/commands/project/update) - Update project # vf project create - Create project Source: https://www.voiceflow.com/docs/cli/commands/project/create vf project create: create project. Requires --name, --type and --workspace-id, with a worked example. Create a new project. ## Usage ```bash vf project create [flags] ``` ## Examples ```bash vf project create --name --workspace-id --type phone-call ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -h, --help help for create -n, --name string [required] -t, --type string The channel type of the project to create. (options: webchat, phone-call) [required] -w, --workspace-id string The ID of the workspace the project belongs to. [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf project](/docs/cli/commands/project) - Operations for project # vf project delete - Delete project Source: https://www.voiceflow.com/docs/cli/commands/project/delete vf project delete: delete project. Requires --project-id, with a worked example. Delete a project by ID. ## Usage ```bash vf project delete [flags] ``` ## Examples ```bash vf project delete --project-id ``` ## Flags ```text -h, --help help for delete -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf project](/docs/cli/commands/project) - Operations for project # vf project get - Get project Source: https://www.voiceflow.com/docs/cli/commands/project/get vf project get: get project. Requires --project-id, with a worked example. Get a project by ID. ## Usage ```bash vf project get [flags] ``` ## Examples ```bash vf project get --project-id ``` ## Flags ```text -h, --help help for get -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf project](/docs/cli/commands/project) - Operations for project # vf project list - List projects Source: https://www.voiceflow.com/docs/cli/commands/project/list vf project list: list projects. Requires --workspace-id, with a worked example. List all projects by workspace ID. ## Usage ```bash vf project list [flags] ``` ## Examples ```bash vf project list --workspace-id ``` ## Flags ```text -h, --help help for list -w, --workspace-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf project](/docs/cli/commands/project) - Operations for project # vf project update - Update project Source: https://www.voiceflow.com/docs/cli/commands/project/update vf project update: update project. Requires --project-id, with a worked example. Update a project by ID. ## Usage ```bash vf project update [flags] ``` ## Examples ```bash vf project update --project-id ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -h, --help help for update -n, --name string string value -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf project](/docs/cli/commands/project) - Operations for project # vf tool - Operations for tool Source: https://www.voiceflow.com/docs/cli/commands/tool vf tool: operations for tool. Groups 5 subcommands: create, delete, get, list, update. Operations for tool. ## Usage ```bash vf tool [flags] ``` ## Flags ```text -h, --help help for tool ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf tool create](/docs/cli/commands/tool/create) - Create tool - [vf tool delete](/docs/cli/commands/tool/delete) - Delete tool - [vf tool get](/docs/cli/commands/tool/get) - Get tool - [vf tool list](/docs/cli/commands/tool/list) - List tools - [vf tool update](/docs/cli/commands/tool/update) - Update tool # vf tool create - Create tool Source: https://www.voiceflow.com/docs/cli/commands/tool/create vf tool create: create tool. Requires --environment-alias and --project-id, with a worked example. Create a new tool. ## Usage ```bash vf tool create [flags] ``` ## Examples ```bash vf tool create --project-id --environment-alias ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -b, --body-param string JSON value (variants: api: { description: string, target: object, messages: object, captureInputVariables: object, ... }, function: { description: string, target: object, messages: object, captureInputVariables: object, ... }, mcp: { description: string, target: object, messages: object, captureInputVariables: object, ... }) --body-param.api string StableToolCreateRequest_API variant as JSON --body-param.function string StableToolCreateRequest_Function variant as JSON --body-param.mcp string StableToolCreateRequest_Mcp variant as JSON -e, --environment-alias string [required] -h, --help help for create -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf tool](/docs/cli/commands/tool) - Operations for tool # vf tool delete - Delete tool Source: https://www.voiceflow.com/docs/cli/commands/tool/delete vf tool delete: delete tool. Requires --environment-alias, --project-id, --tool-id and --type, with a worked example. Delete a tool by ID. ## Usage ```bash vf tool delete [flags] ``` ## Examples ```bash vf tool delete --tool-id --project-id --environment-alias --type mcp ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for delete -p, --project-id string [required] --tool-id string [required] --type string The type of the tool to delete. (options: api, mcp, function) [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf tool](/docs/cli/commands/tool) - Operations for tool # vf tool get - Get tool Source: https://www.voiceflow.com/docs/cli/commands/tool/get vf tool get: get tool. Requires --environment-alias, --project-id, --tool-id and --type, with a worked example. Get a tool by ID. ## Usage ```bash vf tool get [flags] ``` ## Examples ```bash vf tool get --tool-id --project-id --environment-alias --type api ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for get -p, --project-id string [required] --tool-id string [required] --type string The type of the tool to fetch. (options: api, mcp, function) [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf tool](/docs/cli/commands/tool) - Operations for tool # vf tool list - List tools Source: https://www.voiceflow.com/docs/cli/commands/tool/list vf tool list: list tools. Requires --environment-alias and --project-id, with a worked example. List all tools for the agent or a specific playbook. ## Usage ```bash vf tool list [flags] ``` ## Examples ```bash vf tool list --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -g, --global boolean flag -h, --help help for list --playbook-id string string value --project-id string [required] -t, --type string When provided, only tools of this type are returned. (options: api, mcp, function) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf tool](/docs/cli/commands/tool) - Operations for tool # vf tool update - Update tool Source: https://www.voiceflow.com/docs/cli/commands/tool/update vf tool update: update tool. Requires --environment-alias, --project-id and --tool-id, with a worked example. Update a tool by ID. ## Usage ```bash vf tool update [flags] ``` ## Examples ```bash vf tool update --tool-id --project-id --environment-alias ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -b, --body-param string JSON value (variants: api: { description: string, captureInputVariables: object, type: string, asyncExecution: boolean, ... }, function: { description: string, captureInputVariables: object, type: string, asyncExecution: boolean, ... }, mcp: { description: string, captureInputVariables: object, type: string, inputVariables: object, ... }) --body-param.api string StableToolUpdateRequest_API variant as JSON --body-param.function string StableToolUpdateRequest_Function variant as JSON --body-param.mcp string StableToolUpdateRequest_Mcp variant as JSON -e, --environment-alias string [required] -h, --help help for update -p, --project-id string [required] -t, --tool-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf tool](/docs/cli/commands/tool) - Operations for tool # vf transcript Source: https://www.voiceflow.com/docs/cli/commands/transcript vf transcript: operations for transcript. Groups 3 subcommands: get, property, search. Operations for transcript. ## Usage ```bash vf transcript [flags] ``` ## Flags ```text -h, --help help for transcript ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf transcript get](/docs/cli/commands/transcript/get) - Get transcript - [vf transcript property](/docs/cli/commands/transcript/property) - Operations for property - [vf transcript search](/docs/cli/commands/transcript/search) - Search transcripts # vf transcript get - Get transcript Source: https://www.voiceflow.com/docs/cli/commands/transcript/get vf transcript get: get transcript. Requires --project-id and --transcript-id, with a worked example. Get a transcript by ID. ## Usage ```bash vf transcript get [flags] ``` ## Examples ```bash vf transcript get --transcript-id --project-id ``` ## Flags ```text -h, --help help for get -p, --project-id string [required] -t, --transcript-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf transcript](/docs/cli/commands/transcript) - Operations for transcript # vf transcript property Source: https://www.voiceflow.com/docs/cli/commands/transcript/property vf transcript property: operations for property. Groups 6 subcommands: create, delete, get, list, set-value, update. Operations for property. ## Usage ```bash vf transcript property [flags] ``` ## Flags ```text -h, --help help for property ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf transcript](/docs/cli/commands/transcript) - Operations for transcript - [vf transcript property create](/docs/cli/commands/transcript/property/create) - Create property - [vf transcript property delete](/docs/cli/commands/transcript/property/delete) - Delete property - [vf transcript property get](/docs/cli/commands/transcript/property/get) - Get property - [vf transcript property list](/docs/cli/commands/transcript/property/list) - List properties - [vf transcript property set-value](/docs/cli/commands/transcript/property/set-value) - Set property value - [vf transcript property update](/docs/cli/commands/transcript/property/update) - Update property # vf transcript property create Source: https://www.voiceflow.com/docs/cli/commands/transcript/property/create vf transcript property create: create property. Requires --name, --project-id and --type, with a worked example. Create a new property. ## Usage ```bash vf transcript property create [flags] ``` ## Examples ```bash vf property create --project-id --name --type string ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -h, --help help for create -n, --name string [required] -p, --project-id string [required] -t, --type string The type of value the property holds. (options: boolean, number, string) [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf transcript property](/docs/cli/commands/transcript/property) - Operations for property # vf transcript property delete Source: https://www.voiceflow.com/docs/cli/commands/transcript/property/delete vf transcript property delete: delete property. Requires --project-id and --property-id, with a worked example. Delete a property by ID. ## Usage ```bash vf transcript property delete [flags] ``` ## Examples ```bash vf property delete --property-id --project-id ``` ## Flags ```text -h, --help help for delete --project-id string [required] --property-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf transcript property](/docs/cli/commands/transcript/property) - Operations for property # vf transcript property get Source: https://www.voiceflow.com/docs/cli/commands/transcript/property/get vf transcript property get: get property. Requires --project-id and --property-id, with a worked example. Get property by ID. ## Usage ```bash vf transcript property get [flags] ``` ## Examples ```bash vf property get --property-id --project-id ``` ## Flags ```text -h, --help help for get --project-id string [required] --property-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf transcript property](/docs/cli/commands/transcript/property) - Operations for property # vf transcript property list Source: https://www.voiceflow.com/docs/cli/commands/transcript/property/list vf transcript property list: list properties. Requires --project-id, with a worked example. List all properties by project ID. ## Usage ```bash vf transcript property list [flags] ``` ## Examples ```bash vf property list --project-id ``` ## Flags ```text -h, --help help for list -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf transcript property](/docs/cli/commands/transcript/property) - Operations for property # vf transcript property set-value Source: https://www.voiceflow.com/docs/cli/commands/transcript/property/set-value vf transcript property set-value: set property value. Requires --project-id, --property-id, --transcript-id and --value, with a worked example. Set a property value on a transcript. ## Usage ```bash vf transcript property set-value [flags] ``` ## Examples ```bash vf property set-value --property-id --project-id --value --transcript-id ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -h, --help help for set-value --project-id string [required] --property-id string [required] -t, --transcript-id string The ID of the transcript to set the property value on. [required] -v, --value string The value to set for the property on the transcript. [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf transcript property](/docs/cli/commands/transcript/property) - Operations for property # vf transcript property update Source: https://www.voiceflow.com/docs/cli/commands/transcript/property/update vf transcript property update: update property. Requires --project-id and --property-id, with a worked example. Update a property by ID. ## Usage ```bash vf transcript property update [flags] ``` ## Examples ```bash vf property update --property-id --project-id ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -h, --help help for update -n, --name string string value --project-id string [required] --property-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf transcript property](/docs/cli/commands/transcript/property) - Operations for property # vf transcript search Source: https://www.voiceflow.com/docs/cli/commands/transcript/search vf transcript search: search transcripts. Requires --project-id, with a worked example. Search transcripts by project ID. ## Usage ```bash vf transcript search [flags] ``` ## Examples ```bash vf transcript search --project-id ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. --end-date string When provided, only transcripts created at or before this ISO 8601 timestamp are returned. --environment-alias string When provided, only transcripts from the environment with this alias are returned. -f, --filters string list of values -h, --help help for search -p, --project-id string [required] --session-id string When provided, only transcripts from this conversation session are returned. --skip int The number of results to skip, used for pagination. --start-date string When provided, only transcripts created at or after this ISO 8601 timestamp are returned. -t, --take float The maximum number of results to return, used for pagination. (default 20) -v, --version-param string When provided, only transcripts from draft or published conversations are returned. (options: draft, published) ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf transcript](/docs/cli/commands/transcript) - Operations for transcript # vf variable - Operations for variable Source: https://www.voiceflow.com/docs/cli/commands/variable vf variable: operations for variable. Groups 5 subcommands: create, delete, get, list, update. Operations for variable. ## Usage ```bash vf variable [flags] ``` ## Flags ```text -h, --help help for variable ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf variable create](/docs/cli/commands/variable/create) - Create variable - [vf variable delete](/docs/cli/commands/variable/delete) - Delete variable - [vf variable get](/docs/cli/commands/variable/get) - Get variable - [vf variable list](/docs/cli/commands/variable/list) - List variables - [vf variable update](/docs/cli/commands/variable/update) - Update variable # vf variable create - Create variable Source: https://www.voiceflow.com/docs/cli/commands/variable/create vf variable create: create variable. Requires --color-param, --environment-alias, --name and --project-id, with a worked example. Create a new variable. ## Usage ```bash vf variable create [flags] ``` ## Examples ```bash vf variable create --project-id --environment-alias --name --color-param grey ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -c, --color-param string The display color of the variable in the Voiceflow editor. [required] --default-value string The initial value of the variable at the start of a conversation. --description string A short description of what the variable stores. -e, --environment-alias string [required] -h, --help help for create -n, --name string [required] -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf variable](/docs/cli/commands/variable) - Operations for variable # vf variable delete - Delete variable Source: https://www.voiceflow.com/docs/cli/commands/variable/delete vf variable delete: delete variable. Requires --environment-alias, --project-id and --variable-id, with a worked example. Delete a variable by ID. ## Usage ```bash vf variable delete [flags] ``` ## Examples ```bash vf variable delete --variable-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for delete -p, --project-id string [required] -v, --variable-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf variable](/docs/cli/commands/variable) - Operations for variable # vf variable get - Get variable Source: https://www.voiceflow.com/docs/cli/commands/variable/get vf variable get: get variable. Requires --environment-alias, --project-id and --variable-id, with a worked example. Get a variable by ID. ## Usage ```bash vf variable get [flags] ``` ## Examples ```bash vf variable get --variable-id --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for get -p, --project-id string [required] -v, --variable-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf variable](/docs/cli/commands/variable) - Operations for variable # vf variable list - List variables Source: https://www.voiceflow.com/docs/cli/commands/variable/list vf variable list: list variables. Requires --environment-alias and --project-id, with a worked example. List all variables by project ID. ## Usage ```bash vf variable list [flags] ``` ## Examples ```bash vf variable list --project-id --environment-alias ``` ## Flags ```text -e, --environment-alias string [required] -h, --help help for list -p, --project-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf variable](/docs/cli/commands/variable) - Operations for variable # vf variable update - Update variable Source: https://www.voiceflow.com/docs/cli/commands/variable/update vf variable update: update variable. Requires --environment-alias, --project-id and --variable-id, with a worked example. Update a variable by ID. ## Usage ```bash vf variable update [flags] ``` ## Examples ```bash vf variable update --variable-id --project-id --environment-alias ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -c, --color-param string The display color of the variable in the Voiceflow editor. --default-value string The initial value of the variable at the start of a conversation. --description string A short description of what the variable stores. -e, --environment-alias string [required] -h, --help help for update -n, --name string string value -p, --project-id string [required] -v, --variable-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf variable](/docs/cli/commands/variable) - Operations for variable # vf version - Print the CLI version Source: https://www.voiceflow.com/docs/cli/commands/version vf version: print the CLI version. Takes no required flags. Print the current version of the vf CLI. The version defaults to the SDK version set during generation, but can be overridden at build time using Go linker flags: go build -ldflags "-X main.version=x.y.z -X main.buildTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)" ./cmd/vf ## Usage ```bash vf version [flags] ``` ## Flags ```text -h, --help help for version ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service # vf whoami Source: https://www.voiceflow.com/docs/cli/commands/whoami vf whoami: display current authentication configuration. Takes no required flags. Display the currently configured settings and their sources. Sources are shown as: [flag] - Set via command line flag [env] - Set via environment variable (VF_*) [keyring] - Set via OS keychain (stored by configure command) [config] - Set via config file (~/.config/vf/config.yaml) [unset] - Not configured Credential values are masked for security. ## Usage ```bash vf whoami [flags] ``` ## Flags ```text -h, --help help for whoami ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service # vf workspace Source: https://www.voiceflow.com/docs/cli/commands/workspace vf workspace: operations for workspace. Groups 5 subcommands: create, delete, get, list, update. Operations for workspace. ## Usage ```bash vf workspace [flags] ``` ## Flags ```text -h, --help help for workspace ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf](/docs/cli/commands/overview) - Realtime: Realtime gateway API service - [vf workspace create](/docs/cli/commands/workspace/create) - Create workspace - [vf workspace delete](/docs/cli/commands/workspace/delete) - Delete workspace - [vf workspace get](/docs/cli/commands/workspace/get) - Get workspace - [vf workspace list](/docs/cli/commands/workspace/list) - List workspaces - [vf workspace update](/docs/cli/commands/workspace/update) - Update workspace # vf workspace create Source: https://www.voiceflow.com/docs/cli/commands/workspace/create vf workspace create: create workspace. Requires --name and --organization-id, with a worked example. Create a new workspace. ## Usage ```bash vf workspace create [flags] ``` ## Examples ```bash vf workspace create --name --organization-id ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -h, --help help for create -n, --name string [required] --organization-id string The ID of the organization the workspace belongs to. [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf workspace](/docs/cli/commands/workspace) - Operations for workspace # vf workspace delete Source: https://www.voiceflow.com/docs/cli/commands/workspace/delete vf workspace delete: delete workspace. Requires --workspace-id, with a worked example. Delete a single workspace by ID. ## Usage ```bash vf workspace delete [flags] ``` ## Examples ```bash vf workspace delete --workspace-id ``` ## Flags ```text -h, --help help for delete -w, --workspace-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf workspace](/docs/cli/commands/workspace) - Operations for workspace # vf workspace get - Get workspace Source: https://www.voiceflow.com/docs/cli/commands/workspace/get vf workspace get: get workspace. Requires --workspace-id, with a worked example. Get a single workspace by ID. ## Usage ```bash vf workspace get [flags] ``` ## Examples ```bash vf workspace get --workspace-id ``` ## Flags ```text -h, --help help for get -w, --workspace-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf workspace](/docs/cli/commands/workspace) - Operations for workspace # vf workspace list - List workspaces Source: https://www.voiceflow.com/docs/cli/commands/workspace/list vf workspace list: list workspaces. Takes no required flags, and carries a worked example. List all workspaces the authorized account is a member of. ## Usage ```bash vf workspace list [flags] ``` ## Examples ```bash vf workspace list ``` ## Flags ```text -h, --help help for list ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf workspace](/docs/cli/commands/workspace) - Operations for workspace # vf workspace update Source: https://www.voiceflow.com/docs/cli/commands/workspace/update vf workspace update: update workspace. Requires --workspace-id, with a worked example. Update a single workspace by ID. ## Usage ```bash vf workspace update [flags] ``` ## Examples ```bash vf workspace update --workspace-id ``` ## Flags ```text --body string Request body as JSON (alternative to individual flags). Can also be provided via stdin. -h, --help help for update -n, --name string string value -w, --workspace-id string [required] ``` ## Global flags These flags are inherited from the parent command and work on every invocation. ```text --agent-mode Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable. --color string Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto") -d, --debug Log request and response diagnostics to stderr --dry-run Preview the request that would be sent without executing it (output to stderr) -H, --header stringArray Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times. --include-headers Include HTTP response headers in the output -q, --jq string Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id') --no-interactive Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms) -o, --output-format string Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty") --server-url string Override the default server URL --timeout string HTTP request timeout (e.g., 30s, 5m, 100ms) --token string Voiceflow bearer token --usage Print the CLI Usage schema in KDL format ``` ## See also - [vf workspace](/docs/cli/commands/workspace) - Operations for workspace # Install the vf CLI Source: https://www.voiceflow.com/docs/cli/install Install the official Voiceflow CLI with the install script, a manual download from GitHub releases, or go install. Verify with vf version. The `vf` CLI ships as a single binary for macOS, Linux, and Windows. Every release publishes signed archives and a `checksums.txt` on the [releases page](https://github.com/voiceflow/cli/releases). ## Install script (macOS and Linux) ```bash curl -fsSL https://raw.githubusercontent.com/voiceflow/cli/master/scripts/install.sh | bash ``` The script downloads the latest release for your platform into `/usr/local/bin` (or `~/.local/bin` when that is not writable). Set `VF_VERSION` to pin a specific release: ```bash VF_VERSION=v0.135.0 curl -fsSL https://raw.githubusercontent.com/voiceflow/cli/master/scripts/install.sh | bash ``` ## Install script (Windows PowerShell) ```powershell iwr -useb https://raw.githubusercontent.com/voiceflow/cli/master/scripts/install.ps1 | iex ``` ## Manual download Download the archive for your platform from the [releases page](https://github.com/voiceflow/cli/releases), verify it against `checksums.txt`, and place the `vf` binary on your `PATH`. ## Go install With a Go toolchain installed: ```bash go install github.com/voiceflow/cli/cmd/vf@latest ``` ## Verify the installation ```bash vf version ``` Prints the installed version, commit, and build date. Next, connect the CLI to your account: [Authentication](/docs/cli/authentication). # The vf command line interface Source: https://www.voiceflow.com/docs/cli/overview Manage Voiceflow agents, knowledge bases, transcripts, analytics, and environments from your terminal or CI with the official vf CLI. The `vf` CLI is the official command line interface for Voiceflow. It covers the same surface as the dashboard for day-to-day operations: inspect and update agents, manage knowledge base documents, fetch transcripts and analytics, run evaluations, and publish environments, all scriptable from your terminal or CI. The CLI is built for automation first. Every command supports structured output (`--output-format json`, `yaml`, `table`, or `toon`), a `--jq` flag for inline filtering, and `--dry-run` to preview any request before it executes. Running inside a coding agent such as Claude Code or Cursor enables `--agent-mode` automatically, which switches on structured errors designed for tools to parse. One command on macOS, Linux, or Windows. Connect the CLI to your Voiceflow account. Every command, flag, and default, generated from the CLI itself. Command mapping from the retired third-party voiceflow-cli. ## A first command List your workspaces after [authenticating](/docs/cli/authentication). It doubles as proof that the token works: ```bash vf workspace list --output-format json ``` Then list the agent projects in a workspace, using an `id` from that output: ```bash vf project list --workspace-id --output-format json ``` Every command accepts `--help`, and the [command reference](/docs/cli/commands/overview) carries the full tree. The reference is generated from the CLI source at a pinned version, so it always matches the binary it documents. ## Where the CLI fits - Use the CLI for scripting, CI pipelines, and bulk operations. - Use the [APIs](/docs/api-reference/api-overview) when you are building an application or integration. - Use the [MCP server](/docs/mcp/overview) when you are working from a coding assistant. The CLI source lives at [github.com/voiceflow/cli](https://github.com/voiceflow/cli), where releases and issues are tracked. # Clone an environment and publish Source: https://www.voiceflow.com/docs/cookbook/clone-and-publish Clone the live environment, publish a release inside the copy, verify it landed, then delete the clone, all without touching production. Shipping a change safely means working somewhere that is not live. This recipe clones the main environment into a throwaway one, publishes a release inside the clone, verifies the release exists, then deletes the clone, which is the whole isolated-release cycle without touching production. ## The recipe ```bash main.sh #!/usr/bin/env bash # Recipe: clone-and-publish # # Ships a change the way you would in production: clone the live environment so # you can work without touching it, publish the copy, and confirm the release # landed. Then remove the copy. # # Required environment: # VF_PAT personal access token (Settings -> Access tokens), vfp_..._... # VF_PROJECT_ID the project ID (Settings -> General -> Metadata) set -euo pipefail : "${VF_PAT:?set VF_PAT to a personal access token from Settings -> Access tokens}" : "${VF_PROJECT_ID:?set VF_PROJECT_ID to the project ID from Settings -> General -> Metadata}" BASE="https://realtime-api.voiceflow.com/v1/stable" AUTH="Authorization: Bearer $VF_PAT" Q="projectID=$VF_PROJECT_ID" fail() { echo "FAIL at $1" >&2; exit 1; } # Read the main alias rather than assuming "main": isMain survives a rename. ENVS=$(curl -sf "$BASE/environment?$Q" -H "$AUTH") || fail "list environments" SOURCE=$(echo "$ENVS" | jq -r '.environments[] | select(.isMain) | .alias') [ -n "$SOURCE" ] || fail "no environment is flagged isMain" ALIAS="cookbook$(date +%s)" # 1. Clone. The copy starts as a full duplicate of the source, so you can edit # it without any traffic reaching your change. CLONE=$(curl -sf -X POST "$BASE/environment/$SOURCE/clone?$Q" -H "$AUTH" -H 'Content-Type: application/json' \ -d "{\"name\":\"Cookbook clone\",\"alias\":\"$ALIAS\"}") \ || fail "clone environment '$SOURCE' (a 400 'invalid environment tag' means the source alias does not exist)" echo "$CLONE" | jq -e '.environment.alias | type == "string"' > /dev/null \ || fail "clone returned no environment" cleanup() { curl -sf -X DELETE "$BASE/environment/$ALIAS?$Q" -H "$AUTH" > /dev/null 2>&1 || true; } trap cleanup EXIT # 2. Publish the clone. This promotes its DRAFT to its PUBLISHED version - it # does not touch the environment you cloned from. PUBLISHED=$(curl -sf -X POST "$BASE/environment/$ALIAS/publish?$Q" -H "$AUTH" -H 'Content-Type: application/json' \ -d '{"name":"Cookbook release","description":"Published by the Voiceflow cookbook"}') \ || fail "publish environment '$ALIAS' (422 'expected string, received undefined' at path name means the body omitted the RELEASE name - publish names the release it creates, it is not optional)" # 3. Confirm a release exists. Publishing is the only thing that creates one, # so a non-empty releases list is the proof the promotion happened. AFTER=$(curl -sf "$BASE/environment?$Q" -H "$AUTH") || fail "re-list environments" echo "$AFTER" | jq -e --arg a "$ALIAS" '[.environments[] | select(.alias == $a)] | length == 1' > /dev/null \ || fail "the clone is not in the environment list" echo "$AFTER" | jq -e --arg a "$ALIAS" '.environments[] | select(.alias == $a) | .releases | length > 0' > /dev/null \ || fail "the published clone carries no release" # 4. Remove the clone and prove it is gone. trap - EXIT curl -sf -X DELETE "$BASE/environment/$ALIAS?$Q" -H "$AUTH" > /dev/null || fail "delete the clone" FINAL=$(curl -sf "$BASE/environment?$Q" -H "$AUTH") || fail "re-list after delete" echo "$FINAL" | jq -e --arg a "$ALIAS" '[.environments[] | select(.alias == $a)] | length == 0' > /dev/null \ || fail "the clone still exists after deletion" echo "ok: cloned '$SOURCE' to '$ALIAS', published it ($(echo "$AFTER" | jq -r --arg a "$ALIAS" '.environments[] | select(.alias==$a) | .releases | length') release), deleted it; project is back to $(echo "$FINAL" | jq '.environments | length') environment(s)" ``` ## How it works - [Clone environment](/docs/api-reference/environment/clone-environment) copies an existing environment, agent and all, into a new alias. The source here is whichever environment reports `isMain: true`. - [Publish environment](/docs/api-reference/environment/publish-environment) promotes the draft to live **within that environment**. Publishing a clone cannot affect production, which is the reason to work in one. - A publish requires a release `name`. That name is what appears in the environment's release history, so it is worth making it meaningful. - [Delete environment](/docs/api-reference/environment/delete-environment) removes the clone. This recipe asserts the environment is gone afterwards rather than trusting the delete's status code. - Merging a clone back and splitting live traffic are the other two halves of this workflow. See the [Publishing overview](/docs/api-reference/sections/publishing). ## When it fails | Symptom | Cause | Fix | | --- | --- | --- | | `422` on publish | The request body omitted the release `name` | Send `{"name": "..."}`; publish will not default it | | The clone's alias is not what you asked for | Aliases are normalized and must be unique in the project | Read the alias back from the clone response rather than assuming it | | `releases` is empty after a successful publish | You read the release list from the source environment, not the clone | Query the clone's alias | | Deleting the environment appears to succeed but it still lists | The delete targeted an alias that did not exist, which is not an error | Assert the environment is absent afterwards, as this recipe does | | You cannot delete an environment | It is the main environment | Main cannot be deleted. Clone, work, and delete the clone | # Create and edit a playbook Source: https://www.voiceflow.com/docs/cookbook/create-a-playbook Create a playbook over HTTP, read it back, patch its instructions, and delete it: the full lifecycle every Build resource follows. A playbook is the agentic half of a Voiceflow agent: instructions that drive toward a goal rather than a fixed path through a canvas. This recipe creates one over HTTP, reads it back, edits its instructions, and deletes it, which is the full lifecycle of any resource in the Build section. ## The recipe ```bash main.sh #!/usr/bin/env bash # Recipe: create-a-playbook # # Builds one of an agent's parts from outside the Studio: create a playbook, # read it back, change its instructions, then remove it. The same shape works # for functions, tools and variables. # # Required environment: # VF_PAT personal access token (Settings -> Access tokens), vfp_..._... # VF_PROJECT_ID the project ID (Settings -> General -> Metadata) set -euo pipefail : "${VF_PAT:?set VF_PAT to a personal access token from Settings -> Access tokens}" : "${VF_PROJECT_ID:?set VF_PROJECT_ID to the project ID from Settings -> General -> Metadata}" BASE="https://realtime-api.voiceflow.com/v1/stable" AUTH="Authorization: Bearer $VF_PAT" ENVIRONMENT="${VF_ENVIRONMENT:-main}" Q="projectID=$VF_PROJECT_ID&environmentAlias=$ENVIRONMENT" fail() { echo "FAIL at $1" >&2; exit 1; } # Every build endpoint is scoped to BOTH a project and an environment: the same # project's draft and its other environments hold different playbooks. NAME="cookbook-$(date +%s)" # 1. Create. Only `name` is required - everything else has a default, so the # smallest useful create is one field. CREATED=$(curl -sf -X POST "$BASE/playbook?$Q" -H "$AUTH" -H 'Content-Type: application/json' \ -d "{\"name\":\"$NAME\",\"description\":\"Created by the Voiceflow cookbook\",\"instructions\":[\"Answer the user question in one sentence.\"]}") \ || fail "create the playbook (422 'expected array, received string' means instructions was sent as a string - it is an ARRAY of lines; 400 'invalid environment tag' means environmentAlias does not exist on this project)" ID=$(echo "$CREATED" | jq -r '.playbook.id') echo "$CREATED" | jq -e '.playbook.id | type == "string"' > /dev/null \ || fail "create returned no playbook id" # Clean up even if a later step fails, so a broken run does not leave objects # behind in the project. cleanup() { curl -sf -X DELETE "$BASE/playbook/$ID?$Q" -H "$AUTH" > /dev/null 2>&1 || true; } trap cleanup EXIT # 2. Read it back. Creating and then re-reading is what proves the write landed # in the environment you meant, rather than merely that the call returned. FETCHED=$(curl -sf "$BASE/playbook/$ID?$Q" -H "$AUTH") \ || fail "read the playbook back" echo "$FETCHED" | jq -e --arg n "$NAME" '.playbook.name == $n' > /dev/null \ || fail "the playbook read back under a different name" # 3. Update. PATCH returns a confirmation message, NOT the updated object, so # anything holding the old copy has to refetch. UPDATED=$(curl -sf -X PATCH "$BASE/playbook/$ID?$Q" -H "$AUTH" -H 'Content-Type: application/json' \ -d '{"instructions":["Answer in one sentence.","Then offer to go deeper."]}') \ || fail "update the playbook" echo "$UPDATED" | jq -e '.message | type == "string"' > /dev/null \ || fail "update returned no confirmation message" REFETCHED=$(curl -sf "$BASE/playbook/$ID?$Q" -H "$AUTH") || fail "refetch after update" echo "$REFETCHED" | jq -e '[.playbook.instructions[] | select(test("go deeper"))] | length > 0' > /dev/null \ || fail "the update did not stick" # 4. Delete, and prove it is gone rather than trusting the 200. trap - EXIT curl -sf -X DELETE "$BASE/playbook/$ID?$Q" -H "$AUTH" > /dev/null || fail "delete the playbook" if curl -sf -o /dev/null "$BASE/playbook/$ID?$Q" -H "$AUTH" 2>/dev/null; then fail "the playbook still resolves after deletion" fi echo "ok: created playbook $ID as '$NAME', updated its instructions, refetched to confirm, deleted it and confirmed it no longer resolves" ``` ## How it works - [Create playbook](/docs/api-reference/playbook/create-playbook) takes `name` and `instructions`. Instructions are an **array of strings**, one per line of guidance, not a single block of prose. - [Get playbook](/docs/api-reference/playbook/get-playbook) reads it back. Doing this after a write is what distinguishes a call that returned 200 from a change that actually landed. - [Update playbook](/docs/api-reference/playbook/update-playbook) patches in place, so send only the fields you are changing. - [Delete playbook](/docs/api-reference/playbook/delete-playbook) removes it. This recipe deletes in a `trap` so a failure midway does not leave a playbook behind in your project. - Playbooks call tools and hand off to other playbooks. See the [Build overview](/docs/api-reference/sections/build) for how the pieces connect. ## When it fails | Symptom | Cause | Fix | | --- | --- | --- | | `422` naming `instructions` | `instructions` was sent as a string | Send an array of strings, even for a single instruction | | The playbook exists but the agent never uses it | Creating a playbook does not route to it | Add it to the agent's routing, described in the [Build overview](/docs/api-reference/sections/build) | | A failed run leaves test playbooks behind | The script exited before its delete | Clean up in a `trap cleanup EXIT`, as this recipe does | | `404` on update immediately after create | The ID was read from the wrong nesting level of the response | The ID is at `.playbook.id`, not `.id` | # Find and label a transcript Source: https://www.voiceflow.com/docs/cookbook/find-a-conversation Run a conversation, poll for the transcript it writes, fetch the turns, and attach a custom property so you can label it with your own data. A conversation your agent had becomes a transcript you can search, read, and label. This recipe runs a conversation, finds its transcript, fetches the turns, and attaches a custom property to it, which is how you tag conversations with your own outcome data. ## The recipe ```bash main.sh #!/usr/bin/env bash # Recipe: find-a-conversation # # Has a real conversation, waits for it to be recorded, finds it again by # search, and tags it with your own property so you can filter for it later. # # Required environment: # VF_PAT personal access token (Settings -> Access tokens), vfp_..._... # VF_PROJECT_ID the project ID (Settings -> General -> Metadata) set -euo pipefail : "${VF_PAT:?set VF_PAT to a personal access token from Settings -> Access tokens}" : "${VF_PROJECT_ID:?set VF_PROJECT_ID to the project ID from Settings -> General -> Metadata}" BASE="https://realtime-api.voiceflow.com/v1/stable" AUTH="Authorization: Bearer $VF_PAT" ENVIRONMENT="${VF_ENVIRONMENT:-main}" json() { tr -d '\000-\037'; } fail() { echo "FAIL at $1" >&2; exit 1; } USER_ID="cookbook-$(date +%s)" # 1. Produce something to find. A transcript only exists once a conversation # has happened. curl -sf -X PUT "$BASE/conversation/$USER_ID?projectID=$VF_PROJECT_ID&environmentAlias=$ENVIRONMENT" \ -H "$AUTH" -H 'Content-Type: application/json' \ -d '{"action":{"type":"launch"},"version":"published"}' > /dev/null \ || fail "launch a conversation to record" # 2. Poll rather than search once. Transcripts are written ASYNCHRONOUSLY - # searching immediately after the turn returns nothing, which reads exactly # like a broken query. Measured at roughly five seconds on a quiet project. FOUND="" for _ in $(seq 1 12); do RESULT=$(curl -sf -X POST "$BASE/transcript/search?projectID=$VF_PROJECT_ID" \ -H "$AUTH" -H 'Content-Type: application/json' -d '{"take":25}') \ || fail "search transcripts (note environmentAlias goes in the BODY here, not the query string - as a query parameter it is rejected as an unrecognized key)" FOUND=$(echo "$RESULT" | json | jq -r --arg u "$USER_ID" '[.transcripts[] | select(.userID == $u)][0].id // empty') [ -n "$FOUND" ] && break sleep 2 done [ -n "$FOUND" ] || fail "the conversation never appeared in search after 24s" # 3. Fetch the one transcript. Search returns summaries; the single-transcript # call is what carries the logs. ONE=$(curl -sf "$BASE/transcript/$FOUND?projectID=$VF_PROJECT_ID" -H "$AUTH") \ || fail "fetch transcript $FOUND" echo "$ONE" | json | jq -e '.transcript.id | type == "string"' > /dev/null \ || fail "transcript fetch returned no transcript" # 4. Define your own property. Properties are per PROJECT, not per transcript: # you declare one here, then set its value on individual conversations. PROP=$(curl -sf -X POST "$BASE/transcript-property?projectID=$VF_PROJECT_ID" \ -H "$AUTH" -H 'Content-Type: application/json' \ -d "{\"name\":\"cookbook-$(date +%s)\",\"type\":\"string\"}") \ || fail "create a transcript property (422 'Invalid option' at path type means the type is not one of boolean, number or string - there is no 'text')" PROP_ID=$(echo "$PROP" | jq -r '.property.id') [ -n "$PROP_ID" ] || fail "property create returned no id" curl -sf "$BASE/transcript-property?projectID=$VF_PROJECT_ID" -H "$AUTH" \ | jq -e --arg p "$PROP_ID" '[.properties[] | select(.id == $p)] | length == 1' > /dev/null \ || fail "the new property is missing from the project's property list" curl -sf -X DELETE "$BASE/transcript-property/$PROP_ID?projectID=$VF_PROJECT_ID" -H "$AUTH" > /dev/null \ || fail "delete the transcript property" echo "ok: conversation $USER_ID recorded as transcript $FOUND, refound by search, fetched, and a project property created then removed" ``` ## How it works - [Send](/docs/api-reference/conversation/send) runs the conversation. The `userID` in the path is the conversation's identity, so it is also how you find the transcript afterwards. - Transcripts are written **asynchronously**. A conversation that has just finished is not immediately searchable, which is why this recipe polls rather than reading once. - [Search transcripts](/docs/api-reference/transcript/search-transcripts) filters the list. `environmentAlias` belongs in the request body here, not the query string. - [Get transcript](/docs/api-reference/transcript/get-transcript) returns the turns themselves, which is the payload you would render in your own review tool. - [Create property](/docs/api-reference/transcript-property/create-property) defines a label, typed `string`, `number`, or `boolean`, that you can then set on any transcript. Defining the property and setting its value are separate calls. ## When it fails | Symptom | Cause | Fix | | --- | --- | --- | | Search returns nothing right after a conversation | Transcript writes lag the conversation by a few seconds | Poll with a timeout, as this recipe does | | Search ignores your environment filter | `environmentAlias` was sent in the query string | Send it in the JSON body | | `422` creating a property | `type` was something other than `string`, `number`, or `boolean` | Use one of the three | | Your JSON parser rejects a transcript | Trace payload strings can carry raw control characters | Strip `\000`-`\037` before parsing, as the recipe's `json()` helper does | | The transcript is found but has no turns | You read the search result instead of fetching the transcript | Search returns metadata; the turns come from the get call | # Find your project and environment Source: https://www.voiceflow.com/docs/cookbook/find-your-project Resolve a project ID upward to the workspace that owns it and the environments inside it, and identify which environment is currently live. Nearly every Voiceflow API call needs a `projectID`, and most need an environment alias too. If all you have is a token, the way to find them is to resolve upward from the project rather than listing every workspace you can see. This recipe reads a project, the workspace that owns it, and the environments inside it, then identifies which one is live. ## The recipe ```bash main.sh #!/usr/bin/env bash # Recipe: find-your-project # # Every other call in this cookbook needs a projectID, an environmentAlias, and # often a workspaceID. This resolves all three from the one ID you can read off # the dashboard, and proves the token actually reaches that project. # # Required environment: # VF_PAT personal access token (Settings -> Access tokens), vfp_..._... # VF_PROJECT_ID the project ID (Settings -> General -> Metadata) set -euo pipefail : "${VF_PAT:?set VF_PAT to a personal access token from Settings -> Access tokens}" : "${VF_PROJECT_ID:?set VF_PROJECT_ID to the project ID from Settings -> General -> Metadata}" BASE="https://realtime-api.voiceflow.com/v1/stable" AUTH="Authorization: Bearer $VF_PAT" fail() { echo "FAIL at $1" >&2; exit 1; } # 1. Resolve UPWARD from the project you named, rather than listing workspaces # and taking the first. A personal access token is user-scoped - it reaches # every workspace the account belongs to - so "the first workspace" is an # arbitrary one that may not be yours to touch. Start from the ID you know. PROJECT=$(curl -sf "$BASE/project/$VF_PROJECT_ID" -H "$AUTH") \ || fail "read project $VF_PROJECT_ID (a 401 means the token is wrong or expired; a 404 means this token's account cannot see that project)" WORKSPACE_ID=$(echo "$PROJECT" | jq -r '.project.workspaceID') echo "$PROJECT" | jq -e '.project.workspaceID | type == "string"' > /dev/null \ || fail "project carries no workspaceID" # 2. Confirm the project really sits in the workspace it claims. Reading the # ID back is what turns "I pasted an ID" into "this token can reach it". WORKSPACE=$(curl -sf "$BASE/workspace/$WORKSPACE_ID" -H "$AUTH") \ || fail "read workspace $WORKSPACE_ID" echo "$WORKSPACE" | jq -e --arg w "$WORKSPACE_ID" '.workspace.id == $w' > /dev/null \ || fail "workspace $WORKSPACE_ID did not return itself" # 3. Environments carry the alias every later call needs. A new project has one # called `main`; `isMain` marks it whatever it was later renamed to, so read # the flag rather than hard-coding the string. ENVS=$(curl -sf "$BASE/environment?projectID=$VF_PROJECT_ID" -H "$AUTH") \ || fail "list environments for project $VF_PROJECT_ID" echo "$ENVS" | jq -e '[.environments[] | select(.isMain)] | length == 1' > /dev/null \ || fail "expected exactly one environment flagged isMain" ALIAS=$(echo "$ENVS" | jq -r '.environments[] | select(.isMain) | .alias') echo "ok: project '$(echo "$PROJECT" | jq -r '.project.name')' sits in workspace '$(echo "$WORKSPACE" | jq -r '.workspace.name')' ($WORKSPACE_ID) with $(echo "$ENVS" | jq '.environments | length') environment(s); main alias is '$ALIAS'" ``` ## How it works - [Get project](/docs/api-reference/project/get-project) returns the project along with the `teamID` of the workspace that owns it, so one call gives you both halves of the identity. - [Get workspace](/docs/api-reference/workspace/get-workspace) turns that `teamID` into a name, which is the check worth making before any write: an ID alone never tells you which workspace you are about to change. - [List environments](/docs/api-reference/environment/list-environments) returns every environment in the project. Exactly one carries `isMain: true`, and that is the one the Studio calls Production. - Environments are addressed by **alias**, not by ID, everywhere else in the API. See the [Publishing overview](/docs/api-reference/sections/publishing). - Every call here authenticates with a personal access token. See [Authentication](/docs/api-reference/authentication). ## When it fails | Symptom | Cause | Fix | | --- | --- | --- | | `401` on the first call | The token is wrong, expired, or was pasted with surrounding whitespace | Reissue it from **Settings** then **Access tokens** | | `404` on a project ID copied from the Studio URL | The URL also carries a version or canvas ID after the project ID | Take only the first ID segment after `/project/` | | The workspace name is not the one you expected | A token reaches every workspace its account belongs to, so a valid ID from the wrong workspace still resolves | Assert on the workspace name before any write, as this recipe does | | No environment has `isMain: true` | You queried a project that was never published | Publish once from the Studio, or see [Clone an environment and publish it](/docs/cookbook/clone-and-publish) | # Run your first conversation turn Source: https://www.voiceflow.com/docs/cookbook/first-conversation-turn Start a session, launch the conversation, and send a user message with three curl calls, reading the traces the agent returns at each step. Running a conversation over the API takes two calls: launch the agent, then send what the user said. A conversation is identified by the `userID` in the path, so there is no session to create and nothing to thread between calls. ## The recipe ```bash main.sh #!/usr/bin/env bash # Recipe: first-conversation-turn # # Runs a real conversation against a Voiceflow agent over the REST API: launch # it, then send a user message, reading the traces returned at each step. # # Required environment: # VF_PAT personal access token (Settings -> Access tokens), vfp_..._... # VF_PROJECT_ID the project ID (Settings -> General -> Metadata) set -euo pipefail : "${VF_PAT:?set VF_PAT to a personal access token from Settings -> Access tokens}" : "${VF_PROJECT_ID:?set VF_PROJECT_ID to the project ID}" BASE="https://realtime-api.voiceflow.com/v1/stable" ENVIRONMENT="${VF_ENVIRONMENT:-main}" # A conversation is identified by the userID in the path. There is no separate # session to create: the first call starts one, and later calls with the same # userID continue it. USER_ID="cookbook-$(date +%s)" # The runtime can emit raw control characters inside trace payload strings, # which strict JSON parsers reject. Strip them before jq. json() { tr -d '\000-\037'; } # The runner keys on this prefix to tell a product change (exit 20) from a # broken script (exit 30). Always route step failures through it. fail() { echo "FAIL at $1" >&2; exit 1; } send() { curl -sf -X PUT "$BASE/conversation/$USER_ID?projectID=$VF_PROJECT_ID&environmentAlias=$ENVIRONMENT" \ -H "Authorization: Bearer $VF_PAT" \ -H "Content-Type: application/json" \ -d "$1" } # 1. Launch the conversation. `version` selects the draft or the published # build of the environment, so the same call can exercise either. LAUNCH=$(send '{ "action": { "type": "launch" }, "version": "published" }') \ || fail "launch the conversation (a 401 here means the token is wrong or expired; a 400 saying 'invalid environment tag' means the environmentAlias does not exist on this project)" printf '%s' "$LAUNCH" | json | jq -e '.traces | length > 0' > /dev/null \ || fail "launch returned no traces" # 2. Send a user message to the SAME userID. The agent picks up where the # launch left off - nothing needs to be threaded through by hand. REPLY=$(send '{ "action": { "type": "text", "payload": "What can you help me with?" }, "version": "published" }') \ || fail "send a user message" printf '%s' "$REPLY" | json | jq -e '.traces | length > 0' > /dev/null \ || fail "reply returned no traces" # 3. The agent's words arrive as `text` traces. Assert one came back, so the # recipe proves a real answer rather than just a 200. printf '%s' "$REPLY" | json | jq -e '[.traces[] | select(.type == "text")] | length > 0' > /dev/null \ || fail "reply contained no text trace (a voice agent answers with speak instead)" echo "ok: launch returned $(printf '%s' "$LAUNCH" | json | jq '.traces | length') trace(s), reply returned $(printf '%s' "$REPLY" | json | jq '.traces | length') trace(s), types: $(printf '%s' "$REPLY" | json | jq -c '[.traces[].type] | unique')" ``` ## How it works - The `userID` in the path IS the conversation. Call the same path again and the agent picks up where it left off; call it with a new `userID` and you get a fresh conversation. - `action` is what the user did. `launch` starts the agent from its entry point, `text` sends something they typed. The full set is in the [trace reference](/docs/api-reference/trace-types). - `version` chooses which build answers: `published` runs the live version of the environment, `draft` runs what you are currently editing. A project that has never been published has no published build yet, so use `draft` until the first publish. - The response is an array of [traces](/docs/api-reference/trace-types) describing what the agent did. `text` carries the words a chat agent said; a voice agent answers with `speak` instead. - `environmentAlias` names the environment to run. New projects start with `main`. ## When it fails | Symptom | Cause | Fix | | --- | --- | --- | | `401` | The token is missing, wrong, or expired | Personal access tokens expire, up to a maximum of a year. Create a new one under **Settings** → **Access tokens** | | `400 invalid environment tag` | The `environmentAlias` does not exist on this project | List the real ones with `GET /v1/stable/environment?projectID=...`. New projects use `main`, not `production` | | Launch fails or returns nothing on a brand new project | The environment has never been published, so there is no published build to run | Send `"version": "draft"`, which runs what you are editing and works on a fresh project | | `jq` reports invalid JSON | The runtime emits raw control characters inside trace payload strings | Strip them before parsing, as this recipe does with `tr -d '\000-\037'` | | Traces come back but none is `text` | The agent replied with audio | A voice agent answers with `speak`; assert on that instead | # Runnable API recipes Source: https://www.voiceflow.com/docs/cookbook/overview Task-oriented recipes for the Voiceflow APIs, each an executable script that asserts its own behaviour, with a verification date on every page. Task-oriented, runnable recipes for the Voiceflow APIs. Every recipe is an executable script that asserts its own behaviour, and every one is executed before it ships. ## Conversations Run turns, stream responses, and manage session state over HTTP. - [Run your first conversation turn](/docs/cookbook/first-conversation-turn) ## Build Create and edit the parts an agent is built from. - [Create and edit a playbook](/docs/cookbook/create-a-playbook) ## Manage Find and administer the workspaces and projects agents live in. - [Find your project and environment](/docs/cookbook/find-your-project) ## Publishing Ship changes through environments without touching production. - [Clone an environment and publish](/docs/cookbook/clone-and-publish) ## Observe Find, read, and label the conversations an agent actually had. - [Find and label a transcript](/docs/cookbook/find-a-conversation) ## Insights Score conversations against criteria you define. - [Score a conversation](/docs/cookbook/score-a-conversation) ## QA Replay scripted conversations and assert what the agent does. - [Build a regression test](/docs/cookbook/test-a-conversation-flow) ## Analytics Query usage and cost across projects and workspaces. - [Query token usage and calls](/docs/cookbook/query-token-usage) # Query token usage and calls Source: https://www.voiceflow.com/docs/cookbook/query-token-usage Query token usage, call count, and unique users for a project over a date range, using the one request body every analytics measure shares. Token spend is the number most teams want first, and the analytics endpoints answer it without exporting anything. This recipe queries token usage, call count, and unique users for a project over a date range, and shows that all three take the same request body. ## The recipe ```bash main.sh #!/usr/bin/env bash # Recipe: query-token-usage # # Asks what a project actually spent: total tokens over a date range, bucketed # so you can chart it. Every analytics query takes the same three body fields. # # Required environment: # VF_PAT personal access token (Settings -> Access tokens), vfp_..._... # VF_PROJECT_ID the project ID (Settings -> General -> Metadata) set -euo pipefail : "${VF_PAT:?set VF_PAT to a personal access token from Settings -> Access tokens}" : "${VF_PROJECT_ID:?set VF_PROJECT_ID to the project ID from Settings -> General -> Metadata}" BASE="https://realtime-api.voiceflow.com/v1/stable" AUTH="Authorization: Bearer $VF_PAT" fail() { echo "FAIL at $1" >&2; exit 1; } # Analytics queries are POSTs even though they only read. The scope is in the # PATH (project, workspace or organization) and the window is in the BODY. START=$(date -u -v-30d +%Y-%m-%dT00:00:00.000Z 2>/dev/null || date -u -d '30 days ago' +%Y-%m-%dT00:00:00.000Z) END=$(date -u +%Y-%m-%dT23:59:59.999Z) query() { # $1 = measure curl -sf -X POST "$BASE/analytics/query/$1/project/$VF_PROJECT_ID" \ -H "$AUTH" -H 'Content-Type: application/json' \ -d "{\"startDate\":\"$START\",\"endDate\":\"$END\",\"interval\":\"day\"}" } # 1. Token usage. `interval` buckets the rows; without it the request is # rejected, because there is no implicit default. TOKENS=$(query token-usage) \ || fail "query token usage (422 usually means startDate/endDate/interval is missing or not an ISO-8601 instant)" echo "$TOKENS" | jq -e 'has("usage") or has("rows")' > /dev/null \ || fail "token-usage returned neither usage nor rows" # 2. The same body shape works for every other measure, which is the point: # learn it once and the whole Analytics section is available. INTERACTIONS=$(query interaction-count) || fail "query interaction count" TRANSCRIPTS=$(query transcript-count) || fail "query transcript count" echo "ok: 30-day window $START to $END; token-usage keys $(echo "$TOKENS" | jq -c 'keys'), interaction-count keys $(echo "$INTERACTIONS" | jq -c 'keys'), transcript-count keys $(echo "$TRANSCRIPTS" | jq -c 'keys')" ``` ## How it works - [Query project token usage](/docs/api-reference/analytics/query-project-token-usage) is a `POST`, not a `GET`, because the date range and grouping travel in the body. - Every analytics measure shares one request shape: `startDate`, `endDate`, and an `interval` of `day`, `hour`, or `month`. Swapping the measure in the path is the only change needed, which is why this recipe queries three in a loop. - Dates are ISO 8601. A range whose end precedes its start returns an empty series rather than an error, so assert on the shape you expect. - The same measures exist at workspace and organization scope. See the [Analytics section](/docs/api-reference/sections/analytics) for the full list. - Usage attributed to individual functions, playbooks, and tools is a separate set of measures under the same prefix. ## When it fails | Symptom | Cause | Fix | | --- | --- | --- | | `405 Method Not Allowed` | The request was sent as a `GET` | Analytics queries are `POST` with a JSON body | | An empty `result` array | The range predates the project's first conversation, or the project genuinely had no traffic | Widen the range before concluding the endpoint is broken | | Numbers lower than the Studio dashboard | The dashboard's default range differs from the one you sent | Match the range explicitly rather than comparing defaults | | `422` naming `interval` | An interval outside `day`, `hour`, or `month` | Use one of the three | # Score a conversation Source: https://www.voiceflow.com/docs/cookbook/score-a-conversation End a conversation, define a boolean evaluation, and score the transcript, reading back both the verdict and the reasoning behind it. An evaluation turns a question about agent quality into a number you can track. This recipe runs a conversation, ends it, defines a boolean evaluation, and scores the resulting transcript, returning both the verdict and the model's reasoning. ## The recipe ```bash main.sh #!/usr/bin/env bash # Recipe: score-a-conversation # # Turns "is the agent doing a good job" into a number: define a criterion, run # it against a real conversation, and read the score back off the transcript. # # Required environment: # VF_PAT personal access token (Settings -> Access tokens), vfp_..._... # VF_PROJECT_ID the project ID (Settings -> General -> Metadata) set -euo pipefail : "${VF_PAT:?set VF_PAT to a personal access token from Settings -> Access tokens}" : "${VF_PROJECT_ID:?set VF_PROJECT_ID to the project ID from Settings -> General -> Metadata}" BASE="https://realtime-api.voiceflow.com/v1/stable" AUTH="Authorization: Bearer $VF_PAT" ENVIRONMENT="${VF_ENVIRONMENT:-main}" json() { tr -d '\000-\037'; } fail() { echo "FAIL at $1" >&2; exit 1; } # 1. An evaluation scores a conversation that ALREADY HAPPENED, so there has to # be one. Produce it, then wait: transcripts are written asynchronously and # searching straight after the turn returns nothing. USER_ID="cookbook-$(date +%s)" turn() { curl -sf -X PUT "$BASE/conversation/$USER_ID?projectID=$VF_PROJECT_ID&environmentAlias=$ENVIRONMENT" \ -H "$AUTH" -H 'Content-Type: application/json' -d "$1" } turn '{"action":{"type":"launch"},"version":"published"}' > /dev/null \ || fail "launch a conversation to score" # An evaluation can only target a FINISHED conversation: running against a live # one returns 400 "has not ended yet and cannot be targeted for evaluation". # Sending the `end` action closes it and stamps endedAt. Deleting the # conversation state does NOT - the state goes, the transcript stays open. turn '{"action":{"type":"end"},"version":"published"}' > /dev/null \ || fail "end the conversation" TRANSCRIPT="" for _ in $(seq 1 12); do TRANSCRIPT=$(curl -sf -X POST "$BASE/transcript/search?projectID=$VF_PROJECT_ID" \ -H "$AUTH" -H 'Content-Type: application/json' -d '{"take":25}' \ | json | jq -r --arg u "$USER_ID" '[.transcripts[] | select(.userID == $u and .endedAt != null)][0].id // empty') \ || fail "search transcripts" [ -n "$TRANSCRIPT" ] && break sleep 2 done [ -n "$TRANSCRIPT" ] || fail "no ENDED transcript for this conversation appeared after 24s" # 2. Define the criterion. `type` decides the answer shape: `boolean` for a # yes/no judgement, `option` for one of a fixed set. EVAL=$(curl -sf -X POST "$BASE/evaluation?projectID=$VF_PROJECT_ID" \ -H "$AUTH" -H 'Content-Type: application/json' \ -d "{\"name\":\"cookbook-$(date +%s)\",\"type\":\"boolean\",\"enabled\":true,\"prompt\":\"Did the agent greet the user?\",\"truePrompt\":\"The agent greeted the user.\",\"falsePrompt\":\"The agent did not greet the user.\"}") \ || fail "create the evaluation (422 naming truePrompt, falsePrompt or enabled means the boolean form needs all three - and none of them come back when you READ an evaluation, so the read shape is not a template for the write)" EVAL_ID=$(echo "$EVAL" | jq -r '.evaluation.id') [ -n "$EVAL_ID" ] || fail "evaluation create returned no id" cleanup() { curl -sf -X DELETE "$BASE/evaluation/$EVAL_ID?projectID=$VF_PROJECT_ID" -H "$AUTH" > /dev/null 2>&1 || true; } trap cleanup EXIT # 3. Run it against the one transcript. The transcript is named in the BODY; # the evaluation is in the path. RUN=$(curl -sf -X POST "$BASE/evaluation/$EVAL_ID/run?projectID=$VF_PROJECT_ID" \ -H "$AUTH" -H 'Content-Type: application/json' \ -d "{\"transcriptID\":\"$TRANSCRIPT\"}") \ || fail "run the evaluation against transcript $TRANSCRIPT" # 4. The score comes back FROM THE RUN, synchronously - `value` is the verdict # and `reason` is the model's justification. There is nothing to poll for. echo "$RUN" | jq -e '.result.value != null' > /dev/null \ || fail "the run returned no result value" echo "$RUN" | jq -e '.result.reason | type == "string"' > /dev/null \ || fail "the run returned no reason" echo "$RUN" | jq -e --arg t "$TRANSCRIPT" '.result.transcriptID == $t' > /dev/null \ || fail "the result names a different transcript" # The same score is also written onto the transcript, alongside whatever # default evaluations the project runs automatically. Note the key there is # `id`, not `evaluationID`. SCORED=$(curl -sf "$BASE/transcript/$TRANSCRIPT?projectID=$VF_PROJECT_ID" -H "$AUTH" \ | json | jq -c --arg e "$EVAL_ID" '[.transcript.evaluations[]? | select(.id == $e)][0] // "not yet on the transcript"') \ || fail "refetch the transcript" trap - EXIT curl -sf -X DELETE "$BASE/evaluation/$EVAL_ID?projectID=$VF_PROJECT_ID" -H "$AUTH" > /dev/null || fail "delete the evaluation" echo "ok: scored transcript $TRANSCRIPT with evaluation $EVAL_ID -> value=$(echo "$RUN" | jq -c '.result.value'), cost=$(echo "$RUN" | jq -r '.result.cost'), reason: $(echo "$RUN" | jq -r '.result.reason' | head -c 90)..." ``` ## How it works - [Create evaluation](/docs/api-reference/evaluation/create-evaluation) defines the criterion. A `boolean` evaluation needs `prompt`, `truePrompt`, `falsePrompt`, and `enabled`: the two branch prompts tell the judging model what each verdict means. - An evaluation can only score a **finished** conversation. Sending an `end` action closes it; deleting the conversation state does not, because the state and the transcript are different things. - [Run evaluation](/docs/api-reference/evaluation/run-evaluation) returns the score **synchronously**, in the run response itself. There is nothing to poll for. - The result carries `reason` alongside `value`, so a score always comes with the justification behind it. That is what makes a failing score actionable. - Scores are also written onto the transcript, next to whichever default evaluations the project runs automatically. See the [Insights section](/docs/api-reference/sections/insights). ## When it fails | Symptom | Cause | Fix | | --- | --- | --- | | `400 has not ended yet and cannot be targeted for evaluation` | The transcript is still open | Send `{"action": {"type": "end"}}` to the same `userID` and wait for `endedAt` | | Deleting the conversation state does not end the transcript | State and transcript have separate lifecycles | Use the `end` action | | `422` creating a boolean evaluation | `truePrompt`, `falsePrompt`, or `enabled` was omitted | All three are required alongside `prompt` | | The score never appears on the transcript | You looked for `evaluationID` in the transcript's `evaluations` array | Entries there are keyed by `id` | | The run returns a result but you polled anyway | The verdict is in the run response | Read `.result.value` and `.result.reason` from the `POST` | # Stream a response token by token Source: https://www.voiceflow.com/docs/cookbook/stream-a-response Consume the server-sent event stream from POST /v4/interact/stream with curl, reassemble the reply from completion deltas, and verify it arrives incrementally. `POST /v4/interact/stream` answers with server-sent events instead of JSON, so your interface can show the agent's reply while the model is still writing it. Each frame is one trace, and the stream closes with a single `end` event. This recipe opens a session, streams a turn with `completionEvents` on, reassembles the reply from the token deltas, and checks that the frames really did arrive one at a time rather than in a single buffered lump. It needs nothing but `curl` and `jq`. ## The recipe ```bash main.sh #!/usr/bin/env bash # Recipe: stream-a-response # # Consumes /v4/interact/stream, which answers with server-sent events rather # than JSON: one `event: trace` frame per trace, then a final `event: end`. # Proves the frames arrive incrementally by stamping each one with the second # it was read in, and reassembles the agent's reply from the token deltas. # # Required environment: # VF_API_KEY project API key (Settings -> API keys), VF.DM.... # VF_PROJECT_ID the project ID (Settings -> General -> Metadata) set -euo pipefail : "${VF_API_KEY:?set VF_API_KEY to a project API key}" : "${VF_PROJECT_ID:?set VF_PROJECT_ID to the project ID}" BASE="https://general-runtime.voiceflow.com" USER_ID="cookbook-$(date +%s)" WORK=$(mktemp -d) trap 'rm -rf "$WORK"' EXIT # The runtime can emit raw control characters inside trace payload strings, # which strict JSON parsers reject. Strip them before jq. json() { tr -d '\000-\037'; } fail() { echo "FAIL at $1" >&2; exit 1; } # 1. Start a session. Authenticates with the PROJECT API KEY. SESSION=$(curl -sf -X POST "$BASE/v4/project/$VF_PROJECT_ID/session" \ -H "Authorization: $VF_API_KEY" \ -H "Content-Type: application/json" \ -d "{ \"userID\": \"$USER_ID\" }") || fail "start session (a 401 here means the API key is wrong)" SESSION_KEY=$(printf '%s' "$SESSION" | json | jq -er '.sessionKey') || fail "no sessionKey in the response" # 2. Launch the conversation, streamed. Every call below authenticates with # the SESSION KEY, never the API key. curl -sfN -X POST "$BASE/v4/interact/stream" \ -H "Authorization: $SESSION_KEY" \ -H "Content-Type: application/json" \ -d '{ "action": { "type": "launch" } }' > "$WORK/launch" \ || fail "launch (a 401 here means the API key was sent where the session key belongs)" grep -q '^event: end$' "$WORK/launch" || fail "the launch stream never sent its end event" # 3. Send a user message. `completionEvents` asks the runtime to emit the # generated text token by token instead of one finished text trace. # # Read the body line by line as it arrives, stamping each line with the # seconds elapsed since the request went out. SECONDS is a shell builtin, # so the stamp costs no subprocess and cannot itself delay the read. SECONDS=0 curl -sfN -D "$WORK/headers" -X POST "$BASE/v4/interact/stream" \ -H "Authorization: $SESSION_KEY" \ -H "Content-Type: application/json" \ -d '{ "action": { "type": "text", "payload": "In a few sentences, what can you help me with?" }, "config": { "completionEvents": true } }' \ | while IFS= read -r line; do printf '%s %s\n' "$SECONDS" "$line"; done > "$WORK/turn" \ || fail "stream the turn (a 401 here means the API key was sent where the session key belongs)" grep -qi '^content-type: text/event-stream' "$WORK/headers" \ || fail "the response was not an event stream (check the Content-Type header)" # Each frame is three lines - `event: `, `id: `, `data: ` - # followed by a blank line. Split the stamp back off before parsing. BODY=$(cut -d' ' -f2- < "$WORK/turn") EVENTS=$(printf '%s\n' "$BODY" | sed -n 's/^event: //p') FRAMES=$(printf '%s\n' "$BODY" | sed -n 's/^data: //p' | json | jq -s '.') \ || fail "a data: line was not a complete JSON document" printf '%s\n' "$EVENTS" | grep -qx 'trace' || fail "the stream carried no trace events" printf '%s\n' "$EVENTS" | tail -1 | grep -qx 'end' || fail "the stream did not terminate with an end event" # The generated text arrives as completion traces: one `start`, many # `content` deltas, one `end`. Reassembling them is the whole point. printf '%s' "$FRAMES" | jq -e 'map(select(.type == "completion") | .payload.state) | index("start") != null and index("end") != null' > /dev/null \ || fail "no completion trace pair (state start .. end) in the stream" DELTAS=$(printf '%s' "$FRAMES" | jq '[.[] | select(.type == "completion" and .payload.state == "content")] | length') [ "$DELTAS" -gt 1 ] || fail "expected many content deltas, got $DELTAS (is completionEvents set in the request BODY?)" REPLY=$(printf '%s' "$FRAMES" | jq -rj '.[] | select(.type == "completion" and .payload.state == "content") | .payload.content') [ -n "$REPLY" ] || fail "the reassembled reply was empty" # A turn that exhausted the workspace's credits reports it as a debug trace, # not as a transport error. Catch it here rather than shipping a blank reply. if printf '%s' "$FRAMES" | jq -e 'any(.[]; tostring | test("credit_limit_reached"))' > /dev/null; then fail "the turn hit the workspace credit limit" fi # Incremental delivery is the claim this endpoint makes. If the response were # buffered, every frame would be read in the same second. FIRST=$(head -1 "$WORK/turn" | cut -d' ' -f1) LAST=$(tail -1 "$WORK/turn" | cut -d' ' -f1) SPREAD=$((LAST - FIRST)) [ "$SPREAD" -ge 1 ] || fail "every frame arrived in the same second, which is what a buffered response looks like" echo "ok: $(printf '%s\n' "$EVENTS" | grep -cx trace) trace event(s) over ${SPREAD}s, $DELTAS content deltas reassembling to ${#REPLY} characters, types: $(printf '%s' "$FRAMES" | jq -c '[.[] | .type // empty] | unique')" ``` ## How it works - [Interact (stream)](/docs/api-reference/v4interact/interact-stream) sends one `event: trace` frame per trace and closes with a single `event: end`, whose `data` is an empty object. - The frames carry the same [trace types](/docs/api-reference/trace-types) that the non-streaming endpoint returns as an array, so a renderer written for one works for the other. - `config.completionEvents` replaces the finished `text` trace with `completion` deltas. [Completion events](/docs/api-reference/conversations-api/completion-events) describes the `start`, `content`, and `end` states you stitch back together. - Every streamed request authorizes with the session key from [start session](/docs/api-reference/v4interact/start-session-specific-environment), never with the project API key. See [Authentication](/docs/api-reference/authentication). - If you only need the finished reply, the non-streaming endpoint is simpler: see [Run your first conversation turn](/docs/cookbook/first-conversation-turn). ## When it fails | Symptom | Cause | Fix | | --- | --- | --- | | `?completion_events=true` changes nothing | On `/v4/interact/stream` the flag is read from the request body, not the query string | Send `"config": { "completionEvents": true }` | | One `text` trace where you expected `completion` deltas | Only generated text streams token by token. A reply from a fixed Message step arrives whole | See [Completion events](/docs/api-reference/conversations-api/completion-events) | | `401` with a JSON body on a stream request | You passed the project API key instead of the session key | Pass the `sessionKey` from the start session call | | Your SSE parser emits an empty first frame | The response body opens with a blank line before the first `event:` field | Ignore frames that carry no `event:` field | | Every frame lands at the same moment | Something between you and the runtime buffered the response | Disable buffering in your client. `curl` needs `-N` | | Your JSON parser rejects a `data:` line | Trace payload strings can carry raw control characters, which strict parsers reject | Strip `\000`-`\037` before parsing, as the recipe's `json()` helper does | # Build a regression test Source: https://www.voiceflow.com/docs/cookbook/test-a-conversation-flow Build a regression test from a user turn, an agent turn, and two kinds of check, then run it and poll for the number of checks that passed. A regression test replays a scripted conversation and asserts what the agent does, so a prompt change that breaks a scenario fails loudly. This recipe builds one from a user turn, an agent turn, and two kinds of check, then runs it and reads the verdict. ## The recipe ```bash main.sh #!/usr/bin/env bash # Build a regression test from turns and checks, then run it. set -euo pipefail : "${VF_PAT:?set VF_PAT to a personal access token}" : "${VF_PROJECT_ID:?set VF_PROJECT_ID to the project to test}" BASE="https://realtime-api.voiceflow.com/v1/stable" AUTH="Authorization: Bearer $VF_PAT" ENVIRONMENT="${VF_ENVIRONMENT:-main}" Q="projectID=$VF_PROJECT_ID&environmentAlias=$ENVIRONMENT" fail() { echo "FAIL at $1" >&2; exit 1; } json() { tr -d '\000-\037'; } post() { curl -sf -X POST "$BASE/$1?$Q" -H "$AUTH" -H 'Content-Type: application/json' -d "$2" | json } # 1. A test is the container. Turns hang off it, checks hang off a turn. TEST_ID=$(post test '{"name":"Cookbook: greeting regression"}' \ | jq -er '.test.id') \ || fail "create the test (a 401 here means VF_PAT is wrong)" cleanup() { curl -sf -X DELETE "$BASE/test/$TEST_ID?$Q" -H "$AUTH" > /dev/null || true; } trap cleanup EXIT # 2. A user turn is what the person SAYS. `response` holds the utterance, and # `variableStates` seeds variables for the turn - an empty array means # "whatever the agent starts with". USER_TURN=$(post test-turn "$(jq -nc --arg t "$TEST_ID" \ '{testID:$t, type:"user", payload:{response:"Hi, what can you help me with?", variableStates:[]}}')" \ | jq -er '.turn.id') \ || fail "add the user turn" # 3. An agent turn is where you ASSERT. It carries no expected text of its own: # the assertions are checks attached to it. `sequential` controls whether its # checks must hold in order. AGENT_TURN=$(post test-turn "$(jq -nc --arg t "$TEST_ID" \ '{testID:$t, type:"agent", payload:{sequential:false}}')" \ | jq -er '.turn.id') \ || fail "add the agent turn" # 4. Two kinds of assertion on a response, and the choice matters: # equal - exact string match. Brittle against a model, right for a # scripted reply. # llm_eval - a model judges the reply against a prompt. Use this for # anything an agent phrases freely. CHECK_LLM=$(post test-check "$(jq -nc --arg t "$AGENT_TURN" \ '{type:"response", turnID:$t, payload:{type:"llm_eval", prompt:"The reply greets the user and offers help."}}')" \ | jq -er '.check.id') \ || fail "add the llm_eval check" # `routing` and `tool` checks assert BEHAVIOUR rather than text - that the agent # handed off to a given playbook, or called a given tool. post test-check "$(jq -nc --arg t "$AGENT_TURN" \ '{type:"response", turnID:$t, payload:{type:"equal", value:"Hi there! I am here to help with Acme Corp support."}}')" \ | jq -e '.check.id' > /dev/null \ || fail "add the equal check" # 5. Running is ASYNCHRONOUS. The POST returns status "idle" with # passedChecks: null - the verdict is not in that response, so poll for it. RUN_ID=$(post test-run "$(jq -nc --arg t "$TEST_ID" '{testID:$t}')" \ | jq -er '.run.id') \ || fail "start the run" for _ in $(seq 1 20); do RUN=$(curl -sf "$BASE/test-run/$RUN_ID?$Q" -H "$AUTH" | json) \ || fail "poll the run" STATUS=$(echo "$RUN" | jq -r '.run.status') # Break on anything that is NOT still pending, rather than listing the # terminal states. A run that ends "failed" is terminal, and an allow-list # that omits one state polls for the full timeout before noticing. case "$STATUS" in idle | running) ;; *) break ;; esac sleep 3 done case "$STATUS" in idle | running) fail "the run was still $STATUS after 60s" ;; esac # 6. A finished run reports how many checks passed out of how many ran. Note # that a FAILING test is a successful API call: the run completing and the # checks passing are different questions, and CI should key on the second. echo "$RUN" | jq -e '.run.passedChecks != null' > /dev/null \ || fail "the run finished with no check results" TOTAL=$(echo "$RUN" | jq -r '.run.totalChecks') PASSED=$(echo "$RUN" | jq -r '.run.passedChecks') [ "$TOTAL" = "2" ] || fail "expected 2 checks on the run, got $TOTAL" # This test is BUILT to half-fail, and that is the lesson: the llm_eval check # passes because the agent did greet and offer help, while the equal check # fails on wording no one can predict. Assert the run's own verdict rather than # a green light - if both passed here, the exact-match check would be matching # by luck. [ "$PASSED" -ge 1 ] || fail "no check passed - the agent did not greet at all" trap - EXIT cleanup echo "ok: test $TEST_ID ran as $RUN_ID -> status=$STATUS, $PASSED/$TOTAL checks passed (llm_eval $CHECK_LLM on turn $AGENT_TURN, after user turn $USER_TURN)" ``` ## How it works - [Create test](/docs/api-reference/test/create-test) makes the container. Turns belong to a test, and checks belong to a turn, so the three build a hierarchy rather than a flat list. - [Create turn](/docs/api-reference/test-turn/create-turn) adds either side of the conversation. A `user` turn carries the utterance in `payload.response`; an `agent` turn carries no expected text at all, only a `sequential` flag controlling whether its checks must hold in order. - [Create check](/docs/api-reference/test-check/create-check) is where the assertion lives. A `response` check compares what the agent said, while `routing` and `tool` checks assert behaviour: that it handed off to a given playbook, or called a given tool. - A response check is `equal` or `llm_eval`. Use `equal` for a scripted reply and `llm_eval` for anything the agent phrases freely, since exact matching against a model is a test that fails on rewording alone. - [Create run](/docs/api-reference/test-run/create-run) starts execution and returns immediately with `status: "idle"`. Poll [get run](/docs/api-reference/test-run/get-run) for the verdict. ## When it fails | Symptom | Cause | Fix | | --- | --- | --- | | `422` naming `payload.response` | A user turn was sent with `message` instead | The field is `response`, alongside `variableStates` | | `422` naming `payload.sequential` | An agent turn omitted the flag | Send `{"sequential": false}` unless the checks are ordered | | `Invalid discriminator value. Expected 'equal' \| 'llm_eval'` | A response check used a type such as `contains` | Only those two exist | | `passedChecks` is `null` | The run has not finished | Poll until `status` leaves `idle` and `running` | | An `equal` check fails on a correct answer | The agent reworded a reply no one pinned | Use `llm_eval` for generated text | | The run polls for the full timeout | The status allow-list omits a terminal state such as `failed` | Break on anything that is not `idle` or `running` | # Build an advanced FAQ agent Source: https://www.voiceflow.com/docs/courses/advanced-knowledge-base Create a support agent for different user types using metadata filtering to serve the right content. In this tutorial, you will build a support agent for GoRoute, a fictional ride-sharing and delivery platform. GoRoute has two user types, drivers and couriers, each with different policies, FAQs, and workflows. You'll import content from two separate help sites using LLM chunking strategies, tag each with metadata, and build playbooks that filter the knowledge base so drivers only see driver content and couriers only see courier content. Before you start, visit [goroute.demo.voiceflow.com](https://goroute.demo.voiceflow.com/) to explore the GoRoute website and see the content you'll be importing into the knowledge base. From the [Dashboard](https://creator.voiceflow.com), go to **Projects** → **New project**. Name your project "GoRoute Support", set the type to **Chat**, and select **Start from scratch**. Click **Knowledge Base** in the left sidebar, then **Add data sources**. Select **Sitemap** and paste the URL for the driver help center: ```text https://goroute.demo.voiceflow.com/driver ``` Voiceflow will crawl the sitemap and import all pages under this URL. Under the **Folder** dropdown, click **Create folder** and name it "Driver". This keeps your driver content organized and easy to find as your knowledge base grows. Under **LLM chunking strategies**, enable the following three options: - **Smart chunking**: splits content into logical, topic-based sections, which works well for help articles that cover multiple topics on a single page. - **FAQ optimization**: generates sample questions each section could answer, improving retrieval when users phrase things differently than the source content. - **Remove HTML and noise**: cleans up messy formatting from web pages so the agent processes clean text. Different types of content benefit from different chunking strategies. The combination above works well for help center sites, but when you import your own data, experiment with different strategies to find what gets the best results for your content. Before importing, click **\+** in the **Metadata** section and add the following tag: | Key | Value | | --- | --- | | `user_type` | `driver` | This metadata tag is what allows you to filter queries later so the agent only retrieves driver-specific content when helping a driver. Click **Add data sources** again. Select **Sitemap** and paste the courier help center URL: ```text https://goroute.demo.voiceflow.com/courier ``` Create a new folder called "Courier" under the **Folder** dropdown. Then select the same three **LLM chunking strategies** as before: **Smart chunking**, **FAQ optimization**, and **Remove HTML and noise**. Add the metadata tag: | Key | Value | | --- | --- | | `user_type` | `courier` | After both imports finish, your knowledge base will contain content from both help centers. Each article will be tagged based on `user_type`. You can verify this by clicking on a data source and checking its metadata in the right panel. You'll also notice that each page has been split into multiple chunks based on the sections of the page. This is the LLM chunking strategies at work, breaking content into logical, topic-based pieces so the agent can retrieve more precise answers. Click the **Agent** tab. You'll configure two things here: the **Global prompt** and the **Instructions**. The global prompt defines your agent's personality and applies to every turn. Instructions tell the agent how to route requests to the right skill. In the **Global prompt** section, define your agent's identity: ```text highlight={3-4} # Personality You are a support agent for GoRoute, a ride-sharing and delivery platform. You help both drivers and couriers with questions about the platform, policies, earnings, and troubleshooting. # Tone Friendly, clear, and efficient. Keep answers concise. Use simple language, as many users are checking between rides or deliveries. # Guardrails Never provide information meant for drivers to couriers, or vice versa. The policies are different and mixing them up causes real problems. If you're unsure which user type someone is, ask before answering. Never guess at pay rates, bonuses, or policy details. ``` Then in the **Instructions** field, add routing logic. You'll reference the playbooks you create in the next steps, so come back here to update the skill names if needed: ```text # Identify the user At the start of the conversation, determine whether the user is a driver or a courier. If it's not clear from their first message, ask: "Are you a GoRoute driver or a courier?" # Skills Route to the Driver Support playbook when the user is a driver and asks about ride policies, earnings, vehicle requirements, driver app issues, or any driver-specific topic. Route to the Courier Support playbook when the user is a courier and asks about delivery policies, earnings, bag requirements, courier app issues, or any courier-specific topic. If the user asks about something that applies to both (like account settings or payment methods), route to whichever playbook matches the user type they identified as. ``` Finally, toggle off the **Knowledge base** in the **System tools** section of the sidebar. In this tutorial, you only want the knowledge base queried from inside playbooks where metadata filtering is configured. Leaving it on at the agent level would let the agent query all content without any filtering, which could return the wrong information for the user type. In the **Agent** tab, click **\+** in the **Skills** panel to create a new [playbook](/docs/documentation/build/playbooks). Name it "Driver Support". Set the **Trigger**: ```text Answers questions about GoRoute driver topics including ride policies, earnings, vehicle requirements, and driver app issues. ``` Then write the playbook **instructions**: ```text # Goal Help the driver find accurate answers to their questions about driving on the GoRoute platform. # Steps 1. Search the knowledge base for information related to the driver's question. 2. Provide a clear, concise answer based on what you find. 3. If the answer involves multiple steps (like a setup process or troubleshooting flow), walk through them one at a time. 4. If no relevant information is found, let the driver know and offer to connect them with the GoRoute driver support team. # Important Only use information retrieved from the knowledge base. Do not answer driver questions from general knowledge. GoRoute policies are specific to the platform. ``` In the **System tools** section on the right, enable the **Knowledge base** tool. Then, click on the tool to expand its settings. Open **Advanced query settings**, then under **Metadata filtering** click **\+** to add a filter: | Key | Value | | --- | --- | | `user_type` | `driver` | This ensures that when the agent runs the Driver Support playbook, it only retrieves content tagged with `user_type: driver`. Courier content will never appear in the results. Create another playbook called "Courier Support". Set the **Trigger**: ```text Answers questions about GoRoute courier topics including delivery policies, earnings, bag requirements, and courier app issues. ``` Then write the playbook **instructions**: ```text # Goal Help the courier find accurate answers to their questions about delivering on the GoRoute platform. # Steps 1. Search the knowledge base for information related to the courier's question. 2. Provide a clear, concise answer based on what you find. 3. If the answer involves multiple steps, walk through them one at a time. 4. If no relevant information is found, let the courier know and offer to connect them with the GoRoute courier support team. # Important Only use information retrieved from the knowledge base. Do not answer courier questions from general knowledge. GoRoute policies are specific to the platform. ``` Then configure metadata filtering on this playbook's Knowledge base tool. Open **Advanced query settings**, click **\+** next to **Metadata filtering**, and this time set the value to `courier`: | Key | Value | | --- | --- | | `user_type` | `courier` | Click **Run** in the top-right corner to test your agent. Try sending these messages to verify routing and filtering are working correctly: ```text Driver test: "I'm a driver. What are the vehicle requirements to drive for GoRoute?" Courier test: "Hey, I do deliveries for GoRoute. What kind of bag do I need?" Ambiguous test: "How do I update my payment info?" ``` Check the conversation logs to confirm: - The correct playbook was triggered for each user type - The knowledge base query results only contain content matching the right `user_type` metadata tag - The ambiguous test prompts the agent to ask which user type they are, unless you've already mentioned your user type. ## Tips for building filtered knowledge bases - **Verify your filtering.** Monitor the logs panel while testing and click into the logs labelled `[Agent] knowledge base search completed`. You should only see chunks tagged with the correct `user_type`. If you see mixed results, double-check your metadata tags on the data sources and the filter configuration in each playbook. - **Combine chunking strategies for web content.** Smart chunking splits pages into logical sections, FAQ optimization helps match varied user phrasing, and Remove HTML and noise cleans up web formatting. Together, they significantly improve retrieval quality for help center content. - **Scale this pattern.** You can add more user types (eg: `user_type: restaurant_partner`) by importing more content with new metadata values and creating additional playbooks with the corresponding filters. ## What's next? You've built an agent that serves different content to different user types using metadata filtering. Explore these resources to go deeper. Advanced configuration for knowledge base queries, including custom queries and query re-writing. Programmatically import data into your knowledge base, ensuring it always stays up to date. # Build your first workflow Source: https://www.voiceflow.com/docs/courses/build-your-first-workflow Create a deterministic flow with a financial disclaimer, buttons, and an embedded playbook for guided conversations. In this tutorial, you'll build a [workflow](/docs/documentation/build/workflows) for NestEgg, a fictional Canadian financial guidance platform. Workflows are step-by-step flows where every step runs in sequence, exactly as you designed it, with no room for the agent to improvise. They're ideal for processes that must happen in a specific order, like compliance disclaimers, identity verification, or onboarding checklists. When a user asks Nesty, NestEgg's assistant, for financial advice, the agent will route to the workflow you build. The workflow will display a legal disclaimer, present [buttons](/docs/documentation/build/steps/buttons) to accept or decline, and hand off to a [playbook](/docs/documentation/build/steps/playbook) for a flexible financial conversation if the user agrees. If they decline, control returns to the [agent](/docs/documentation/build/global-prompt). This should take about 5 minutes. Open the NestEgg Agent template below, choose a workspace to import it to, then click **Import** to add it to your workspace. Pre-configured NestEgg agent with playbooks and knowledge base content. The template comes pre-configured with a global prompt, instructions, and knowledge base content for NestEgg. Two playbooks, **Explain NestEgg** and **Glossary Helper**, are already attached to the agent and handle platform questions and financial term definitions. A third playbook, **Explore Finances**, is included but not yet connected. You'll embed it inside the workflow you're about to build. The only piece missing is a **Financial Guidance** workflow that gates financial advice behind a legal disclaimer. You'll build that now. In the **Agent** tab, click **\+** in the **Skills** panel to create a new [workflow](/docs/documentation/build/workflows). Name it "Financial guidance". Set the **Trigger** to: ```text Displays the financial disclaimer and collects the user's agreement before providing financial guidance. ``` Then click **Create workflow**. You'll be taken to the canvas where you'll build the workflow step by step. Drag a [**Message** step](/docs/documentation/build/steps/message) onto the canvas and connect it to the Start chip. If you don't see the Message step, press the **⌵** button at the top of the step sidebar to show scripted steps. In the message step, write the following disclaimer message: ```text Before we continue, please review the following disclaimer: NestEgg provides general financial education and information only. Nothing shared in this conversation constitutes personalized financial advice, investment recommendations, or a solicitation to buy or sell any financial product. Your financial situation is unique. Please consult a licensed financial advisor before making any investment decisions. ``` Leave **Wait for user input** disabled. The buttons in the next step will handle that. Drag a [**Buttons** step](/docs/documentation/build/steps/buttons) onto the bottom of your Message step to add buttons to your message. Then, add two buttons: - `I agree` - `I don't agree` Each button creates its own connection point on the step. You'll wire each one to a different path. Drag a [**Playbook** step](/docs/documentation/build/steps/playbook) onto the canvas and connect it to the "I agree" button's connection point. If you don't see the Playbook step, click the **⌵** button at the top of the step sidebar to switch back to agentic steps. Then, click into the Playbook step you just added and select the "**Explore finances**" playbook. You should also ensure the **Playbook talks first** is enabled so the playbook greets the user immediately after they accept the disclaimer. Once you select the playbook, you'll see an [exit condition](/docs/documentation/build/playbooks) called "User is finished exploring" appear as a connection point on the step. This is how the playbook signals to the workflow that the conversation is finished. Leave it unconnected - when a connection point in a workflow has no target, control passes back to your [agent](/docs/documentation/build/global-prompt) automatically. Drag a [**Message** step](/docs/documentation/build/steps/message) onto the canvas and connect it to the "I don't agree" button's connection point. Write a short acknowledgment: ```text No problem. If you change your mind, just ask and I can bring up the disclaimer again. Is there anything else I can help you with? ``` Enable **Wait for user input** on this message so the workflow pauses for the user to respond before handing off to the agent. Leave the output port unconnected. This returns control to the agent. Click **Run** in the top-right corner to test your agent. Try the following: **Trigger the workflow:** ```text "What's the difference between a TFSA and an RRSP?" ``` The agent should route to the Financial Guidance workflow. You should see the disclaimer message followed by the two buttons. **Accept the disclaimer:** Click "I agree". The Explore Finances playbook should take over and start a conversation about your financial question. Try asking follow-up questions to see the playbook navigate the conversation. **Decline the disclaimer:** This time, open the **Agent** tab and press the **Run** button in the top right of that tab. This will allow you to fully test whether the workflow passes control back to the Agent after the user fails to agree to the terms and conditions. Ask the same question as before - `"What's the difference between a TFSA and an RRSP?"` , but this time click **I don't agree**. The Agent will switch to the financial guidance workflow and you should see the acknowledgment message, and then be returned to the agent. Then, try asking a non-financial question to confirm the agent is back in control: `Tell me about NestEgg`. You'll see that this question is still answered using the **Explain NestEgg** playbook, as this doesn't require the terms to be accepted. ## Tips for building workflows - **Use workflows for things that must happen in order.** Legal disclaimers, identity verification, onboarding checklists. Anywhere you need guaranteed steps in a guaranteed sequence, use a workflow. If the conversation can be flexible, use a [playbook](/docs/documentation/build/playbooks) instead. - **Embed playbooks for flexible moments.** The Explore Finances playbook inside this workflow is a good example. The disclaimer and button choice are deterministic. They happen the same way every time. But the financial conversation afterward is open-ended, so a playbook handles it. This pattern is useful any time you need a controlled entry point followed by a free-form conversation. - **Leave output ports unconnected to return to the agent.** When a step in a workflow has an empty output port, control passes back to your agent. You don't need to explicitly route back, just leave the port empty. - **Remember the user's agreement with variables.** Right now, the disclaimer appears every time the workflow runs. In a production agent, you could use a [set step](/docs/documentation/build/steps/set) to save a [variable](/docs/documentation/build/data/variables) like `{disclaimer_accepted}` after the user agrees, and a [condition step](/docs/documentation/build/steps/condition) at the start of the workflow to skip the disclaimer if it's already been accepted. ## What's next? You've built your first workflow with a deterministic disclaimer flow and an embedded playbook. Explore these resources to go deeper. Learn about all the steps available in workflows, nesting workflows, and more. Write better playbook instructions, configure exit conditions, and add tools. # Chat agent quick start guide Source: https://www.voiceflow.com/docs/courses/chat-agent-quick-start Build and launch your first chat agent in 3 minutes or less. Create, configure, and publish your first chat agent on Voiceflow. No coding required. From the [Dashboard](https://creator.voiceflow.com), go to **Projects** → **New project**. Name your project, keep the default settings, and select **Start from scratch**. In the **Global agent** description, click **generate** and describe your agent's actions, goals, and personality. Voiceflow will automatically create a detailed prompt in seconds. For example: ```text You are Alex, a friendly customer support agent for AcmeCorp. Help customers with orders, returns, billing, and product questions. Be concise, empathetic, and professional. If you can't resolve an issue, offer to create a support ticket. ``` To give your agent real information to reference, click the **Knowledge Base** icon in the left sidebar. You can add context by: - **Uploading documents** - PDFs, text files, or CSVs (e.g., your FAQ, product catalog, or return policy). - **Pasting a URL** - Your agent will index the content directly from the page. - **Adding text manually** - Paste in key information directly. Your agent will use this knowledge to answer questions accurately. Back in the **Agent** tab, click **Publish** in the top-right corner. Your agent is now ready to use! That's it! Your agent is now deployed and available to use. Try it out using the widget in the bottom-right corner of the editor. ## Tips for refining your chat agent - **Start simple.** Get a basic agent working first, then layer on complexity. You can add deterministic [Workflow](/docs/documentation/build/workflows) steps and agentic [Playbooks](/docs/documentation/build/playbooks) to get the most out of your agent. - **Use your knowledge base.** The more relevant content you upload, the more accurate your agent's responses will be. - **Iterate on your prompt.** Small tweaks to the system prompt can make a big difference in response quality. ## What's next? You've built your first chat agent on Voiceflow. Now learn how to build production-grade agents with our documentation. Complete specialized tasks using AI. Add logic and determinism to your agent. / # Tutorials Source: https://www.voiceflow.com/docs/courses/home Learn how to build powerful, production-ready AI agents using Voiceflow. ## Get started Build and deploy your first chat AI agent in 3 minutes or less. Build and deploy your first voice AI agent in 3 minutes or less. ## Improve your agent Create a deterministic flow with a disclaimer, buttons, and an embedded playbook. Connect your agent to third-party tools so it can interact with the outside world. Create a support agent grounded in FAQ data from your knowledge base. Serve different content to different user types using metadata filtering. Create a deterministic flow with a disclaimer, buttons, and an embedded playbook. Gate your agent behind identity verification using an initialization workflow, playbooks, and API calls. ## Migrate Discover how to migrate your Voiceflow v4 project to the new environments system, featuring branching, A/B tests, and more. # Build an authentication workflow Source: https://www.voiceflow.com/docs/courses/initialization-workflow Gate your agent behind identity verification using an initialization workflow, playbooks, and API calls. An [initialization workflow](/docs/documentation/build/framework/initialization-workflow) runs automatically at the start of every conversation, before the agent takes control. It gives you a deterministic space to handle setup like loading user data, verifying identity, or collecting required information. Once the workflow completes, control passes to your agent and the conversation continues normally. In this tutorial, you'll build an initialization workflow for GoRoute, a fictional ride-sharing and delivery platform. Before the agent can help a user, the workflow will collect their email and PIN, validate the credentials against an API, and only let the conversation continue once authentication succeeds. This should take about 10 minutes. Open the GoRoute support template below, choose a workspace to import it to, and click **Import** to add it to your workspace. Then, open the project. Pre-configured GoRoute support agent with playbooks and knowledge base content. The template comes pre-configured with a global prompt, instructions, knowledge base content, and playbooks for GoRoute's driver and courier support. It also includes a pre-built **GoRoute authenticator** [API tool](/docs/documentation/build/tools/api-tool) that validates user credentials against the GoRoute API. You'll build an authentication layer on top of this so the agent knows who it's talking to before answering any questions. Open the **Framework** tab in the sidebar and click **Add workflow** on the initialization node, then **Create workflow**. Name it "Authentication" and set the **Trigger** to: ```text Authenticates the user by collecting their email and PIN before allowing access to the agent. ``` Click **Create workflow**. To open the workflow on the canvas, click the pencil icon next to its name. Drag a [**Playbook** step](/docs/documentation/build/steps/playbook) onto the canvas and connect it to the Start chip. Click on the step, select **New playbook**, and name it "Authenticate user". Set the **Trigger** to: ```text Collects the user's email address and 4-digit PIN code for authentication. ``` Click **Create playbook**. In the playbook editor, write the following **instructions**: ```text # Goal Collect the user's email address and 4-digit PIN code so they can be authenticated against the GoRoute system. # Steps 1. Check the conversation history. If this is the start of the conversation, greet the user and let them know you need to verify their identity before you can help. If the user has already attempted to log in and been sent back, let them know the credentials didn't match and ask them to try again. 2. Ask for their email address associated with their GoRoute account. 3. Once you have the email, ask for their 4-digit PIN code. 4. As soon as you have both values, use the GoRoute authenticator tool to validate their credentials. 5. If the tool returns the user's account details, use the User is authenticated tool to exit. 6. If the tool returns an error, let the user know the credentials didn't match and start again from step 2. # Important - Do not accept anything other than an email format for the email field. - The PIN must be exactly 4 digits. - If the user provides both email and PIN in a single message, accept them both. - Never repeat the user's email or PIN back to them. - Do not send a confirmation message after successful authentication. Call the User is authenticated tool immediately. ``` In the **Tools** panel on the right side of the playbook editor, click **\+** next to **Tools**, then **API** to filter to API tools. Select **GoRoute authenticator**. This [API tool](/docs/documentation/build/tools/api-tool) is already configured in the template and sends the user's email and PIN to the GoRoute API. It returns their account details on success, or an error if the credentials are invalid. Once added, you'll see it listed under **Tools**. Click on it to inspect its configuration. The tool has two input variables, `email` and `pin`, both set to **Agent collect**. This means the playbook will automatically collect these values from the conversation and pass them into the tool. The GoRoute authenticator API tool is included for this tutorial. In your own projects, you can create an [API tool](/docs/documentation/build/tools/api-tool) that connects to your own authentication API. Click the pencil icon next to **GoRoute authenticator** to see how this one is set up, or [view the full documentation for the demo API here](https://goroute.demo.voiceflow.com/docs). You need to save the user's account details from a successful API call so the agent can use them later. Click on the **GoRoute authenticator** tool and press **▶** next to the **Capture response** option. Enter `james.wilson@example.com` for email and `1234` for pin, then click **Run**. You should see a `200 OK` response with a `data` object containing the user's account details. Click on `data` in the response preview and create a new variable by clicking **Create variable**. Name it `user_data` and set the description to: ```text Information about the current user, such as their name and account type. ``` Then, click **Create variable**. You should now see `data → user_data` listed under **Capture response**. This means the user's account details (name, account type, and more) will be automatically saved to the `{user_data}` [variable](/docs/documentation/build/data/variables) whenever the API call succeeds. When the credentials are invalid, the API response does not contain a `data` key, so `{user_data}` stays empty. You'll use this in the next step to make sure the playbook can only exit after a successful authentication. In the **Exit conditions** panel on the right side of the playbook editor, click **\+** to add a new exit condition. Name it "User is authenticated" and set the **Trigger** to: ```text The user has provided valid credentials and their account details have been successfully retrieved. ``` Then add `{user_data}` as a **required variable** on this exit condition. Because `{user_data}` only gets populated after a successful API call, the playbook can't exit until the user provides valid credentials. If authentication fails, `{user_data}` stays empty and the playbook keeps the conversation going. Close the playbook editor to return to the canvas. You'll see "User is authenticated" appear as a connection point on the Playbook step. Connect the "User is authenticated" exit to a [**Message** step](/docs/documentation/build/steps/message). Set the Message step's text to the following: ```text You were successfully authenticated! Please note that all conversations with GoRoute support are logged so that we can serve you better. ``` Leave the Message step's output port unconnected. This passes control to the [agent](/docs/documentation/build/global-prompt) after the message is sent. This workflow sends a simple message after authentication, but you could chain on additional logic here. For example, use a [Set step](/docs/documentation/build/steps/set) to extract fields from `{user_data}` into individual variables, route to another playbook for onboarding questions, or make additional API calls to preload the user's recent activity. Go back to the **Agent** tab, then click **Run** in the top-right corner to test your agent. The initialization workflow will start automatically. **Test with invalid credentials:** Try entering a wrong PIN or a non-existent email. The playbook should let you know the credentials didn't match and ask you to try again, without leaving the playbook. **Test with valid credentials:** Use any of the test accounts below: | Email | PIN | Name | | --- | --- | --- | | `james.wilson@example.com` | `1234` | James Wilson | | `mei.chen@example.com` | `5678` | Mei Chen | | `oliver.brown@example.com` | `9012` | Oliver Brown | The playbook should ask for your email and PIN, call the API to validate them, and then show the success message before handing off to the agent. **Test the authenticated agent:** After successful authentication, try asking a question like "What are the vehicle requirements to drive with GoRoute?" If you authenticated as James Wilson (a driver), the agent should route to the driver support playbook and answer using driver-specific content. ## Tips for building authentication workflows - **The playbook handles the retry loop.** The playbook manages the entire authentication conversation, including retries. If the API returns an error, the playbook tells the user and asks them to try again. This keeps the workflow canvas simple. - **Use API tools for authentication.** The GoRoute authenticator is an [API tool](/docs/documentation/build/tools/api-tool) that sends credentials to an external API. You can create your own API tools to connect to any authentication system. - **Capture response data for later.** The API tool saves the response to `{user_data}`, which your agent can reference in its global prompt and instructions to personalize the conversation. - **Initialization workflows run before the agent.** Anything you put in the initialization workflow happens before the agent sees any messages. This is useful for gating access, loading context, or sending a static greeting. - **Automate some of these steps.** In the real world, you can pass variables directly into the conversation [through the chat widget](/docs/documentation/deploy/widget/web-chat-api), or automatically detect a user's phone number using the `user_id` variable. ## What's next? You've built an initialization workflow that authenticates users before the agent takes over. Explore these resources to go deeper. Learn more about initialization workflows and common patterns like loading context, static greetings, and onboarding flows. Create custom API tools to connect your agent to any external service. # Integrate with third-party tools Source: https://www.voiceflow.com/docs/courses/integrate-with-third-party-tools Connect your agent with the outside world in 5 minutes. Voiceflow's tools let you connect your agent to external services so it can take real-world actions during a conversation. This guide walks you through a complete integration using the [Gmail tool](/docs/documentation/build/tools/gmail-tool), which you can use to automatically send emails directly from your agent. ### What can integrating tools be used for? Voiceflow offers the option to link other softwares (ie. Gmail, Excel, etc.) to your agent in a couple of simple steps. For example, you want your agent to send an email? Integrate the Gmail tool and it can do that! In a new project or an existing one, open the [Agent](/docs/documentation/build/global-prompt) tab. Make sure your agent has a global prompt that defines its overall behaviour and purpose. If this is your first time setting up an agent, [visit our getting started guide](/docs/courses/chat-agent-quick-start) before continuing. Create a new [playbook](/docs/documentation/build/playbooks) and title it "Send summary email". In the playbook's **Trigger**, describe its purpose so the agent knows when to invoke it. For this integration, your playbook will need to collect an `{email_address}` from the user to send emails to. Use the example prompt below as a starting point for your "Send summary email" playbook. ```text Your goal is to wrap up the conversation by sending the user a summary of what was discussed over email. **Steps:** 1. Ask the user for their email address in a friendly way (eg: "Before I send that over, could I grab your email address?") 2. Store it as {email_address} 3. Confirm the address back to the user before sending ``` Inside your playbook, add the Gmail tool. Select **Connect** → **Connect**, then choose your Gmail account. Once connected, select **Send email** as the action. In the tool's **Trigger**, describe what you want the tool to send (eg: a summary of the conversation sent to `{email_address}`). Use the example below as a reference. Send a friendly summary email to email_address. The subject line should be "Here's a summary of our conversation". In the body, write a short, warm recap of the key points discussed, any actions the user said they'd take, and anything you agreed to follow up on. Keep it concise and easy to skim. ```text Send a summary email to {email_address} with the following: **To:** {email_address} **Subject:** Here's a summary of our conversation **Body:** - A short, warm intro (1-2 sentences) - Key points discussed - Any actions the user said they'd take - Anything you agreed to follow up on Keep it concise and easy to skim. ``` Open **Agent** → **Publish** in the top-right corner. Your agent is now live and can automatically send emails from your connected Gmail account! ## What's next? Now that you've connected your first integration, you're ready to explore all the tools available for your agent. All of Voiceflow's officially supported integrations. Want to connect to another service? You can use the [API tool](/docs/documentation/build/tools/api-tool) in a playbook or the [API step](/docs/documentation/build/steps/api) in a workflow to connect to any external API. # Migrate to environments Source: https://www.voiceflow.com/docs/courses/migrate-to-environments Switch from our legacy environments system to our new, more powerful version. In April 2026, Voiceflow released a new [environments](/docs/documentation/deploy/environments/overview) system that replaces the fixed `development`, `staging` , and `production` environments with a flexible, branchable model. Every project now starts with a single environment called `main`, and you can create more whenever you want to test a change in isolation, compare two versions of your agent against each other, or roll out a new version gradually. Existing projects keep working the way they always have, with the original `development`, `staging` and `production` environments, until you opt in to migrate. Once you migrate a project, the legacy `development`, `staging`, and `production` aliases stop working, so you'll need to update any integration that points at them. Most projects take a couple of minutes to update. Migrating without updating your integrations will break your live agent for users. Update every integration that uses the legacy aliases before, or immediately after, you migrate. ## Update the chat widget If you've embedded the chat widget on your website, replace your snippet with the new default below (don't forget to fill in your project's ID). The new snippet doesn't include `versionID`, which means the widget routes each new session according to the [traffic split](/docs/documentation/deploy/environments/traffic-split) configured in **Settings** → **Environments**. For most projects, this is exactly what you want: it automatically respects A/B tests and gradual rollouts. ```javascript ``` You can also find your project's code snippet in the **Widget** tab. If you'd rather pin the widget to a specific environment (for example, to load a non-production environment on a staging site), set `versionID` to that environment's alias. See our [chat widget API documentation](/docs/documentation/deploy/widget/web-chat-api#choosing-which-environment-the-widget-loads) for more information. ## Update your Conversations API calls If you're calling the [Conversations API](/docs/api-reference/conversations-api/overview) directly, update any request that passes `environment: 'production'` by choose one of these options: - Updating it to use `environment: 'main'` instead. - Using the [traffic split](https://docs.voiceflow.com/documentation/deploy/environments/traffic-split) feature by migrating to the new [start session](/docs/api-reference/v4interact/start-session-with-traffic-split) and [interact](/docs/api-reference/v4interact/interact-stream) endpoints. This is a more intensive process than switching the environment to `main`, but will give you the ability to A/B test changes prior to release. For requests that pass `'staging'` or `'development'`, choose whichever option fits best: - Point them at `'main'` to keep using the same default. - Point them at a new environment you create for staging or development work. ## Migrate your project Once your integrations are ready, open **Settings** → **General** in your project and scroll to the **Danger zone** section. Click **Migrate** next to **Migrate to environments** to switch your project over. ![Migration](/docs/images/Migration.png) ## After you migrate Your agent keeps serving users from `main` by default. Now you can: - [Iterate without disturbing live traffic](/docs/documentation/deploy/environments/overview) by cloning `main` into a new environment and editing freely. - [Split traffic](/docs/documentation/deploy/environments/traffic-split) across environments to A/B test a change against `main` on real conversations. - [Compare versions side by side](/docs/documentation/deploy/environments/publishing#version-history-and-reverting) and revert, clone, or [merge](/docs/documentation/deploy/environments/merging) from any point in history. # Voice agent quick start guide Source: https://www.voiceflow.com/docs/courses/phone-agent-quick-start Build and launch your first voice agent in 3 minutes or less. Create, configure, and call your first voice agent on Voiceflow. No coding required. From the [Dashboard](https://creator.voiceflow.com), go to **Projects** → **New project**. Name your project, set the type to **Voice**, and select **Start from scratch**. In the **Global agent** description, click **generate** and describe your agent's actions, goals, and personality. You can also customize the agent's tone, speed, and how long it waits for a user to reply. Voiceflow will automatically create a detailed prompt in seconds. For example: ```text You are Alex, a calm and friendly voice support agent for AcmeCorp. Help customers with orders, returns, billing, and product questions. Speak naturally in short, conversational sentences — avoid long lists or complex phrasing. Stay warm, patient, and reassuring. If you can't resolve an issue, offer to create a support ticket. ``` To give your agent real information to reference, click the **Knowledge Base** icon in the left sidebar. You can add context by: - **Uploading documents** - PDFs, text files, or CSVs (e.g., your FAQ, product catalog, or return policy). - **Pasting a URL** - Your agent will index the content directly from the page. - **Adding text manually** - Paste in key information directly. Your agent will use this knowledge to answer questions accurately. Back in the **Agent** tab, click **Publish** in the top-right corner. To receive a call from your agent, click **Call** in the top-right, enter your phone number, and start speaking with your agent! That's it! Your agent is now deployed and available to use. ## Tips for refining your voice agent - **Start simple.** Get a basic agent working first, then layer on complexity. You can add deterministic [Workflows](/docs/documentation/build/workflows) and agentic [Playbooks](/docs/documentation/build/playbooks) to get the most out of your agent. - **Use your knowledge base.** The more relevant content you upload, the more accurate your agent's responses will be. - **Iterate on your prompt.** Small tweaks to the system prompt can make a big difference in response quality. - **Set up a phone number.** [Configure a dedicated number](/docs/documentation/deploy/phone/connect-a-phone-number) so your agent can be reached by simply dialing in. ## What's next? You've built your first voice agent on Voiceflow. Now learn how to build production-grade agents with our documentation. Complete specialized tasks using AI. Add logic and determinism to your agent. # Build a simple FAQ agent Source: https://www.voiceflow.com/docs/courses/simple-knowledge-base Create a support agent grounded in FAQ data from your knowledge base. In this tutorial, you will build a customer support agent for a fictional enterprise software company called NovaTech. Your agent will answer common support questions using FAQ data stored in the knowledge base. This should take about 5 minutes. From the [Dashboard](https://creator.voiceflow.com), go to **Projects** → **New project**. Name your project "NovaTech Support", set the type to **Chat**, and select **Start from scratch**. Download the sample CSV below and upload it to get started. It contains 50 FAQ entries across Account, Billing, Technical, Features, and General categories. 50 sample FAQ entries for the NovaTech support agent. To upload the CSV to your knowledge base, click **Knowledge Base** in the left sidebar, then **Add data sources**. Select **Table** and upload the CSV file containing NovaTech's support FAQs. Each row in the CSV becomes a separate chunk, and column headers become field names. This makes it easy for the agent to find the right answer for a given question. Click the **Agent** tab. You'll configure two things here: the **Global prompt** and the **Instructions**. The global prompt defines your agent's personality and applies to every turn. Instructions tell the agent how to handle different types of requests. In the **Global prompt** section, define your agent's identity: ```text # Personality You are a friendly and efficient support agent for NovaTech, an enterprise software platform. You help customers resolve issues quickly and clearly. # Tone Warm, professional, and concise. Avoid jargon. Speak like a helpful colleague, not a robot. # Guardrails Only provide information grounded in the knowledge base. Never guess at steps, settings, or policies. If you're unsure, say so honestly rather than making something up. ``` Then in the **Instructions** field, tell the agent how to handle incoming questions: ```text Always search the knowledge base before answering a question. Use the information you find to give a clear, step-by-step response. If the knowledge base doesn't have a relevant answer, let the customer know honestly and offer to connect them with the NovaTech support team. Do not answer questions that are unrelated to NovaTech. ``` Make sure the **Knowledge base** toggle is enabled under **System tools**. This lets your agent automatically search the FAQ data when answering questions. Click **Run** in the top-right corner to test your agent. Try prompts like: - _"How do I add someone to my team?"_ - _"My dashboard is super slow, what's going on?"_ - _"I need to set up 2FA on my account"_ - _"How do I schedule a report?"_ Your agent will search the knowledge base and respond with the relevant FAQ answer. If a question doesn't match anything in the CSV, the agent should let the user know that it couldn't find information about their query rather than making up information. ## Tips for refining your agent - **Expand your FAQ data.** The more Q&A pairs in your CSV, the more questions your agent can handle accurately. Add rows as you discover common support requests. - **Iterate on your prompt.** Small tweaks to the global prompt can make a big difference. Try adjusting the tone or adding specific guardrails based on what you see in testing. - **Layer on complexity.** Once the basics work, you can add [playbooks](/docs/documentation/build/playbooks) for specific support scenarios (eg: guided troubleshooting, billing disputes) and use [system tools](/docs/documentation/build/tools/system-tools) like Cards or Buttons to make responses more interactive. ## What's next? Now you've built your first support agent, you're ready to learn about Voiceflow's advanced knowledge base functionality. Learn how to use website importing, metadata filtering, the knowledge base tool inside playbooks, and more. # Billing overview Source: https://www.voiceflow.com/docs/documentation/account-management/billing Find your plan, seats, and usage, understand what each charge covers, and see who to contact when a billing question needs a human answer. If you need help with a billing query, [click here to contact support](mailto:support@voiceflow.com). If you are an Enterprise customer, please contact your account manager. Your Voiceflow bill is made up of a monthly plan fee, optional add-ons like editor seats and phone numbers, and credit-based usage. Everything is billed at the organization level, and the plan you pick determines which features you can use and how many credits you get each month. Credits are shared across all workspaces in your organization. You can view current pricing for plans, add-ons, and credit bundles inside Voiceflow by opening **Plans and Billing** tab from your [Voiceflow dashboard](https://creator.voiceflow.com). ## Plans Your plan controls which Voiceflow features you have access to and sets your monthly credit allotment. Voiceflow offers four plans: - **Free** is designed for trying out Voiceflow. It has limited features and a one-time credit grant that does not renew, so it isn't suitable for production usage. - **Pro** is designed for individual builders. It includes access to all LLM models and a higher agent limit than Free. - **Business** is designed for growing teams. It includes additional features like LLM fallback models and priority support. - **Enterprise** is designed for organizations running large-scale workloads or requiring advanced security and compliance features. Enterprise plans include unlimited product usage, single sign-on, private cloud hosting, and custom credit allotments. You can compare all plan features, upgrade, or change your plan directly from inside the **Plans** tab in **Plans and Billing**. ## Add-ons Add-ons extend your plan with additional capacity. They're billed monthly alongside your plan subscription and managed from the **Add-ons** tab in **Plans and Billing**. - **Editor seats** let additional team members edit agents in your workspace. Every paid plan includes some free editor seats, and you can purchase more as needed. A single editor seat provides access to all agents in the workspace, though you can restrict editors to specific projects if needed. Viewers are free and unlimited on all plans. - One **Voiceflow phone number** per workspace is included with your plan. You can add additional phone numbers for testing or production purposes as an add-on. - Each plan has a **concurrent calls** limit - the number of calls that agents in your workspace can send and/or receive simultaneously. This limit can be increased through the concurrent calls add-on. Note that this limit does not apply to chat or API sessions. ## Credits Credits are how Voiceflow charges for agent usage. Your agent consumes credits when it performs actions like generating AI responses and making phone calls. Paid plans include a monthly credit allotment that resets at the start of each billing cycle, and credits are shared across all workspaces in your organization. The Free plan includes a one-time credit grant that does not renew. You can monitor your current credit usage in two places: - The **credit usage box** at the bottom-left of your workspace - The **Plans and Billing** section of your workspace If you're running low on credits, you can upgrade to a higher plan or credit bundle, or enable auto top-ups. Auto top-ups automatically purchase additional credits when you hit zero, so your agents aren't interrupted mid-month. You can toggle this setting on from the **Plans** page. You can see a full breakdown of all actions that are charged credits on the [credits pricing table](/docs/documentation/account-management/billing/credits-pricing-table). ## Managing your subscription You can handle most billing actions yourself from **Plans and Billing** in the workspace sidebar. From there you can compare and change plans, manage add-ons, update your payment method, download invoices, and more. For a full walkthrough of each self-serve action, see [managing your subscription](/docs/documentation/account-management/billing/managing-your-subscription). ## Enterprise billing Enterprise customers are billed per their contract and work with a dedicated account manager rather than the self-serve billing flow. Contact your account manager with questions. # Credits pricing table Source: https://www.voiceflow.com/docs/documentation/account-management/billing/credits-pricing-table How credits are consumed across your agent's LLM, voice, and orchestration usage. Credits are the currency that powers your Voiceflow agent. Every interaction, from chat messages to LLM calls to voice minutes, consumes a certain number of credits depending on the vendor and model you use. The tables below show current credit costs so you can estimate usage and plan accordingly. # Managing your subscription Source: https://www.voiceflow.com/docs/documentation/account-management/billing/managing-your-subscription How to manage your Voiceflow plan, add-ons, payment method, invoices, and other billing settings. You can manage almost everything about your Voiceflow subscription directly in the tool. Open **Plans and Billing** from the workspace sidebar to get started. You can also reach it by clicking **Manage** on the credit usage toast at the bottom-left of your workspace. ## Changing your plan Open **Plans and Billing** → **Plans** from the [Voiceflow dashboard](https://creator.voiceflow.com) to see a side-by-side comparison of all available plans and what's included in each. Click the plan you want and follow the prompts to switch. ## Managing add-ons The **Add-ons** tab lets you adjust editor seats and Voiceflow phone numbers. Use the **\+** and **−** buttons next to each add-on to increase or decrease your allocation. Changes apply to your subscription and are reflected in your next billing cycle. ## Changing your credit bundle If your included credits aren't enough, you can upgrade your credit bundle. Open **Plans and Billing** → **Billing**, click **Manage** in the subscription overview, then click **Edit credit bundle** next to **Plan cost**. Pick the bundle size you want and confirm. ## Enabling auto top-ups Auto top-ups prevent your agents from running out of credits mid-month. When enabled, Voiceflow automatically purchases additional credits when your balance hits zero. Nothing is charged in advance. To turn this on, open **Plans and Billing** → **Billing**, click **Manage** in the subscription overview, and click **Enable** next to **Usage based billing**. Set the dollar amount you want added each time your credits run out and confirm. You can adjust the amount or disable auto top-ups at any time from the same modal. ## Updating billing details All billing settings live in the **Billing** tab inside **Plans and Billing**. Your **billing email** receives invoices, payment receipts, renewal reminders, and failed-payment alerts. It can be different from your account login email. Click **Edit** in the **Billing email** block to change it. To update your **payment method**, click **Edit** in the **Payment information** block and enter your card details. Your **billing address** appears on every invoice and can be updated in the **Billing address** block at the bottom of the tab. ## Downloading invoices In the **Billing** tab, scroll to **Billing history** to find past invoices. Click **View** next to any date to open and download the invoice as a PDF. Use **Load more** to access older records. ## Canceling your subscription Open **Plans and Billing** → **Billing**, click **Manage** in the subscription overview, then click **Cancel subscription** and follow the confirmation prompts. You keep access to your paid features until the end of your current billing period. After that, your account reverts to the free tier. Past invoices remain accessible in your billing history. ## What requires contacting support Most billing actions are self-serve, but a few situations require reaching out: - **Enterprise** customers manage their subscription through their dedicated account manager. - For custom invoicing, tax exemptions, procurement, refund requests, or disputed charges, email [support@voiceflow.com](mailto:support@voiceflow.com). # Workspaces Source: https://www.voiceflow.com/docs/documentation/account-management/collaboration Organize projects and collaborate with your team. ![Cover Placeholder](/docs/images/steps/Workspaces.png) A workspace is a container for your projects. Everyone you invite to a workspace can see all the projects inside it, so think of workspaces as team boundaries. Your plan determines how many workspaces you can create. ## Organizing your workspace