Documentation

Build with Omni API

OpenAI-compatible chat completions, API key authentication, usage value billing, and model multipliers in one API gateway.

Compatibility note: Omni API currently supports OpenAI-compatible Chat Completions only. Responses API, Assistants API, tool calling, image generation, file uploads, and built-in browsing are not supported yet.

Quickstart

1

Start free with Google

Sign up at omniquasar.com to receive $5.00 usage value and create an API key. Verify a payment method to receive a free one-time $20.00 bonus.

2

Set the base URL

https://omniquasar.com/api/proxy/v1
3

Make your first call

curl -X POST https://omniquasar.com/api/proxy/v1/chat/completions \
  -H "Authorization: Bearer omni_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-fast",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

OpenAI SDK examples

Use your existing OpenAI SDK shape. Replace the base URL and use an Omni API key.

curl -X POST https://omniquasar.com/api/proxy/v1/chat/completions \
  -H "Authorization: Bearer $OMNI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-fast",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Environment variables

Keep API keys out of source code and reuse the same base URL across local scripts, servers, and workers.

OMNI_API_KEY=omni_your_key_here
OMNI_BASE_URL=https://omniquasar.com/api/proxy/v1

Authentication

All API requests require an API key passed as a Bearer token in the Authorization header.

Authorization: Bearer omni_your_key_here
  • API keys are prefixed with omni_.
  • Create, rotate, and revoke keys from the dashboard.
  • Never share or commit your API key to source control.

Models

Choose a model based on your quality and cost requirements.

omni-standard

×1

Cost-efficient default usage

omni-fast

×2

Fast general requests

omni-highest

×10

Highest-quality reasoning tasks

Credits & Billing

Usage is shown as USD value and metered internally in credits based on billable tokens: input tokens and output tokens. If the upstream provider reports cache creation or cache read tokens separately, Omni folds them into input tokens before billing; they are not billed as a separate third token category.

Formula: usage value = billable-token tier base value × model multiplier

Tiered deduction by billable tokens

Billable Tokens<= 16,000Base Credits1Base usage value$1.00
Billable Tokens16,001 - 32,000Base Credits2Base usage value$2.00
Billable Tokens32,001 - 128,000Base Credits5Base usage value$5.00
Billable Tokens> 128,000Base Credits10Base usage value$10.00

Usage value options

OptionGoogle signupCost$0Usage value$5.00 usage value
OptionPayment verificationCost$0Usage value$20.00 one-time bonus
OptionFirst purchase paid top-upCost$0.99Usage value5 credits · $5.00 usage value · first purchase only
OptionSmall top-upCost$9.99Usage value10 credits · $10.00 usage value · one-time purchase
OptionStandard top-upCost$19.99Usage value22 credits · $22.00 usage value · one-time purchase
OptionPower top-upCost$49.99Usage value60 credits · $60.00 usage value · one-time purchase

Cancelled or interrupted streaming requests

Once a request is dispatched to the model, cancelling it or dropping the connection mid-stream does not stop billing. Only requests that fail due to platform-side errors are free of charge.

Compatibility

Supported

  • OpenAI-compatible chat completions
  • Streaming responses
  • API key authentication
  • temperature
  • max_tokens

Not currently supported

  • OpenAI Assistants API
  • OpenAI Responses API
  • Tool calling / function calling
  • OpenAI-compatible tool_calls format
  • Image generation
  • File uploads
  • Built-in web browsing
Unsupported OpenAI API surfaces are not emulated. Fields outside the supported Chat Completions surface may be rejected as invalid_request_error or forwarded to the upstream compatibility layer and returned as upstream_error; do not rely on unsupported OpenAI features.

API Reference

POST https://omniquasar.com/api/proxy/v1/chat/completions

Request Parameters

ParametermodelTypestringRequiredYesDescriptionomni-fast, omni-standard, or omni-highest
ParametermessagesTypearrayRequiredYesDescriptionArray of {role, content} objects in OpenAI format
ParameterstreamTypebooleanRequiredNoDescriptionEnable SSE streaming
Parametermax_tokensTypeintegerRequiredNoDescriptionMaximum tokens in response
ParametertemperatureTypenumberRequiredNoDescriptionSampling temperature 0-2

Non-streaming example

curl -X POST https://omniquasar.com/api/proxy/v1/chat/completions \
  -H "Authorization: Bearer omni_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-fast",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
{
  "id": "chatcmpl-xxx",
  "model": "omni-fast",
  "choices": [{
    "message": { "role": "assistant", "content": "Hello! How can I help?" },
    "finish_reason": "stop"
  }],
  "usage": { "prompt_tokens": 10, "completion_tokens": 12 }
}

Streaming example

curl -X POST https://omniquasar.com/api/proxy/v1/chat/completions \
  -H "Authorization: Bearer omni_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"model":"omni-fast","messages":[{"role":"user","content":"Hello!"}],"stream":true}'
data: {"choices":[{"delta":{"content":"Hello"}}]}
data: {"choices":[{"delta":{"content":"!"}}]}
data: [DONE]

Note: Omni API is powered by a stack of Claude models working together. When streaming is enabled, the connection is kept alive with SSE heartbeats during processing.

Error Codes

HTTP Status400MeaningInvalid request, invalid model, invalid max_tokens, or unsupported request fieldResolutionCheck model and request payload
HTTP Status401MeaningMissing, invalid, or revoked API keyResolutionCheck your key in the Developer Console
HTTP Status402MeaningInsufficient usage balanceResolutionTop up usage value in the dashboard
HTTP Status404MeaningEndpoint not found or unsupported API surfaceResolutionUse the supported chat completions endpoint
HTTP Status413MeaningRequest body too largeResolutionReduce request size before retrying
HTTP Status429MeaningRate limit or retryable upstream responseResolutionWait for Retry-After, then retry with backoff
HTTP Status500MeaningInternal gateway errorResolutionRetry later and include x-request-id if contacting support
HTTP Status503MeaningService temporarily unavailableResolutionRetry after a short wait

Retryable upstream failures, including upstream 502 responses, are normalized to 429 by the proxy so clients can use one backoff path.

Error response shape

{
  "error": {
    "message": "Insufficient credits",
    "type": "invalid_request_error",
    "param": null,
    "code": "insufficient_credits"
  }
}

Every proxy response includes an x-request-id header. Include that value when contacting support.

Debugging and retries

When contacting support, include:

  • x-request-id
  • timestamp
  • model
  • HTTP status code
  • whether streaming was enabled

Retry policy

For 429 and 503 responses, retry with exponential backoff. If a Retry-After header is present, wait at least that long before retrying.

Ready to create an API key?

Start with Google, create an API key in the Developer Console, then optionally verify a payment method for the extra bonus.

Create API key