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

# Quickstart

> Get an API key and make your first inference request in under two minutes.

## 1. Sign up

Visit [tokens.flex.ai](https://tokens.flex.ai) and request access. On approval you'll receive an invite email; activate your account and land in the [dashboard](https://tokens.flex.ai/dashboard).

## 2. Create an API key

From the dashboard, open **API Keys** and click **Create key**. Copy the `sk-…` value — it's shown once.

<Note>
  Every new account gets **\$10 of free credit**. You don't need to add a card to start.
</Note>

## 3. Make a request

Pick a text model from [the catalog](https://flex.ai/models). The examples below use `Qwen2.5-32B-Instruct-FP8`.

<CodeGroup>
  ```bash cURL theme={null}
  curl https://tokens.flex.ai/v1/chat/completions \
    -H "Authorization: Bearer $FLEXAI_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "Qwen2.5-32B-Instruct-FP8",
      "messages": [
        {"role": "user", "content": "In one sentence, what is FlexAI?"}
      ]
    }'
  ```

  ```python Python theme={null}
  # pip install openai
  import os
  from openai import OpenAI

  client = OpenAI(
      base_url="https://tokens.flex.ai/v1",
      api_key=os.environ["FLEXAI_API_KEY"],
  )

  response = client.chat.completions.create(
      model="Qwen2.5-32B-Instruct-FP8",
      messages=[{"role": "user", "content": "In one sentence, what is FlexAI?"}],
  )
  print(response.choices[0].message.content)
  ```

  ```typescript TypeScript theme={null}
  // npm install openai
  import OpenAI from "openai";

  const client = new OpenAI({
    baseURL: "https://tokens.flex.ai/v1",
    apiKey: process.env.FLEXAI_API_KEY,
  });

  const response = await client.chat.completions.create({
    model: "Qwen2.5-32B-Instruct-FP8",
    messages: [{ role: "user", content: "In one sentence, what is FlexAI?" }],
  });
  console.log(response.choices[0].message.content);
  ```
</CodeGroup>

You should see a single-line description come back. That's it — your key works.

## Next steps

<CardGroup cols={2}>
  <Card title="Stream responses" icon="bolt" href="/inference-api/guides/streaming">
    Deliver tokens as they're generated instead of waiting for the full response.
  </Card>

  <Card title="Call tools" icon="wrench" href="/inference-api/guides/tool-use">
    Let the model invoke your functions and work with their output.
  </Card>

  <Card title="Discover models" icon="magnifying-glass" href="/inference-api/guides/model-discovery">
    Filter the live catalog from code to find the right text, vision, or embedding model.
  </Card>

  <Card title="Understand billing" icon="credit-card" href="/inference-api/reference/billing">
    Rate limits, credit exhaustion behavior, and the 402 response.
  </Card>

  <Card title="Handle errors" icon="triangle-exclamation" href="/inference-api/reference/errors">
    Every 4xx/5xx we return, with example bodies and how to recover.
  </Card>
</CardGroup>
