Octen · Schema

MessagesRequest

Request body for the Messages API. Some parameters apply only to certain models; unsupported parameters are ignored.

SearchWeb SearchAILLMEmbeddingsContent ExtractionModel GatewayMCPAgentsDeep ResearchCompany

Properties

Name Type Description
model string The model to use. Anthropic models also accept their native ids (e.g. `claude-opus-4-8`), which map to `anthropic/claude-opus-4.8`.
max_tokens integer Maximum number of tokens to generate, including thinking and visible output tokens.
messages array The conversation so far, in chronological order.
system object System prompt. A plain string or an array of text blocks supporting `cache_control`.
tools array
tool_choice object
stream boolean Whether to enable streaming output.
temperature number Controls randomness.
top_p number Nucleus sampling. If unset, no nucleus truncation is applied. Set only one of `temperature` and `top_p`.
top_k integer Sample only from the top K tokens. If unset, top-k filtering is disabled.
stop_sequences array Stop sequences.
thinking object
metadata object Request metadata.
output_config object Controls how the model produces its output.
cache_control object Top-level prompt caching marker. Sets a cache breakpoint on the last cacheable content block in the request, equivalent to setting `cache_control` on that block directly.
View JSON Schema on GitHub

JSON Schema

octen-ai-messages-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-messages-request-schema.json",
  "title": "MessagesRequest",
  "description": "Request body for the Messages API. Some parameters apply only to certain models; unsupported parameters are ignored.",
  "x-generated": "2026-10-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/octen-ai-openapi.yml#/components/schemas/MessagesRequest",
  "type": "object",
  "required": [
    "model",
    "max_tokens",
    "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. Anthropic models also accept their native ids (e.g. `claude-opus-4-8`), which map to `anthropic/claude-opus-4.8`."
    },
    "max_tokens": {
      "type": "integer",
      "minimum": 1,
      "description": "Maximum number of tokens to generate, including thinking and visible output tokens."
    },
    "messages": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/MessagesMessage"
      },
      "description": "The conversation so far, in chronological order."
    },
    "system": {
      "description": "System prompt. A plain string or an array of text blocks supporting `cache_control`.",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/MessagesSystemBlock"
          }
        }
      ]
    },
    "tools": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/MessagesToolDefinition"
      }
    },
    "tool_choice": {
      "$ref": "#/$defs/MessagesToolChoice"
    },
    "stream": {
      "type": "boolean",
      "default": false,
      "description": "Whether to enable streaming output."
    },
    "temperature": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "default": 1.0,
      "description": "Controls randomness."
    },
    "top_p": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1,
      "description": "Nucleus sampling. If unset, no nucleus truncation is applied. Set only one of `temperature` and `top_p`."
    },
    "top_k": {
      "type": "integer",
      "minimum": 0,
      "description": "Sample only from the top K tokens. If unset, top-k filtering is disabled."
    },
    "stop_sequences": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Stop sequences."
    },
    "thinking": {
      "$ref": "#/$defs/MessagesThinking"
    },
    "metadata": {
      "type": "object",
      "description": "Request metadata.",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "A unique identifier for the end user. Use hashed or pseudonymous identifiers to avoid passing personally identifiable information."
        }
      }
    },
    "output_config": {
      "type": "object",
      "description": "Controls how the model produces its output.",
      "properties": {
        "effort": {
          "type": "string",
          "enum": [
            "low",
            "medium",
            "high",
            "xhigh",
            "max"
          ],
          "description": "Reasoning effort for reasoning models."
        },
        "format": {
          "type": "object",
          "description": "Structured output. Constrains the model to return content matching a JSON Schema.",
          "required": [
            "type",
            "schema"
          ],
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "json_schema"
              ],
              "description": "The structured output type. Always `json_schema`."
            },
            "schema": {
              "type": "object",
              "description": "The JSON Schema the output must conform to."
            }
          }
        }
      }
    },
    "cache_control": {
      "type": "object",
      "description": "Top-level prompt caching marker. Sets a cache breakpoint on the last cacheable content block in the request, equivalent to setting `cache_control` on that block directly.",
      "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."
        }
      }
    }
  },
  "$defs": {
    "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."
        }
      }
    },
    "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."
        }
      }
    },
    "MessagesContentBlock": {
      "type": "object",
      "required": [
        "type"
      ],
      "description": "A content block within a message. The fields used depend on `type`. For replaying a multi-turn conversation, blocks such as `tool_use`, `tool_result`, `thinking`, `redacted_thinking`, `server_tool_use`, and `web_search_tool_result` are returned verbatim.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "text",
            "image",
            "tool_use",
            "tool_result",
            "thinking",
            "redacted_thinking",
            "server_tool_use",
            "web_search_tool_result"
          ],
          "description": "The type of content block."
        },
        "text": {
          "type": "string",
          "description": "Text content. Required when `type` is `text`."
        },
        "source": {
          "type": "object",
          "description": "Image source. Required when `type` is `image`.",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "url",
                "base64"
              ],
              "description": "How the image is provided."
            },
            "url": {
              "type": "string",
              "description": "Image URL. Required when `source.type` is `url`."
            },
            "media_type": {
              "type": "string",
              "enum": [
                "image/jpeg",
                "image/png",
                "image/gif",
                "image/webp"
              ],
              "description": "Image MIME type. Required when `source.type` is `base64`."
            },
            "data": {
              "type": "string",
              "description": "Base64-encoded image. Required when `source.type` is `base64`."
            }
          }
        },
        "id": {
          "type": "string",
          "description": "Block id, replayed verbatim. Used by `tool_use` and `server_tool_use` blocks."
        },
        "name": {
          "type": "string",
          "description": "Tool name, replayed verbatim. For `server_tool_use` it is `octen_search`. Used by `tool_use` and `server_tool_use` blocks."
        },
        "input": {
          "type": "object",
          "description": "Tool call arguments, replayed verbatim. Used by `tool_use` and `server_tool_use` blocks."
        },
        "tool_use_id": {
          "type": "string",
          "description": "The id of the corresponding `tool_use` or `server_tool_use` block. Used by `tool_result` and `web_search_tool_result` blocks."
        },
        "content": {
          "description": "Result content. A string or content blocks for `tool_result`; the array of `web_search_result` blocks for `web_search_tool_result`.",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "object"
              }
            }
          ]
        },
        "is_error": {
          "type": "boolean",
          "default": false,
          "description": "Whether the tool execution failed. Used by `tool_result` blocks."
        },
        "thinking": {
          "type": "string",
          "description": "Thinking content, replayed verbatim. Required when `type` is `thinking`."
        },
        "signature": {
          "type": "string",
          "description": "Thinking signature, replayed verbatim. Required when `type` is `thinking`."
        },
        "data": {
          "type": "string",
          "description": "Encrypted thinking content, replayed verbatim. Required when `type` is `redacted_thinking`."
        },
        "cache_control": {
          "$ref": "#/$defs/CacheControl"
        }
      }
    },
    "MessagesCustomTool": {
      "type": "object",
      "required": [
        "name"
      ],
      "description": "A custom tool, executed by the caller and returned via a `tool_result` block.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The tool name."
        },
        "description": {
          "type": "string",
          "description": "A description of what the custom tool does."
        },
        "input_schema": {
          "type": "object",
          "description": "The custom tool's parameter definition in JSON Schema format."
        },
        "strict": {
          "type": "boolean",
          "default": false,
          "description": "Whether to enable strict mode for a custom tool."
        },
        "cache_control": {
          "$ref": "#/$defs/CacheControl"
        }
      }
    },
    "MessagesMessage": {
      "type": "object",
      "required": [
        "role",
        "content"
      ],
      "description": "A message in the conversation. Tool results are returned via a `tool_result` content block in a `user` message.",
      "properties": {
        "role": {
          "type": "string",
          "enum": [
            "user",
            "assistant"
          ],
          "description": "The role of the message author."
        },
        "content": {
          "description": "The content. A plain string or an array of content blocks.",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/MessagesContentBlock"
              }
            }
          ]
        }
      }
    },
    "MessagesOctenBroadSearchTool": {
      "type": "object",
      "required": [
        "type",
        "name"
      ],
      "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`."
        },
        "name": {
          "type": "string",
          "enum": [
            "octen_broad_search"
          ],
          "description": "The tool name. Always `octen_broad_search`."
        },
        "parameters": {
          "allOf": [
            {
              "$ref": "#/$defs/OctenBroadSearchToolParameters"
            }
          ],
          "description": "Broad search behavior configuration. Optional."
        },
        "cache_control": {
          "$ref": "#/$defs/CacheControl"
        }
      }
    },
    "MessagesOctenSearchTool": {
      "type": "object",
      "required": [
        "type",
        "name"
      ],
      "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`."
        },
        "name": {
          "type": "string",
          "enum": [
            "octen_search"
          ],
          "description": "The tool name. Always `octen_search`."
        },
        "parameters": {
          "allOf": [
            {
              "$ref": "#/$defs/OctenSearchToolParameters"
            }
          ],
          "description": "Search behavior configuration. Optional."
        },
        "cache_control": {
          "$ref": "#/$defs/CacheControl"
        }
      }
    },
    "MessagesSystemBlock": {
      "type": "object",
      "required": [
        "type",
        "text"
      ],
      "description": "A system prompt text block.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "text"
          ],
          "description": "The block type. Always `text`."
        },
        "text": {
          "type": "string",
          "description": "The system prompt content."
        },
        "cache_control": {
          "$ref": "#/$defs/CacheControl"
        }
      }
    },
    "MessagesThinking": {
      "type": "object",
      "description": "Thinking options for reasoning models.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "enabled",
            "disabled",
            "adaptive"
          ],
          "description": "`adaptive` lets the model decide the thinking depth."
        },
        "budget_tokens": {
          "type": "integer",
          "minimum": 1024,
          "description": "Thinking token budget. Required when `type` is `enabled`; must be less than `max_tokens`. Not allowed when `type` is `adaptive` or `disabled`."
        },
        "display": {
          "type": "string",
          "enum": [
            "summarized",
            "omitted"
          ],
          "default": "summarized",
          "description": "Controls how thinking is shown. `summarized` returns thinking blocks; `omitted` returns only the signature so blocks can be replayed. Valid only when `type` is `enabled` or `adaptive`."
        }
      }
    },
    "MessagesToolChoice": {
      "type": "object",
      "description": "Controls whether and how the model calls tools.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "auto",
            "any",
            "tool",
            "none"
          ],
          "default": "auto",
          "description": "`auto`: model decides; `any`: must call a tool; `tool`: call a specific tool; `none`: no tools."
        },
        "name": {
          "type": "string",
          "description": "The tool name to force. Required when `type` is `tool` (e.g. `octen_broad_search` or `octen_search`)."
        },
        "disable_parallel_tool_use": {
          "type": "boolean",
          "default": false,
          "description": "When `true`, the model issues at most one tool call per turn."
        }
      }
    },
    "MessagesToolDefinition": {
      "oneOf": [
        {
          "$ref": "#/$defs/MessagesCustomTool"
        },
        {
          "$ref": "#/$defs/MessagesOctenBroadSearchTool"
        },
        {
          "$ref": "#/$defs/MessagesOctenSearchTool"
        }
      ],
      "description": "A tool definition. One of a custom tool, the built-in `octen_broad_search` tool, or the `octen_search` tool."
    },
    "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"
        }
      ]
    },
    "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-messages-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.