Every model,
one API key
An OpenAI-compatible endpoint for your scripts, agents and tools. It spends the same daily credits your $INTEL gives you in the chat.
Quick start
Create a key at /developers (connect your wallet first), then point any OpenAI SDK at our base URL.
# Base URL
https://intellect.zip/api/v1curl https://intellect.zip/api/v1/chat/completions \
-H "Authorization: Bearer $INTELLECT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-5.5",
"messages": [
{"role": "system", "content": "You are concise."},
{"role": "user", "content": "Explain zero data retention in one sentence."}
]
}'Python (openai package)
from openai import OpenAI
client = OpenAI(base_url="https://intellect.zip/api/v1", api_key="intel_…")
stream = client.chat.completions.create(
model="openai/gpt-6-luna",
messages=[{"role": "user", "content": "Write a haiku about Elysium."}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")JavaScript / TypeScript (openai package)
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://intellect.zip/api/v1", apiKey: process.env.INTELLECT_API_KEY });
const res = await client.chat.completions.create({
model: "google/gemini-3.5-flash-lite",
messages: [
{ role: "user", content: [
{ type: "text", text: "What's in this picture?" },
{ type: "image_url", image_url: { url: "https://example.com/photo.jpg" } },
] },
],
});
console.log(res.choices[0].message.content);Endpoints
POST /chat/completions
Same request and response shape as OpenAI's Chat Completions. Supported fields:
model: any id fromGET /models, e.g.anthropic/claude-sonnet-5.5.messages: rolessystem,developer,user,assistant. Content can be a string or parts of typetextandimage_url(https or adata:image/…URL under 1.5 MB) for models that read images.stream(Server-Sent Events, ends withdata: [DONE]) andstream_options.include_usage.max_tokens/max_completion_tokens(capped at our per-reply limit),temperature,top_p,stop,presence_penalty,frequency_penalty,seed.- Not yet:
tools/ function calling,ngreater than 1, logprobs, audio. Requests that use them get a clear 400 error.
GET /models
The models your key can use today, based on your wallet's tier. Each entry also says whether the model reads images or PDFs.
Billing
- Every request is paid from your wallet's credits, the same balance as the chat: your daily share first, then any top-ups.
- Before a request runs we hold its worst-case cost; afterwards you're charged what the provider actually billed, never more than the hold. If a request fails before any text, it's free.
- Give each key a daily cap at /developers so one script can't use up your whole allowance.
- Credits reset at 00:00 UTC. Your daily amount is your share of the daily pool, set by how much $INTEL you hold (how the pool works). Top-up credits you bought are used after it runs out.
Privacy
API requests get the same treatment as the chat: routed through Vercel AI Gateway with zero data retention, and never stored or logged by us. We keep only the model, token counts, cost and time per request, linked to the key that made it. We store a hash of your key, never the key itself.
Errors
| Status | code | Meaning |
|---|---|---|
| 401 | invalid_api_key | The key is missing, wrong or revoked. |
| 402 | insufficient_credits | Your wallet's credits for today can't cover this request's worst case. Credits reset at 00:00 UTC. |
| 402 | key_cap_reached | This key's own daily cap is reached (your wallet may still have credits). |
| 403 | model_not_allowed | Your $INTEL tier can't use that model. |
| 404 | model_not_found | Unknown model id. List yours with GET /models. |
| 429 | rate_limit_exceeded | Too many requests from this key in the last minute. |
| 502 | upstream_error | The model provider failed before replying. You are not charged. |
Errors use OpenAI's shape: {"error": {"message", "type", "code"}}. 11 models are available in total; your tier decides which.