Inversify's Developer API lets you call 93+ AI models through a single OpenAI-compatible endpoint. Requests are charged from your API Spark pool — separate from your chat usage.
All API requests should use the following base URL:
https://chat.inversify.live/v1The API is OpenAI-compatible — you can use the official OpenAI SDK by overriding the baseURL option.
Pass your API key in the Authorization header as a Bearer token:
Authorization: Bearer inv_sk_your_key_hereGenerate API keys in Settings → API Keys. You can create up to 5 keys per account. The full key is shown only once on creation — store it securely.
| Limit | Value |
|---|---|
| Requests per minute | 60 |
| API Spark balance | Based on purchased packs — never expire |
When rate limited you receive a 429 response. The X-RateLimit-Remaining header shows requests remaining in the current window.
Generate a chat completion. Compatible with the OpenAI Chat Completions API.
Request body
{
"model": "gpt-4o", // required — model ID from /v1/models
"messages": [ // required — array of messages
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "Hello!" }
],
"stream": false, // optional, default false
"temperature": 0.7, // optional, 0.0–1.0
"max_tokens": 1024 // optional
}Non-streaming response
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1718000000,
"model": "gpt-4o",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I help you today?"
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 12,
"total_tokens": 37
}
}Streaming response ("stream": true)
When streaming, the response is a text/event-stream with server-sent events (SSE):
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1718000000,"model":"gpt-4o","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1718000000,"model":"gpt-4o","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1718000000,"model":"gpt-4o","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]List all available models. No authentication required.
{
"object": "list",
"data": [
{
"id": "gpt-4o",
"object": "model",
"created": 1704067200,
"owned_by": "openai",
"context_window": 128000,
"capabilities": ["text", "vision", "code", "reasoning"]
},
// ... more models
]
}All models available through the API. Use the id field in your requests.
| Model ID | Provider | Context | Cost Tier |
|---|---|---|---|
| gpt-5.4-pro | OpenAI | 200K | high |
| gpt-5.4 | OpenAI | 200K | high |
| gpt-5.4-mini | OpenAI | 128K | medium |
| gpt-5.4-nano | OpenAI | 128K | low |
| gpt-5.3-codex | OpenAI | 200K | high |
| gpt-5.3-instant | OpenAI | 128K | low |
| gpt-5.2 | OpenAI | 200K | medium |
| gpt-5.1-codex | OpenAI | 128K | medium |
| gpt-4.5 | OpenAI | 128K | medium |
| gpt-4.1 | OpenAI | 1.0M | medium |
| gpt-4.1-mini | OpenAI | 1.0M | low |
| gpt-4.1-nano | OpenAI | 1.0M | low |
| gpt-4o | OpenAI | 128K | medium |
| gpt-4o-mini | OpenAI | 128K | low |
| o4-mini | OpenAI | 200K | medium |
| o3-pro | OpenAI | 200K | high |
| o3 | OpenAI | 200K | high |
| o3-deep-research | OpenAI | 200K | high |
| o4-mini-deep-research | OpenAI | 200K | medium |
| o3-mini | OpenAI | 200K | medium |
| claude-opus-4-6 | Anthropic | 200K | high |
| claude-sonnet-4-6 | Anthropic | 200K | medium |
| claude-haiku-4-5 | Anthropic | 200K | low |
| claude-opus-4-5 | Anthropic | 200K | high |
| claude-sonnet-4-5 | Anthropic | 200K | medium |
| claude-opus-4 | Anthropic | 200K | high |
| claude-sonnet-4 | Anthropic | 200K | medium |
| claude-sonnet-3.5 | Anthropic | 200K | medium |
| claude-haiku-3.5 | Anthropic | 200K | low |
| claude-3-opus | Anthropic | 200K | high |
| gemini-3.1-pro | 2.1M | high | |
| gemini-3.1-flash | 1.0M | low | |
| gemini-3.1-flash-lite | 1.0M | low | |
| gemini-3-pro | 1.0M | high | |
| gemini-3-flash | 1.0M | medium | |
| gemini-3-deep-think | 1.0M | high | |
| gemini-2.5-pro | 1.0M | medium | |
| gemini-2.5-flash | 1.0M | low | |
| gemini-2.5-flash-lite | 1.0M | low | |
| gemini-2.0-flash | 1.0M | low | |
| gemini-2.0-flash-lite | 1.0M | low | |
| gemini-nano | 33K | low | |
| gemma-3n | Fireworks | 33K | low |
| gemma-3 | Fireworks | 131K | low |
| gemma-2 | Fireworks | 8K | low |
| gemma-2-9b | Fireworks | 8K | low |
| gemma | Fireworks | 8K | low |
| grok-3 | xAI | 131K | medium |
| grok-3-fast | xAI | 131K | medium |
| grok-3-mini | xAI | 131K | low |
| grok-3-mini-fast | xAI | 131K | low |
| grok-2 | xAI | 131K | low |
| llama-4-maverick | Fireworks | 131K | medium |
| llama-4-scout | Fireworks | 131K | low |
| llama-3.3-70b | Fireworks | 131K | low |
| llama-3.1-405b | Fireworks | 131K | medium |
| deepseek-v3 | Fireworks | 131K | low |
| deepseek-r1 | Fireworks | 131K | low |
| qwen-2.5-72b | Fireworks | 131K | low |
| qwen3-235b | Fireworks | 131K | medium |
| mistral-small | Fireworks | 66K | low |
| elephant-alpha | openrouter | 262K | free |
| openrouter-free | openrouter | 200K | free |
| llama-4-scout-free | openrouter | 512K | free |
| llama-4-maverick-free | openrouter | 1.0M | free |
| llama-3.3-70b-free | openrouter | 131K | free |
| llama-3.2-3b-free | openrouter | 131K | free |
| deepseek-r1-free | openrouter | 164K | free |
| deepseek-v3-free | openrouter | 164K | free |
| gemma-4-31b-free | openrouter | 262K | free |
| gemma-4-26b-free | openrouter | 262K | free |
| gemma-3-27b-free | openrouter | 131K | free |
| gemma-3-12b-free | openrouter | 131K | free |
| gemma-3-4b-free | openrouter | 131K | free |
| gemma-3n-4b-free | openrouter | 32K | free |
| gemma-3n-2b-free | openrouter | 8K | free |
| qwen3-coder-free | openrouter | 1.0M | free |
| qwen3-14b-free | openrouter | 41K | free |
| qwen3-next-80b-free | openrouter | 262K | free |
| mistral-small-free | openrouter | 131K | free |
| nemotron-3-super-free | openrouter | 1.0M | free |
| nemotron-3-nano-free | openrouter | 256K | free |
| nemotron-nano-12b-vl-free | openrouter | 128K | free |
| nemotron-nano-9b-free | openrouter | 32K | free |
| minimax-m2.5-free | openrouter | 205K | free |
| hermes-3-405b-free | openrouter | 131K | free |
| gpt-oss-120b-free | openrouter | 131K | free |
| gpt-oss-20b-free | openrouter | 131K | free |
| glm-4.5-air-free | openrouter | 131K | free |
| lfm-2.5-thinking-free | openrouter | 33K | free |
| lfm-2.5-instruct-free | openrouter | 33K | free |
| trinity-large-free | openrouter | 131K | free |
| dolphin-mistral-free | openrouter | 33K | free |
100,000 Sparks = $1. API Sparks are a separate pool from Chat Sparks — they don't affect your chat usage and vice versa. Costs vary by model and message length; the table below shows approximate costs per typical message (~500 input + ~700 output tokens).
| Model tier | Examples | Approx. Sparks/msg |
|---|---|---|
| Nano / Mini | gpt-4.1-nano, gemini-2.0-flash-lite | ~100–500 |
| Mid-tier | gpt-4o, claude-sonnet-4 | ~500–5,000 |
| Premium | claude-opus-4-6, o3-pro | ~5,000–60,000 |
Exact per-model estimates (500 in + 700 out tokens):
| Model | Sparks/msg |
|---|---|
| gpt-5.4-nano | ~250 |
| gpt-5.3-instant | ~250 |
| gpt-4.1-mini | ~250 |
| gpt-4.1-nano | ~250 |
| gpt-4o-mini | ~250 |
| gemini-3.1-flash | ~250 |
| gemini-3.1-flash-lite | ~250 |
| gemini-3-flash | ~250 |
| gemini-2.5-flash | ~250 |
| gemini-2.5-flash-lite | ~250 |
| gemini-2.0-flash | ~250 |
| gemini-2.0-flash-lite | ~250 |
| gemini-nano | ~250 |
| gemma-3n | ~250 |
| gemma-3 | ~250 |
| gemma-2 | ~250 |
| gemma-2-9b | ~250 |
| gemma | ~250 |
| grok-3-mini | ~250 |
| llama-4-maverick | ~250 |
| llama-4-scout | ~250 |
| llama-3.3-70b | ~250 |
| deepseek-v3 | ~250 |
| deepseek-r1 | ~250 |
| qwen-2.5-72b | ~250 |
| qwen3-235b | ~250 |
| mistral-small | ~250 |
| elephant-alpha | ~250 |
| openrouter-free | ~250 |
| llama-4-scout-free | ~250 |
| llama-4-maverick-free | ~250 |
| llama-3.3-70b-free | ~250 |
| llama-3.2-3b-free | ~250 |
| deepseek-r1-free | ~250 |
| deepseek-v3-free | ~250 |
| gemma-4-31b-free | ~250 |
| gemma-4-26b-free | ~250 |
| gemma-3-27b-free | ~250 |
| gemma-3-12b-free | ~250 |
| gemma-3-4b-free | ~250 |
| gemma-3n-4b-free | ~250 |
| gemma-3n-2b-free | ~250 |
| qwen3-coder-free | ~250 |
| qwen3-14b-free | ~250 |
| qwen3-next-80b-free | ~250 |
| mistral-small-free | ~250 |
| nemotron-3-super-free | ~250 |
| nemotron-3-nano-free | ~250 |
| nemotron-nano-12b-vl-free | ~250 |
| nemotron-nano-9b-free | ~250 |
| minimax-m2.5-free | ~250 |
| hermes-3-405b-free | ~250 |
| gpt-oss-120b-free | ~250 |
| gpt-oss-20b-free | ~250 |
| glm-4.5-air-free | ~250 |
| lfm-2.5-thinking-free | ~250 |
| lfm-2.5-instruct-free | ~250 |
| trinity-large-free | ~250 |
| dolphin-mistral-free | ~250 |
| gpt-5.4-mini | ~304 |
| grok-3-mini-fast | ~357 |
| claude-haiku-4-5 | ~368 |
| claude-haiku-3.5 | ~368 |
| llama-3.1-405b | ~414 |
| o4-mini | ~417 |
| o3-mini | ~417 |
| gpt-5.1-codex | ~759 |
| gpt-4.1 | ~759 |
| gpt-4o | ~759 |
| o4-mini-deep-research | ~759 |
| gemini-2.5-pro | ~877 |
| grok-2 | ~920 |
| gemini-3-pro | ~1,081 |
| gpt-4.5 | ~1,138 |
| gemini-3.1-pro | ~1,351 |
| claude-sonnet-4-6 | ~1,380 |
| claude-sonnet-4-5 | ~1,380 |
| claude-sonnet-4 | ~1,380 |
| claude-sonnet-3.5 | ~1,380 |
| grok-3 | ~1,380 |
| gpt-5.2 | ~1,518 |
| gemini-3-deep-think | ~1,840 |
| gpt-5.3-codex | ~2,277 |
| grok-3-fast | ~2,300 |
| gpt-5.4 | ~3,036 |
| o3 | ~3,795 |
| o3-deep-research | ~5,693 |
| claude-opus-4-6 | ~6,900 |
| claude-opus-4-5 | ~6,900 |
| claude-opus-4 | ~6,900 |
| claude-3-opus | ~6,900 |
| gpt-5.4-pro | ~7,590 |
| o3-pro | ~7,590 |
API Sparks are purchased separately from your subscription. Your API Spark balance never expires. Purchase any time from Settings → API Keys.
| Pack | API Sparks | Price |
|---|---|---|
| Starter | 100,000 | $1 |
| Builder | 500,000 | $4 |
| Pro Dev | 1,500,000 | $10 |
Admins can also grant API Sparks directly to accounts. Sparks are never tied to a subscription plan and do not reset monthly.
curl https://chat.inversify.live/v1/chat/completions \
-H "Authorization: Bearer inv_sk_your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "Hello!"}]
}'from openai import OpenAI
client = OpenAI(
api_key="inv_sk_your_key", base_url="https://chat.inversify.live/v1"
)
response = client.chat.completions.create(
model="gpt-4o", messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
apiKey: "inv_sk_your_key", baseURL: "https://chat.inversify.live/v1",
});
const response = await client.chat.completions.create({
model: "gpt-4o", messages: [{ role: "user", content: "Hello!" }],
});
console.log(response.choices[0].message.content);import OpenAI from "openai";
const client = new OpenAI({
apiKey: "inv_sk_your_key", baseURL: "https://chat.inversify.live/v1",
});
const stream = await client.chat.completions.create({
model: "gpt-4o", messages: [{ role: "user", content: "Tell me a short story." }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
console.log(); // newlineErrors are returned as JSON with an error object:
{
"error": {
"message": "Invalid API key",
"type": "authentication_error",
"code": "unauthorized"
}
}| HTTP Status | Error type | Description |
|---|---|---|
| 401 | authentication_error | Missing, invalid, or expired API key |
| 402 | insufficient_quota | Insufficient API Sparks — top up at Settings → API Keys |
| 403 | insufficient_quota | No API Sparks available — purchase a pack to get started |
| 404 | invalid_request_error | Model not found or not available for chat completions |
| 429 | rate_limit_error | Too many requests — 60 req/min limit exceeded |
| 500 | api_error | Internal server error — try again later |
Inversify Developer API — OpenAI-compatible gateway