API Reference
One platform, five public APIs: the OpenAI-compatible /v1/cloud AI API, real-time voice (/v1/voice), ranked knowledge (/v1/search), per-user memory (/v1/memory) and hosted agents (/v1/agent). Everything is JSON-in / JSON-out over a single base URL.
Getting Started
Three steps to your first call. Do it in the dashboard, or with the API:
- 1.Create an account —
POST /v1/auth/registerwith { email, password }, then confirm the 6-digit code at/v1/auth/verify-email. - 2.Create an API key —
POST /v1/keyswith { "name": "my-app" }, or a service-scoped key withPOST /v1/{service}/keys. The brain, memory, llm and pay keys are free to create — you only pay for what you meter. - 3.Call the API — pass the key as a bearer token (below). Add prepaid balance any time with
POST /v1/billing/topup.
Authentication
Every request takes a bearer token. The base URL for everything is:
Authorization: Bearer $INCORD_KEY
Base URL: https://api.incord.aiGET /health, GET /v1/cloud/models and GET /v1/cloud/audio/voices are public (no key). Everything else returns 401 without a valid key, 402when your prepaid balance can't cover a metered call or you're over a free quota, and 429 when you exceed your rate limit.
Quickstart
Call any of 128+ models with the OpenAI Chat Completions shape:
curl https://api.incord.ai/v1/cloud/chat/completions \
-H "Authorization: Bearer $INCORD_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-haiku-4-5",
"messages": [{ "role": "user", "content": "Say hello in one line." }]
}'Or ask the Knowledge API for ranked, real-time context:
curl https://api.incord.ai/v1/search \
-H "Authorization: Bearer $INCORD_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "latest bitcoin analysis",
"top_k": 5,
"filters": { "asset_class": "crypto", "max_age_hours": 24 }
}'Knowledge response (truncated):
{
"query": "latest bitcoin analysis",
"confidence": { "sufficient": true, "top_rerank_score": 0.94 },
"counts": { "finance": 5, "commerce": 0, "code": 0 },
"results": [
{
"id": "live:btc_multi_tf_analysis",
"content": "BTC multi-timeframe technical analysis ...",
"confidence": 0.95,
"domain": "finance",
"node_type": "snapshot",
"timestamp": 1718700000
}
],
"scope": "full_brain"
}Cloud AI — OpenAI-compatible (/v1/cloud)
Drop-in OpenAI shape across 128+ cloud models (Anthropic, OpenAI, Google, Qwen, DeepSeek …) plus embeddings, rerank, audio (TTS/STT), realtime and video generation. Point any OpenAI SDK at api.incord.ai/v1/cloud and set model to any id from /v1/cloud/models — pin an exact model or a tier alias. Billed per token from your prepaid balance (or bundled free under an Agents plan); the first 1,000 grounded calls/month are free. Browse every model at /models.
/v1/cloud/modelsList every selectable model with live per-token pricing (128+). Public — browsable by any account, no key needed.
/v1/cloud/chat/completionsOpenAI Chat Completions. Body: { model, messages[], stream?, temperature?, max_tokens?, tools? }. SSE streaming with stream:true.
/v1/cloud/embeddingsOpenAI Embeddings across cloud embedding models. Body: { model, input }.
/v1/cloud/rerankCross-encoder rerank. Body: { query, documents[] }.
/v1/cloud/audio/voicesTTS voice catalog (free + premium tiers). Public — browsable without a key.
/v1/cloud/audio/speechText-to-speech. Body: { model, input, voice? }. Returns audio bytes. Also /v1/cloud/audio/speech/stream for streaming.
/v1/cloud/audio/transcriptionsOpenAI-compatible speech-to-text. Multipart audio in, text out. Realtime STT over WebSocket at /v1/cloud/realtime.
/v1/cloud/video/generateText/image-to-video generation. Body: { model, prompt, … }. Poll GET /v1/cloud/video/prediction/{id} for the result.
/v1/cloud/batchesOpenAI-compatible Batch API. Upload with POST /v1/cloud/files, create a batch, poll GET /v1/cloud/batches/{id}. Reads are billing-exempt.
/v1/cloud/usagePer-token usage ledger for this key/tenant.
Voice — real-time voice agents (/v1/voice)
Low-latency phone-style voice over WebRTC: speech-to-text → your agent → text-to-speech, all server-side, one pipeline per call. Built-in mode uses Incord's premium STT/TTS (billed per minute); BYOK lets you plug in your own OpenAI / Deepgram / Cartesia keys (the vendor bills you).
/v1/voice/voicesList selectable voices (name + default).
/v1/voice/startStart a call. Body: { agent_id }. Returns { call_id, webrtc_url } — open the URL to connect mic + speaker via a standard WebRTC peer connection.
/v1/voice/stopEnd an active call. Body: { call_id }.
/v1/voice/byokBring-your-own-keys. Body: { openai?, deepgram?, cartesia? }. Stored encrypted per-tenant; GET returns { configured: [...] }.
Knowledge — Retrieval API (/v1/search)
One ranked, validated, real-time context call for your agents: embed + hybrid (dense + sparse) retrieval + graph rerank across finance, commerce, code and research, with a confidence signal. Billed as the brain service — the first 5,000 calls/month are free, then $4.99 per 1,000. Free-tier calls are paced at 10/min and 500/day. Reranking is a Brain Pro feature.
/v1/searchEmbed a query and return the top-K most relevant, ranked nodes with a confidence signal. Body: { query, top_k?, rerank?, category?, filters? }. Filters: symbol, asset_class, categories, node_types, tiers, max_age_hours. Returns { confidence, counts, results[], scope }.
Memory — per-user memory (/v1/memory)
Persistent per-user conversation memory + a polymorphic node/edge graph. Store messages, recall the relevant ones, synthesize, and traverse the graph. Provision a memory key first (POST /v1/memory/keys). Billed as the memory service — the first 10,000 calls/month are free, then $1.00 per 1,000; storage is a separate GB quota per tier (writes are blocked over quota, reads stay open).
/v1/memory/keysProvision your memory key (once). Returns the key used for the calls below.
/v1/memory/messagesIngest one chat message (redact → embed → store → wire into the graph). Bulk via POST /v1/memory/messages/batch. Body: { user_id, conv_id?, role, content, … }.
/v1/memory/searchUnified retrieval bundle: hybrid search + recent conversations + graph neighbors + timeline. Body: { user_id, query, top_k, conv_id?, since? }.
/v1/memory/recall/indexCheap recall — return candidate refs (no full content). Fetch the chosen ones with POST /v1/memory/recall/get; window a message with /v1/memory/recall/timeline.
/v1/memory/thinkLLM synthesis over recalled memory. Body: { user_id, query, top_k, conv_id?, since? }.
/v1/memory/conversationsList the user's conversations. GET /v1/memory/conversations/{id}/messages to read one; DELETE /v1/memory/conversations/{id} to remove it.
/v1/memory/graph/nodesUpsert a graph node. GET to list, GET/PATCH/DELETE /v1/memory/graph/nodes/{id}; traverse with POST /v1/memory/graph/query, relate with /v1/memory/graph/relate.
/v1/memory/code/syncIndex code chunks into memory (write, quota-gated). Body: code payload.
/v1/memory/storageStorage meter: { used_bytes, used_gb, quota_gb, remaining_gb, tier }.
Agents — hosted agents (/v1/agent)
Long-running, tool-using agents with sessions, files and channels, isolated per tenant. The control API forwards to your tenant's agent daemon. Billed as a monthly Agents subscription with a bundled run allowance — Starter $19/mo (50 runs), Pro $49/mo (200), Scale $199/mo (1,000) — which also bundles brain + memory + LLM usage.
/v1/agent/agentsList your agents. POST /v1/agent/agents to spawn one. GET /v1/agent/agents/{id} to fetch, PATCH to update, DELETE to kill.
/v1/agent/agents/{id}/messageSend a message / trigger a run. Streaming variant: POST /v1/agent/agents/{id}/message/stream (SSE).
/v1/agent/agents/{id}/stopCancel the current run. Start/restart with /v1/agent/agents/{id}/start and /restart.
/v1/agent/agents/{id}/sessionsList/switch sessions; read artifacts (/v1/agent/agents/{id}/artifacts) and files (/…/files).
Account, Keys & Billing
Create an account, mint service-scoped keys, and top up a prepaid balance. brain / memory / llm / pay keys are free to create — the meter is the gate; agents keys need an active subscription.
/v1/auth/registerCreate an account { email, password }. Emails a 6-digit code; confirm at POST /v1/auth/verify-email. Also /v1/auth/google and /v1/auth/github.
/v1/auth/loginLog in { email, password } → session token.
/v1/keysCreate an API key { name }. GET to list, DELETE /v1/keys/{id} to revoke.
/v1/{service}/keysCreate a service-scoped key (service = brain | memory | llm | agents | pay). GET lists, DELETE /{id} revokes, POST /{id}/rotate rotates. GET /v1/{service}/usage for the rollup.
/v1/billing/plansPer-service plan catalog + this month's usage + your subscriptions + prepaid balance.
/v1/billing/balancePrepaid balance (USD). POST /v1/billing/topup to add credit (crypto via incord-pay); POST /v1/billing/subscribe-service for a per-service tier.
Use the OpenAI SDK
Because the Cloud AI API is OpenAI-shaped, you don't need our SDK — just point base_url at https://api.incord.ai/v1/cloud and use your key.
Python
from openai import OpenAI
client = OpenAI(api_key="$INCORD_KEY", base_url="https://api.incord.ai/v1/cloud")
# Chat — model = any id from /v1/cloud/models
chat = client.chat.completions.create(
model="claude-haiku-4-5",
messages=[{"role": "user", "content": "Summarize today's BTC move."}],
)
print(chat.choices[0].message.content)
# Embeddings
emb = client.embeddings.create(model="qwen3-embedding", input="hello world")
print(len(emb.data[0].embedding))JavaScript / TypeScript
import OpenAI from "openai";
const client = new OpenAI({ apiKey: process.env.INCORD_KEY, baseURL: "https://api.incord.ai/v1/cloud" });
const chat = await client.chat.completions.create({
model: "claude-haiku-4-5",
messages: [{ role: "user", content: "Summarize today's BTC move." }],
});
console.log(chat.choices[0].message.content);Connect via MCP
The Memory API speaks the Model Context Protocol, so any MCP-aware client (Claude Desktop, Cursor, Windsurf) can read and write your memory. Add this to your client's MCP config:
{
"mcpServers": {
"incord": {
"url": "https://api.incord.ai/v1/memory/mcp",
"headers": { "Authorization": "Bearer $INCORD_MEMORY_KEY" }
}
}
}For HTTP clients that prefer SSE, point the transport at https://api.incord.ai/v1/memory/mcp/sse. The same bearer token authenticates the JSON-RPC and the stream.
Set up with your AI
In a hurry? Paste the block below into Claude, ChatGPT, or Cursor — it has everything an AI assistant needs to wire Incord into your project for you.
You are setting up the Incord API in my project.
Base URL: https://api.incord.ai
Auth: every request needs the header Authorization: Bearer <INCORD_KEY>
My key is in the env var INCORD_KEY (ask me if it is missing).
Incord is OpenAI-compatible for the Cloud AI API, so use the official OpenAI SDK
with base_url="https://api.incord.ai/v1/cloud". Key endpoints:
- Models (public): GET /v1/cloud/models
- Chat: POST /v1/cloud/chat/completions model = any id from /v1/cloud/models
- Embeddings: POST /v1/cloud/embeddings
- Knowledge/RAG: POST /v1/search body { query, top_k, filters }
- Memory: POST /v1/memory/search body { user_id, query, top_k }
Tasks:
1. Detect my stack (package.json / requirements.txt / go.mod).
2. Add the OpenAI client configured for base_url="https://api.incord.ai/v1/cloud", reading INCORD_KEY from env.
3. Add one working call to /v1/cloud/chat/completions and one to /v1/search.
4. Print how to run it. Do NOT hardcode the key; use the env var.Errors
- —
401 Unauthorized— missing or invalid API key. - —
402 Payment Required— over a free quota, or prepaid balance can't cover this metered call. Top up withPOST /v1/billing/topup. - —
403 Forbidden— email not verified. - —
422 Unprocessable Entity— the request body is missing required fields. - —
429 Too Many Requests— over your rate limit (free tier: 10/min, 500/day). See theRetry-Afterheader.