---
title: "Delete Structured Output"
method: DELETE
path: "/structured-output/{id}"
tags: ["Structured Outputs"]
---

# Delete Structured Output

`DELETE /structured-output/{id}`

## Path parameters

- `id` string, uuid, required

## Response `200`

- StructuredOutput
  - `type` 'ai' | 'regex' — This is the type of structured output. - 'ai': Uses an LLM to extract structured data from the conversation (default). - 'regex': Uses a regex pattern to extract data from the transcript without an LLM.
  - `regex` string — This is the regex pattern to match against the transcript. Only used when type is 'regex'. Supports both raw patterns (e.g. '\d+') and regex literal format (e.g. '/\d+/gi'). Uses RE2 syntax for safety. The result depends on the schema type: - boolean: true if the pattern matches, false otherwise - string: the first match or first capture group - number/integer: the first match parsed as a number - array: all matches
  - `model` union — This is the model that will be used to extract the structured output. To provide your own custom system and user prompts for structured output extraction, populate the messages array with your system and user messages. You can specify liquid templating in your system and user messages. Between the system or user messages, you must reference either 'transcript' or 'messages' with the `{{}}` syntax to access the conversation history. Between the system or user messages, you must reference a variation of the structured output with the `{{}}` syntax to access the structured output definition. i.e.: `{{structuredOutput}}` `{{structuredOutput.name}}` `{{structuredOutput.description}}` `{{structuredOutput.schema}}` If model is not specified, GPT-4.1 will be used by default for extraction, utilizing default system and user prompts. If messages or required fields are not specified, the default system and user prompts will be used.
    - WorkflowOpenAIModel
      - `messages` OpenAIMessage[] — These are the messages used to customize the prompt used for structured output extraction. When provided, these messages replace the default prompts. Message contents support LiquidJS templating with the following variables: - `{{transcript}}` or `{{messages}}` to reference the conversation (one is required) - `{{structuredOutput.name}}`, `{{structuredOutput.description}}`, or `{{structuredOutput.schema}}` to reference the structured output definition (one is required) - `{{systemPrompt}}`, `{{callEndedReason}}`, `{{duration}}`, `{{startedAt}}`, `{{endedAt}}`, and any `assistantOverrides.variableValues` `{{messages}}` is the full message history including tool calls; `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. If not provided, default system and user prompts are used.
        - `content` string, nullable, required
        - `role` 'assistant' | 'function' | 'user' | 'system' | 'tool', required
      - `provider` 'openai', required — This is the provider of the model (`openai`).
      - `model` 'gpt-5.6-sol' | 'gpt-5.6-terra' | 'gpt-5.6-luna' | 'gpt-5.5' | 'chat-latest' | 'gpt-5.4' | 'gpt-5.4-mini' | 'gpt-5.4-nano' | 'gpt-5.2' | 'gpt-5.2-chat-latest' | 'gpt-5.1' | 'gpt-5.1-chat-latest' | 'gpt-5' | 'gpt-5-chat-latest' | 'gpt-5-mini' | 'gpt-5-nano' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini-2025-04-14' | 'gpt-4.1-nano-2025-04-14' | 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'chatgpt-4o-latest' | 'o3' | 'o3-mini' | 'o4-mini' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'gpt-3.5-turbo-16k' | 'gpt-3.5-turbo-0613' | 'gpt-5.6-luna:westus3' | 'gpt-5.6-terra:westus3' | 'gpt-5.6-sol:westus3' | 'gpt-5.4:eastus2' | 'gpt-5.4:swedencentral' | 'gpt-5.4-mini:eastus2' | 'gpt-5.4-mini:swedencentral' | 'gpt-5.4-nano:eastus2' | 'gpt-5.4-nano:swedencentral' | 'gpt-5.2:eastus2' | 'gpt-5.2:swedencentral' | 'gpt-5.1:eastus2' | 'gpt-5.1:swedencentral' | 'gpt-5:eastus2' | 'gpt-5:swedencentral' | 'gpt-5:canadaeast' | 'gpt-5:eastus' | 'gpt-5:westeurope' | 'gpt-5:germanywestcentral' | 'gpt-5:polandcentral' | 'gpt-5:spaincentral' | 'gpt-5-mini:eastus2' | 'gpt-5-mini:swedencentral' | 'gpt-5-mini:westeurope' | 'gpt-5-mini:germanywestcentral' | 'gpt-5-mini:polandcentral' | 'gpt-5-mini:spaincentral' | 'gpt-5-nano:eastus2' | 'gpt-5-nano:swedencentral' | 'gpt-4.1-2025-04-14:westus' | 'gpt-4.1-2025-04-14:eastus2' | 'gpt-4.1-2025-04-14:eastus' | 'gpt-4.1-2025-04-14:westus3' | 'gpt-4.1-2025-04-14:northcentralus' | 'gpt-4.1-2025-04-14:southcentralus' | 'gpt-4.1-2025-04-14:westeurope' | 'gpt-4.1-2025-04-14:germanywestcentral' | 'gpt-4.1-2025-04-14:polandcentral' | 'gpt-4.1-2025-04-14:spaincentral' | 'gpt-4.1-mini-2025-04-14:westus' | 'gpt-4.1-mini-2025-04-14:eastus2' | 'gpt-4.1-mini-2025-04-14:eastus' | 'gpt-4.1-mini-2025-04-14:westus3' | 'gpt-4.1-mini-2025-04-14:northcentralus' | 'gpt-4.1-mini-2025-04-14:southcentralus' | 'gpt-4.1-mini-2025-04-14:westeurope' | 'gpt-4.1-mini-2025-04-14:germanywestcentral' | 'gpt-4.1-mini-2025-04-14:polandcentral' | 'gpt-4.1-mini-2025-04-14:spaincentral' | 'gpt-4.1-nano-2025-04-14:westus' | 'gpt-4.1-nano-2025-04-14:eastus2' | 'gpt-4.1-nano-2025-04-14:westus3' | 'gpt-4.1-nano-2025-04-14:northcentralus' | 'gpt-4.1-nano-2025-04-14:southcentralus' | 'gpt-4o-2024-11-20:swedencentral' | 'gpt-4o-2024-11-20:westus' | 'gpt-4o-2024-11-20:eastus2' | 'gpt-4o-2024-11-20:eastus' | 'gpt-4o-2024-11-20:westus3' | 'gpt-4o-2024-11-20:southcentralus' | 'gpt-4o-2024-11-20:westeurope' | 'gpt-4o-2024-11-20:germanywestcentral' | 'gpt-4o-2024-11-20:polandcentral' | 'gpt-4o-2024-11-20:spaincentral' | 'gpt-4o-2024-08-06:westus' | 'gpt-4o-2024-08-06:westus3' | 'gpt-4o-2024-08-06:eastus' | 'gpt-4o-2024-08-06:eastus2' | 'gpt-4o-2024-08-06:northcentralus' | 'gpt-4o-2024-08-06:southcentralus' | 'gpt-4o-mini-2024-07-18:westus' | 'gpt-4o-mini-2024-07-18:westus3' | 'gpt-4o-mini-2024-07-18:eastus' | 'gpt-4o-mini-2024-07-18:eastus2' | 'gpt-4o-mini-2024-07-18:northcentralus' | 'gpt-4o-mini-2024-07-18:southcentralus' | 'gpt-4o-2024-05-13:eastus2' | 'gpt-4o-2024-05-13:eastus' | 'gpt-4o-2024-05-13:northcentralus' | 'gpt-4o-2024-05-13:southcentralus' | 'gpt-4o-2024-05-13:westus3' | 'gpt-4o-2024-05-13:westus' | 'gpt-4-turbo-2024-04-09:eastus2' | 'gpt-4-0125-preview:eastus' | 'gpt-4-0125-preview:northcentralus' | 'gpt-4-0125-preview:southcentralus' | 'gpt-4-1106-preview:australiaeast' | 'gpt-4-1106-preview:canadaeast' | 'gpt-4-1106-preview:france' | 'gpt-4-1106-preview:india' | 'gpt-4-1106-preview:norway' | 'gpt-4-1106-preview:swedencentral' | 'gpt-4-1106-preview:uk' | 'gpt-4-1106-preview:westus' | 'gpt-4-1106-preview:westus3' | 'gpt-4-0613:canadaeast' | 'gpt-3.5-turbo-0125:canadaeast' | 'gpt-3.5-turbo-0125:northcentralus' | 'gpt-3.5-turbo-0125:southcentralus' | 'gpt-3.5-turbo-1106:canadaeast' | 'gpt-3.5-turbo-1106:westus' | 'gpt-4.1:australiaeast' | 'gpt-4o:australiaeast' | 'gpt-5.4-mini:australiaeast', required — This is the OpenAI model that will be used. When using Vapi OpenAI or your own Azure Credentials, you have the option to specify the region for the selected model. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest region that make sense. This is helpful when you are required to comply with Data Residency rules. Learn more about Azure regions here https://azure.microsoft.com/en-us/explore/global-infrastructure/data-residency/.
      - `temperature` number — This is the temperature of the model.
      - `maxTokens` number — This is the max tokens of the model.
    - WorkflowAnthropicModel
      - `messages` OpenAIMessage[] — These are the messages used to customize the prompt used for structured output extraction. When provided, these messages replace the default prompts. Message contents support LiquidJS templating with the following variables: - `{{transcript}}` or `{{messages}}` to reference the conversation (one is required) - `{{structuredOutput.name}}`, `{{structuredOutput.description}}`, or `{{structuredOutput.schema}}` to reference the structured output definition (one is required) - `{{systemPrompt}}`, `{{callEndedReason}}`, `{{duration}}`, `{{startedAt}}`, `{{endedAt}}`, and any `assistantOverrides.variableValues` `{{messages}}` is the full message history including tool calls; `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. If not provided, default system and user prompts are used.
        - `content` string, nullable, required
        - `role` 'assistant' | 'function' | 'user' | 'system' | 'tool', required
      - `provider` 'anthropic', required — This is the provider of the model (`anthropic`).
      - `model` 'claude-3-opus-20240229' | 'claude-3-sonnet-20240229' | 'claude-3-haiku-20240307' | 'claude-3-5-sonnet-20240620' | 'claude-3-5-sonnet-20241022' | 'claude-3-5-haiku-20241022' | 'claude-3-7-sonnet-20250219' | 'claude-opus-4-20250514' | 'claude-opus-4-5-20251101' | 'claude-opus-4-6' | 'claude-sonnet-4-20250514' | 'claude-sonnet-4-5-20250929' | 'claude-sonnet-4-6' | 'claude-sonnet-5' | 'claude-haiku-4-5-20251001', required — This is the specific model that will be used.
      - `thinking` AnthropicThinkingConfig
        - `type` 'enabled', required
        - `budgetTokens` number, required — The maximum number of tokens to allocate for thinking. Must be between 1024 and 100000 tokens.
      - `temperature` number — This is the temperature of the model.
      - `maxTokens` number — This is the max tokens of the model.
    - WorkflowAnthropicBedrockModel
      - `messages` OpenAIMessage[] — These are the messages used to customize the prompt used for structured output extraction. When provided, these messages replace the default prompts. Message contents support LiquidJS templating with the following variables: - `{{transcript}}` or `{{messages}}` to reference the conversation (one is required) - `{{structuredOutput.name}}`, `{{structuredOutput.description}}`, or `{{structuredOutput.schema}}` to reference the structured output definition (one is required) - `{{systemPrompt}}`, `{{callEndedReason}}`, `{{duration}}`, `{{startedAt}}`, `{{endedAt}}`, and any `assistantOverrides.variableValues` `{{messages}}` is the full message history including tool calls; `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. If not provided, default system and user prompts are used.
        - `content` string, nullable, required
        - `role` 'assistant' | 'function' | 'user' | 'system' | 'tool', required
      - `provider` 'anthropic-bedrock', required — This is the provider of the model (`anthropic-bedrock`).
      - `model` 'claude-3-opus-20240229' | 'claude-3-sonnet-20240229' | 'claude-3-haiku-20240307' | 'claude-3-5-sonnet-20240620' | 'claude-3-5-sonnet-20241022' | 'claude-3-5-haiku-20241022' | 'claude-3-7-sonnet-20250219' | 'claude-opus-4-20250514' | 'claude-opus-4-5-20251101' | 'claude-opus-4-6' | 'claude-sonnet-4-20250514' | 'claude-sonnet-4-5-20250929' | 'claude-sonnet-4-6' | 'claude-haiku-4-5-20251001' | 'global.anthropic.claude-haiku-4-5-20251001-v1:0', required — This is the specific model that will be used.
      - `thinking` AnthropicThinkingConfig
        - `type` 'enabled', required
        - `budgetTokens` number, required — The maximum number of tokens to allocate for thinking. Must be between 1024 and 100000 tokens.
      - `temperature` number — This is the temperature of the model.
      - `maxTokens` number — This is the max tokens of the model.
    - WorkflowGoogleModel
      - `messages` OpenAIMessage[] — These are the messages used to customize the prompt used for structured output extraction. When provided, these messages replace the default prompts. Message contents support LiquidJS templating with the following variables: - `{{transcript}}` or `{{messages}}` to reference the conversation (one is required) - `{{structuredOutput.name}}`, `{{structuredOutput.description}}`, or `{{structuredOutput.schema}}` to reference the structured output definition (one is required) - `{{systemPrompt}}`, `{{callEndedReason}}`, `{{duration}}`, `{{startedAt}}`, `{{endedAt}}`, and any `assistantOverrides.variableValues` `{{messages}}` is the full message history including tool calls; `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. If not provided, default system and user prompts are used.
        - `content` string, nullable, required
        - `role` 'assistant' | 'function' | 'user' | 'system' | 'tool', required
      - `provider` 'google', required — This is the provider of the model (`google`).
      - `model` 'gemini-3.5-flash' | 'gemini-3.1-flash-lite' | 'gemini-3-flash-preview' | 'gemini-2.5-pro' | 'gemini-2.5-flash' | 'gemini-2.5-flash-lite' | 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro', required — This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b
      - `temperature` number — This is the temperature of the model.
      - `maxTokens` number — This is the max tokens of the model.
    - WorkflowCustomModel
      - `messages` OpenAIMessage[] — These are the messages used to customize the prompt used for structured output extraction. When provided, these messages replace the default prompts. Message contents support LiquidJS templating with the following variables: - `{{transcript}}` or `{{messages}}` to reference the conversation (one is required) - `{{structuredOutput.name}}`, `{{structuredOutput.description}}`, or `{{structuredOutput.schema}}` to reference the structured output definition (one is required) - `{{systemPrompt}}`, `{{callEndedReason}}`, `{{duration}}`, `{{startedAt}}`, `{{endedAt}}`, and any `assistantOverrides.variableValues` `{{messages}}` is the full message history including tool calls; `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. If not provided, default system and user prompts are used.
        - `content` string, nullable, required
        - `role` 'assistant' | 'function' | 'user' | 'system' | 'tool', required
      - `provider` 'custom-llm', required — This is the provider of the model (`custom-llm`).
      - `metadataSendMode` 'off' | 'variable' | 'destructured' — This determines whether metadata is sent in requests to the custom provider. - `off` will not send any metadata. payload will look like `{ messages }` - `variable` will send `assistant.metadata` as a variable on the payload. payload will look like `{ messages, metadata }` - `destructured` will send `assistant.metadata` fields directly on the payload. payload will look like `{ messages, ...metadata }` Further, `variable` and `destructured` will send `call`, `phoneNumber`, and `customer` objects in the payload. Default is `variable`.
      - `url` string, required — These is the URL we'll use for the OpenAI client's `baseURL`. Ex. https://openrouter.ai/api/v1
      - `headers` object — These are the headers we'll use for the OpenAI client's `headers`.
      - `timeoutSeconds` number — This sets the timeout for the connection to the custom provider without needing to stream any tokens back. Default is 20 seconds.
      - `model` string, required — This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b
      - `temperature` number — This is the temperature of the model.
      - `maxTokens` number — This is the max tokens of the model.
  - `compliancePlan` ComplianceOverride
    - `forceStoreOnHipaaEnabled` boolean — Force storage for this output under HIPAA. Only enable if output contains no sensitive data.
  - `conditions` union[], nullable — These are the conditions that gate the execution of this structured output. Every condition must pass for the structured output to run (AND semantics). When omitted or empty, no user-defined conditions gate this output. Send null to clear a previously saved gate.
    - union
      - MinMessagesCondition
        - `type` 'minMessages', required — This is the type discriminator for the minMessages condition.
        - `count` number, required — This is the minimum number of conversation messages required for the structured output to run. A count of 0 removes the runtime default minimum, so the structured output runs regardless of how few messages the conversation has.
      - MinCallDurationCondition
        - `type` 'minCallDuration', required — This is the type discriminator for the minCallDuration condition.
        - `seconds` number, required — This is the minimum call duration in seconds required for the structured output to run. When timestamps are unavailable (for example, chat sessions have no call timestamps), this check passes and does not block the structured output.
      - EndedReasonCondition
        - `type` 'endedReason', required — This is the type discriminator for the endedReason condition.
        - `operator` 'oneOf' | 'notOneOf', required — This is the membership operator applied against `values`. - 'oneOf': the structured output runs only if the call's ended reason is in `values`. - 'notOneOf': the structured output runs only if the call's ended reason is NOT in `values`.
        - `values` string[], required — These are the ended reasons compared against the call's ended reason. Any string is accepted so configurations never break when new ended reasons are introduced. Must contain at least one value.
  - `id` string, required — This is the unique identifier for the structured output.
  - `orgId` string, required — This is the unique identifier for the org that this structured output belongs to.
  - `createdAt` string, date-time, required — This is the ISO 8601 date-time string of when the structured output was created.
  - `updatedAt` string, date-time, required — This is the ISO 8601 date-time string of when the structured output was last updated.
  - `name` string, required — This is the name of the structured output.
  - `description` string — This is the description of what the structured output extracts. Use this to provide context about what data will be extracted and how it will be used.
  - `assistantIds` string[] — These are the assistant IDs that this structured output is linked to. When linked to assistants, this structured output will be available for extraction during those assistant's calls.
  - `workflowIds` string[] — These are the workflow IDs that this structured output is linked to. When linked to workflows, this structured output will be available for extraction during those workflow's execution.
  - `schema` JsonSchema, required
    - `type` 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object', required — This is the type of output you'd like. `string`, `number`, `integer`, `boolean` are the primitive types and should be obvious. `array` and `object` are more interesting and quite powerful. They allow you to define nested structures. For `array`, you can define the schema of the items in the array using the `items` property. For `object`, you can define the properties of the object using the `properties` property.
    - `items` JsonSchema — recursive
    - `properties` object — This is required if the type is "object". This specifies the properties of the object. This is a map of property names to JsonSchema objects.
    - `description` string — This is the description to help the model understand what it needs to output.
    - `pattern` string — This is the pattern of the string. This is a regex that will be used to validate the data in question. To use a common format, use the `format` property instead. OpenAI documentation: https://platform.openai.com/docs/guides/structured-outputs#supported-properties
    - `format` 'date-time' | 'time' | 'date' | 'duration' | 'email' | 'hostname' | 'ipv4' | 'ipv6' | 'uuid' — This is the format of the string. To pass a regex, use the `pattern` property instead. OpenAI documentation: https://platform.openai.com/docs/guides/structured-outputs?api-mode=chat&type-restrictions=string-restrictions
    - `required` string[] — This is a list of properties that are required. This only makes sense if the type is "object".
    - `enum` string[] — This array specifies the allowed values that can be used to restrict the output of the model.
    - `title` string — This is the title of the schema.

## Changes

> 57 revisions in range; 2 not diffed, 9 could not be searched.

- **2026-01-29** `d42c12737aca` — 1 breaking
  - added `#/components/schemas/WorkflowAnthropicBedrockModel` to the `model` response property `oneOf` list for the response status `200`
  - …this revision’s changelog is incomplete
