# Quick start

https://omnimodel.me/docs/quick-start

Four steps take you from sign-up to your first call: sign up and verify your email, create an API key, pick a model in the catalog, and send a request to a compatible endpoint.

## 1. Sign up and verify your email

You are signed in right after registering. Creating API keys, topping up and redeeming codes all require a verified email. The verification link is valid for 24 hours and works once. If the instance offers trial credit, it is granted as gift credit once your email is verified.

## 2. Create an API key

Open the Keys page in the console and give the key a name. The full key starts with `key_` and is shown once right after creation, so save it immediately. To see it again later you need to enter your login password; see [API keys](/docs/api-keys?lang=en).

## 3. Pick a model

Find a model in the [catalog](/catalog). The "Model ID" on its detail page is the value for the `model` field. The detail page also lists capabilities, input limits and prices in the instance currency.

## 4. Make your first call

Three compatible APIs are served on this site's domain:

| Protocol | Base URL | Authentication |
| --- | --- | --- |
| OpenAI-compatible | `https://omnimodel.me/v1` | `Authorization: Bearer <key>` |
| Anthropic-compatible | `https://omnimodel.me/anthropic` | `x-api-key: <key>` or Bearer |
| Gemini-compatible | `https://omnimodel.me/v1beta` | `Authorization: Bearer <key>` only |

Call the chat endpoint with curl:

```bash
curl https://omnimodel.me/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "<model-id>", "messages": [{"role": "user", "content": "Hello"}]}'
```

With the OpenAI Python SDK:

```python
from openai import OpenAI

client = OpenAI(base_url="https://omnimodel.me/v1", api_key="<key>")
reply = client.chat.completions.create(
    model="<model-id>",
    messages=[{"role": "user", "content": "Hello"}],
)
print(reply.choices[0].message.content)
```

## Defaults worth knowing

- Streaming: add `"stream": true`. The OpenAI format ends with `data: [DONE]`.
- Without `max_tokens` (or `max_completion_tokens`) the request is treated as 4096. `max_tokens` is required in the Anthropic format.
- Keys are accepted in request headers only; a key in the URL is rejected.
- `GET /v1/models` lists only the models your key may call.
- Insufficient balance returns `billing.insufficient_credit` (HTTP 402); top up and retry. See [common errors](/docs/errors?lang=en) for more.

## FAQ

### What goes in the model field?

The Model ID shown on the model's catalog page. GET /v1/models also lists every model ID your key can call.

### Do I have to verify my email first?

Yes for creating API keys, topping up and redeeming codes. Browsing the catalog and prices does not need it.

### Which SDKs work?

Official OpenAI SDKs work with base_url set to https://omnimodel.me/v1, and Anthropic SDKs with https://omnimodel.me/anthropic. The Gemini-compatible API accepts only an Authorization: Bearer header, so the SDK must support Bearer auth.

### What if I omit max_tokens?

The OpenAI and Gemini formats assume 4096. In the Anthropic format max_tokens is required and the request fails without it.

