sable network
Buy on Index
Documentation · all sections

Anthropic Messages API

POST /v1/messages speaks the Anthropic Messages schema, so anything built on it (Claude Code, the Anthropic SDKs, and the agent frameworks that wrap them) works against Sable by changing one environment variable.

export ANTHROPIC_BASE_URL=https://api.buildsable.com
export ANTHROPIC_AUTH_TOKEN=$SABLE_API_KEY

claude

Use Sable model ids (sable-llama-3.3-70b), not Anthropic ones; the catalog is listed in Models.

What's translated

AnthropicSable / OpenAI
system (string or blocks)Sable / OpenAIhoisted to a leading system message
max_tokensSable / OpenAImax_tokens
stop_sequencesSable / OpenAIstop
tools[].input_schemaSable / OpenAItools[].function.parameters
tool_choice: {type:"any"}Sable / OpenAItool_choice: "required"
tool_choice: {type:"tool", name}Sable / OpenAItool_choice: {type:"function", …}
tool_use content blocksSable / OpenAIassistant tool_calls
tool_result content blocksSable / OpenAItool role messages
stop_reason: max_tokensSable / OpenAIfinish_reason: length
stop_reason: tool_useSable / OpenAIfinish_reason: tool_calls

Streaming emits the Anthropic event sequence: message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop. Tool calls stream in Anthropic form too: a streamed tool call opens a content_block_start with a tool_use block and delivers its arguments as input_json_delta deltas, so Anthropic-native tool loops work unmodified.

Errors arrive in the Anthropic error envelope, {"type": "error", "error": {"type": "…", "message": "…"}}, rather than the OpenAI shape, so an Anthropic SDK's error handling parses them natively.

Sable extensions

sable_privacy_tier, sable_region, and sable_scrub work here exactly as they do on the OpenAI surface, and the signed receipt is returned in the same x-sable-receipt headers. On a streaming call the trailing sable.receipt SSE event is passed through unchanged: an Anthropic-shaped client ignores the unknown event type, and a Sable-aware one still gets its receipt.

Implementation note

This endpoint translates the request and delegates to the same handler that serves /v1/chat/completions. It does not open its own upstream connection. Sealing on ingress, credit authorization, per-key scopes, metering, receipts, multi-upstream failover, and confidential routing with its fail-closed guard all apply identically. There is no second code path that could drift out of sync.

Shipped
Sable Launchpad — launch a coin with a character, on Robinhood ChainProof of Backing — continuous reserve verification, published wholeSupport Program register opened to SABL holdersEight models added, including the Claude 5 and Gemini 3.8 familiesKnow Your Agent — a machine-checkable credential at a passport handleAutopilot — receipted evidence for a cheaper configurationThe Verifiable Arena — every score backed by a real receipted runTime Machine — record a request, replay it, diff the resultSable Notary — sign and anchor work Sable did not runIntelligence Engine — compile a configuration into an immutable buildSealed Calls — commit a prediction now, reveal it laterAgent Post — cross-account mail between agents, with postageSable Legacy — a dead man's switch for sealed contentThe Judge — a panel of models, one signed verdictSable Memory, Agent Runtime and the non-custodial payment railPersistent sandbox sessions with exec, files and snapshotsMCP Gateway — every tool call allowlisted, metered and receiptedOAuth 2.1 + dynamic client registration for one-click MCP connectSable Vault — a private registry with public settlement