Octen · Schema

ChatCompletionRequest

Request body for the Chat Completions API. Some parameters apply only to certain models; unsupported parameters are ignored for the selected model.

SearchWeb SearchAILLMEmbeddingsContent ExtractionModel GatewayMCPAgentsDeep ResearchCompany

Properties

Name Type Description
model string The model to use for chat completion.
messages array The conversation so far. System prompt plus user and assistant messages in chronological order.
tools array
tool_choice object Controls tool invocation. `none`: never call tools; `auto`: model decides (default); `required`: must call a tool. Can also be an object to force a specific tool. Only valid when `tools` is set.
parallel_tool_calls boolean Whether the model may issue multiple tool calls in one reply. When `false`, at most one tool call per turn.
stream boolean Whether to enable streaming output. When `true`, returns `chat.completion.chunk` objects incrementally.
max_tokens integer Maximum number of tokens the model can output. If not set, the model's internal default limit is used.
max_completion_tokens integer Maximum completion tokens, including reasoning and visible output tokens. If not set, the model's internal default limit is used.
temperature number Controls randomness in generation. Higher values produce more diverse output; lower values produce more deterministic output.
top_p number Nucleus sampling. Only tokens with cumulative probability up to `top_p` are considered.
top_k integer Sample only from the top K most probable tokens. `0` disables it.
min_p number Minimum probability threshold relative to the most probable token. Tokens below it are filtered out. `0` disables it.
top_a number Dynamic filtering threshold based on the most probable token. `0` disables it.
repetition_penalty number Penalizes tokens already present in the input. Above 1 suppresses repetition; below 1 encourages it.
frequency_penalty number Penalizes tokens by their frequency in the output so far. Positive values reduce repetition.
presence_penalty number Penalizes tokens that have already appeared. Positive values encourage new topics.
response_format object
stop array Stop sequences. Generation stops when any of these strings is encountered.
seed integer Seed for reproducibility. With the same parameters and model version, output should be as consistent as possible.
reasoning object
reasoning_effort string Top-level alias for `reasoning.effort`. If both are set, `reasoning` takes precedence.
verbosity string Controls how verbose the reply is.
logit_bias object A JSON object mapping token IDs to bias values (-100 to 100), added to the logits before sampling.
logprobs boolean Whether to return the log probabilities of the output tokens.
top_logprobs integer Number of most likely tokens to return at each position. Requires `logprobs` to be `true`.
user string A unique identifier for the end user. Use hashed or pseudonymous identifiers to avoid passing personally identifiable information.
modalities array Requested output modalities.
prompt_cache_key string Cache key for prompt caching.
prompt_cache_options object Prompt caching controls.
prompt_cache_retention string Prompt cache retention policy.
previous_response_id string The `id` of a previous response, used to chain state across turns.
View JSON Schema on GitHub

JSON Schema

