Api Endpoint

x402.orthogonal.com

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.

Open interactive test console

Offering

Provider
x402.orthogonal.com
Method
POST
Offering type
Api Endpoint
Transport type
http
Category
Api
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://x402.orthogonal.com/baseten/v1/chat/completions
MIME type
Not provided
First seen
2026-10-16T01:58:48.885Z
Last seen
Tags
None supplied

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.005 USDC
Atomic price: 5000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Payment option 2
5000 atomic units
Atomic price: 5000 · Network: eip155:8453 · Asset: 0xB2000000000000000000002fEb517dFeC7415344 · Scheme: exact
Payment option 3
0.005 USDC
Atomic price: 5000 · Network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp · Asset: USDC · Scheme: exact
Payment option 4
0.005 USDC
Atomic price: 5000 · Network: eip155:143 · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "5000",
    "payTo": "0xDEFaDa13F790cf39168691B391Cfa0b6f1f5c267"
  },
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0xB2000000000000000000002fEb517dFeC7415344",
    "amount": "5000",
    "payTo": "0xDEFaDa13F790cf39168691B391Cfa0b6f1f5c267"
  },
  {
    "scheme": "exact",
    "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
    "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "amount": "5000",
    "payTo": "6tBjD7Pyx9smaubkFaePv1NtfLh9jwLGu63MoozRmYvQ"
  },
  {
    "scheme": "exact",
    "network": "eip155:143",
    "asset": "0x754704Bc059F8C67012fEd69BC8A327a5aafb603",
    "amount": "5000",
    "payTo": "0xDEFaDa13F790cf39168691B391Cfa0b6f1f5c267"
  }
]

Observed health

Status
Healthy
Latest latency
62 ms
Average latency
533 ms
HTTP status
204
Last checked
Reachability
100% over 12 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "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 Thinking.",
          "type": "string"
        },
        "repetition_penalty": {
          "description": "Multiplicative penalty for repeated tokens. Values > 1.0 discourage repetition, < 1.0 encourage it.",
          "type": "number"
        },
        "response_format": {
          "description": "Constrain the output format. Use {\"type\": \"json_object\"} for JSON mode, or {\"type\": \"json_schema\", \"json_schema\": {\"name\": \"...\", \"schema\": {...}}} for structured outputs with a specific schema.",
          "type": "object"
        },
        "seed": {
          "description": "Integer for deterministic sampling. Same seed with same parameters should return the same result. Not guaranteed across model versions.",
          "type": "number"
        },
        "skip_special_tokens": {
          "description": "If true, special tokens are removed from the output text. Default: true.",
          "type": "boolean"
        },
        "spaces_between_special_tokens": {
          "description": "If true, adds spaces between special tokens in the detokenized output.",
          "type": "boolean"
        },
        "stop": {
          "description": "Up to 4 sequences where the model will stop generating. Can be a string or array of strings.",
          "type": "string"
        },
        "stop_token_ids": {
          "description": "Array of token IDs that will cause generation to stop when produced.",
          "type": "array"
        },
        "stream": {
          "description": "If true, returns server-sent events (SSE) with partial message deltas as tokens are generated, instead of waiting for the full response.",
          "type": "boolean"
        },
        "stream_options": {
          "description": "Options for streaming. Use {\"include_usage\": true} to get a final chunk with token usage statistics.",
          "type": "object"
        },
        "temperature": {
          "description": "Sampling temperature between 0 and 4. Lower values (e.g. 0.2) produce more focused, deterministic output. Higher values (e.g. 1.5) increase creativity. Default is 1.",
          "type": "number"
        },
        "tool_choice": {
          "description": "Controls tool calling behavior. 'auto' lets the model decide, 'none' disables tools, 'required' forces a tool call, or pass {\"type\": \"function\", \"function\": {\"name\": \"...\"}} to force a specific tool.",
          "type": "string"
        },
        "tools": {
          "description": "Array of tool/function definitions the model can call. Each tool has {\"type\": \"function\", \"function\": {\"name\": \"...\", \"description\": \"...\", \"parameters\": {...}}}. The model may respond with tool_calls instead of content.",
          "type": "array"
        },
        "top_k": {
          "description": "Top-K sampling. Only the K most likely next tokens are considered. Lower values make output more focused.",
          "type": "number"
        },
        "top_logprobs": {
          "description": "How many of the most likely tokens (0-20) to return log probabilities for at each position. Requires logprobs to be true.",
          "type": "number"
        },
        "top_p": {
          "description": "Nucleus sampling threshold between 0 and 1. Only tokens within this cumulative probability mass are considered. 0.1 means only the top 10%. Use as an alternative to temperature.",
          "type": "number"
        },
        "top_p_min": {
          "description": "Minimum dynamic nucleus sampling threshold. Sets a floor for top_p when using adaptive sampling.",
          "type": "number"
        },
        "truncate_prompt_tokens": {
          "description": "Truncate the prompt to this many tokens if it exceeds the limit, keeping the most recent tokens.",
          "type": "number"
        },
        "user": {
          "description": "A unique string identifying the end user. Useful for abuse monitoring and rate limiting.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "bodyType": {
      "enum": [
        "json",
        "form-data",
        "text"
      ],
      "type": "string"
    },
    "method": {
      "enum": [
        "POST"
      ],
      "type": "string"
    },
    "type": {
      "const": "http",
      "type": "string"
    }
  },
  "required": [
    "type",
    "method",
    "bodyType",
    "body"
  ],
  "type": "object"
}

