Send a conversation to a model and get a completion back
Send a conversation to a model and get a completion back. Works exactly like the OpenAI chat completions endpoint. Pass messages and a model slug, get a response with the assistant's reply. Supports streaming for real-time token delivery, tool calling for function execution, structured outputs via response_format, and controllable reasoning depth on supported models. | ERROR: Unable to calculate price.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://x402.orthogonal.com/baseten/v1/chat/completions
| Category | Code and developer |
|---|---|
| Provider host | x402.orthogonal.com |
| Networks | eip155:143, eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Payment schemes | exact |
| Self-reported calls, 30 days | 99 from 2 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"body": {
"messages": [],
"model": "model"
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"add_generation_prompt": {
"description": "If true, applies the model's generation prompt template. Usually needed for chat models.",
"type": "boolean"
},
"add_special_tokens": {
"description": "If true, adds special tokens (like BOS) to the input. Default: true.",
"type": "boolean"
},
"bad": {
"description": "Words or phrases the model should avoid generating. Passed as a string.",
"type": "string"
},
"bad_token_ids": {
"description": "Array of token IDs that should never appear in the output.",
"type": "array"
},
"best_of": {
"description": "Number of candidate completions to generate server-side, returning the best. Currently only supports 1.",
"type": "number"
},
"chat_template": {
"description": "Custom Jinja2 template for formatting the conversation. Overrides the model's default chat template.",
"type": "string"
},
"chat_template_args": {
"description": "Additional arguments passed to the chat template as template variables.",
"type": "object"
},
"disaggregated_params": {
"description": "Advanced parameters for distributed inference. Only relevant for disaggregated serving configurations.",
"type": "object"
},
"documents": {
"description": "Array of document objects for retrieval-augmented generation (RAG). Each document has content the model can reference when responding.",
"type": "array"
},
"early_stopping": {
"description": "In beam search, stop as soon as the required number of complete candidates are found.",
"type": "boolean"
},
"echo": {
"description": "If true, prepends the last input message to the generated output.",
"type": "boolean"
},
"frequency_penalty": {
"description": "Penalize tokens based on how often they've appeared so far. Range -2.0 to 2.0. Positive values reduce repetition. Default: 0.",
"type": "number"
},
"ignore_eos": {
"description": "If true, the model continues generating past the end-of-sequence token.",
"type": "boolean"
},
"include_stop_str_in_output": {
"description": "If true, includes the stop string in the generated output rather than trimming it.",
"type": "boolean"
},
"length_penalty": {
"description": "Penalty applied during beam search. Values > 1.0 favor longer sequences, < 1.0 favor shorter ones.",
"type": "number"
},
"logit_bias": {
"description": "Map of token IDs to bias values (-100 to 100). Increase or decrease the likelihood of specific tokens appearing in the output.",
"type": "object"
},
"logprobs": {
"description": "If true, returns the log probabilities of each output token in the response.",
"type": "boolean"
},
"max_tokens": {
"description": "Maximum number of tokens to generate in the response. Default is 4096.",
"type": "number"
},
"messages": {
"description": "Array of message objects, each with a 'role' (system, user, assistant, tool) and 'content' (string or array of content parts). This is the conversation history sent to the model.",
"type": "array"
},
"min_p": {
"description": "Minimum probability threshold. Tokens below this probability relative to the most likely token are filtered out.",
"type": "number"
},
"min_tokens": {
"description": "Minimum number of tokens to generate before any stop condition can trigger.",
"type": "number"
},
"model": {
"description": "Model slug to run inference against. Available models: deepseek-ai/DeepSeek-V3-0324 (164k context, reasoning), deepseek-ai/DeepSeek-V3.1 (164k context, reasoning), zai-org/GLM-4.6 (200k context, reasoning), zai-org/GLM-4.7 (200k context, reasoning), moonshotai/Kimi-K2-Instruct-0905 (128k context), moonshotai/Kimi-K2-Thinking (262k context, always-on reasoning), moonshotai/Kimi-K2.5 (262k context), openai/gpt-oss-120b (128k context). Reasoning models support the reasoning_effort parameter for controlling thinking depth.",
"type": "string"
},
"n": {
"description": "Number of completions to generate. Currently only supports 1.",
"type": "number"
},
"parallel_tool_calls": {
"description": "Whether the model can make multiple tool calls in parallel in a single response. Default: true.",
"type": "boolean"
},
"presence_penalty": {
"description": "Penalize tokens based on whether they've appeared at all. Range -2.0 to 2.0. Positive values encourage the model to explore new topics. Default: 0.",
"type": "number"
},
"reasoning_effort": {
"description": "Controls thinking depth for reasoning models. Options: 'low', 'medium', 'high'. Default: 'medium'. Higher effort uses more tokens but produces more thorough reasoning. Supported on DeepSeek V3/V3.1, GLM 4.6/4.7, and Kimi K2