Anthropic · Schema
CreateMessageParams
LLMAnthropicArtificial IntelligenceClaudeFoundation ModelsMachine LearningMCPAgents
Properties
| Name | Type | Description |
|---|---|---|
| model | object | |
| messages | array | Input messages. Our models are trained to operate on alternating `user` and `assistant` conversational turns. When creating a new `Message`, you specify the prior conversational turns with the `messag |
| cache_control | object | Top-level cache control automatically applies a cache_control marker to the last cacheable block in the request. |
| container | object | Container identifier for reuse across requests. |
| context_management | object | Context management configuration. This allows you to control how Claude manages context across multiple requests, such as whether to clear function results or not. |
| diagnostics | object | Request-level diagnostics. Supply `previous_message_id` to have the response include `diagnostics.cache_miss_reason` explaining any prompt-cache divergence from that prior request. |
| fallback_credit_token | object | The `fallback_credit_token` from a prior refusal's `stop_details`. When a preceding request was refused and returned a `fallback_credit_token`, pass that code here on the retry to have the retry's cac |
| fallbacks | object | Opt-in server-side retry on one or more substitute models when the requested model declines for policy reasons. Tried in order: if the first entry also declines, the second is tried, and so on. The st |
| inference_geo | object | Specifies the geographic region for inference processing. If not specified, the workspace's `default_inference_geo` is used. |
| max_tokens | integer | The maximum number of tokens to generate before stopping. Note that our models may stop _before_ reaching this maximum. This parameter only specifies the absolute maximum number of tokens to generate. |
| mcp_servers | array | MCP servers to be utilized in this request |
| metadata | object | An object describing metadata about the request. |
| output_config | object | Configuration options for the model's output, such as the output format. |
| output_format | object | Deprecated: Use `output_config.format` instead. See [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) A schema to specify Claude's output format in respons |
| service_tier | string | Determines whether to use priority capacity (if available) or standard capacity for this request. Anthropic offers different levels of service for your API requests. See [service-tiers](https://platfo |
| speed | object | The inference speed mode for this request. `"fast"` enables high output-tokens-per-second inference. |
| stop_sequences | array | Custom text sequences that will cause the model to stop generating. Our models will normally stop when they have naturally completed their turn, which will result in a response `stop_reason` of `"end_ |
| stream | boolean | Whether to incrementally stream the response using server-sent events. See [streaming](https://platform.claude.com/docs/en/build-with-claude/streaming) for details. |
| system | object | System prompt. A system prompt is a way of providing context and instructions to Claude, such as specifying a particular goal or role. See our [guide to system prompts](https://platform.claude.com/doc |
| temperature | number | Amount of randomness injected into the response. Defaults to `1.0`. Ranges from `0.0` to `1.0`. Use `temperature` closer to `0.0` for analytical / multiple choice, and closer to `1.0` for creative and |
| thinking | object | |
| tool_choice | object | |
| tools | array | Definitions of tools that the model may use. If you include `tools` in your API request, the model may return `tool_use` content blocks that represent the model's use of those tools. You can then run |
| top_k | integer | Only sample from the top K options for each subsequent token. Used to remove "long tail" low probability responses. [Learn more technical details here](https://towardsdatascience.com/how-to-sample-fro |
| top_p | number | Use nucleus sampling. In nucleus sampling, we compute the cumulative distribution over all the options for each subsequent token in decreasing probability order and cut it off once it reaches a partic |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/anthropic/main/json-schema/anthropic-beta-create-message-params-schema.json",
"title": "CreateMessageParams",
"x-generated": "2026-09-23",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/anthropic-messages-beta-true-api-openapi.yml#/components/schemas/BetaCreateMessageParams",
"additionalProperties": false,
"properties": {
"model": {
"$ref": "#/$defs/Model"
},
"messages": {
"description": "Input messages.\n\nOur models are trained to operate on alternating `user` and `assistant` conversational turns. When creating a new `Message`, you specify the prior conversational turns with the `messages` parameter, and the model then generates the next `Message` in the conversation. Consecutive `user` or `assistant` turns in your request will be combined into a single turn.\n\nEach input message must be an object with a `role` and `content`. You can specify a single `user`-role message, or you can include multiple `user` and `assistant` messages.\n\nIf the final message uses the `assistant` role, the response content will continue immediately from the content in that message. This can be used to constrain part of the model's response.\n\nExample with a single `user` message:\n\n```json\n[{\"role\": \"user\", \"content\": \"Hello, Claude\"}]\n```\n\nExample with multiple conversational turns:\n\n```json\n[\n {\"role\": \"user\", \"content\": \"Hello there.\"},\n {\"role\": \"assistant\", \"content\": \"Hi, I'm Claude. How can I help you?\"},\n {\"role\": \"user\", \"content\": \"Can you explain LLMs in plain English?\"},\n]\n```\n\nExample with a partially-filled response from Claude:\n\n```json\n[\n {\"role\": \"user\", \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"},\n {\"role\": \"assistant\", \"content\": \"The best answer is (\"},\n]\n```\n\nEach input message `content` may be either a single `string` or an array of content blocks, where each block has a specific `type`. Using a `string` for `content` is shorthand for an array of one content block of type `\"text\"`. The following input messages are equivalent:\n\n```json\n{\"role\": \"user\", \"content\": \"Hello, Claude\"}\n```\n\n```json\n{\"role\": \"user\", \"content\": [{\"type\": \"text\", \"text\": \"Hello, Claude\"}]}\n```\n\nSee [input examples](https://platform.claude.com/docs/en/build-with-claude/working-with-messages).\n\nNote that if you want to include a [system prompt](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices#give-claude-a-role), you can use the top-level `system` parameter — there is no `\"system\"` role for input messages in the Messages API.\n\nThere is a limit of 100,000 messages in a single request.",
"items": {
"$ref": "#/$defs/BetaInputMessage"
},
"title": "Messages",
"type": "array"
},
"cache_control": {
"anyOf": [
{
"oneOf": [
{
"$ref": "#/$defs/BetaCacheControlEphemeral"
}
]
},
{
"type": "null"
}
],
"description": "Top-level cache control automatically applies a cache_control marker to the last cacheable block in the request.",
"title": "Cache Control"
},
"container": {
"anyOf": [
{
"$ref": "#/$defs/BetaContainerParams"
},
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Container identifier for reuse across requests.",
"title": "Container"
},
"context_management": {
"anyOf": [
{
"$ref": "#/$defs/BetaContextManagementConfig"
},
{
"type": "null"
}
],
"description": "Context management configuration.\n\nThis allows you to control how Claude manages context across multiple requests, such as whether to clear function results or not.",
"x-anthropic-beta-required": [
"context-management-2025-06-27",
"compact-2026-01-12"
]
},
"diagnostics": {
"anyOf": [
{
"$ref": "#/$defs/BetaDiagnosticsParam"
},
{
"type": "null"
}
],
"description": "Request-level diagnostics. Supply `previous_message_id` to have the response include `diagnostics.cache_miss_reason` explaining any prompt-cache divergence from that prior request.",
"x-anthropic-beta-required": [
"cache-diagnosis-2026-04-07"
]
},
"fallback_credit_token": {
"anyOf": [
{
"maxLength": 2048,
"minLength": 1,
"type": "string"
},
{
"$ref": "#/$defs/BetaFallbackCreditTokenParam"
},
{
"type": "null"
}
],
"description": "The `fallback_credit_token` from a prior refusal's `stop_details`.\n\nWhen a preceding request was refused and returned a `fallback_credit_token`,\npass that code here on the retry to have the retry's cache-creation tokens\nfor the prefix that was warm on the refused model billed at the cache-read\nrate. Must be redeemed by the same organization and workspace, with the same\nrequest body (optionally extended by one appended `assistant` message whose\ncontent is the partial text — with any trailing whitespace stripped from\nthe final text block — and paired server-tool blocks streamed before the\nrefusal; the appended-assistant form is not available for requests with\n`output_format` set or forced `tool_choice`), on an eligible fallback\nmodel, on the same platform,\nand within 5 minutes of the refusal; a mismatch is a 400. A token minted\nmid-server-tool-loop whose partial content was continuable may only be\nredeemed with the appended-assistant form — if an exact-body retry is\nrejected with a 400 saying the token must be redeemed by continuing the\npartial response, retry with the appended-assistant form instead.\n\nWhen the appended-assistant form is used on a model that otherwise disallows\nassistant-turn prefill, this token also authorizes that one prefill.",
"title": "Fallback Credit Token",
"x-anthropic-beta-required": [
"fallback-credit-2026-06-01",
"fallback-credit-2026-07-01",
"server-side-fallback-2026-06-01",
"server-side-fallback-2026-07-01"
]
},
"fallbacks": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/BetaFallbackConfigV2"
},
"maxItems": 3,
"minItems": 1,
"type": "array"
},
{
"const": "default",
"type": "string",
"title": "FallbacksDefault",
"x-stainless-variantName": "Default"
},
{
"type": "null"
}
],
"description": "Opt-in server-side retry on one or more substitute models when the requested model declines for policy reasons. Tried in order: if the first entry also declines, the second is tried, and so on. The string \"default\" requests the requested model's server-defined default fallback configuration.",
"title": "Fallbacks",
"x-anthropic-beta-required": [
"server-side-fallback-2026-06-01",
"server-side-fallback-2026-07-01"
]
},
"inference_geo": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Specifies the geographic region for inference processing. If not specified, the workspace's `default_inference_geo` is used.",
"title": "Inference Geo"
},
"max_tokens": {
"description": "The maximum number of tokens to generate before stopping.\n\nNote that our models may stop _before_ reaching this maximum. This parameter only specifies the absolute maximum number of tokens to generate.\n\nSet to `0` to populate the [prompt cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pre-warming-the-cache) without generating a response.\n\nDifferent models have different maximum values for this parameter. See [models](https://platform.claude.com/docs/en/about-claude/models/overview) for details.",
"minimum": 0,
"title": "Max Tokens",
"type": "integer"
},
"mcp_servers": {
"description": "MCP servers to be utilized in this request",
"items": {
"$ref": "#/$defs/BetaRequestMCPServerURLDefinition"
},
"maxItems": 20,
"title": "Mcp Servers",
"type": "array",
"x-anthropic-beta-required": [
"mcp-client-2025-04-04",
"mcp-client-2025-11-20"
]
},
"metadata": {
"$ref": "#/$defs/BetaMetadata",
"description": "An object describing metadata about the request."
},
"output_config": {
"$ref": "#/$defs/BetaOutputConfig",
"description": "Configuration options for the model's output, such as the output format."
},
"output_format": {
"anyOf": [
{
"$ref": "#/$defs/BetaJsonOutputFormat"
},
{
"type": "null"
}
],
"deprecated": true,
"description": "Deprecated: Use `output_config.format` instead. See [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs)\n\nA schema to specify Claude's output format in responses. This parameter will be removed in a future release.",
"x-anthropic-beta-required": [
"structured-outputs-2025-11-13"
],
"x-stainless-skip": [
"python"
]
},
"service_tier": {
"description": "Determines whether to use priority capacity (if available) or standard capacity for this request.\n\nAnthropic offers different levels of service for your API requests. See [service-tiers](https://platform.claude.com/docs/en/api/service-tiers) for details.",
"enum": [
"auto",
"standard_only"
],
"title": "Service Tier",
"type": "string"
},
"speed": {
"anyOf": [
{
"$ref": "#/$defs/BetaSpeed"
},
{
"type": "null"
}
],
"description": "The inference speed mode for this request. `\"fast\"` enables high output-tokens-per-second inference.",
"x-anthropic-beta-required": [
"fast-mode-2026-02-01"
]
},
"stop_sequences": {
"description": "Custom text sequences that will cause the model to stop generating.\n\nOur models will normally stop when they have naturally completed their turn, which will result in a response `stop_reason` of `\"end_turn\"`.\n\nIf you want the model to stop generating when it encounters custom strings of text, you can use the `stop_sequences` parameter. If the model encounters one of the custom sequences, the response `stop_reason` value will be `\"stop_sequence\"` and the response `stop_sequence` value will contain the matched stop sequence.",
"items": {
"type": "string"
},
"title": "Stop Sequences",
"type": "array"
},
"stream": {
"description": "Whether to incrementally stream the response using server-sent events.\n\nSee [streaming](https://platform.claude.com/docs/en/build-with-claude/streaming) for details.",
"title": "Stream",
"type": "boolean"
},
"system": {
"anyOf": [
{
"type": "string",
"x-stainless-skip": [
"go"
]
},
{
"items": {
"$ref": "#/$defs/BetaRequestTextBlock"
},
"type": "array"
}
],
"description": "System prompt.\n\nA system prompt is a way of providing context and instructions to Claude, such as specifying a particular goal or role. See our [guide to system prompts](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices#give-claude-a-role).",
"title": "System"
},
"temperature": {
"deprecated": true,
"description": "Amount of randomness injected into the response.\n\nDefaults to `1.0`. Ranges from `0.0` to `1.0`. Use `temperature` closer to `0.0` for analytical / multiple choice, and closer to `1.0` for creative and generative tasks.\n\nNote that even with `temperature` of `0.0`, the results will not be fully deterministic.",
"maximum": 1,
"minimum": 0,
"title": "Temperature",
"type": "number",
"x-stainless-deprecation-message": "Deprecated. Models released after Claude Opus 4.6 do not support setting temperature. A value of 1.0 of will be accepted for backwards compatibility, all other values will be rejected with a 400 error.",
"x-stainless-skip": [
"python"
]
},
"thinking": {
"$ref": "#/$defs/BetaThinkingConfigParam"
},
"tool_choice": {
"$ref": "#/$defs/BetaToolChoice"
},
"tools": {
"description": "Definitions of tools that the model may use.\n\nIf you include `tools` in your API request, the model may return `tool_use` content blocks that represent the model's use of those tools. You can then run those tools using the tool input generated by the model and then optionally return results back to the model using `tool_result` content blocks.\n\nThere are two types of tools: **client tools** and **server tools**. The behavior described below applies to client tools. For [server tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/server-tools), see their individual documentation as each has its own behavior (e.g., the [web search tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool)).\n\nEach tool definition includes:\n\n* `name`: Name of the tool.\n* `description`: Optional, but strongly-recommended description of the tool.\n* `input_schema`: [JSON schema](https://json-schema.org/draft/2020-12) for the tool `input` shape that the model will produce in `tool_use` output content blocks.\n\nFor example, if you defined `tools` as:\n\n```json\n[\n {\n \"name\": \"get_stock_price\",\n \"description\": \"Get the current stock price for a given ticker symbol.\",\n \"input_schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"ticker\": {\n \"type\": \"string\",\n \"description\": \"The stock ticker symbol, e.g. AAPL for Apple Inc.\"\n }\n },\n \"required\": [\"ticker\"]\n }\n }\n]\n```\n\nAnd then asked the model \"What's the S&P 500 at today?\", the model might produce `tool_use` content blocks in the response like this:\n\n```json\n[\n {\n \"type\": \"tool_use\",\n \"id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n \"name\": \"get_stock_price\",\n \"input\": { \"ticker\": \"^GSPC\" }\n }\n]\n```\n\nYou might then run your `get_stock_price` tool with `{\"ticker\": \"^GSPC\"}` as an input, and return the following back to the model in a subsequent `user` message:\n\n```json\n[\n {\n \"type\": \"tool_result\",\n \"tool_use_id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n \"content\": \"259.75 USD\"\n }\n]\n```\n\nTools can be used for workflows that include running client-side tools and functions, or more generally whenever you want the model to produce a particular JSON structure of output.\n\nSee our [guide](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) for more details.",
"items": {
"oneOf": [
{
"$ref": "#/$defs/BetaTool"
},
{
"$ref": "#/$defs/BetaBashTool_20241022",
"x-anthropic-beta-required": [
"computer-use-2024-10-22"
]
},
{
"$ref": "#/$defs/BetaBashTool_20250124"
},
{
"$ref": "#/$defs/BetaCodeExecutionTool_20250522"
},
{
"$ref": "#/$defs/BetaCodeExecutionTool_20250825"
},
{
"$ref": "#/$defs/BetaCodeExecutionTool_20260120"
},
{
"$ref": "#/$defs/BetaCodeExecutionTool_20260521"
},
{
"$ref": "#/$defs/BetaBrowserToolset_20260801"
},
{
"$ref": "#/$defs/BetaComputerUseTool_20241022",
"x-anthropic-beta-required": [
"computer-use-2024-10-22"
]
},
{
"$ref": "#/$defs/BetaMemoryTool_20250818"
},
{
"$ref": "#/$defs/BetaComputerUseTool_20250124",
"x-anthropic-beta-required": [
"computer-use-2025-01-24"
]
},
{
"$ref": "#/$defs/BetaTextEditor_20241022",
"x-anthropic-beta-required": [
"computer-use-2024-10-22"
]
},
{
"$ref": "#/$defs/BetaComputerUseTool_20251124",
"x-anthropic-beta-required": [
"computer-use-2025-11-24"
]
},
{
"$ref": "#/$defs/BetaComputerToolset_20260801"
},
{
"$ref": "#/$defs/BetaTextEditor_20250124"
},
{
"$ref": "#/$defs/BetaTextEditor_20250429"
},
{
"$ref": "#/$defs/BetaTextEditor_20250728"
},
{
"$ref": "#/$defs/BetaWebSearchTool_20250305"
},
{
"$ref": "#/$defs/BetaWebFetchTool_20250910"
},
{
"$ref": "#/$defs/BetaWebSearchTool_20260209"
},
{
"$ref": "#/$defs/BetaWebFetchTool_20260209"
},
{
"$ref": "#/$defs/BetaWebFetchTool_20260309"
},
{
"$ref": "#/$defs/BetaWebSearchTool_20260318"
},
{
"$ref": "#/$defs/BetaWebFetchTool_20260318"
},
{
"$ref": "#/$defs/BetaAdvisorTool_20260301",
"x-anthropic-beta-required": [
"advisor-tool-2026-03-01"
]
},
{
"$ref": "#/$defs/BetaToolSearchToolBM25_20251119"
},
{
"$ref": "#/$defs/BetaToolSearchToolRegex_20251119"
},
{
"$ref": "#/$defs/BetaMCPToolset",
"x-anthropic-beta-required": [
"mcp-client-2025-11-20"
]
}
]
},
"title": "Tools",
"type": "array"
},
"top_k": {
"deprecated": true,
"description": "Only sample from the top K options for each subsequent token.\n\nUsed to remove \"long tail\" low probability responses. [Learn more technical details here](https://towardsdatascience.com/how-to-sample-from-language-models-682bceb97277).\n\nRecommended for advanced use cases only.",
"minimum": 0,
"title": "Top K",
"type": "integer",
"x-stainless-deprecation-message": "Deprecated. Models released after Claude Opus 4.6 do not accept top_k; any value will be rejected with a 400 error.",
"x-stainless-skip": [
"python"
]
},
"top_p": {
"deprecated": true,
"description": "Use nucleus sampling.\n\nIn nucleus sampling, we compute the cumulative distribution over all the options for each subsequent token in decreasing probability order and cut it off once it reaches a particular probability specified by `top_p`.\n\nRecommended for advanced use cases only.",
"maximum": 1,
"minimum": 0,
"title": "Top P",
"type": "number",
"x-stainless-deprecation-message": "Deprecated. Models released after Claude Opus 4.6 do not support setting top_p. A value >= 0.99 will be accepted for backwards compatibility, all other values will be rejected with a 400 error.",
"x-stainless-skip": [
"python"
]
}
},
"required": [
"model",
"messages",
"max_tokens"
],
"type": "object",
"$defs": {
"BetaAdvisorToolResultErrorCode": {
"enum": [
"max_uses_exceeded",
"prompt_too_long",
"too_many_requests",
"overloaded",
"unavailable",
"execution_time_exceeded",
"model_not_found"
],
"title": "AdvisorToolResultErrorCode",
"type": "string"
},
"BetaAdvisorTool_20260301": {
"additionalProperties": false,
"properties": {
"allowed_callers": {
"items": {
"$ref": "#/$defs/BetaAllowedCaller"
},
"title": "Allowed Callers",
"type": "array"
},
"cache_control": {
"anyOf": [
{
"oneOf": [
{
"$ref": "#/$defs/BetaCacheControlEphemeral"
}
]
},
{
"type": "null"
}
],
"description": "Create a cache control breakpoint at this content block.",
"title": "Cache Control"
},
"caching": {
"anyOf": [
{
"oneOf": [
{
"$ref": "#/$defs/BetaCacheControlEphemeral"
}
]
},
{
"type": "null"
}
],
"description": "Caching for the advisor's own prompt. When set, each advisor call writes a cache entry at the given TTL so subsequent calls in the same conversation read the stable prefix. When omitted, the advisor prompt is not cached.",
"title": "Caching"
},
"defer_loading": {
"description": "If true, tool will not be included in initial system prompt. Only loaded when returned via tool_reference from tool search.",
"title": "Defer Loading",
"type": "boolean"
},
"max_tokens": {
"anyOf": [
{
"minimum": 1024,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Bounds the advisor's total output (thinking + text) per call. When the advisor hits this cap, the returned advisor_result or advisor_redacted_result block carries stop_reason='max_tokens', and a truncation note is appended to the advice text the worker model sees (inside the encrypted blob in redacted mode). When set, the server also emits a remaining-tokens budget block in the advisor's prompt so the advisor self-shapes toward the cap. When omitted, the advisor model's default output cap applies and no budget block is emitted.",
"title": "Max Tokens"
},
"max_uses": {
"anyOf": [
{
"exclusiveMinimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Maximum number of times the tool can be used in the API request.",
"title": "Max Uses"
},
"model": {
"$ref": "#/$defs/Model"
},
"name": {
"const": "advisor",
"description": "Name of the tool.\n\nThis is how the tool will be called by the model and in `tool_use` blocks.",
"title": "Name",
"type": "string"
},
"strict": {
"description": "When true, guarantees schema validation on tool names and inputs",
"title": "Strict",
"type": "boolean"
},
"type": {
"const": "advisor_20260301",
"title": "Type",
"type": "string"
}
},
"required": [
"model",
"name",
"type"
],
"title": "AdvisorTool_20260301",
"type": "object"
},
"BetaAllThinkingTurns": {
"additionalProperties": false,
"properties": {
"type": {
"const": "all",
"title": "Type",
"type": "string"
}
},
"required": [
"type"
],
"title": "AllThinkingTurns",
"type": "object"
},
"BetaAllowedCaller": {
"description": "Specifies who can invoke a tool.\n\nValues:\n direct: The model can call this tool directly.\n code_execution_20250825: The tool can be called from the code execution environment (v1).\n code_execution_20260120: The tool can be called from the code execution environment (v2 with persistence).\n code_execution_20260521: The tool can be called from the code execution environment (v2 with persistence).",
"enum": [
"direct",
"code_execution_20250825",
"code_execution_20260120",
"code_execution_20260521"
],
"title": "AllowedCaller",
"type": "string"
},
"BetaBase64ImageSource": {
"additionalProperties": false,
"properties": {
"data": {
"format": "byte",
"title": "Data",
"type": "string"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/gif",
"image/webp"
],
"title": "Media Type",
"type": "string"
},
"type": {
"const": "base64",
"title": "Type",
"type": "string"
}
},
"required": [
"data",
"media_type",
"type"
],
"title": "Base64ImageSource",
"type": "object"
},
"BetaBase64PDFSource": {
"additionalProperties": false,
"properties": {
"data": {
"format": "byte",
"title": "Data",
"type": "string"
},
"media_type": {
"const": "application/pdf",
"title": "Media Type",
"type": "string"
},
"type": {
"const": "base64",
"title": "Type",
"type": "string"
}
},
"required": [
"data",
"media_type",
"type"
],
"title": "Base64PDFSource",
"type": "object"
},
"BetaBashCodeExecutionToolResultErrorCode": {
"enum": [
"invalid_tool_input",
"unavailable",
"too_many_requests",
"execution_time_exceeded",
"output_file_too_large"
],
"title": "BashCodeExecutionToolResultErrorCode",
"type": "string"
},
"BetaBashTool_20241022": {
"additionalProperties": false,
"properties": {
"allowed_callers": {
"items": {
"$ref": "#/$defs/BetaAllowedCaller"
},
"title": "Allowed Callers",
"type": "array"
},
"cache_control": {
"anyOf": [
{
"oneOf": [
{
"$ref": "#/$defs/BetaCacheControlEphemeral"
}
]
},
{
"type": "null"
}
],
"description": "Create a cache control breakpoint at this content block.",
"title": "Cache Control"
},
"defer_loading": {
"description": "If true, tool will not be included in initial system prompt. Only loaded when returned via tool_reference from tool search.",
"title": "Defer Loading",
"type": "boolean"
},
"input_examples": {
"items": {
"additionalProperties": {
"$ref": "#/$defs/BetaJsonValue"
},
"type": "object"
},
"title": "Input Examples",
"type": "array"
},
"name": {
"const": "bash",
"description": "Name of the tool.\n\nThis is how the tool will be called by the model and in `tool_use` blocks.",
"title": "Name",
"type": "string"
},
"strict": {
"description": "When true, guarantees schema validation on tool names and inputs",
"title": "Strict",
"type": "boolean"
},
"type": {
"const": "bash_20241022",
"title": "Type",
"type": "string"
}
},
"required": [
"name",
"type"
],
"title": "BashTool_20241022",
"type": "object"
},
"BetaBashTool_20250124": {
"additionalProperties": false,
"properties": {
"allowed_callers": {
"items": {
"$ref": "#/$defs/BetaAllowedCaller"
},
"title": "Allowed Callers",
"type": "array"
},
"cache_control": {
"anyOf": [
{
"oneOf": [
{
"$ref": "#/$defs/BetaCacheControlEphemeral"
}
]
},
{
"type": "null"
}
],
"description": "Create a cache control breakpoint at this content block.",
"title": "Cache Control"
},
"defer_loading": {
"description": "If true, tool will not be included in initial system prompt. Only loaded when returned via tool_reference from tool search.",
"title": "Defer Loading",
"type": "boolean"
},
"input_examples": {
"items": {
"additionalProperties": {
"$ref": "#/$defs/BetaJsonValue"
},
"type": "object"
},
"title": "Input Examples",
"type": "array"
},
"name": {
"const": "bash",
"description": "Name of the tool.\n\nThis is how the tool will be called by the model and in `tool_use` blocks.",
"title": "Name",
"type": "string"
},
"strict": {
"description": "When true, guarantees schema validation on tool names and inputs",
"title": "Strict",
"type": "boolean"
},
"type": {
"const": "bash_20250124",
"title": "Type",
"type": "string"
}
},
"required": [
"name",
"type"
],
"title": "BashTool_20250124",
"type": "object"
},
"BetaBrowserCloseTabConfig": {
"additionalProperties": false,
"description": "``close_tab``'s config overrides.",
"properties": {
"defer_loading": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.",
"title": "Defer Loading"
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.",
"title": "Enabled"
}
},
"title": "BrowserCloseTabConfig",
"type": "object"
},
"BetaBrowserDoubleClickConfig": {
"additionalProperties": false,
"description": "``double_click``'s config overrides.",
"properties": {
"defer_loading": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.",
"title": "Defer Loading"
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.",
"title": "Enabled"
}
},
"title": "BrowserDoubleClickConfig",
"type": "object"
},
"BetaBrowserFileUploadConfig": {
"additionalProperties": false,
"description": "``file_upload``'s config overrides.",
"properties": {
"defer_loading": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.",
"title": "Defer Loading"
},
"enabled": {
# --- truncated at 32 KB (264 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/anthropic/refs/heads/main/json-schema/anthropic-beta-create-message-params-schema.json
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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/anthropic-beta-create-message-params"
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.