Quickstart
Make your first metered API call in 60 seconds.
1. Get a key
Sign up at runaii.cloud (you get $5 in free credits), then create a key
at Console → API Keys. Keys start with sk-runaii- and are shown once — store
them somewhere safe.
2. Point your SDK at us
The API is OpenAI-compatible — if you already use the OpenAI SDK, this is a two-line change:
from openai import OpenAI
client = OpenAI(
api_key="sk-runaii-...", # your runaii key
base_url="https://api.runaii.cloud/v1", # ← the only change
)
resp = client.chat.completions.create(
model="deepseek-v4-flash", # or any id from /api/v1/models
messages=[{"role": "user", "content": "Hello, fleet."}])
print(resp.choices[0].message.content)
print(resp.usage.cost) # exactly what you were charged
deepseek-v4-flash is one of the models the live catalog currently reports as
ready. glm-5.3 reports is_ready: false at the time of writing, and calls
against a false lane will not serve — check is_ready in GET /api/v1/models
before wiring a model into production.
3. Or plain curl
curl https://api.runaii.cloud/v1/chat/completions \
-H "Authorization: Bearer $RUNAII_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Hello, fleet."}]
}'
4. Anthropic SDK? Same models, same billing
The Anthropic /v1/messages dialect is served natively — point the Anthropic SDK
at our /api base and keep using x-api-key exactly as you do with Claude:
import anthropic
client = anthropic.Anthropic(
api_key="sk-runaii-...", # your runaii key
base_url="https://api.runaii.cloud/api", # ← the only change
)
msg = client.messages.create(
model="deepseek-v4-flash",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello, fleet."}],
)
print(msg.content[0].text)
Both dialects are the same product underneath: tool use (tools /
tool_choice / tool_result round-trips), image blocks, top_k, and
thinking → reasoning are all supported on the Anthropic path, and the same
per-key rate limits, daily caps, and per-token billing apply either way.
Coding agents (Claude Code, Cline, Cursor, …) have per-tool setup snippets on
the connect page.
5. Responses API? Also native (Codex CLI, Agents SDK)
The OpenAI Responses API (/v1/responses) is served natively too — point
Codex CLI, the OpenAI Agents SDK, or any Responses-based client straight at it:
resp = client.responses.create(
model="deepseek-v4-flash",
input="Hello, fleet.",
)
print(resp.output_text)
curl https://api.runaii.cloud/v1/responses \
-H "Authorization: Bearer $RUNAII_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"input": "Hello, fleet."
}'
You get the full Responses surface: input (string, message items, image
parts), instructions, max_output_tokens, function tools with
function_call / function_call_output round-trips, text.format
(json_object / json_schema), reasoning, and complete response.* streaming
events. Two things are not supported, by design: previous_response_id (the
endpoint is stateless — send the full conversation in input, which is what
the SDK does when store: false) and OpenAI-hosted tools (web_search,
file_search, computer_use, code_interpreter) — use type: "function"
tools instead, which work everywhere. The same key, the same rate limits, the
same per-token billing as the other dialects. Non-streaming responses report
usage.cost exactly like chat completions.
All three dialects — OpenAI chat completions, Anthropic messages, and the
Responses API — are one product underneath: authenticate with the same
sk-runaii- key and pick whichever shape your app already speaks.
What you get back
{
"choices": [{ "message": { "content": "Hello, fleet." } }],
"usage": {
"prompt_tokens": 14,
"completion_tokens": 9,
"total_tokens": 23,
"cost": 0.000006
}
}
usage.cost is exactly what your balance was charged for this request — metered per
token, verified to the micro. Check your running balance any time with
GET /api/v1/key.