# Quickstart

Shadow Inference exposes an OpenAI-compatible API: point any OpenAI client at
our base URL, swap the API key, and existing code works unmodified.

## 1. Get an API key

Create a key from the dashboard **Keys page**. Keys look like `sk-blade-...`
and are sent as a Bearer token on every request.

## 2. Base URL

```
https://api.models.blade.sh/v1
```

## 3. curl

```bash
curl https://api.models.blade.sh/v1/chat/completions \
  -H "Authorization: Bearer $SHADOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemma-4-26b-a4b",
    "messages": [{"role": "user", "content": "Say hello in one sentence."}]
  }'
```

## 4. Python (`openai` SDK)

```python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.models.blade.sh/v1",
    api_key="sk-blade-...",
)

response = client.chat.completions.create(
    model="gemma-4-26b-a4b",
    messages=[{"role": "user", "content": "Say hello in one sentence."}],
)
print(response.choices[0].message.content)
```

## 5. Next steps

`gemma-4-26b-a4b` above is a sensible default. See [Models](models.md) for the
full catalog and [Pricing](pricing.md) for per-model rates. For streaming
responses and function calling, see [Streaming](streaming.md) and
[Tool Use](tool-use.md). For every endpoint's parameters and response shape,
see the [API Reference](api-reference.md).
