Download OpenAPI specification:
Public customer API. Private Vultr integration routes that require the platform key are not included.
Create a Message using the Anthropic Messages API format. This endpoint accepts Anthropic-native request payloads and returns Anthropic-native responses. The request is adapted internally to the underlying chat completions engine.
System prompt: Use the top-level system parameter for initial instructions. A later text-only system message may follow a user message; it may be last or precede an assistant message.
Content blocks: Message content may be a string or an array of typed content blocks (text, image, tool_use, tool_result).
Assistant prefill: If the final message uses the assistant role, the response continues immediately from that content.
Streaming: Set stream: true to receive server-sent events with typed event names (message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop).
Extended thinking: thinking.type: enabled requires budget_tokens below max_tokens and a model that supports enforced thinking budgets; other models reject this mode. Check reasoning.supports_max_tokens in /v1/models. adaptive uses the model's own thinking behavior, and disabled turns thinking off. Thinking blocks use API-generated signatures, and display: omitted hides their text while preserving a signature for continuation.
System instructions: A later system message keeps its position when forwarded to the model. Turn-scoped clear_at and per-message output_config are not supported.
Effort: Top-level output_config.effort maps through the selected model's reasoning_config. The :express model variant derives a thinking budget when the selected model supports enforced budgets and no budget is supplied.
Tools: Tools use input_schema (JSON Schema) rather than parameters. Tool results are sent as tool_result content blocks in subsequent user messages.
| model required | string The model identifier to use for generation. |
| max_tokens required | integer >= 0 Total completion token allowance, including thinking and visible output. The gateway forwards zero if supplied; whether zero is accepted depends on the upstream engine. |
required | Array of objects (Anthropic Message Param) non-empty Input messages. Models operate on alternating If the final message uses the A text-only |
string or Array of Anthropic Text Block Param (objects) System prompt providing context or instructions to the model. May be a string or an array of text blocks. | |
| stream | boolean Whether to stream the response using server-sent events. Streaming events use typed event names: message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop. |
| temperature | number <float> [ 0 .. 1 ] Controls randomness in the model responses. Valid range: 0 to 1. |
| top_p | number <float> [ 0 .. 1 ] Enables nucleus sampling with a cumulative probability cutoff. |
| top_k | integer Limits sampling to the top K options. |
| stop_sequences | Array of strings Custom sequences that, when encountered in the generated text, cause the model to stop. |
object Additional metadata about the request. | |
object Output controls. Effort is translated through the selected model's reasoning configuration. Unsupported configured levels return 422. | |
object Thinking configuration. The adapter signs its own thinking blocks for continuation; it does not emit redacted thinking blocks. | |
Array of objects (Anthropic Tool Definition) Definitions for tools available to the model. | |
object Instructs how the model should use any provided tools. |
{- "model": "string",
- "max_tokens": 0,
- "messages": [
- {
- "role": "user",
- "content": "string",
- "clear_at": "never"
}
], - "system": "string",
- "stream": true,
- "temperature": 1,
- "top_p": 1,
- "top_k": 0,
- "stop_sequences": [
- "string"
], - "metadata": {
- "user_id": "string"
}, - "output_config": {
- "effort": "minimal"
}, - "thinking": {
- "type": "enabled",
- "budget_tokens": 1024,
- "display": "summarized"
}, - "tools": [
- {
- "name": "string",
- "description": "string",
- "input_schema": { },
- "type": "string",
- "cache_control": {
- "type": "ephemeral"
}
}
], - "tool_choice": {
- "type": "auto",
- "name": "string"
}
}{- "id": "string",
- "type": "message",
- "role": "assistant",
- "model": "string",
- "content": [
- {
- "type": "text",
- "text": "string",
- "thinking": "string",
- "signature": "string",
- "id": "string",
- "name": "string",
- "input": { }
}
], - "stop_reason": "end_turn",
- "stop_sequence": "string",
- "usage": {
- "input_tokens": 0,
- "output_tokens": 0,
- "cache_creation_input_tokens": 0,
- "cache_read_input_tokens": 0
}
}Create Chat Completion on a specified text generation model.
Continuation: If the final message has the assistant role, the model continues that message instead of starting a new turn (the same convention as Anthropic and OpenRouter). Send a response that ended with finish_reason length back as the final assistant message to resume it. The message must be non-empty text without tool_calls, trailing whitespace is trimmed, thinking is disabled for the continuation, and only the new text is returned.
Normalizer Mode: Append -normalize to the model name (e.g. <model>-normalize) to route the request through the normalizer proxy, which applies the following fixes to non-standard OpenAI responses:
reasoning_content → reasoning (streaming deltas and non-streaming messages)functions.xxx:N → chatcmpl-tool-<hash>content=None with tool_calls → content=""tool_calls=[] from streaming deltascontent=null from streaming tool call deltascontent when tool_calls are present in streaming deltasReasoning budget: Set reasoning.max_tokens to limit thinking tokens. This limit must be below max_completion_tokens (or the effective context-clipped limit). Models with reasoning.supports_max_tokens: true in /v1/models enforce the budget; other models accept the field without enforcing it. Requested effort maps through the model's reasoning_config when configured. The :express model variant derives a budget for models with enforced budget support when no budget is supplied.
| model | string The model to use. If omitted, the gateway resolves its default model. Append |
required | Array of objects (Chat Completion Request Message) non-empty The message context to use for the chat completion request, separated by system, user, assistant, tool, and developer roles. A final |
| continue_final_message | boolean Default: false Continue the final message instead of starting a new assistant turn. Implied whenever the final message has the |
| stream | boolean Indicates whether the response should be streamed. |
| max_tokens | integer Deprecated name for |
| max_completion_tokens | integer >= 1 Default: 32768 Maximum completion tokens, including reasoning and visible output. The effective limit may shrink to fit the model context window. |
| reasoning_effort | string Enum: "ultra" "max" "xhigh" "high" "medium" "low" "minimal" "none" Shorthand for |
object (Reasoning Request Options) Reasoning controls. Configured models map effort through their database profile. Models advertising | |
| n | integer Default: 1 The number of chat completion choices to generate for each input message. |
| seed | integer If you would like a different response from the same message, changing the seed will change the response. A null value generates a random seed. |
| temperature | number <float> [ 0 .. 2 ] Default: 1 A value between 0.0 and 2.0 that controls the randomness of the model's output. When set closer to 1, such as 0.8, the outcome is more unpredictable and creative. Values nearing 0, like 0.2, produce more predictable and less creative results. A temperature of zero requests greedy decoding; exact reproducibility depends on the model engine. |
| top_p | number <float> [ 0 .. 1 ] Default: 1 A value between 0.0 and 1.0 that controls the probability of the model generating a particular token. A higher value will result in more diverse outputs, while a lower value will result in more repetitive outputs. |
| frequency_penalty | number <float> [ -2 .. 2 ] Default: 0 A value between -2.0 and 2.0 that controls how much the model penalizes generating repetitive responses. |
| presence_penalty | number <float> [ -2 .. 2 ] Default: 0 A value between -2.0 and 2.0 that controls how much the model penalizes generating responses that contain certain words or phrases. |
| stop | Array of strings A list of strings that the model will stop generating text if it encounters any of them. |
| logprobs | boolean Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the content of message. |
| top_logprobs | integer [ 0 .. 20 ] An integer between 0 and 20 specifying the number of most likely tokens to return at each token position, each with an associated log probability. |
string or object or Array of Chat Completion Function Tool Choice (objects) | |
Array of objects (Chat Completion Function Tool) A list of function tools the model may call. |
{- "model": "string",
- "messages": [
- {
- "role": "system",
- "content": "string"
}
], - "continue_final_message": false,
- "stream": true,
- "max_tokens": 0,
- "max_completion_tokens": 32768,
- "reasoning_effort": "ultra",
- "reasoning": {
- "effort": "ultra",
- "enabled": true,
- "summary": "auto",
- "max_tokens": 1
}, - "n": 1,
- "seed": 0,
- "temperature": 1,
- "top_p": 1,
- "frequency_penalty": 0,
- "presence_penalty": 0,
- "stop": [
- "string"
], - "logprobs": true,
- "top_logprobs": 20,
- "tool_choice": "none",
- "tools": [
- {
- "type": "string",
- "function": {
- "name": "string",
- "description": "string",
- "parameters": { },
- "strict": true
}
}
]
}{- "id": "string",
- "created": 0,
- "model": "string",
- "choices": [
- {
- "index": 0,
- "message": {
- "role": "system",
- "content": "string",
- "reasoning": "string",
- "tool_calls": [
- {
- "id": "string",
- "type": "string",
- "function": {
- "name": "string",
- "arguments": "string"
}
}
]
}, - "logprobs": {
- "content": [
- {
- "token": "string",
- "logprob": 0.1,
- "bytes": [
- 0
], - "top_logprobs": [
- {
- "token": "string",
- "logprob": 0.1,
- "bytes": [
- 0
]
}
]
}
]
}, - "finish_reason": "string"
}
], - "usage": {
- "completion_tokens": 0,
- "prompt_tokens": 0,
- "total_tokens": 0
}
}Create a chat completion with context retrieved from items or files in a vector store collection. Reasoning effort, thinking budget, and the express variant follow the Chat Completions behavior.
| collection required | string The vector store collection to search for relevant context. |
| model required | string The model that will be inferred for chat completion. Append |
required | Array of objects (Chat Completion Request Message) non-empty The message context to use for the chat completion request, separated by system, user, assistant, tool, and developer roles. |
| max_tokens | integer Deprecated name for |
| max_completion_tokens | integer >= 1 Default: 32768 Maximum completion tokens, including reasoning and visible output. |
| reasoning_effort | string Enum: "ultra" "max" "xhigh" "high" "medium" "low" "minimal" "none" Shorthand for |
object (Reasoning Request Options) Reasoning controls. Configured models map effort through their database profile. Models advertising | |
| n | integer Default: 1 The number of chat completion choices to generate for each input message. |
| seed | integer If you would like a different response from the same message, changing the seed will change the response. A null value generates a random seed. |
| temperature | number <float> [ 0 .. 2 ] Default: 1 A value between 0.0 and 2.0 that controls the randomness of the model's output. When set closer to 1, such as 0.8, the outcome is more unpredictable and creative. Values nearing 0, like 0.2, produce more predictable and less creative results. A temperature of zero requests greedy decoding; exact reproducibility depends on the model engine. |
| top_p | number <float> [ 0 .. 1 ] Default: 1 A value between 0.0 and 1.0 that controls the probability of the model generating a particular token. A higher value will result in more diverse outputs, while a lower value will result in more repetitive outputs. |
| stop | Array of strings A list of strings that the model will stop generating text if it encounters any of them. |
| frequency_penalty | number <float> [ -2 .. 2 ] Default: 0 A value between -2.0 and 2.0 that controls how much the model penalizes generating repetitive responses. |
| presence_penalty | number <float> [ -2 .. 2 ] Default: 0 A value between -2.0 and 2.0 that controls how much the model penalizes generating responses that contain certain words or phrases. |
| stream | boolean Indicates whether the response should be streamed. |
| logprobs | boolean Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the content of message. |
| top_logprobs | integer [ 0 .. 20 ] An integer between 0 and 20 specifying the number of most likely tokens to return at each token position, each with an associated log probability. |
string or object or Array of Chat Completion Function Tool Choice (objects) | |
Array of objects (Chat Completion Function Tool) A list of function tools the model may call. |
{- "collection": "string",
- "model": "string",
- "messages": [
- {
- "role": "system",
- "content": "string"
}
], - "max_tokens": 0,
- "max_completion_tokens": 32768,
- "reasoning_effort": "ultra",
- "reasoning": {
- "effort": "ultra",
- "enabled": true,
- "summary": "auto",
- "max_tokens": 1
}, - "n": 1,
- "seed": 0,
- "temperature": 1,
- "top_p": 1,
- "stop": [
- "string"
], - "frequency_penalty": 0,
- "presence_penalty": 0,
- "stream": true,
- "logprobs": true,
- "top_logprobs": 20,
- "tool_choice": "none",
- "tools": [
- {
- "type": "string",
- "function": {
- "name": "string",
- "description": "string",
- "parameters": { },
- "strict": true
}
}
]
}{- "id": "string",
- "created": 0,
- "model": "string",
- "choices": [
- {
- "index": 0,
- "message": {
- "role": "system",
- "content": "string",
- "reasoning": "string",
- "tool_calls": [
- {
- "id": "string",
- "type": "string",
- "function": {
- "name": "string",
- "arguments": "string"
}
}
]
}, - "logprobs": {
- "content": [
- {
- "token": "string",
- "logprob": 0.1,
- "bytes": [
- 0
], - "top_logprobs": [
- {
- "token": "string",
- "logprob": 0.1,
- "bytes": [
- 0
]
}
]
}
]
}, - "finish_reason": "string"
}
], - "usage": {
- "completion_tokens": 0,
- "prompt_tokens": 0,
- "total_tokens": 0
}
}Create an OpenAI-compatible response. reasoning.effort maps through the selected model's reasoning_config when configured. reasoning.max_tokens caps thinking tokens when the model advertises reasoning.supports_max_tokens: true in /v1/models; other models accept the budget without enforcing it. reasoning.context and reasoning.mode are accepted but ignored. The :express model variant derives a budget for models with enforced budget support when no budget is supplied.
| model | string If omitted, the gateway resolves its default model. A |
| input required | any Input text or structured input items. |
| max_output_tokens | integer >= 1 Default: 32768 Maximum output tokens, including reasoning and visible output. |
object (Reasoning Request Options) Reasoning controls. Configured models map effort through their database profile. Models advertising | |
| stream | boolean |
{- "model": "string",
- "input": null,
- "max_output_tokens": 32768,
- "reasoning": {
- "effort": "ultra",
- "enabled": true,
- "summary": "auto",
- "max_tokens": 1
}, - "stream": true
}{- "id": "string",
- "object": "response",
- "model": "string",
- "output": [
- { }
], - "usage": { }
}Rerank documents against a query. The API forwards optional ranking parameters and returns the selected upstream model's JSON response.
| model required | string |
| query required | string non-empty |
required | Array of strings or objects non-empty |
| top_n | integer |
| return_documents | boolean |
{- "model": "string",
- "query": "string",
- "documents": [
- "string"
], - "top_n": 0,
- "return_documents": true
}{ }Generates speech audio from input text.
| model required | string The model that will be used to generate text-to-speech audio. |
| input required | string The text to generate audio for, up to a maximum of 2,000 characters. |
| voice required | string The voice that will be used in the generated audio. |
{- "model": "string",
- "input": "string",
- "voice": "string"
}Creates a vector store collection for searchable embeddings.
| name required | string The name of the vector store collection. This is also used to auto-generate a unique ID for the record. |
{- "name": "string"
}{- "collection": {
- "id": "string",
- "name": "string",
- "created": "string"
}
}Updates a vector store collection record.
| id required | string The ID of the vector store collection. |
| name required | string The name of the vector store collection. Note: the previously generated unique ID will remain the same. |
{- "name": "string"
}{- "collection": {
- "id": "string",
- "name": "string",
- "created": "string"
}
}Searches items in a vector store collection for the closest embeddings matches.
| id required | string The ID of the vector store collection. |
| input required | string The text query to search against the embeddings items in the vector store collection. |
{- "input": "string"
}{- "results": [
- {
- "id": "string",
- "created": "string",
- "content": "string"
}
], - "usage": {
- "prompt_tokens": 0,
- "total_tokens": 0
}
}Retrieve a list of items within a vector store collections.
| id required | string The ID of the vector store collection. |
{- "items": [
- {
- "id": "string",
- "created": "string",
- "description": "string"
}
]
}Adds an item to a vector store collection.
| id required | string The ID of the vector store collection. |
| content required | string The text to be converted into embeddings and stored in the vector store collection. |
| description | string A description of the contents in this collection item record. If omitted, this value will default to a shortened version of the text stored in the collection. |
| auto_chunk | boolean Indicates whether the system will automatically chunk the content if it exceeds the embeddings model's maximum sequence length. If set to true, the content will be split into 300 token chunks with 20 tokens of overlap before and after each piece. |
{- "content": "string",
- "description": "string",
- "auto_chunk": true
}{- "item": {
- "id": "string",
- "created": "string",
- "description": "string",
- "content": "string"
}, - "usage": {
- "prompt_tokens": 0,
- "total_tokens": 0
}
}Retrieve a vector store collection item by the ID.
| id required | string The ID of the vector store collection. |
| itemid required | string The ID of the vector store collection item. |
{- "item": {
- "id": "string",
- "created": "string",
- "description": "string",
- "content": "string"
}
}Updates a vector store collection item record.
| id required | string The ID of the vector store collection. |
| itemid required | string The ID of the vector store collection item. |
| description required | string A description of the contents in this collection item record. |
{- "description": "string"
}{- "item": {
- "id": "string",
- "created": "string",
- "description": "string",
- "content": "string"
}
}Retrieve a list of files within a vector store collections.
| id required | string The ID of the vector store collection. |
{- "files": [
- {
- "id": "string",
- "filename": "string",
- "status": "enqueued",
- "error": "string",
- "items": 0,
- "tokens": 0
}
]
}Adds a file to a vector store collection.
| id required | string The ID of the vector store collection. |
| file required | string <binary> The file object to be uploaded to the vector store collection. |
{- "file": {
- "id": "string",
- "filename": "string",
- "status": "enqueued",
- "error": "string",
- "items": 0,
- "tokens": 0
}
}Retrieve a vector store collection file by the ID.
| id required | string The ID of the vector store collection. |
| fileid required | string The ID of the vector store collection file. |
{- "file": {
- "id": "string",
- "filename": "string",
- "status": "enqueued",
- "error": "string",
- "items": 0,
- "tokens": 0
}
}Creates an image given a prompt.
| prompt required | string A text description of the desired image(s). The maximum length is 2000 characters. |
| model | string Default: "flux.1-dev" The model to use for image generation. Defaults to |
| n | integer [ 1 .. 10 ] Default: 1 The number of images to generate. Must be between 1 and 10. |
| response_format | string Default: "url" The format in which generated images are returned. Must be one of |
| size | string Default: "1024x1024" The size of the generated images. Must be one of |
{- "prompt": "string",
- "model": "flux.1-dev",
- "n": 1,
- "response_format": "url",
- "size": "1024x1024"
}{- "created": 0,
- "data": [
- {
- "b64_json": "string",
- "url": "string"
}
]
}Retrieve the public inference model catalog. By default this returns OpenRouter ModelDocumentV2 entries; send the Anthropic-Version header for an Anthropic-compatible model list with cursor pagination. X-Vultr-Model-Type applies only to the default catalog.
| after_id | string Anthropic mode only. Return the page after this model ID. |
| before_id | string Anthropic mode only. Return the page before this model ID. |
| limit | integer [ 1 .. 1000 ] Default: 20 Anthropic mode only. Number of models per page. |
| anthropic-version | string Example: 2023-06-01 When present, return Anthropic model entries and pagination fields instead of the default catalog. |
| X-Vultr-Model-Type | string Value: "chat" Filter the default catalog to chat-completion models. Ignored in Anthropic mode. |
{- "data": [
- {
- "schema_version": "2.4",
- "id": "string",
- "name": "string",
- "created": 0,
- "description": "string",
- "datacenters": [
- {
- "country_code": "string",
- "region": "string"
}
], - "hugging_face_id": "string",
- "quantization": "string",
- "input_modalities": [
- {
- "type": "text",
- "supported_inputs": { },
- "supported_parameters": { },
- "streaming": true,
- "max_length": {
- "value": 0,
- "unit": "string"
}, - "pricing": [
- {
- "type": "string",
- "unit": "string",
- "cost_usd": "string"
}
]
}
], - "output_modalities": [
- {
- "type": "text",
- "supported_inputs": { },
- "supported_parameters": { },
- "streaming": true,
- "max_length": {
- "value": 0,
- "unit": "string"
}, - "pricing": [
- {
- "type": "string",
- "unit": "string",
- "cost_usd": "string"
}
]
}
], - "reasoning": {
- "mandatory": true,
- "default_effort": "string",
- "default_enabled": true,
- "supported_efforts": [
- "ultra"
], - "supports_max_tokens": true
}
}
]
}Retrieve a model whose identifier contains one slash, using the two path segments as its ID.
| id required | string The ID of the inference model. |
| id2 required | string The second segment of the model identifier. |
{- "id": "string",
- "created": 0,
- "object": "string",
- "owned_by": "string",
- "features": [
- "string"
]
}{- "chat": [
- {
- "id": "string",
- "created": 0,
- "object": "string",
- "owned_by": "string",
- "features": [
- "string"
]
}
], - "audio": [
- {
- "id": "string",
- "created": "string",
- "price": 0.1
}
], - "image": [
- {
- "id": "string",
- "created": 0,
- "price": 0.1
}
]
}View usage information for the current and previous months.
{- "current_month": {
- "chat_usage": [
- {
- "model": "string",
- "output_tokens": 0,
- "input_tokens": 0
}
], - "tts": 0,
- "tts_sm": 0,
- "image": 0.1,
- "image_sm": 0.1,
- "chat": 0,
- "chat_input": 0
}, - "previous_month": {
- "chat_usage": [
- {
- "model": "string",
- "output_tokens": 0,
- "input_tokens": 0
}
], - "tts": 0,
- "tts_sm": 0,
- "image": 0.1,
- "image_sm": 0.1,
- "chat": 0,
- "chat_input": 0
}
}