What You Need in Advance
- An account, logged in to the console
- At least one API key created under API Keys, in the space (personal or team) you intend to call from
- Sufficient balance — calls are rejected when quota is insufficient (see Billing)
Model Availability
- Determined by your access group: each API key can call the models enabled for its model-access group. Two keys on the same account may see different model lists.
- The model directory is authoritative:
GET /v1/models,/claude/v1/models, and/gemini/:version/modelsreturn exactly what the current key can call. Anything absent is unavailable. - Per-key restrictions: a key can be further limited to specific models from its detail panel — a model in your group may still be blocked for that key.
- Task services: capabilities like Midjourney, Suno, RecraftAI, and Kling depend on those channels being enabled for your deployment.
Quota and Billing
- Insufficient quota rejects immediately: quota is validated and pre-deducted before the request reaches a model. If any level (personal, team, or owner balance) is short, the call is rejected.
- Two-phase settlement: pre-deduction on request, settlement on completion based on actual usage; failures roll back the reservation.
- Independent quota pools: personal and team contexts are separate. Confirm your current space before automating.
Rate Limits
Rate limiting applies on two dimensions: per IP address (separate buckets for general API traffic, uploads, and downloads, with thresholds set per deployment) and per account (determined by your access group — 600 requests per minute on the default group). Exceeding either returns429 with a Retry-After header.
Design for it regardless:
- Implement exponential backoff on
429 - Spread bulk workloads rather than firing them in parallel spikes
- Prefer batching where the API supports it
Model relay traffic is metered by quota rather than the general API rate limiter — the limits that matter most for high-volume inference are your balance and the upstream provider’s own limits.
Protocol and Entry Point Notes
- OpenAI-compatible
/v1/*: accepts OpenAI-style request bodies. Broad surface — chat completions, responses, embeddings, images, audio, moderations, files, batches, and more. - Native paths:
/claude/v1/messagesand/gemini/:version/models/:modelpreserve each provider’s own protocol, fields, and model IDs. Use these with the official Claude/Gemini SDKs. - Task interfaces: Midjourney, Suno, RecraftAI, and Kling follow an asynchronous “submit → poll task id” pattern; a single request does not return the final asset.
- Parameter passthrough: provider-specific parameters (reasoning effort, Claude thinking, Gemini search and code execution) pass through unchanged — keep them in the official format.
Newer OpenAI reasoning models (
gpt-5 family, o1/o3/o4) expect max_completion_tokens rather than max_tokens on Chat Completions.Stability Notes
- Channel health: automatic retry and channel switching require at least one healthy alternative; when all channels for a model are unavailable, requests fail.
- Long streaming calls: streams close on network errors or timeouts — implement client-side timeout and reconnection handling.
Permissions and Context
- Space context: calls execute in a personal or team context, each with its own quota pool and model visibility.
- Roles: managing team quotas, viewing team-wide usage, and adjusting member allocations depend on your team role — see Roles and Permissions.
- Log visibility: members see their own call records; team-wide logs and statistics require the corresponding permission.
Pre-Use Checklist
- Confirm the current space (personal vs. team) and that your balance is sufficient
- List models via the directory endpoint and confirm your target model appears
- For task services, confirm the channel is enabled in your deployment
- Estimate volume and reserve quota before production traffic