mirrored listing x402 eip155:8453solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpeip155:143

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.

Do you run x402.orthogonal.com? This listing was mirrored from Coinbase's public Bazaar. Claim it in 30 seconds — no account required — and it becomes verified, permanently overriding the mirrored copy.

Claim this listing
5000 (raw units)
price
151
calls / 30d
2
unique payers
2026-09-14
updated

Provider

x402.orthogonal.com · discovered, not yet claimed by its owner

Payment (x402 accepts[])

[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "payTo": "0xDEFaDa13F790cf39168691B391Cfa0b6f1f5c267",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "5000",
    "maxTimeoutSeconds": 300
  },
  {
    "scheme": "exact",
    "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
    "payTo": "6tBjD7Pyx9smaubkFaePv1NtfLh9jwLGu63MoozRmYvQ",
    "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "amount": "5000",
    "maxTimeoutSeconds": 300
  },
  {
    "scheme": "exact",
    "network": "eip155:143",
    "payTo": "0xDEFaDa13F790cf39168691B391Cfa0b6f1f5c267",
    "asset": "0x754704Bc059F8C67012fEd69BC8A327a5aafb603",
    "amount": "5000",
    "maxTimeoutSeconds": 300
  }
]

Output schema

{
  "bazaar": {
    "info": {
      "input": {
        "body": {
          "messages": [],
          "model": "model"
        },
        "bodyType": "json",
        "method": "POST",
        "type": "http"
      }
    },
    "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"
    }
  }
}

Use it

curl

curl "https://x402.orthogonal.com/baseten/v1/chat/completions"
# -> 402 Payment Required, accepts[] lists how to pay
# retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid

JavaScript

const res = await fetch("https://x402.orthogonal.com/baseten/v1/chat/completions");
if (res.status === 402) {
  const { accepts } = await res.json();
  // pay one of accepts[] via an x402 client, then retry with the payment header
}

Python

import httpx
res = httpx.get("https://x402.orthogonal.com/baseten/v1/chat/completions")
if res.status_code == 402:
    accepts = res.json()["accepts"]
    # pay one of accepts[] via an x402 client, then retry with the payment header

Machine-readable

Everything on this page is also available as clean JSON at /resources/15008.json, and this resource appears in /discovery/resources and /discovery/search.