> ## Documentation Index
> Fetch the complete documentation index at: https://omnirelay.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# User manual

> Accounts, keys, model selection, playground, API calls, usage, billing and troubleshooting.

Reviewed 2026-10-24. This guide describes the customer console; your account and API responses determine current access, prices and payment methods.

## 1. Sign in and confirm your workspace

Open the [console](https://omnirelay.ai/login) and use Google, GitHub or email. When invited, use the invitation email. Confirm the email and workspace in the avatar menu after signing in.

Choose **avatar → Add account** and sign in to another account. Use **Switch account** to select a saved signed-in account. Switching reloads that account’s data; balances, keys and permissions remain separate. Signing out ends the current account’s session without signing out other saved accounts. Expired sessions require sign-in again. On a shared device, sign out of each account you no longer need.

Browse active platform-supported models and prices under **Model marketplace** immediately after sign-in, independently of service activation. Check **Overview → Live model service** before making calls. This card appears only on Overview and does not list enabled models. Verified signups are processed automatically under the current activation policy. Existing accounts can choose **Request activation** when offered on the card. A request queues background work and does not guarantee immediate access. Follow Awaiting funds, Pending or Contact support guidance; live calls still require available funds, a valid key, model permission and verified configuration.

On mobile, open navigation with the top-left menu and close it with the backdrop or close button. The account menu scrolls; wide tables scroll within their own region. Drawers scroll independently while footer actions remain visible.

## 2. Console pages

| Page | Purpose |
| - | - |
| Overview | Service status, balance, cumulative top-ups, requests and spend trends. |
| API Keys | Create, configure, rotate and revoke keys; set models, budgets, expiry, default tags, traffic limits and IP allowlists. |
| Model marketplace | Platform-supported model IDs, prices and workspace callability. |
| Playground | Test real text calls using your own key; inspect replies, usage, charges and code. |
| Usage | Totals and charts of tokens, spend, errors and latency. The per-request list is off by default; quote a Request ID to support to check one call. |
| Billing | Available cash/trial balances, cumulative top-ups, budgets, payments (with provider and payment method), invoices and receipts, and fund transactions. |
| Messages | Read account notices and announcements, send product feedback and follow administrator replies in the same conversation. |
| Settings | Name, account timezone, sign-in methods, your login history, billing details and account deletion. |
| AI assistant | General help for OmniRelay product usage; does not inspect private account data. |

The **AI assistant** button appears in the lower-right corner after sign-in. Ask about using OmniRelay, and check [the assistant guide](https://omnirelay.ai/docs/general/console-assistant.md) for its scope and data handling. If the platform assistant is not configured, the console can use your selected OmniRelay inference key instead, with normal metered billing. Your recent chat messages are sent to the model provider that answers them; do not include passwords, keys, payment details or private customer data.

## 3. Choose a model

The [public catalog](https://omnirelay.ai/models) supports discovery and comparison. **Model marketplace** shows supported models and workspace callability; before verified activation, every model is unavailable and has no call action, while details remain viewable; `GET /v1/models` with your own key confirms callable IDs. Pending, billing-unverified and unverified image/video entries are not callable.

The information icon on a model card opens details in a popup on the current page, without navigation. Review prices, context and capability boundaries, then close it to continue browsing. Use the exact ID, not a display name or family label. Selecting a pending entry in key settings does not activate it. New models do not bypass existing key allowlists; update the allowed models when needed.

Platform integration does not enable every customer or key. Check your own model response’s `capabilities`, `limits` and prices. Most integrated text models allow up to 128,000 output tokens and default to 32,000 (Gemini 3.1 Pro Preview and Gemini 3.6 Flash: at most 65,536); DeepSeek V4 Pro, GLM 5.3 and Kimi K3 default to and allow at most 4,096; GPT 5.4 Mini defaults to 64 and allows at most 256.

## 4. Create and protect a key

Inference API keys and management keys can be created only after verified service activation. Before activation, creation controls are disabled; follow the Overview status guidance first. Adding funds alone does not complete activation. Demo workspaces issue simulation keys only.

Use separate keys for separate applications. A full key appears at creation or rotation, and **View** shows it again after you confirm it's you; store it in server-side secure configuration, never frontend code, repositories or support messages. Rotation invalidates the old value immediately; update your application. Revocation stops access.

Customers only use OmniRelay keys, no other accounts or credentials. Management keys automate account operations and cannot call inference; see [Management API](https://omnirelay.ai/docs/general/management-api.md). The question-mark icon next to the **Management keys** heading on API Keys opens its contextual help.

### Request limits and IP allowlist

Use **API Keys → Settings** to set calls per minute, concurrency and up to 20 IPv4/IPv6 addresses or CIDR ranges, one per line. Workspace defaults are 120 calls per minute and 5 concurrent calls, shared by all members and keys; read the actual limits on the API Keys page. Blank limits inherit the applicable rules, and keys cannot bypass member or workspace limits. Streams occupy a slot until they finish.

Use your application’s public outbound IP, not a private LAN address. A blank IP list allows any source. The list applies to `/v1` calls, including model discovery, but not to console Playground calls. A mismatch returns `403 ip_not_allowed` without a charge. Update the list when deployment addresses change. See [Rate limits](https://omnirelay.ai/docs/overview/rate-limits.md).

## 5. Try the playground

Select an available workspace model and your valid key, confirm model permissions, balance, budget and expiry, then acknowledge paid usage and send text. Set a system prompt, copy a reply or inspect code. Live calls enforce the selected key’s limits.

Refresh, navigation or a new conversation can clear temporary browser chat state; save necessary results yourself. The playground cannot bypass unsupported tools, images, structured output or sampling parameters.

Streaming is selected by default for models that support it, including the generated code samples. Deselect it for a complete JSON response; omitting `stream` in an API call still selects non-streaming.

## 6. Connect your application

Use SDK base URL `https://api.omnirelay.ai/v1` and `Authorization: Bearer <OmniRelay Key>`. Discover models before calling. Full cURL, Python and Node.js examples are in [First API call](https://omnirelay.ai/docs/quickstart/first-api-call.md).

For SSE, first check `capabilities.stream: true`, then send `stream: true` and `stream_options.include_usage: true`. Reasoning text, where supported, is `message.reasoning_content` in JSON and `delta.reasoning_content` in SSE; this does not imply adjustable reasoning effort. See [Chat completions](https://omnirelay.ai/docs/llms/chat-completions.md).

`/v1` request bodies may contain up to 4 MiB (4,194,304 UTF-8 bytes), 2,000 messages or Responses input items, and 1,048,576 characters per text value. The model context window still applies. Console input and embedding limits are separate. Large agent histories increase the pre-dispatch hold, so check available balance and budgets.

### GPT 5.6 Sol integration

GPT 5.6 Sol now accepts function tools, JSON object/schema and Responses based on the model's published documentation; individual live validation of new combinations is pending. That documentation specifies `reasoning_effort: "none"` for Chat tools; use Responses for tools with reasoning or `max`. Sampling is recommended with `none`; ordinary parameters are forwarded and the model provider decides. A rejected field is named in `error.param`; an unsupported field may also be ignored without an error. See [Chat completions](https://omnirelay.ai/docs/llms/chat-completions.md) and [Responses](https://omnirelay.ai/docs/llms/native-protocols.md).

### Parameter compatibility across models

Every callable route has model-specific tools, sampling, reasoning and protocol capabilities. Query your own model list. Preserve reasoning\_content in DeepSeek tool history; GLM 5.3 effort is low/high/max; GPT Astra tools require Responses. Inspect error.param for parameter failures. New combinations are documentation-based, pending individual live validation. See [Chat completions](https://omnirelay.ai/docs/llms/chat-completions.md).

Current model calls pass parameters through: capability tables provide guidance and the model provider decides on ordinary fields; it may ignore unsupported ones without an error. Access, budgets and final-usage settlement remain enforced.

## 7. Understand usage and charges

`usage` contains validated usage; `cost_microusd` is the settled customer charge. 1,000,000 micro-USD equals USD 1. Quote the `X-Request-ID` response header to support when you need one call checked. Request records store metadata, not complete prompts, replies or key values.

Live requests reserve a maximum charge before dispatch. Even a short prompt needs balance and key budget to cover that hold. Validated usage settles frozen prices and releases unused money. Catalog rates, a maximum hold and another model’s prices are not the actual charge. An ambiguous timeout or incomplete stream can retain a hold pending reconciliation; a failure does not prove zero cost.

API source IP is recorded with each call for 90 days (shown in the request list and CSV export when that list is enabled for your account); the IP field is cleared after that period while other records follow their own retention rules.

## 8. Top-ups, budgets, invoices and receipts

Top-ups are open under **Billing**: choose a provider where more than one is offered, then an amount from USD 10 to USD 1,000. Signup does not automatically grant credit; contact support about balance or activation waits.

Request, login, billing and audit log times follow **Settings → Account timezone**, or your browser timezone by default. Statistics buckets and billing/budget periods stay UTC. The 24-hour overview compares the current rolling 24 hours with the immediately preceding 24 hours using the same filters. **No previous-period data** means there is no comparable baseline (no requests or a zero metric); it does not mean current records are missing.

Confirm model access, prices and payment conditions before selecting an available payment method under **Billing**. A production checkout can make a real payment; the order page determines availability and result. If payment is charged but not credited, retain the order ID and contact support instead of paying again.

Wallet balance, key budget and member budget are separate controls; top-ups do not raise spending caps. Member periods use UTC.

### Paying in your own currency

Top-ups are priced and credited in US dollars. Where the payment page offers your local currency, you may pay in it instead: the amount shown already includes the payment provider's conversion fee and exchange rate, and your balance is credited the order's USD amount either way. A refund goes back in the currency you paid, for the same share of the order.

### Payments

**Billing → Payments** lists each top-up with its **Payment provider** (Airwallex or Stripe) and **Payment method**, for example `Visa •• 4242`, `Apple Pay · Visa •• 4242` or `WeChat Pay`. Charges to a saved method are marked **One-click** or **Auto top-up**. Open a row for its details. A payment the provider has not yet reported on shows `—`.

### Invoices and receipts

Invoices and receipts come from the payment provider; OmniRelay does not issue its own. Open **Invoice & receipt** on a paid payment:

* **Stripe:** **Download invoice (PDF)**, **View invoice online** and **View Stripe receipt**. The invoice carries the name, address and tax ID you confirmed on Stripe's payment page.
* **Airwallex:** an invoice issued by Airwallex (PDF and online) to your **Billing details**, created the first time you open it. If your billing details are missing you are asked for them first. Airwallex does not issue a separate receipt for a payment.

An issued invoice does not change when you edit your billing details later. If a document is not ready yet, the dialog says so; try again shortly.

### Billing details

**Settings → Billing details** holds the name (a company or a person), address, tax ID and billing email used on invoices. If your workspace has none, they are filled in from your first payment: from Stripe, the name or company, address, and the tax ID if you bought as a business; from an Airwallex card payment, the name, email and address. Details filled in this way are marked **Filled in from your payment details. Please check them.** until you save them. Later payments never overwrite details you have saved. Once the provider holds an invoice customer for your workspace, its company/person type can no longer be changed.

### Saved payment methods and auto top-up

Tick **Save this payment method** on a top-up, or use **Add payment method** to save a card or wallet without paying. A saved method belongs to you alone: teammates in the workspace cannot see or charge it, and it can be charged only through the provider that saved it. Billing then offers **Pay with** that method in one click; a card may still ask for verification by its bank. Remove a method at any time; it can no longer be charged after that. Expired cards are marked and not offered.

**Auto top-up** charges a saved method a set amount whenever your cash balance falls below your threshold, within the monthly limit you choose. Turning it on requires agreeing to the authorisation shown, which names the method, amount, threshold and limit. Every automatic charge appears in payment history marked **Auto top-up**, with a notice in Messages and an email. Two failed charges in a row, a removed method or an expired card pause it until you turn it on again; turning it off stops it at once.

### Cash, trial credits and cumulative top-ups

Cash balance comes from paid top-ups and cash adjustments. Trial credits are tracked separately and cannot be refunded as cash. Calls reserve and consume trial credits first, then cash; settlement returns unused holds to the appropriate balance. **Cumulative top-ups** is the gross total of credited payments and credited payment corrections. It excludes trial credits and does not decrease with consumption or refunds; it is not the current balance.

Fund transactions distinguish **cash/trial** top-ups, refunds, trial grants and adjustments, without individual model-call, hold or release rows. Find call charges in **Usage**. The operator’s customer fund drawer shows the actual cash/trial split of settled usage only; unsettled holds are excluded. USD amounts show up to six decimal places.

## 9. Troubleshoot

| Result | Action |
| - | - |
| `401 unauthorized` | Check Bearer format, expiry/revocation and account status. |
| `403 model_not_allowed` | Check the key allowlist. |
| `404 model_unavailable` | Query models again with your own key. |
| `400 invalid_parameter` / `unsupported_parameter` | Check capability flags, output limits and field values. |
| `402 inference_budget_or_access_denied` | Check available balance, holds, key/member budgets and activation; contact support if unresolved. |
| `413 payload_too_large` | Reduce the request body below 4 MiB and stay within the item, text and model context limits. |
| `403 ip_not_allowed` | Call from an address on the key's IP allowlist, or change the allowlist. |
| `429 rate_limited` / `concurrency_limited` / `upstream_rate_limited` | Confirmed refusals with nothing charged: wait for `Retry-After`, then retry. |
| Timeout, `5xx`, stream error or missing `[DONE]` | Check the error code in [Errors](https://omnirelay.ai/docs/general/errors.md): calls that delivered nothing are not charged. Disable automatic SDK retries and do not blindly repeat paid calls. |

See [Errors](https://omnirelay.ai/docs/general/errors.md). Support requests should include time, workspace, model ID, Request ID, error code and any relevant order ID, never full credentials. Check [service status](https://omnirelay.instatus.com) or contact [support@omnirelay.ai](mailto:support@omnirelay.ai).

## 10. Account and data

**Settings → Login history** shows your browser and UA, IP, sign-in time, last activity, end time, state and duration. Device hostname is not shown. Duration reflects observed activity; after 30 minutes without activity a session shows inactive and its duration ends at the last observation. It is not exact online-time tracking. Only sessions observed after the feature was enabled are recorded. Authorized platform operators can review login history; customers cannot view other accounts.

Email is read-only in settings; renaming does not change account identity. Before deletion, export records, resolve balance/pending requests and transfer workspace ownership when needed. Deletion revokes keys and ends access; follow the confirmation page.

Live prompts go to the model provider. Not storing content in the request database does not establish zero retention throughout every system. See [Data handling](https://omnirelay.ai/docs/general/data-handling.md), [Privacy](https://omnirelay.ai/privacy) and [Terms](https://omnirelay.ai/terms).

GPT 5.4 Mini also supports function tools, JSON object/schema and [Responses](https://omnirelay.ai/docs/llms/native-protocols.md) through the API. Read your model capability flags before switching protocols. The performance view shows TTFT P50/P95 and sample counts for observed streaming requests; non-streaming requests have no TTFT sample.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.