Output schema

{
  "$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 Thinking.",
              "type": "string"
            },
            "repetition_penalty": {
              "description": "Multiplicative penalty for repeated tokens. Values > 1.0 discourage repetition, < 1.0 encourage it.",
              "type": "number"
            },
            "response_format": {
              "description": "Constrain the output format. Use {\"type\": \"json_object\"} for JSON mode, or {\"type\": \"json_schema\", \"json_schema\": {\"name\": \"...\", \"schema\": {...}}} for structured outputs with a specific schema.",
              "type": "object"
            },
            "seed": {
              "description": "Integer for deterministic sampling. Same seed with same parameters should return the same result. Not guaranteed across model versions.",
              "type": "number"
            },
            "skip_special_tokens": {
              "description": "If true, special tokens are removed from the output text. Default: true.",
              "type": "boolean"
            },
            "spaces_between_special_tokens": {
              "description": "If true, adds spaces between special tokens in the detokenized output.",
              "type": "boolean"
            },
            "stop": {
              "description": "Up to 4 sequences where the model will stop generating. Can be a string or array of strings.",
              "type": "string"
            },
            "stop_token_ids": {
              "description": "Array of token IDs that will cause generation to stop when produced.",
              "type": "array"
            },
            "stream": {
              "description": "If true, returns server-sent events (SSE) with partial message deltas as tokens are generated, instead of waiting for the full response.",
              "type": "boolean"
            },
            "stream_options": {
              "description": "Options for streaming. Use {\"include_usage\": true} to get a final chunk with token usage statistics.",
              "type": "object"
            },
            "temperature": {
              "description": "Sampling temperature between 0 and 4. Lower values (e.g. 0.2) produce more focused, deterministic output. Higher values (e.g. 1.5) increase creativity. Default is 1.",
              "type": "number"
            },
            "tool_choice": {
              "description": "Controls tool calling behavior. 'auto' lets the model decide, 'none' disables tools, 'required' forces a tool call, or pass {\"type\": \"function\", \"function\": {\"name\": \"...\"}} to force a specific tool.",
              "type": "string"
            },
            "tools": {
              "description": "Array of tool/function definitions the model can call. Each tool has {\"type\": \"function\", \"function\": {\"name\": \"...\", \"description\": \"...\", \"parameters\": {...}}}. The model may respond with tool_calls instead of content.",
              "type": "array"
            },
            "top_k": {
              "description": "Top-K sampling. Only the K most likely next tokens are considered. Lower values make output more focused.",
              "type": "number"
            },
            "top_logprobs": {
              "description": "How many of the most likely tokens (0-20) to return log probabilities for at each position. Requires logprobs to be true.",
              "type": "number"
            },
            "top_p": {
              "description": "Nucleus sampling threshold between 0 and 1. Only tokens within this cumulative probability mass are considered. 0.1 means only the top 10%. Use as an alternative to temperature.",
              "type": "number"
            },
            "top_p_min": {
              "description": "Minimum dynamic nucleus sampling threshold. Sets a floor for top_p when using adaptive sampling.",
              "type": "number"
            },
            "truncate_prompt_tokens": {
              "description": "Truncate the prompt to this many tokens if it exceeds the limit, keeping the most recent tokens.",
              "type": "number"
            },
            "user": {
              "description": "A unique string identifying the end user. Useful for abuse monitoring and rate limiting.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}