octen-ai-chat-completion-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/octen-ai/main/json-schema/octen-ai-chat-completion-request-schema.json",
  "title": "ChatCompletionRequest",
  "description": "Request body for the Chat Completions API. Some parameters apply only to certain models; unsupported parameters are ignored for the selected model.",
  "x-generated": "2026-10-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/octen-ai-openapi.yml#/components/schemas/ChatCompletionRequest",
  "type": "object",
  "required": [
    "model",
    "messages"
  ],
  "properties": {
    "model": {
      "type": "string",
      "enum": [
        "openai/gpt-6-astra",
        "openai/gpt-5.6-sol",
        "openai/gpt-5.6-terra",
        "openai/gpt-5.6-luna",
        "openai/gpt-5.5-pro",
        "openai/gpt-5.5",
        "openai/gpt-5.4",
        "anthropic/claude-fable-5.1",
        "anthropic/claude-fable-5",
        "anthropic/claude-opus-5",
        "anthropic/claude-opus-4.8",
        "anthropic/claude-opus-4.6",
        "anthropic/claude-sonnet-5",
        "anthropic/claude-sonnet-4.6",
        "anthropic/claude-haiku-4.5",
        "google/gemini-3.8-flash",
        "google/gemini-3.5-flash",
        "google/gemini-3.5-flash-lite",
        "google/gemini-3.1-pro-preview",
        "google/gemini-3.1-flash-lite",
        "google/gemini-3-flash-preview",
        "moonshotai/kimi-k3",
        "moonshotai/kimi-k2.6",
        "moonshotai/kimi-k2.5",
        "minimax/minimax-m2.5",
        "qwen/qwen3.6-plus",
        "deepseek/deepseek-v4-pro",
        "deepseek/deepseek-v4-flash-0731"
      ],
      "description": "The model to use for chat completion."
    },
    "messages": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ChatMessage"
      },
      "description": "The conversation so far. System prompt plus user and assistant messages in chronological order."
    },
    "tools": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ChatToolDefinition"
      }
    },
    "tool_choice": {
      "description": "Controls tool invocation. `none`: never call tools; `auto`: model decides (default); `required`: must call a tool. Can also be an object to force a specific tool. Only valid when `tools` is set.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "none",
            "auto",
            "required"
          ]
        },
        {
          "$ref": "#/$defs/ChatToolChoiceObject"
        }
      ]
    },
    "parallel_tool_calls": {
      "type": "boolean",
      "default": true,
      "description": "Whether the model may issue multiple tool calls in one reply. When `false`, at most one tool call per turn."
    },
    "stream": {
      "type": "boolean",
      "default": false,
      "description": "Whether to enable streaming output. When `true`, returns `chat.completion.chunk` objects incrementally."
    },
    "max_tokens": {
      "type": "integer",
      "minimum": 1,
      "description": "Maximum number of tokens the model can output. If not set, the model's internal default limit is used."
    },
    "max_completion_tokens": {
      "type": "integer",
      "minimum": 1,
      "description": "Maximum completion tokens, including reasoning and visible output tokens. If not set, the model's internal default limit is used."
    },
    "temperature": {
      "type": "number",
      "minimum": 0,
      "maximum": 2,
      "default": 1.0,
      "description": "Controls randomness in generation. Higher values produce more diverse output; lower values produce more deterministic output."
    },
    "top_p": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1,
      "default": 1.0,
      "description": "Nucleus sampling. Only tokens with cumulative probability up to `top_p` are considered."
    },
    "top_k": {
      "type": "integer",
      "minimum": 0,
      "default": 0,
      "description": "Sample only from the top K most probable tokens. `0` disables it."
    },
    "min_p": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "default": 0,
      "description": "Minimum probability threshold relative to the most probable token. Tokens below it are filtered out. `0` disables it."
    },
    "top_a": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "default": 0,
      "description": "Dynamic filtering threshold based on the most probable token. `0` disables it."
    },
    "repetition_penalty": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 2,
      "default": 1.0,
      "description": "Penalizes tokens already present in the input. Above 1 suppresses repetition; below 1 encourages it."
    },
    "frequency_penalty": {
      "type": "number",
      "minimum": -2,
      "maximum": 2,
      "default": 0,
      "description": "Penalizes tokens by their frequency in the output so far. Positive values reduce repetition."
    },
    "presence_penalty": {
      "type": "number",
      "minimum": -2,
      "maximum": 2,
      "default": 0,
      "description": "Penalizes tokens that have already appeared. Positive values encourage new topics."
    },
    "response_format": {
      "$ref": "#/$defs/ChatResponseFormat"
    },
    "stop": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Stop sequences. Generation stops when any of these strings is encountered."
    },
    "seed": {
      "type": "integer",
      "description": "Seed for reproducibility. With the same parameters and model version, output should be as consistent as possible."
    },
    "reasoning": {
      "$ref": "#/$defs/ChatReasoningOptions"
    },
    "reasoning_effort": {
      "type": "string",
      "enum": [
        "none",
        "minimal",
        "low",
        "medium",
        "high",
        "xhigh",
        "max"
      ],
      "description": "Top-level alias for `reasoning.effort`. If both are set, `reasoning` takes precedence."
    },
    "verbosity": {
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high"
      ],
      "default": "medium",
      "description": "Controls how verbose the reply is."
    },
    "logit_bias": {
      "type": "object",
      "additionalProperties": {
        "type": "number",
        "minimum": -100,
        "maximum": 100
      },
      "description": "A JSON object mapping token IDs to bias values (-100 to 100), added to the logits before sampling."
    },
    "logprobs": {
      "type": "boolean",
      "default": false,
      "description": "Whether to return the log probabilities of the output tokens."
    },
    "top_logprobs": {
      "type": "integer",
      "minimum": 0,
      "maximum": 20,
      "description": "Number of most likely tokens to return at each position. Requires `logprobs` to be `true`."
    },
    "user": {
      "type": "string",
      "description": "A unique identifier for the end user. Use hashed or pseudonymous identifiers to avoid passing personally identifiable information."
    },
    "modalities": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [
        "text"
      ],
      "description": "Requested output modalities."
    },
    "prompt_cache_key": {
      "type": "string",
      "description": "Cache key for prompt caching."
    },
    "prompt_cache_options": {
      "type": "object",
      "description": "Prompt caching controls.",
      "properties": {
        "mode": {
          "type": "string",
          "enum": [
            "implicit",
            "explicit"
          ],
          "description": "`implicit` caches automatically; `explicit` caches only prefixes marked with a cache breakpoint."
        },
        "ttl": {
          "type": "string",
          "enum": [
            "30m"
          ],
          "description": "How long a cache entry is retained."
        }
      }
    },
    "prompt_cache_retention": {
      "type": "string",
      "enum": [
        "in_memory",
        "24h"
      ],
      "description": "Prompt cache retention policy."
    },
    "previous_response_id": {
      "type": "string",
      "description": "The `id` of a previous response, used to chain state across turns."
    }
  },
  "$defs": {
    "AssistantMessage": {
      "type": "object",
      "required": [
        "role"
      ],
      "properties": {
        "role": {
          "type": "string",
          "enum": [
            "assistant"
          ],
          "description": "The role of the message author. Always `assistant`."
        },
        "content": {
          "type": [
            "string",
            "null"
          ],
          "description": "The assistant's text content. May be `null` or omitted when the assistant only produces tool calls."
        },
        "tool_calls": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ChatToolCall"
          },
          "description": "Tool calls generated by the model in a previous turn, replayed verbatim. Only valid when `role` is `assistant`."
        }
      }
    },
    "CacheControl": {
      "type": "object",
      "description": "Prompt caching marker. Sets a cache breakpoint so the stable prefix up to this block can be reused.",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "ephemeral"
          ],
          "description": "The cache control type. Always `ephemeral`."
        },
        "ttl": {
          "type": "string",
          "enum": [
            "5m",
            "1h"
          ],
          "default": "5m",
          "description": "Cache lifetime."
        }
      }
    },
    "ChatContentBlock": {
      "type": "object",
      "description": "A content block within a message.",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "text",
            "image",
            "image_url"
          ],
          "description": "The type of content block."
        },
        "text": {
          "type": "string",
          "description": "The text content. Required when `type` is `text`."
        },
        "image": {
          "type": "string",
          "description": "Base64-encoded image. Required when `type` is `image`."
        },
        "image_url": {
          "type": "object",
          "description": "Image URL object. Required when `type` is `image_url`.",
          "required": [
            "url"
          ],
          "properties": {
            "url": {
              "type": "string",
              "description": "The URL of the image."
            }
          }
        },
        "cache_control": {
          "$ref": "#/$defs/CacheControl"
        }
      }
    },
    "ChatFunctionDefinition": {
      "type": "object",
      "required": [
        "name"
      ],
      "description": "A custom function definition.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the function."
        },
        "description": {
          "type": "string",
          "description": "A description of what the function does."
        },
        "parameters": {
          "type": "object",
          "description": "The function's parameter definition in JSON Schema format."
        },
        "strict": {
          "type": "boolean",
          "default": false,
          "description": "Whether to enable strict mode. When enabled, generated arguments strictly conform to `parameters`."
        }
      }
    },
    "ChatFunctionTool": {
      "type": "object",
      "required": [
        "type",
        "function"
      ],
      "description": "A custom function tool, executed by the caller.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "function"
          ],
          "description": "The type of tool. Always `function` for a custom tool."
        },
        "function": {
          "allOf": [
            {
              "$ref": "#/$defs/ChatFunctionDefinition"
            }
          ],
          "description": "The function definition."
        }
      }
    },
    "ChatJsonSchemaSpec": {
      "type": "object",
      "required": [
        "name"
      ],
      "description": "JSON Schema specification for structured output. Required when `response_format.type` is `json_schema`.",
      "properties": {
        "name": {
          "type": "string",
          "description": "A user-defined name for the schema."
        },
        "strict": {
          "type": "boolean",
          "default": true,
          "description": "Whether the model output must strictly conform to the schema."
        },
        "description": {
          "type": "string",
          "description": "A description of the schema."
        },
        "schema": {
          "type": "object",
          "description": "The JSON Schema definition object. May contain `type`, `properties`, `required`, `additionalProperties`, etc."
        }
      }
    },
    "ChatMessage": {
      "oneOf": [
        {
          "$ref": "#/$defs/SystemMessage"
        },
        {
          "$ref": "#/$defs/DeveloperMessage"
        },
        {
          "$ref": "#/$defs/UserMessage"
        },
        {
          "$ref": "#/$defs/AssistantMessage"
        },
        {
          "$ref": "#/$defs/ToolMessage"
        }
      ]
    },
    "ChatOctenBroadSearchTool": {
      "type": "object",
      "required": [
        "type"
      ],
      "description": "The built-in `octen_broad_search` server tool, executed by Octen.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "octen_broad_search"
          ],
          "description": "The type of tool. Always `octen_broad_search`."
        },
        "parameters": {
          "allOf": [
            {
              "$ref": "#/$defs/OctenBroadSearchToolParameters"
            }
          ],
          "description": "Broad search behavior configuration. Optional."
        }
      }
    },
    "ChatOctenSearchTool": {
      "type": "object",
      "required": [
        "type"
      ],
      "description": "The built-in `octen_search` server tool, executed by Octen.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "octen_search"
          ],
          "description": "The type of tool. Always `octen_search`."
        },
        "parameters": {
          "allOf": [
            {
              "$ref": "#/$defs/OctenSearchToolParameters"
            }
          ],
          "description": "Search behavior configuration. Optional."
        }
      }
    },
    "ChatReasoningOptions": {
      "type": "object",
      "description": "Options for reasoning models. Turns thinking on or off and sets the effort and budget.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Set to `false` to turn off thinking. Overrides `effort` and `max_tokens`."
        },
        "effort": {
          "type": "string",
          "enum": [
            "max",
            "xhigh",
            "high",
            "medium",
            "low",
            "minimal",
            "none"
          ],
          "description": "The reasoning effort level."
        },
        "max_tokens": {
          "type": "integer",
          "minimum": 1024,
          "description": "Thinking token budget."
        }
      }
    },
    "ChatResponseFormat": {
      "type": "object",
      "description": "Controls the output format. Some models may not support structured output and will automatically fall back to `text`.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "text",
            "json_object",
            "json_schema"
          ],
          "default": "text",
          "description": "The output format type."
        },
        "json_schema": {
          "$ref": "#/$defs/ChatJsonSchemaSpec"
        }
      }
    },
    "ChatToolCall": {
      "type": "object",
      "required": [
        "id",
        "type",
        "function"
      ],
      "description": "A custom function call generated by the model.",
      "properties": {
        "index": {
          "type": "integer",
          "description": "The index of this tool call in the array."
        },
        "id": {
          "type": "string",
          "description": "A unique identifier for this tool call. Referenced by the corresponding `tool` message's `tool_call_id`."
        },
        "type": {
          "type": "string",
          "enum": [
            "function"
          ],
          "description": "The type of tool call. Always `function`."
        },
        "function": {
          "$ref": "#/$defs/ChatToolCallFunction"
        }
      }
    },
    "ChatToolCallFunction": {
      "type": "object",
      "required": [
        "name",
        "arguments"
      ],
      "description": "The function invocation details within a tool call.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the function to call."
        },
        "arguments": {
          "type": "string",
          "description": "The arguments to the function, as a JSON string generated by the model."
        }
      }
    },
    "ChatToolChoiceObject": {
      "type": "object",
      "required": [
        "type"
      ],
      "description": "Forces a specific tool. The named tool must be declared in `tools`.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "function",
            "octen_broad_search",
            "octen_search"
          ],
          "description": "The type of tool to force."
        },
        "function": {
          "type": "object",
          "description": "The function to call. Required when `type` is `function`.",
          "required": [
            "name"
          ],
          "properties": {
            "name": {
              "type": "string",
              "description": "The name of the function to call."
            }
          }
        }
      }
    },
    "ChatToolDefinition": {
      "oneOf": [
        {
          "$ref": "#/$defs/ChatFunctionTool"
        },
        {
          "$ref": "#/$defs/ChatOctenBroadSearchTool"
        },
        {
          "$ref": "#/$defs/ChatOctenSearchTool"
        }
      ],
      "description": "A tool definition. One of a custom `function` tool, the built-in `octen_broad_search` tool, or the `octen_search` tool."
    },
    "DeveloperMessage": {
      "type": "object",
      "required": [
        "role",
        "content"
      ],
      "description": "A developer message. The OpenAI-protocol equivalent of `system` (sent by newer OpenAI SDKs); handled as `system`.",
      "properties": {
        "role": {
          "type": "string",
          "enum": [
            "developer"
          ],
          "description": "The role of the message author. Always `developer`."
        },
        "content": {
          "description": "The content. A plain string or an array of content blocks.",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/ChatContentBlock"
              }
            }
          ]
        }
      }
    },
    "FullContentOptions": {
      "type": "object",
      "description": "Controls whether to return the full raw content of each result page.",
      "properties": {
        "enable": {
          "type": "boolean",
          "default": false,
          "description": "If true, returns full_content for each result."
        },
        "max_tokens": {
          "type": "integer",
          "default": 2048,
          "minimum": 100,
          "maximum": 100000,
          "description": "Maximum tokens of full content included per result."
        }
      }
    },
    "HighlightOptions": {
      "type": "object",
      "description": "Controls highlight extraction from result pages.",
      "properties": {
        "enable": {
          "type": "boolean",
          "default": true,
          "description": "If true, returns query-relevant highlight in each result."
        },
        "max_tokens": {
          "type": "integer",
          "default": 512,
          "minimum": 100,
          "maximum": 20000,
          "description": "Max tokens returned per highlight."
        }
      }
    },
    "OctenBroadSearchToolParameters": {
      "description": "Behavior configuration for the built-in `octen_broad_search` tool. Identical to `octen_search` except it accepts `max_queries` instead of `max_searches`. All parameters are optional and share the same semantics and defaults as the Web Search API.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "max_queries": {
              "type": "integer",
              "minimum": 1,
              "maximum": 30,
              "default": 5,
              "description": "Upper bound on the number of sub-queries generated."
            }
          }
        },
        {
          "$ref": "#/$defs/WebSearchOptions"
        }
      ]
    },
    "OctenSearchToolParameters": {
      "description": "Behavior configuration for the built-in `octen_search` tool. All parameters are optional and share the same semantics and defaults as the Web Search API. The query is generated automatically by the model; a single request may trigger multiple searches.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "max_searches": {
              "type": "integer",
              "default": 5,
              "description": "Maximum number of searches allowed in a single request."
            }
          }
        },
        {
          "$ref": "#/$defs/WebSearchOptions"
        }
      ]
    },
    "SystemMessage": {
      "type": "object",
      "required": [
        "role",
        "content"
      ],
      "properties": {
        "role": {
          "type": "string",
          "enum": [
            "system"
          ],
          "description": "The role of the message author. Always `system`."
        },
        "content": {
          "description": "The system prompt content. A plain string or an array of content blocks.",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/ChatContentBlock"
              }
            }
          ]
        }
      }
    },
    "ToolMessage": {
      "type": "object",
      "required": [
        "role",
        "tool_call_id",
        "content"
      ],
      "properties": {
        "role": {
          "type": "string",
          "enum": [
            "tool"
          ],
          "description": "The role of the message author. Always `tool`."
        },
        "tool_call_id": {
          "type": "string",
          "description": "The ID of the tool call this message responds to."
        },
        "content": {
          "type": "string",
          "description": "The tool output, typically a JSON string with the function result."
        }
      }
    },
    "UserMessage": {
      "type": "object",
      "required": [
        "role",
        "content"
      ],
      "properties": {
        "role": {
          "type": "string",
          "enum": [
            "user"
          ],
          "description": "The role of the message author. Always `user`."
        },
        "content": {
          "description": "The content of the message. A plain string or an array of content blocks.",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/ChatContentBlock"
              }
            }
          ]
        }
      }
    },
    "WebSearchOptions": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "default": 5,
          "minimum": 1,
          "maximum": 100,
          "description": "Number of results to return."
        },
        "include_domains": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 60
          },
          "maxItems": 1200,
          "description": "A list of domains to specifically include in the search results. The `site:` query operator adds to this list."
        },
        "exclude_domains": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 60
          },
          "maxItems": 1200,
          "description": "A list of domains to specifically exclude from the search results. The `-site:` query operator adds to this list. If a domain appears in both `include_domains` and `exclude_domains`, `exclude_domains` takes precedence."
        },
        "include_text": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 30
          },
          "maxItems": 5,
          "description": "Strings that must appear in the result page text."
        },
        "exclude_text": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 30
          },
          "maxItems": 5,
          "description": "Strings that must not appear in the result page text."
        },
        "time_basis": {
          "type": "string",
          "enum": [
            "auto",
            "published",
            "crawled"
          ],
          "default": "auto",
          "description": "Determines which time field is used for time filtering. `published` uses time_published; `crawled` uses time_last_crawled. Results missing this field are excluded when filtering by time."
        },
        "time_range": {
          "type": "string",
          "enum": [
            "day",
            "week",
            "month",
            "year",
            "d",
            "w",
            "m",
            "y"
          ],
          "description": "Relative time window counting back from the current time based on `time_basis`. Mutually exclusive with `start_time`/`end_time` — if both are provided, `start_time`/`end_time` take precedence."
        },
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "Start time for filtering results. ISO 8601 format."
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "End time for filtering results. ISO 8601 format."
        },
        "language": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "ar",
              "de",
              "en",
              "es",
              "fr",
              "hi",
              "id",
              "it",
              "ja",
              "ko",
              "nl",
              "pl",
              "pt",
              "ru",
              "th",
              "tr",
              "vi",
              "zh"
            ]
          },
          "default": [],
          "description": "A list of languages to restrict results to, as ISO 639-1 codes. By default, no language filter is applied."
        },
        "highlight": {
          "$ref": "#/$defs/HighlightOptions"
        },
        "full_content": {
          "$ref": "#/$defs/FullContentOptions"
        },
        "format": {
          "type": "string",
          "enum": [
            "markdown",
            "text"
          ],
          "default": "text",
          "description": "Controls the formatting of highlight outputs."
        },
        "safesearch": {
          "type": "string",
          "enum": [
            "off",
            "strict"
          ],
          "default": "strict",
          "description": "Controls filtering of explicit/adult content. `off` disables filtering; `strict` drops all adult content."
        },
        "include_images": {
          "type": "boolean",
          "default": false,
          "description": "Whether to include images in each result."
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/octen-ai-chat-completion-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.