Ask Tone API
The Ask Tone API does over HTTP what Ask Tone does in the app: it runs one prompt across a board of models and returns either every answer side by side or a single answer synthesized from all of them — agreement first, real divergence named.
The API is in private beta for Pro and Team accounts. Access is granted manually; request access and the team will issue your key.
Base URL
https://api.asktone.ai
The single endpoint is POST /synthesize. The same handler is also reachable at
https://asktone.ai/api/v1/synthesize — the two forms are equivalent; use
api.asktone.ai in new integrations.
A minimal request
curl https://api.asktone.ai/synthesize \
-H "Authorization: Bearer $ASKTONE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "Should we migrate from REST to GraphQL?"}'
{
"id": "apiv1:9c2e6a9e-6f0d-4a2f-b1c8-3f6a1f2f9d10",
"synthesis": "Both models agree that a wholesale migration is rarely justified...",
"responses": [
{ "model": "claude-sonnet-4-6", "text": "...", "status": "complete" },
{ "model": "gpt-5-2", "text": "...", "status": "complete" }
],
"creditsCharged": 3
}
That is the whole surface: one prompt in, per-model answers plus an optional synthesis out, and the exact number of credits the call cost. The quickstart walks through it step by step.
How a request is processed
Every call runs the same pipeline the app uses, in this order:
- Validate — the body is schema-checked before anything else happens. A malformed
request is rejected with
400and costs nothing. - Authenticate — the bearer token is hashed and looked up; unknown, revoked, or
missing tokens return
401. See authentication. - Account gate — the key's owning account must be in good standing; otherwise
403. - Rate limit — 30 requests per minute per key; over the window returns
429. See rate limits. - Reserve credits — the estimated cost is deducted up front; if the balance cannot
cover it,
402. See credits & billing. - Fan out — every board model answers the prompt independently, in parallel.
- Synthesize — for
mode: "synthesis", a dedicated synthesizer model (not part of your board) reconciles the completed answers into one. - Settle — you are charged for completed work only; the undelivered portion of the
reservation is refunded automatically, and
creditsChargedreflects the final figure.
What the API does not do
- It is stateless: no conversations, no history, no memory. Each call stands alone, and nothing you send is added to your chat history in the app.
- It never returns token counts. Credits are the only usage unit.
- Council mode is not available over the API during the beta — it is planned for a later
release. Requesting
mode: "council"returns400.
Your prompts are processed under the same privacy posture as the app: we don't read your chats, and API content is never used to train any model.
Explore the docs
| Page | What it covers |
|---|---|
| Quickstart | Your first request in five minutes, in curl, Node.js, and Python. |
| Authentication | Keys, the reveal-once flow, revocation, and key hygiene. |
| Synthesize | The full endpoint reference — every field, both modes, examples. |
| Streaming | The Server-Sent Events protocol, event by event. |
| Errors | The error envelope, every status you can observe, and retry guidance. |
| Rate limits | The 30-requests-per-minute window and the other bounds. |
| Credits & billing | What a call costs, how refunds settle, which pools are spent. |
| Changelog | Versioning policy and what has changed. |
A machine-readable OpenAPI 3.1 description of the endpoint is also available.