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

# Quickstart

> Swap your existing OpenAI-compatible provider for Corti Models in two changes.

Already using the OpenAI SDK, Azure OpenAI, or any OpenAI-compatible provider? Switching to Corti Models means changing **two lines** — no new SDK, no rewrite, no migration.

<Warning>
  Corti Models is available only for Corti projects hosted in the **EU region** (`https://ai.eu.corti.app`). Credentials from a US-hosted project can't access Corti Models. See [Environments & Tenants](/authentication/environments_tenants).
</Warning>

## Get your API key

Grab your API key from the Corti Console's Developer Quickstart — a one-click **Copy all as .env variables** action copies everything you need.

<Card title="Open the Developer Quickstart in the Corti Console" icon="key" href="https://console.corti.app/developer-quickstart" arrow="true">
  Sign in, then under Default client → Copy all as .env variables.
</Card>

## Swap your provider

If your code looks like this today:

<CodeGroup>
  ```python Python theme={null}
  from openai import OpenAI

  client = OpenAI(
      api_key=os.environ["OPENAI_API_KEY"],
  )

  response = client.chat.completions.create(
      model="gpt-4o",
      messages=[{"role": "user", "content": "Hello!"}],
  )
  ```

  ```javascript TypeScript theme={null}
  import OpenAI from "openai";

  const client = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY,
  });

  const response = await client.chat.completions.create({
    model: "gpt-4o",
    messages: [{ role: "user", content: "Hello!" }],
  });
  ```
</CodeGroup>

Change the base URL and API key, and you're running on Corti:

<CodeGroup>
  ```python Python theme={null}
  from openai import OpenAI

  # corti-s1 | corti-s1-instant | corti-s1-mini | corti-s1-mini-instant
  MODEL = "corti-s1"

  client = OpenAI(
      base_url="https://ai.eu.corti.app/v1",
      api_key="<your-api-key>",
  )

  response = client.chat.completions.create(
      model=MODEL,
      messages=[{"role": "user", "content": "Hello!"}],
  )

  print(response.choices[0].message.content)
  ```

  ```javascript TypeScript theme={null}
  import OpenAI from "openai";

  // corti-s1 | corti-s1-instant | corti-s1-mini | corti-s1-mini-instant
  const MODEL = "corti-s1";

  const client = new OpenAI({
    baseURL: "https://ai.eu.corti.app/v1",
    apiKey: "<your-api-key>",
  });

  const response = await client.chat.completions.create({
    model: MODEL,
    messages: [{ role: "user", content: "Hello!" }],
  });

  console.log(response.choices[0].message.content);
  ```

  ```bash cURL theme={null}
  API_KEY="<your-api-key>"
  # corti-s1 | corti-s1-instant | corti-s1-mini | corti-s1-mini-instant
  MODEL="corti-s1"

  curl https://ai.eu.corti.app/v1/chat/completions \
    -H "Authorization: Bearer ${API_KEY}" \
    -H "Content-Type: application/json" \
    -d "{
      \"model\": \"${MODEL}\",
      \"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}]
    }"
  ```
</CodeGroup>

<Check>
  Everything else in your code — streaming, tool calling, JSON mode, multi-turn conversations, the Responses API — works unchanged. Corti Models is a drop-in replacement.
</Check>

<Note>
  OAuth 2.0 access tokens will be supported soon. For now, use your Corti API key as the `apiKey` / `Bearer` credential.
</Note>

## See which models are available

List the models your credentials can access to confirm the model IDs you can pass:

```bash cURL theme={null}
API_KEY="<your-api-key>"

curl https://ai.eu.corti.app/v1/models \
  -H "Authorization: Bearer ${API_KEY}"
```

See the [Models](/models/models) page for the full lineup and pricing.

## Next steps

<CardGroup cols={2}>
  <Card title="Models" icon="microchip" href="/models/models">
    Compare the four model variants by capability, reasoning, speed, and price.
  </Card>

  <Card title="Code with Corti" icon="terminal" href="/models/ai-coding-agent">
    Connect OpenCode, ForgeCode, Crush, or Pi to Corti Models with the Corti CLI.
  </Card>

  <Card title="API Reference" icon="square-terminal" href="/api-reference/welcome">
    Browse the full Corti Models API with interactive examples.
  </Card>

  <Card title="Authentication" icon="key" href="/authentication/overview">
    How authentication works at Corti.
  </Card>
</CardGroup>
