The Anthropic Messages wire priced from the request itself
The Anthropic Messages wire priced from the request itself: the 402 quotes this exact body, from $0.001, with upto buyers settling actual usage under the quote. Use it when an agent built on the Anthropic SDK, or Claude Code, needs any supported model paid per call with no account.
Answeringour last check, 2026-09-24
1 of 1checks answered this week
951 msmedian answer time
$0.001885listed price per call
$0.001885price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://agent402.tools/v1/metered/messages
| Category | Code and developer |
|---|---|
| Provider host | agent402.tools |
| Networks | algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=, eip155:10, eip155:1329, eip155:137, eip155:143, eip155:42161, eip155:42220, eip155:43114, eip155:4663, eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, stellar:pubnet |
| Payment schemes | exact, upto |
| Self-reported calls, 30 days | 58 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-09-24 | valid payment request | 402 | $0.001885 | 951 ms |
Example input (from the provider)
{
"body": {
"max_tokens": 256,
"messages": [
{
"content": "Summarize x402 in one sentence.",
"role": "user"
}
],
"model": "anthropic/claude-haiku-4.5"
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"effort": {
"description": "Optional depth control for Claude 4.7+ (Opus 5, Sonnet 5, Fable 5.1): low | medium | high | xhigh | max, validated against the model's own list (GET /v1/models). Not accepted on Haiku 4.5 and older, which take thinking.budget_tokens instead",
"type": "string"
},
"max_tokens": {
"description": "Required by the Messages API; clamped to the tier's output cap",
"type": "integer"
},
"messages": {
"description": "Anthropic messages: {role: user|assistant, content: string | [text|image|tool_use|tool_result blocks]}",
"type": "array"
},
"model": {
"description": "Model id (OpenRouter naming, e.g. anthropic/claude-sonnet-5) - allowlisted per tier; omit (or \"auto\") on the auto tier",
"type": "string"
},
"stream": {
"description": "Anthropic SSE (message_start \u2026 message_stop)",
"type": "boolean"
},
"system": {
"description": "Optional system prompt (string or text blocks)",
"type": "string"
},
"thinking": {
"description": "Optional {type:\"enabled\", budget_tokens} | {type:\"adaptive\"} | {type:\"disabled\"} - thinking tokens are output tokens. On Claude 4.7+ (Opus 5, Sonnet 5, Fable 5.1) thinking is adaptive and `effort` is the depth control; a budget_tokens value is advisory there",
"type": "object"
},
"tools": {
"description": "Optional client tools {name, description, input_schema}; server/built-in tools are not served",
"type": "array"
},
"zdr": {
"description": "Optional - zero-data-retention providers only",
"type": "boolean"
}
},
"required": [
"max_tokens",
"messages"
]
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"content": {
"items": {
"properties": {
"text": {
"type": "string"
},
"type": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"id": {
"type": "string"
},
"model": {
"type": "string"
},
"role": {
"type": "string"
},
"stop_reason": {
"type": "string"
},
"type": {
"type": "string"
},
"usage": {
"properties": {
"input_tokens": {
"type": "integer"
},
"output_tokens": {
"type": "integer"
}
},
"type": "object"
}
},
"required": [
"id",
"type",
"role",
"model",
"content",
"stop_reason",
"usage"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}