{"openapi":"3.1.0","info":{"title":"Model Access Gateway","version":"0.2.1","description":"OpenAI-compatible chat completions for 100+ AI models, paid per request in USDC on Base with x402. No account or API key.","termsOfService":"https://agent402-arb.rosariovitale0096.workers.dev/terms","x-guidance":"POST /v1/chat/completions with an OpenAI-style JSON body {model, messages, max_tokens}. Pick model from GET /models. An unpaid request returns HTTP 402 with the exact USDC price for that prompt; sign the x402 payment and resend the same request with the PAYMENT-SIGNATURE header. If the model fails to answer, the payment is refunded automatically. No streaming. Each model also has a short route, POST /llm/<model> (for example /llm/claude-opus-5.5), where body.model can be omitted."},"paths":{"/v1/chat/completions":{"post":{"operationId":"chatCompletions","summary":"OpenAI-compatible chat completion on any of 100+ models (model IDs at GET /models)","description":"Price quoted per request in USDC on Base (x402 exact) before payment; the model is chosen in the JSON body. A signed request must repeat the same body.","x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"model":{"type":"string","description":"Model ID from GET /models"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts; null only for an assistant message with tool_calls","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array","items":{"type":"object","properties":{"type":{"const":"text"},"text":{"type":"string"}},"required":["type","text"]}}]},"tool_calls":{"type":"array","description":"Assistant function calls (OpenAI format)"},"tool_call_id":{"type":"string","description":"For role tool: the id of the call it answers"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"max_completion_tokens":{"type":"integer","minimum":1,"maximum":16384,"description":"Alias of max_tokens"},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools: {type:'function',function:{name,description,parameters}}"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"parallel_tool_calls":{"type":"boolean"},"stream":{"type":"boolean","const":false}},"required":["model","messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/models":{"get":{"operationId":"listModels","summary":"Current model IDs (free)","security":[],"responses":{"200":{"description":"Current available model list"}}}},"/v1/chat/completions/deepseek%2Fdeepseek-chat":{"post":{"operationId":"deepseekChat","summary":"DeepSeek Chat: OpenAI-compatible chat completion paid per request with x402 (USDC on Base)","description":"Same as POST /v1/chat/completions with model deepseek/deepseek-chat fixed by the path. Every model has its own route: see GET /.well-known/x402.","x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string","maxLength":200000}},"required":["role","content"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"stream":{"type":"boolean","const":false}},"required":["messages","max_tokens"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/claude-opus-5.5":{"post":{"operationId":"llm_claude_opus_5_5","summary":"Claude Opus 5.5 API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model anthropic/claude-opus-5.5 fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/claude-opus-5.5","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/claude-sonnet-5.5":{"post":{"operationId":"llm_claude_sonnet_5_5","summary":"Claude Sonnet 5.5 API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model anthropic/claude-sonnet-5.5 fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/claude-sonnet-5.5","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/claude-haiku-5.5":{"post":{"operationId":"llm_claude_haiku_5_5","summary":"Claude Haiku 5.5 API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model anthropic/claude-haiku-5.5 fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/claude-haiku-5.5","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/gpt-6-astra":{"post":{"operationId":"llm_gpt_6_astra","summary":"GPT-6 Astra API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model openai/gpt-6-astra fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/gpt-6-astra","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/gpt-6.1-sol":{"post":{"operationId":"llm_gpt_6_1_sol","summary":"GPT-6.1 Sol API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model openai/gpt-6.1-sol fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/gpt-6.1-sol","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/gpt-5.5":{"post":{"operationId":"llm_gpt_5_5","summary":"GPT-5.5 API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model openai/gpt-5.5 fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/gpt-5.5","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/gpt-6-luna":{"post":{"operationId":"llm_gpt_6_luna","summary":"GPT-6 Luna API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model openai/gpt-6-luna fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/gpt-6-luna","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/gemini-4-argon":{"post":{"operationId":"llm_gemini_4_argon","summary":"Gemini 4 Argon API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model google/gemini-4-argon fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/gemini-4-argon","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/gemini-3.1-pro":{"post":{"operationId":"llm_gemini_3_1_pro","summary":"Gemini 3.1 Pro API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model google/gemini-3.1-pro fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/gemini-3.1-pro","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/gemini-3.8-flash":{"post":{"operationId":"llm_gemini_3_8_flash","summary":"Gemini 3.8 Flash API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model google/gemini-3.8-flash fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/gemini-3.8-flash","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/grok-4.7":{"post":{"operationId":"llm_grok_4_7","summary":"Grok 4.7 API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model xai/grok-4.7 fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/grok-4.7","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/kimi-k3":{"post":{"operationId":"llm_kimi_k3","summary":"Kimi K3 API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model moonshot/kimi-k3 fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/kimi-k3","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/glm-5.3":{"post":{"operationId":"llm_glm_5_3","summary":"GLM-5.3 API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model zai/glm-5.3 fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/glm-5.3","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/deepseek-v4-pro":{"post":{"operationId":"llm_deepseek_v4_pro","summary":"DeepSeek V4 Pro API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model deepseek/deepseek-v4-pro fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/deepseek-v4-pro","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/deepseek-v4.1-flash":{"post":{"operationId":"llm_deepseek_v4_1_flash","summary":"DeepSeek V4.1 Flash API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model deepseek/deepseek-v4.1-flash fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/deepseek-v4.1-flash","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/deepseek-chat":{"post":{"operationId":"llm_deepseek_chat","summary":"DeepSeek V4 Flash Chat API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model deepseek/deepseek-chat fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/deepseek-chat","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/qwen3.8-max":{"post":{"operationId":"llm_qwen3_8_max","summary":"Qwen3.8 Max API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model qwen/qwen3.8-max fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/qwen3.8-max","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/minimax-m3":{"post":{"operationId":"llm_minimax_m3","summary":"MiniMax M3 API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model minimax/minimax-m3 fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/minimax-m3","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/llama-3.3-70b":{"post":{"operationId":"llm_llama_3_3_70b","summary":"Llama 3.3 70B API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model meta-llama/llama-3.3-70b fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/llama-3.3-70b","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/mistral-large-4":{"post":{"operationId":"llm_mistral_large_4","summary":"Mistral Large 4 API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model mistral/mistral-large-4 fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/mistral-large-4","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/gpt-oss-120b":{"post":{"operationId":"llm_gpt_oss_120b","summary":"OpenAI GPT OSS 120B API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model openai/gpt-oss-120b fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/gpt-oss-120b","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/claude-opus-5":{"post":{"operationId":"llm_claude_opus_5","summary":"Claude Opus 5 API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model anthropic/claude-opus-5 fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/claude-opus-5","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/claude-sonnet-5":{"post":{"operationId":"llm_claude_sonnet_5","summary":"Claude Sonnet 5 API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model anthropic/claude-sonnet-5 fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/claude-sonnet-5","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}},"/llm/gemini-3.6-flash":{"post":{"operationId":"llm_gemini_3_6_flash","summary":"Gemini 3.6 Flash API: OpenAI-compatible chat completion, pay per call with x402 (USDC on Base), no API key","description":"Model google/gemini-3.6-flash fixed by the path; same body and payment flow as POST /v1/chat/completions. A GET returns the 402 quote for a tiny fixed request. Docs: /docs/llm/gemini-3.6-flash","tags":["chat-completions"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0.001000","max":"3.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","description":"Optional: fixed by the path; if present it must be the same model id"},"messages":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant","tool","developer"]},"content":{"description":"String or array of text parts","anyOf":[{"type":"string","maxLength":200000},{"type":"null"},{"type":"array"}]},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"}},"required":["role"]}},"max_tokens":{"type":"integer","minimum":1,"maximum":16384},"tools":{"type":"array","maxItems":128,"description":"OpenAI function tools"},"tool_choice":{"description":"auto, none, required or {type:'function',function:{name}}"},"stream":{"type":"boolean","const":false}},"required":["messages"]}}}},"responses":{"200":{"description":"Chat completion","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"model":{"type":"string"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"finish_reason":{"type":"string"}}}},"usage":{"type":"object"}}}}}},"400":{"description":"Invalid request body, or a signed request that does not repeat the quoted body"},"402":{"description":"Payment Required: x402 v2 quote in the PAYMENT-REQUIRED header; also returned for an invalid or unfunded payment"},"404":{"description":"Model not in the live catalog (see GET /models)"},"409":{"description":"Payment conflict: authorization already used, or the payer has too many open orders"},"413":{"description":"Request body larger than 384 KB, or price above the per-request cap"},"429":{"description":"Too many requests from this IP; retry after the Retry-After seconds"},"503":{"description":"Model or settlement temporarily unavailable; a settled payment is refunded automatically"}}}}}}