One key.
Any tool.
Pay per use.
The Atris API speaks the OpenAI protocol. Paste your key into any SDK or agent and every request bills exactly what it used, receipt included.
base_url = https://api.atris.ai/v1Live in three steps
- 01
Create a key
Sign in and mint a key in the developer dashboard. The secret shows once, and every key can carry a monthly spend cap, so a leaked or runaway key stops itself.
- 02
Load credits
Buy credits at atris.ai/credits with a card. One credit is one cent, and credits never expire.
- 03
Call the API
The key is a standard bearer token against
https://api.atris.ai/v1. If a tool speaks OpenAI, it speaks Atris.
curl https://api.atris.ai/v1/chat/completions \
-H "Authorization: Bearer $ATRIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "atris:pro",
"messages": [
{"role": "user", "content": "Say hello."}
]
}'from openai import OpenAI
client = OpenAI(
base_url="https://api.atris.ai/v1",
api_key="atris_...",
)
reply = client.chat.completions.create(
model="atris:pro",
messages=[{"role": "user", "content": "Say hello."}],
)Three models, plain names
Use them anywhere a tool asks for a model name. Same key, same meter. These three are the ones to start with; the live catalog, including specialist lanes, is always at GET https://api.atris.ai/v1/models.
atris:autoLet Atris pick the laneRoutes to fast todayatris:fastQuick answers, high volumeCheapest per tokenatris:proThe default for real workStrong reasoning, fair priceatris:maxHardest problemsFrontier modelOne call each
Beyond chat, every Atris product is one HTTP call with the same key, the same error shape, and the charge printed on the reply. Slow jobs answer 202 with an id you poll for free. Full references live at github.com/atrislabs/atrisos-backend/docs.
POST /v1/chat/completions{"model": "atris:auto", "messages": [...]}One chat call. Atris picks the model lane and bills the tokens it used.
POST /api/answers{"question": "...", "depth": "quick"}A research answer with the web sources it stands on. No sources, no answer.
POST /api/extract{"url": "...", "schema": {...}}Schema-valid data from a page or pasted text, every value with a verbatim quote.
POST /api/notes{"url": "https://www.youtube.com/watch?v=..."}Timestamped notes and exact quotes from a video transcript.
POST /api/publish{"slug": "my-site", "html": "<!DOCTYPE html>..."}A live site at slug.atris.ai from your HTML, same call to update it.
POST /api/design/extractions{"url": "https://example.com"}A brand design system as JSON: real colors, fonts, surfaces, layout.
POST /api/aeo/checks{"name": "Joe's Plumbing", "city": "Albany"}Asks five AI engines about a local business and reports who named it, who cited it, and which rivals came up.
POST /api/desks{"business_name": "...", "instructions": "...", "customer_email": "...", "amount_dollars": 50}A public customer chat desk for a business, safety probed, with its own checkout link.
POST /v1/rl/store, /v1/rl/learn, /v1/rl/context{"workspace": {...}, "environment_id": "...", ...}Store experiences, run one bounded learning batch, read back what was learned.
curl https://api.atris.ai/v1/chat/completions \
-H "Authorization: Bearer $ATRIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "atris:auto",
"messages": [{"role": "user", "content": "Summarize this contract."}]
}'curl https://api.atris.ai/api/aeo/checks \
-H "Authorization: Bearer $ATRIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Joe'\''s Plumbing", "city": "Albany"}'
# 202 with a job id and the charge on the reply
# {"id": "...", "status": "accepted",
# "atris": {"credits_charged": 500, "cost_usd": 5.0, ...}}
curl https://api.atris.ai/api/aeo/checks/$ID \
-H "Authorization: Bearer $ATRIS_API_KEY"Screens, not paragraphs
Atris works as the brain behind generative UI kits such as json-render. You define the components and actions the model may use, send that catalog as the system message, and Atris returns a screen made only of those parts.
Use atris:max for this. In our tests it named every action exactly, and the catalog prompt is cached after the first call so repeat screens cost less.
// app/api/ui/route.ts in your Next.js app (json-render quickstart, two values swapped)
import { OpenAI } from "openai";
import { catalog } from "@/lib/catalog"; // your defineCatalog(...)
const atris = new OpenAI({
baseURL: "https://api.atris.ai/v1",
apiKey: process.env.ATRIS_API_KEY,
});
export async function POST(req: Request) {
const { prompt } = await req.json();
const stream = await atris.chat.completions.create({
model: "atris:max",
stream: true,
max_tokens: 8192,
messages: [
{ role: "system", content: catalog.prompt() },
{ role: "user", content: prompt },
],
});
return new Response(stream.toReadableStream());
}The meter is the price
Every request is billed from actual model token usage at Atris rates. One credit is one cent, and each request costs at least one credit.
Cached input bills at the cheaper cache rate, so repeated context costs less. Spend caps and a per-request ceiling mean a runaway loop cannot drain a wallet.
Ask the meter directly
/api/atris2/billing/quotePrice estimate before you spend
/api/atris2/billing/usageBalance, today and per-model spend
/api/atris2/billing/receiptsPer-request receipts with exact tokens
Built to be learned by agents
The whole API fits in one markdown file any model can read. Hand it to an agent with a key and it can price, call, and reconcile its own work.
curl https://atris.ai/developers.mdCommon questions
Updated 2026-09-18
- What is the Atris API?
- The Atris API is an OpenAI-compatible chat completions API at https://api.atris.ai/v1. An Atris API key works as the bearer token in any OpenAI SDK or tool that accepts a custom provider, including agent tools like Devin and Cursor.
- How much does the Atris API cost?
- Atris API usage is metered from actual model token usage. One credit is one cent, every request costs at least one credit, and each request shows its exact token counts on its receipt. Credits are prepaid at atris.ai/credits and keys can carry a monthly spend cap.
- What can an agent call besides chat?
- Nine one-call APIs share the same key and billing: the model router (atris:auto), Answers, Extract, Notes, Publish, Design, AEO checks, Desks, and RL. Each is one POST with the charge on the reply; slow jobs return 202 and a free GET to poll.
- Does the Atris API work with OpenAI SDKs?
- Yes. Set base_url to https://api.atris.ai/v1 and api_key to your Atris key in the official OpenAI Python or JavaScript SDK, or any tool that accepts an OpenAI-compatible provider, and requests bill your Atris credits.
Key, credits, first call. Under a minute.
Get your key