runaiicloud
ModelsAppsGPUsServerless GPUPricingReserveDocsConnectCompareEnterprise
Log inGet started
runaiicloud docs
status →
⌘⌘K
Get started
Quickstart
API reference
Authentication & API keysStreamingErrorsModels catalogFunction calling & tool useStructured outputs
Billing & limits
Pricing, metering & prompt cachingRate limits & tiers
Bring your own model →Blog ←Get an API key →Changelog
Authentication & API keysPricing, metering & prompt cachingQuickstartRate limits & tiersStreamingErrorsModels catalogFunction calling & tool useStructured outputs
docs/Get started/Quickstart
On this page▸
1. Get a key2. Point your SDK at us3. Or plain curl4. Anthropic SDK? Same models, same billing5. Responses API? Also native (Codex CLI, Agents SDK)What you get back
Get started

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.

On this page

1. Get a key2. Point your SDK at us3. Or plain curl4. Anthropic SDK? Same models, same billing5. Responses API? Also native (Codex CLI, Agents SDK)What you get back

← Previous

Pricing, metering & prompt caching

Next →

Rate limits & tiers

runaiicloud

Serverless inference, dedicated GPUs, and training for open models. OpenAI- and Anthropic-compatible APIs.

© 2026 runaii

Platform

Model libraryAppsGPUsServerless GPUPricingToken-Max coding plansCompare providersDocs

Developers

ConnectCookbookCLIAgents / MCPUse casesTutorialsBlogFAQ

Company

EnterpriseStartupsAboutCareersTrust centerStatusSupportTermsPrivacyData policySubprocessorsSitemap