Start free with 1,000 credits - no credit card requiredSee plans

Developers

Your credits, everywhere you work.

One API key spends your VT.AI balance inside external tools - same rates as the web app, same ledger, per-key spend tracking in Settings.

1. Create a key

Log in → Settings → API keys → name it (e.g. “opencode laptop”) → copy the secret once - it is never shown again. Revoke anytime; revocation is instant.

2. Connect your tool

OpenCode / Cline / Continue (OpenAI-compatible)

{
  "provider": "vt-ai",
  "baseURL": "https://velatl.ai/api/v1",
  "apiKey": "vtai_...",
  "model": "fast"
}

Claude Code (Anthropic-compatible)

export ANTHROPIC_BASE_URL="https://velatl.ai/api/v1"
export ANTHROPIC_API_KEY="vtai_..."
# model: fast  (or balanced on paid plans)

Claude Desktop / MCP clients

# MCP server (Streamable HTTP): https://velatl.ai/api/mcp
# Authorization: Bearer vtai_...
# Tools: chat (billed), get_balance, list_models (free)

curl - OpenAI shape

curl https://velatl.ai/api/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer vtai_..." \
  -d '{"model":"fast","messages":[{"role":"user","content":"Hi"}]}'

curl - Anthropic shape

curl https://velatl.ai/api/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: vtai_..." \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"fast","max_tokens":1024,"messages":[{"role":"user","content":"Hi"}]}'

Python (OpenAI SDK)

from openai import OpenAI
client = OpenAI(base_url="https://velatl.ai/api/v1", api_key="vtai_...")
r = client.chat.completions.create(
    model="fast",
    messages=[{"role": "user", "content": "Hi"}],
)
print(r.choices[0].message.content)

3. Models & pricing

Slugs below are the model values both protocols accept. Billed from the same balance at web rates - see per-key spend in Settings.

balanced

Stronger reasoning for writing, analysis and code.

4 cr / 1k in · 16 cr / 1k out · max 2,048 out

fast

Fast, low-cost chat for everyday questions and drafts.

2 cr / 1k in · 8 cr / 1k out · max 2,048 out

Billing & limits

  • Every call reserves max cost first, then settles actuals - failed calls refund in full, automatically.
  • Out of credits → 402 insufficient_credits. Top up or upgrade in billing.
  • Fair-use rate limits per key + plan caps shared with the web app.
  • Every response carries X-Request-Id - quote it in support mail.
  • GET /api/v1/models lists the models your plan can use.

Limits of v1

  • Text only: no images, tool calling, JSON mode, or thinking blocks - rejected with a clear 400 before anything is billed.
  • Sampling settings (temperature etc.) are accepted but run provider defaults.
  • Token counts on streaming are usage estimates settled exactly server-side.