- **2026-01-06** `57c22d5b3510` — 1 warning
  - added the new `gemini-3-flash-preview` enum value to the `model/oneOf[subschema #3: WorkflowGoogleModel]/model` response property for the response status `200`
- **2025-12-16** `45678bc2c663` — 15 warning
  - added the new `gpt-4.1-2025-04-14:germanywestcentral` enum value to the `model/oneOf[subschema #1: WorkflowOpenAIModel]/model` response property for the response status `200`
  - added the new `gpt-4.1-2025-04-14:polandcentral` enum value to the `model/oneOf[subschema #1: WorkflowOpenAIModel]/model` response property for the response status `200`
  - added the new `gpt-4.1-2025-04-14:spaincentral` enum value to the `model/oneOf[subschema #1: WorkflowOpenAIModel]/model` response property for the response status `200`
  - added the new `gpt-4.1-2025-04-14:westeurope` enum value to the `model/oneOf[subschema #1: WorkflowOpenAIModel]/model` response property for the response status `200`
  - …11 more
  - …this revision’s changelog is incomplete
- **2025-11-12** `acbf00c4a7f9` — 1 info
  - added the optional property `compliancePlan` to the response with the `200` status
- …earlier changes not shown

[Full history](https://skmtc.dev/vapiai/apis/vapi-api/changes/structured-output/:id/delete.md)

---

[API](https://skmtc.dev/vapiai/apis/vapi-api.md) · [All operations](https://skmtc.dev/vapiai/apis/vapi-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/vapiai/vapi-api/revisions/872ff45af53b/schema)
