> Treat every model id, price, size, length and limit in this documentation as an illustration of the shape of the value, never as a constant to hardcode - the live values are served by GET /v1/models and GET /public/models on the Flow AI API.

# Quickstart

> From sign-in to your first response in a few minutes.

Flow AI serves models from many labs behind one OpenAI-compatible endpoint. Instead of signing up with OpenAI, Google, DeepSeek and the rest one by one, you integrate once and call any of them with one key.

| Option                                      | Best for                                                                        |
| ------------------------------------------- | ------------------------------------------------------------------------------- |
| [**The API**](#using-the-api)               | Any language, no dependencies. Plain HTTP requests.                             |
| [**The OpenAI SDK**](#using-the-openai-sdk) | Python and TypeScript apps. Change the base URL and keep the rest of your code. |
| [**A framework**](/integrations/overview)   | Apps built on the Vercel AI SDK, LangChain, PydanticAI and others.              |

## Set up

### Sign in

Open [ai.hyperflow.fun](https://ai.hyperflow.fun) and sign in with your email or an Ethereum wallet. See [Account](/account).

### Fund your account

Requests are paid in $THINK, 1 THINK = $1 of usage. Deposit some on [Console → Funds](https://ai.hyperflow.fun/console/funds).

### Create an API key

Go to [Console → API keys](https://ai.hyperflow.fun/console/keys) and choose **Create key**. Give it a name, and optionally limit the models it may call and how much it may spend.

> **Warning**
>
> The key starts with `sk-` and is shown **only once**. Copy it straight away; you can't see it again later.

Keep it in an environment variable rather than in your code:

```bash
export HYPERFLOW_API_KEY="sk-..."
```

## Using the API

Send a request to `https://ai.hyperflow.fun/v1/chat/completions` with your key as a bearer token. It works from any language or framework.

**`cURL`**

```bash title="cURL"
curl https://ai.hyperflow.fun/v1/chat/completions \
  -H "Authorization: Bearer $HYPERFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-6-luna",
    "messages": [{ "role": "user", "content": "What is the meaning of life?" }]
  }'
```

**`Python`**

```python title="Python"
import os
import requests

response = requests.post(
    "https://ai.hyperflow.fun/v1/chat/completions",
    headers={"Authorization": f"Bearer {os.environ['HYPERFLOW_API_KEY']}"},
    json={
        "model": "openai/gpt-6-luna",
        "messages": [{"role": "user", "content": "What is the meaning of life?"}],
    },
)
print(response.json()["choices"][0]["message"]["content"])
```

**`TypeScript`**

```typescript title="TypeScript"
const response = await fetch('https://ai.hyperflow.fun/v1/chat/completions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.HYPERFLOW_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'openai/gpt-6-luna',
    messages: [{ role: 'user', content: 'What is the meaning of life?' }],
  }),
})
const data = await response.json()
console.log(data.choices[0].message.content)
```

The response follows OpenAI's shape, with the answer in `choices[0].message.content` and the tokens it used in `usage`. Add `"stream": true` to get the answer as it's written; see [Streaming](/features/streaming).

## Choosing a model

Model ids look like `lab/model`, for example `openai/gpt-6-luna`. Copy one from the [Models page](https://ai.hyperflow.fun/models), or list the ones your key can call:

```bash
curl https://ai.hyperflow.fun/v1/models \
  -H "Authorization: Bearer $HYPERFLOW_API_KEY"
```

See [Models](/models/overview) for what the list contains.

## Using the OpenAI SDK

Flow AI speaks the OpenAI API, so the official SDK works as a drop-in replacement. Point it at the Flow AI base URL and keep the rest of your code:

**`Python`**

```python title="Python"
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://ai.hyperflow.fun/v1",
    api_key=os.environ["HYPERFLOW_API_KEY"],
)

response = client.chat.completions.create(
    model="openai/gpt-6-luna",
    messages=[{"role": "user", "content": "What is the meaning of life?"}],
)
print(response.choices[0].message.content)
```

**`TypeScript`**

```typescript title="TypeScript"
import OpenAI from 'openai'

const client = new OpenAI({
  baseURL: 'https://ai.hyperflow.fun/v1',
  apiKey: process.env.HYPERFLOW_API_KEY,
})

const response = await client.chat.completions.create({
  model: 'openai/gpt-6-luna',
  messages: [{ role: 'user', content: 'What is the meaning of life?' }],
})
console.log(response.choices[0].message.content)
```

> **Tip**
>
> Tools built on the OpenAI SDK often read `OPENAI_BASE_URL` and `OPENAI_API_KEY` from the environment. Set them to `https://ai.hyperflow.fun/v1` and your Flow AI key to point those tools at Flow AI without changing their code.

## Next steps

#### [Streaming](/features/streaming)

Get the answer token by token as it's written.

#### [Integrations](/integrations/overview)

Use Flow AI from your framework or coding tool.

#### [Errors](/api/errors)

What each error means and what to do.

**Next:** [Streaming](/features/streaming) — get answers as the model writes them.