{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/venice-ai/main/json-schema/venice-ai-chat-completion-request-schema.json",
  "title": "ChatCompletionRequest",
  "x-generated": "2026-10-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/venice-ai-openapi.yml#/components/schemas/ChatCompletionRequest",
  "type": "object",
  "properties": {
    "frequency_penalty": {
      "type": "number",
      "maximum": 2,
      "minimum": -2,
      "default": 0,
      "description": "Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."
    },
    "logprobs": {
      "type": "boolean",
      "description": "Whether to include log probabilities in the response. This is not supported by all models."
    },
    "top_logprobs": {
      "type": "integer",
      "minimum": 0,
      "description": "The number of highest probability tokens to return for each token position."
    },
    "max_completion_tokens": {
      "type": "integer",
      "description": "An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens."
    },
    "max_temp": {
      "type": "number",
      "minimum": 0,
      "maximum": 2,
      "description": "Maximum temperature value for dynamic temperature scaling."
    },
    "max_tokens": {
      "type": "integer",
      "description": "The maximum number of tokens that can be generated in the chat completion. This value can be used to control costs for text generated via API. Values of 0 or less are ignored and the model will use its default maximum. This value is now deprecated in favor of max_completion_tokens."
    },
    "messages": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "content": {
                "anyOf": [
                  {
                    "type": "string",
                    "title": "String"
                  },
                  {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "cache_control": {
                              "type": "object",
                              "properties": {
                                "ttl": {
                                  "type": "string",
                                  "description": "Optional TTL for extended cache duration. Beta feature requiring special header."
                                },
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "ephemeral"
                                  ],
                                  "description": "The type of cache control. Currently only \"ephemeral\" is supported."
                                }
                              },
                              "required": [
                                "type"
                              ],
                              "description": "Optional cache control for prompt caching on supported providers.",
                              "title": "Cache Control"
                            },
                            "text": {
                              "type": "string",
                              "minLength": 1,
                              "description": "The prompt text of the message. Must be at-least one character in length",
                              "title": "Text Content Object"
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "text"
                              ],
                              "title": "Text Content String"
                            }
                          },
                          "required": [
                            "text",
                            "type"
                          ],
                          "description": "Text message type. Supports optional cache_control for prompt caching on supported providers.",
                          "title": "text"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "cache_control": {
                              "type": "object",
                              "properties": {
                                "ttl": {
                                  "type": "string",
                                  "description": "Optional TTL for extended cache duration. Beta feature requiring special header."
                                },
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "ephemeral"
                                  ],
                                  "description": "The type of cache control. Currently only \"ephemeral\" is supported."
                                }
                              },
                              "required": [
                                "type"
                              ],
                              "description": "Optional cache control for prompt caching on supported providers.",
                              "title": "Cache Control"
                            },
                            "image_url": {
                              "type": "object",
                              "properties": {
                                "detail": {
                                  "type": "string",
                                  "description": "Image detail auto, low, and high are now forwarded to providers rather than ignored. Explicit high detail may increase image-token usage and cost. For plaintext requests, original is preserved on direct OpenAI routes and mapped to high on other routes, including retries. Encrypted E2EE content is unchanged. Unrecognized values are ignored for legacy Chat Completions compatibility.",
                                  "enum": [
                                    "auto",
                                    "low",
                                    "high",
                                    "original"
                                  ]
                                },
                                "url": {
                                  "type": "string",
                                  "description": "The URL of the image. Can be a data URL with a base64 encoded image or a public URL. URL must be publicly accessible. Image must pass validation checks and be >= 64 pixels square.",
                                  "format": "uri"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "description": "Object containing the image URL information",
                              "title": "Image URL Object"
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "image_url"
                              ]
                            }
                          },
                          "required": [
                            "image_url",
                            "type"
                          ],
                          "description": "Image URL message type. Supports optional cache_control for prompt caching on supported providers.",
                          "title": "image_url"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "cache_control": {
                              "type": "object",
                              "properties": {
                                "ttl": {
                                  "type": "string",
                                  "description": "Optional TTL for extended cache duration. Beta feature requiring special header."
                                },
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "ephemeral"
                                  ],
                                  "description": "The type of cache control. Currently only \"ephemeral\" is supported."
                                }
                              },
                              "required": [
                                "type"
                              ],
                              "description": "Optional cache control for prompt caching on supported providers.",
                              "title": "Cache Control"
                            },
                            "input_audio": {
                              "type": "object",
                              "properties": {
                                "data": {
                                  "type": "string",
                                  "description": "Base64-encoded audio data. Direct URLs are not supported for audio content."
                                },
                                "format": {
                                  "type": "string",
                                  "enum": [
                                    "wav",
                                    "mp3",
                                    "aiff",
                                    "aac",
                                    "ogg",
                                    "flac",
                                    "m4a",
                                    "pcm16",
                                    "pcm24"
                                  ],
                                  "default": "wav",
                                  "description": "The format of the audio file. Common formats include wav, mp3, aac, ogg, flac, m4a. Defaults to wav."
                                }
                              },
                              "required": [
                                "data"
                              ],
                              "description": "Object containing the base64-encoded audio data and format",
                              "title": "Input Audio Object"
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "input_audio"
                              ]
                            }
                          },
                          "required": [
                            "input_audio",
                            "type"
                          ],
                          "description": "Audio input message type for models that support audio analysis. Audio must be base64-encoded.",
                          "title": "input_audio"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "cache_control": {
                              "type": "object",
                              "properties": {
                                "ttl": {
                                  "type": "string",
                                  "description": "Optional TTL for extended cache duration. Beta feature requiring special header."
                                },
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "ephemeral"
                                  ],
                                  "description": "The type of cache control. Currently only \"ephemeral\" is supported."
                                }
                              },
                              "required": [
                                "type"
                              ],
                              "description": "Optional cache control for prompt caching on supported providers.",
                              "title": "Cache Control"
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "video_url"
                              ]
                            },
                            "video_url": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "description": "The URL of the video. Can be a direct URL (including YouTube links for some providers), or a base64-encoded data URL (e.g., data:video/mp4;base64,...). Supported formats: mp4, mpeg, mov, webm. Remote URLs must be publicly accessible, must not redirect, and must return a permitted video Content-Type. At most 3 videos may be provided in one request.",
                                  "format": "uri"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "description": "Object containing the video URL information",
                              "title": "Video URL Object"
                            }
                          },
                          "required": [
                            "type",
                            "video_url"
                          ],
                          "description": "Video URL message type for models that support video analysis. Supports both direct URLs and base64-encoded data URLs.",
                          "title": "video_url"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "cache_control": {
                              "type": "object",
                              "properties": {
                                "ttl": {
                                  "type": "string",
                                  "description": "Optional TTL for extended cache duration. Beta feature requiring special header."
                                },
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "ephemeral"
                                  ],
                                  "description": "The type of cache control. Currently only \"ephemeral\" is supported."
                                }
                              },
                              "required": [
                                "type"
                              ],
                              "description": "Optional cache control for prompt caching on supported providers.",
                              "title": "Cache Control"
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "file"
                              ]
                            },
                            "file": {
                              "type": "object",
                              "properties": {
                                "file_data": {
                                  "type": "string",
                                  "description": "The file content as a data URL (e.g., data:application/pdf;base64,...) or a publicly accessible URL. Supported formats: PDF, EPUB, DOCX, PPTX, XLSX, XLS, plain text, Markdown, CSV, JSON, and most source-code files (e.g., .py, .js, .ts, .c, .cpp, .java, .go, .rs, .ps1, .sh, .yaml, .sql)."
                                },
                                "filename": {
                                  "type": "string",
                                  "description": "Optional filename for the file. Used for display purposes."
                                }
                              },
                              "required": [
                                "file_data"
                              ],
                              "description": "Object containing the file data and optional filename",
                              "title": "File Object"
                            }
                          },
                          "required": [
                            "type",
                            "file"
                          ],
                          "description": "File input message type for document processing. Supports PDF, EPUB, DOCX, PPTX, XLSX, plain text, and most source-code files (e.g., .py, .js, .ts, .c, .cpp, .java, .go, .rs, .ps1, .sh, .yaml, .sql). Files are extracted to text before being sent to the model.",
                          "title": "file"
                        }
                      ]
                    },
                    "title": "Objects"
                  }
                ]
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "role": {
                "type": "string",
                "enum": [
                  "user"
                ]
              }
            },
            "required": [
              "content",
              "role"
            ],
            "description": "The user message is the input from the user. It is part of the conversation and is visible to the assistant.",
            "title": "User Message"
          },
          {
            "type": "object",
            "properties": {
              "content": {
                "anyOf": [
                  {
                    "type": "string",
                    "title": "String"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "cache_control": {
                          "type": "object",
                          "properties": {
                            "ttl": {
                              "type": "string",
                              "description": "Optional TTL for extended cache duration. Beta feature requiring special header."
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "ephemeral"
                              ],
                              "description": "The type of cache control. Currently only \"ephemeral\" is supported."
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "description": "Optional cache control for prompt caching on supported providers.",
                          "title": "Cache Control"
                        },
                        "text": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The prompt text of the message. Must be at-least one character in length",
                          "title": "Text Content Object"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "text"
                          ],
                          "title": "Text Content String"
                        }
                      },
                      "required": [
                        "text",
                        "type"
                      ],
                      "description": "Text message type. Supports optional cache_control for prompt caching on supported providers.",
                      "title": "text"
                    },
                    "title": "Objects"
                  },
                  {
                    "nullable": true,
                    "title": "null"
                  }
                ]
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "reasoning_content": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "reasoning_details": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "index": {
                      "type": "number"
                    },
                    "text": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "type"
                  ]
                },
                "description": "Reasoning details returned by certain reasoning models that support this feature (e.g., Gemini 3 Pro). Not all reasoning models return this field. For multi-turn conversations with tool calls on supported models, pass back the reasoning_details exactly as received to preserve thought signatures."
              },
              "role": {
                "type": "string",
                "enum": [
                  "assistant"
                ]
              },
              "thought_signature": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Gemini thought signature returned by native GCP transport. For multi-turn conversations (especially with tool calls), pass it back exactly as received to preserve thought signatures."
              },
              "tool_calls": {
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "nullable": true
                }
              }
            },
            "required": [
              "role"
            ],
            "description": "The assistant message contains the response from the LLM. Must have either content or tool_calls.",
            "title": "Assistant Message"
          },
          {
            "type": "object",
            "properties": {
              "content": {
                "type": "string"
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "reasoning_content": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "role": {
                "type": "string",
                "enum": [
                  "tool"
                ]
              },
              "tool_call_id": {
                "type": "string"
              },
              "tool_calls": {
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "nullable": true
                }
              }
            },
            "required": [
              "content",
              "role",
              "tool_call_id"
            ],
            "description": "The tool message is a special message that is used to call a tool. It is not part of the conversation and is not visible to the user.",
            "title": "Tool Message"
          },
          {
            "type": "object",
            "properties": {
              "content": {
                "anyOf": [
                  {
                    "type": "string",
                    "title": "String"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "cache_control": {
                          "type": "object",
                          "properties": {
                            "ttl": {
                              "type": "string",
                              "description": "Optional TTL for extended cache duration. Beta feature requiring special header."
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "ephemeral"
                              ],
                              "description": "The type of cache control. Currently only \"ephemeral\" is supported."
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "description": "Optional cache control for prompt caching on supported providers.",
                          "title": "Cache Control"
                        },
                        "text": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The prompt text of the message. Must be at-least one character in length",
                          "title": "Text Content Object"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "text"
                          ],
                          "title": "Text Content String"
                        }
                      },
                      "required": [
                        "text",
                        "type"
                      ],
                      "description": "Text message type. Supports optional cache_control for prompt caching on supported providers.",
                      "title": "text"
                    },
                    "title": "Objects"
                  }
                ]
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "role": {
                "type": "string",
                "enum": [
                  "system"
                ]
              }
            },
            "required": [
              "content",
              "role"
            ],
            "description": "The system message is a special message that provides context to the model. It is not part of the conversation and is not visible to the user.",
            "title": "System Message"
          },
          {
            "type": "object",
            "properties": {
              "content": {
                "anyOf": [
                  {
                    "type": "string",
                    "title": "String"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "cache_control": {
                          "type": "object",
                          "properties": {
                            "ttl": {
                              "type": "string",
                              "description": "Optional TTL for extended cache duration. Beta feature requiring special header."
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "ephemeral"
                              ],
                              "description": "The type of cache control. Currently only \"ephemeral\" is supported."
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "description": "Optional cache control for prompt caching on supported providers.",
                          "title": "Cache Control"
                        },
                        "text": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The prompt text of the message. Must be at-least one character in length",
                          "title": "Text Content Object"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "text"
                          ],
                          "title": "Text Content String"
                        }
                      },
                      "required": [
                        "text",
                        "type"
                      ],
                      "description": "Text message type. Supports optional cache_control for prompt caching on supported providers.",
                      "title": "text"
                    },
                    "title": "Objects"
                  }
                ]
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "role": {
                "type": "string",
                "enum": [
                  "developer"
                ]
              }
            },
            "required": [
              "content",
              "role"
            ],
            "description": "The developer message provides high-level instructions to reasoning models (o1, codex). Semantically similar to system messages but specifically designed for reasoning model workflows.",
            "title": "Developer Message"
          }
        ]
      },
      "minItems": 1,
      "description": "A list of messages comprising the conversation so far. Depending on the model you use, different message types (modalities) are supported, like text and images. Non-multimodal models reject image content. For vision models that support multiple images (supportsMultipleImages), images are preserved across all messages in the conversation history. For single-image vision models, only the last image-containing message retains its images."
    },
    "min_p": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Sets a minimum probability threshold for token selection. Tokens with probabilities below this value are filtered out."
    },
    "min_temp": {
      "type": "number",
      "minimum": 0,
      "maximum": 2,
      "description": "Minimum temperature value for dynamic temperature scaling."
    },
    "model": {
      "type": "string",
      "description": "The ID of the model you wish to prompt. May also be a model trait, or a model compatibility mapping. See the models endpoint for a list of models available to you. You can use feature suffixes to enable features from the venice_parameters object. Please see \"Model Feature Suffix\" documentation for more details."
    },
    "n": {
      "type": "integer",
      "default": 1,
      "description": "How many chat completion choices to generate for each input message. Note that you will be charged based on the number of generated tokens across all of the choices. Keep n as 1 to minimize costs."
    },
    "presence_penalty": {
      "type": "number",
      "maximum": 2,
      "minimum": -2,
      "default": 0,
      "description": "Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics."
    },
    "prompt_cache_key": {
      "type": "string",
      "description": "When supplied, this field may be used to optimize conversation routing to improve cache performance and thus reduce latency."
    },
    "prompt_cache_retention": {
      "type": "string",
      "enum": [
        "default",
        "extended",
        "24h"
      ],
      "description": "OpenAI-compatible parameter to control prompt cache retention. \"extended\" or \"24h\" extends retention to 24 hours for supported models."
    },
    "repetition_penalty": {
      "type": "number",
      "minimum": 0,
      "description": "The parameter for repetition penalty. 1.0 means no penalty. Values > 1.0 discourage repetition."
    },
    "reasoning": {
      "type": "object",
      "properties": {
        "effort": {
          "type": "string",
          "enum": [
            "none",
            "minimal",
            "low",
            "medium",
            "high",
            "xhigh",
            "max"
          ],
          "description": "Controls the reasoning effort level for supported models. Higher effort means more thorough reasoning but increased token usage. Defaults to the model configuration if not specified."
        },
        "enabled": {
          "type": "boolean",
          "description": "Set to false to disable reasoning on supported models. Defaults to the model configuration if not specified. Ignored when an effort level is provided."
        },
        "summary": {
          "type": "string",
          "enum": [
            "auto",
            "concise",
            "detailed"
          ],
          "description": "Controls whether and how the model generates a summary of its reasoning. \"auto\" lets the model decide, \"concise\" requests a brief summary, \"detailed\" requests a thorough summary."
        }
      },
      "description": "Configuration for reasoning behavior on supported models."
    },
    "reasoning_effort": {
      "type": "string",
      "enum": [
        "none",
        "minimal",
        "low",
        "medium",
        "high",
        "xhigh",
        "max"
      ],
      "description": "OpenAI-compatible parameter to control reasoning effort level for supported models. Takes precedence over reasoning.effort if both are provided. Direct OpenAI models validate concrete levels against their reasoningEffortOptions; none and minimal may map to the minimum supported effort on mandatory-reasoning models, with reasoning tokens still billed."
    },
    "seed": {
      "type": "integer",
      "minimum": 0,
      "exclusiveMinimum": true,
      "description": "The random seed used to generate the response. This is useful for reproducibility."
    },
    "stop": {
      "anyOf": [
        {
          "type": "string",
          "title": "String"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1,
          "maxItems": 4,
          "title": "Array of Strings"
        },
        {
          "nullable": true,
          "title": "null"
        }
      ],
      "description": "Up to 4 sequences where the API will stop generating further tokens. Defaults to null."
    },
    "stop_token_ids": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "description": "Array of token IDs where the API will stop generating further tokens."
    },
    "stream": {
      "type": "boolean",
      "description": "Whether to stream back partial progress. Defaults to false."
    },
    "stream_options": {
      "type": "object",
      "properties": {
        "include_usage": {
          "type": "boolean",
          "description": "Whether to include usage information in the stream."
        }
      }
    },
    "temperature": {
      "type": "number",
      "minimum": 0,
      "maximum": 2,
      "description": "What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. We generally recommend altering this or top_p but not both."
    },
    "top_k": {
      "type": "integer",
      "minimum": 0,
      "description": "The number of highest probability vocabulary tokens to keep for top-k-filtering."
    },
    "top_p": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered."
    },
    "user": {
      "type": "string",
      "description": "This field is discarded on the request but is supported in the Venice API for compatibility with OpenAI clients. It is not an alias of anon_user_id."
    },
    "anon_user_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[\\x20-\\x7E]+$",
      "description": "Optional identifier for the API customer's end user. Combined with the Venice user id when attributing the request to upstream providers. Distinct from the discarded OpenAI `user` field. Must be printable ASCII and must not contain `||`."
    },
    "fallbacks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string"
          }
        },
        "required": [
          "model"
        ]
      },
      "maxItems": 10,
      "description": "Anthropic beta parameter for Claude Fable 5 server-side refusal fallback. Forwarded only for direct Anthropic routes; ignored for other providers."
    },
    "store": {
      "type": "boolean",
      "description": "This field is accepted for OpenAI compatibility but is not used by Venice."
    },
    "verbosity": {
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high",
        "auto"
      ],
      "description": "Controls the verbosity of the text response. Currently supported values are `low`, `medium`, and `high`."
    },
    "text": {
      "type": "object",
      "properties": {
        "verbosity": {
          "type": "string",
          "enum": [
            "low",
            "medium",
            "high",
            "auto"
          ],
          "description": "Controls the verbosity of the text response."
        }
      },
      "description": "OpenAI-compatible text configuration parameter."
    },
    "include": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "OpenAI-compatible parameter specifying additional data to include in the response."
    },
    "metadata": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "OpenAI-compatible metadata parameter for request tracking."
    },
    "venice_parameters": {
      "type": "object",
      "properties": {
        "character_slug": {
          "type": "string",
          "description": "The character slug of a public Venice character. Discoverable as the \"Public ID\" on the published character page."
        },
        "strip_thinking_response": {
          "type": "boolean",
          "default": false,
          "description": "Strip <think></think> blocks from the response. Applicable only to reasoning / thinking models. Also available to use as a model feature suffix. Defaults to false."
        },
        "disable_thinking": {
          "type": "boolean",
          "default": false,
          "description": "On supported reasoning models, disables thinking and strips reasoning from the response. Direct OpenAI models with mandatory reasoning use their minimum supported effort when a thinking toggle is offered; reasoning tokens may still be generated and billed. Defaults to false."
        },
        "enable_e2ee": {
          "type": "boolean",
          "default": true,
          "description": "Enable end-to-end encryption for E2EE-capable models. When true (default), E2EE is used if E2EE headers are present. When false, the model runs in TEE-only mode even if E2EE headers are present. Only applicable to models with E2EE capability."
        },
        "enable_web_search": {
          "type": "string",
          "enum": [
            "auto",
            false,
            true
          ],
          "default": false,
          "description": "Enable web search for this request. Defaults to off. On will force web search on the request. Auto will enable it based on the model's discretion. Citations will be returned either in the first chunk of a streaming result, or in the non streaming response."
        },
        "enable_web_scraping": {
          "type": "boolean",
          "default": false,
          "description": "Enable Venice web scraping of URLs in the latest user message using Firecrawl. Off by default."
        },
        "enable_web_citations": {
          "type": "boolean",
          "default": false,
          "description": "When web search is enabled, this will request that the LLM cite its sources using a ^index^ or ^i,j^ superscript format (e.g., ^1^). Defaults to false."
        },
        "include_search_results_in_stream": {
          "type": "boolean",
          "default": false,
          "description": "Experimental feature - When set to true, the LLM will include search results in the stream as the first emitted chunk. Defaults to false."
        },
        "return_search_results_as_documents": {
          "type": "boolean",
          "description": "When set, search results are also surfaced in an OpenAI-compatible tool call named \"venice_web_search_documents\" to ease LangChain consumption."
        },
        "include_venice_system_prompt": {
          "type": "boolean",
          "default": true,
          "description": "Whether to include the Venice supplied system prompts along side specified system prompts. Defaults to true."
        },
        "enable_x_search": {
          "type": "boolean",
          "default": false,
          "description": "Enable xAI native search (web + X/Twitter) for supported models. When enabled, the model performs web and X searches server-side instead of Venice search augmentation. Only available on models with supportsXSearch capability (e.g., grok-4-20). Additional per-search charges apply (~$0.01/search)."
        }
      },
      "description": "Unique parameters to Venice's API implementation. Customize these to control the behavior of the model."
    },
    "parallel_tool_calls": {
      "type": "boolean",
      "default": true,
      "description": "Whether to enable parallel function calling during tool use."
    },
    "response_format": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "json_schema": {
              "type": "object",
              "additionalProperties": {
                "nullable": true
              }
            },
            "type": {
              "type": "string",
              "enum": [
                "json_schema"
              ]
            }
          },
          "required": [
            "json_schema",
            "type"
          ],
          "additionalProperties": false,
          "description": "The JSON Schema that should be used to validate and format the response.",
          "title": "json_schema"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "json_object"
              ]
            }
          },
          "required": [
            "type"
          ],
          "additionalProperties": false,
          "description": "The response should be formatted as a JSON object. This is a deprecated implementation and the preferred use is json_schema.",
          "title": "json_object"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "text"
              ]
            }
          },
          "required": [
            "type"
          ],
          "additionalProperties": false,
          "description": "The response should be returned as plain text. This is the default behavior.",
          "title": "text"
        }
      ],
      "description": "Format in which the response should be returned."
    },
    "tool_choice": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "function": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "name"
              ]
            },
            "type": {
              "type": "string"
            }
          },
          "required": [
            "function",
            "type"
          ]
        },
        {
          "type": "string"
        }
      ]
    },
    "tools": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "web_search",
                  "x_search"
                ]
              }
            },
            "required": [
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "function": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "parameters": {
                    "type": "object",
                    "additionalProperties": {
                      "nullable": true
                    }
                  },
                  "strict": {
                    "type": "boolean",
                    "default": false,
                    "description": "If set to true, the model will follow the exact schema defined in the parameters field. Only a subset of JSON Schema is supported when strict is true."
                  }
                },
                "required": [
                  "name"
                ]
              },
              "id": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "function"
            ]
          }
        ],
        "description": "A tool that can be called by the model. Currently, only functions are supported as tools.",
        "title": "Tool Call"
      },
      "description": "A list of tools the model may call. Currently, only functions are supported as a tool. Use this to provide a list of functions the model may generate JSON inputs for."
    }
  },
  "required": [
    "messages",
    "model"
  ],
  "additionalProperties": false
}