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.
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.
Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
Pay 0.005 USDC on Base to 0xDEFa…5c267. The signed payment is good for 5 minutes.
- Paid to
- 0xDEFa…5c267
- USD Coin contract
- 0x8335…02913
- Payment window
- 5 minutes
- As published
- 5000 smallest units
That figure is in the token’s smallest units. Roundhouse does not hold this contract’s decimals, so it is shown as published rather than converted.
- Paid to
- 6tBjD7…RmYvQ
- Token contract
- EPjFWd…TDt1v
- Payment window
- 5 minutes
That figure is in the token’s smallest units. Roundhouse does not hold this contract’s decimals, so it is shown as published rather than converted.
- Paid to
- 0xDEFa…5c267
- Token contract
- 0x7547…fb603
- Payment window
- 5 minutes
The catalog’s raw entry
[
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xDEFaDa13F790cf39168691B391Cfa0b6f1f5c267",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
},
{
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"extra": {
"feePayer": "Hc3sdEAsCGQcpgfivywog9uwtk8gUBUZgsxdME1EJy88"
},
"payTo": "6tBjD7Pyx9smaubkFaePv1NtfLh9jwLGu63MoozRmYvQ",
"amount": "5000",
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"maxTimeoutSeconds": 300
},
{
"asset": "0x754704Bc059F8C67012fEd69BC8A327a5aafb603",
"extra": {
"name": "USDC",
"version": "2"
},
"payTo": "0xDEFaDa13F790cf39168691B391Cfa0b6f1f5c267",
"amount": "5000",
"scheme": "exact",
"network": "eip155:143",
"maxTimeoutSeconds": 300
}
]Extensions
{
"bazaar": {
"info": {
"input": {
"body": {
"model": "model",
"messages": []
},
"type": "http",
"method": "POST",
"bodyType": "json"
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"properties": {
"n": {
"type": "number",
"description": "Number of completions to generate. Currently only supports 1."
},
"bad": {
"type": "string",
"description": "Words or phrases the model should avoid generating. Passed as a string."
},
"echo": {
"type": "boolean",
"description": "If true, prepends the last input message to the generated output."
},
"seed": {
"type": "number",
"description": "Integer for deterministic sampling. Same seed with same parameters should return the same result. Not guaranteed across model versions."
},
"stop": {
"type": "string",
"description": "Up to 4 sequences where the model will stop generating. Can be a string or array of strings."
},
"user": {
"type": "string",
"description": "A unique string identifying the end user. Useful for abuse monitoring and rate limiting."
},
"min_p": {
"type": "number",
"description": "Minimum probability threshold. Tokens below this probability relative to the most likely token are filtered out."
},
"model": {
"type": "string",
"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."
},
"tools": {
"type": "array",
"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."
},
"top_k": {
"type": "number",
"description": "Top-K sampling. Only the K most likely next tokens are considered. Lower values make output more focused."
},
"top_p": {
"type": "number",
"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."
},
"stream": {
"type": "boolean",
"description": "If true, returns server-sent events (SSE) with partial message deltas as tokens are generated, instead of waiting for the full response."
},
"best_of": {
"type": "number",
"description": "Number of candidate completions to generate server-side, returning the best. Currently only supports 1."
},
"logprobs": {
"type": "boolean",
"description": "If true, returns the log probabilities of each output token in the response."
},
"messages": {
"type": "array",
"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."
},
"documents": {
"type": "array",
"description": "Array of document objects for retrieval-augmented generation (RAG). Each document has content the model can reference when responding."
},
"top_p_min": {
"type": "number",
"description": "Minimum dynamic nucleus sampling threshold. Sets a floor for top_p when using adaptive sampling."
},
"ignore_eos": {
"type": "boolean",
"description": "If true, the model continues generating past the end-of-sequence token."
},
"logit_bias": {
"type": "object",
"description": "Map of token IDs to bias values (-100 to 100). Increase or decrease the likelihood of specific tokens appearing in the output."
},
"max_tokens": {
"type": "number",
"description": "Maximum number of tokens to generate in the response. Default is 4096."
},
"min_tokens": {
"type": "number",
"description": "Minimum number of tokens to generate before any stop condition can trigger."
},
"temperature": {
"type": "number",
"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."
},
"tool_choice": {
"type": "string",
"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."
},
"top_logprobs": {
"type": "number",
"description": "How many of the most likely tokens (0-20) to return log probabilities for at each position. Requires logprobs to be true."
},
"bad_token_ids": {
"type": "array",
"description": "Array of token IDs that should never appear in the output."
},
"chat_template": {
"type": "string",
"description": "Custom Jinja2 template for formatting the conversation. Overrides the model's default chat template."
},
"early_stopping": {
"type": "boolean",
"description": "In beam search, stop as soon as the required number of complete candidates are found."
},
"length_penalty": {
"type": "number",
"description": "Penalty applied during beam search. Values > 1.0 favor longer sequences, < 1.0 favor shorter ones."
},
"stop_token_ids": {
"type": "array",
"description": "Array of token IDs that will cause generation to stop when produced."
},
"stream_options": {
"type": "object",
"description": "Options for streaming. Use {\"include_usage\": true} to get a final chunk with token usage statistics."
},
"response_format": {
"type": "object",
"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."
},
"presence_penalty": {
"type": "number",
"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."
},
"reasoning_effort": {
"type": "string",
"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."
},
"frequency_penalty": {
"type": "number",
"description": "Penalize tokens based on how often they've appeared so far. Range -2.0 to 2.0. Positive values reduce repetition. Default: 0."
},
"add_special_tokens": {
"type": "boolean",
"description": "If true, adds special tokens (like BOS) to the input. Default: true."
},
"chat_template_args": {
"type": "object",
"description": "Additional arguments passed to the chat template as template variables."
},
"repetition_penalty": {
"type": "number",
"description": "Multiplicative penalty for repeated tokens. Values > 1.0 discourage repetition, < 1.0 encourage it."
},
"parallel_tool_calls": {
"type": "boolean",
"description": "Whether the model can make multiple tool calls in parallel in a single response. Default: true."
},
"skip_special_tokens": {
"type": "boolean",
"description": "If true, special tokens are removed from the output text. Default: true."
},
"disaggregated_params": {
"type": "object",
"description": "Advanced parameters for distributed inference. Only relevant for disaggregated serving configurations."
},
"add_generation_prompt": {
"type": "boolean",
"description": "If true, applies the model's generation prompt template. Usually needed for chat models."
},
"truncate_prompt_tokens": {
"type": "number",
"description": "Truncate the prompt to this many tokens if it exceeds the limit, keeping the most recent tokens."
},
"include_stop_str_in_output": {
"type": "boolean",
"description": "If true, includes the stop string in the generated output rather than trimming it."
},
"spaces_between_special_tokens": {
"type": "boolean",
"description": "If true, adds spaces between special tokens in the detokenized output."
}
}
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
}
}
}
}
}Provenance
- Seen in the source catalog
- 2026-09-14 18:46Z
- Last indexed by Roundhouse
- 2026-09-24 10:30Z
- Last enriched (probe, favicon, geo)
- 2026-09-24 03:15Z
- x402 version
- 2
- Max timeout
- 300s
- Liveness probe
- HTTP 404
Hand this page to an agent
Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.
GET api.roundhouseai.io/v0/endpoints
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 30 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service x402.orthogonal.com and tell me whether it is worth paying: what a call costs, whether the endpoint answered when last probed, and what its payment record actually shows. curl -s 'https://api.roundhouseai.io/v0/endpoints?q=x402.orthogonal.com' curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>' Then call it: read the price from the live 402 at https://x402.orthogonal.com/baseten/v1/chat/completions, never from a cached figure, and pay with an x402 client. The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except /v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402, or use an organization key from https://roundhouseai.io/dashboard/team. If you do not have Roundhouse tools or skills installed, read https://roundhouseai.io/skill.md first — it is the whole procedure.