> For the complete documentation index, see [llms.txt](https://guides.ia.numerique.gouv.fr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guides.ia.numerique.gouv.fr/albert-api/prise-en-main/quickstart.md).

# Démarrage rapide

Objectif : obtenir une réponse du modèle via **`POST /v1/chat/completions`** en moins de cinq minutes.

Si vous n’avez pas encore d’accès, demandez une clé Albert API ici :

[Demander un accès](https://albert.sites.beta.gouv.fr/access/)

Pour le workflow complet (validation admin, email, Playground, création de clés) : [Créer un compte & accès](/albert-api/prise-en-main/creation-compte.md).

## Étape 1 — Obtenir un jeton

La méthode principale pour obtenir une clé est de la **générer dans le Playground** (interface web). Une alternative consiste à créer une clé via l’API (`POST /v1/me/keys`, voir [Clés API](/albert-api/compte-and-usage/api-keys.md)).

### 1) Ouvrir la page « API keys » du Playground

Allez sur : [Créer / gérer vos clés API (Playground)](https://albert.playground.etalab.gouv.fr/keys)

![Créer une clé — formulaire vide](/files/7OASMxWO4jELZHuHeP02)

### 2) Renseigner le nom et, si besoin, la date d’expiration

* **Name** : obligatoire (nom lisible pour vous retrouver dans la liste).
* **Expires at** : optionnel (date de fin de validité).

![Créer une clé — nom et expiration](/files/qzY88PJnJVal7XiAdcvL)

### 3) Copier et stocker la clé en lieu sûr

Après création, la clé est affichée **une seule fois**. Copiez-la immédiatement et conservez-la dans un gestionnaire de secrets (ou variable d’environnement), car **vous ne pourrez pas la réafficher** ensuite.

![Clé créée — copie unique](/files/JXVqibQH4bzMU78X3ij0)

### 4) Utiliser la clé dans votre code ou un outil compatible OpenAI

Exportez-la dans votre environnement, par exemple :

```bash
export ALBERT_API_KEY="votre_jeton"
```

Puis utilisez-la comme `api_key` / jeton Bearer dans un client OpenAI ou tout outil compatible (voir section **Compatibilité OpenAI** ci-dessous).

## Étape 2 — Choisir un modèle

Listez les modèles disponibles :

{% tabs %}
{% tab title="curl" %}

```bash
curl -sS "https://albert.api.etalab.gouv.fr/v1/models" \
  -H "Authorization: Bearer $ALBERT_API_KEY"
```

{% endtab %}

{% tab title="Python" %}

```python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://albert.api.etalab.gouv.fr/v1",
    api_key=os.environ["ALBERT_API_KEY"],
)

models = client.models.list().data
print([m.id for m in models])
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://albert.api.etalab.gouv.fr/v1",
  apiKey: process.env.ALBERT_API_KEY,
});

const models = await client.models.list();
console.log(models.data.map((m) => m.id));
```

{% endtab %}
{% endtabs %}

Choisissez un modèle dont le champ `type` est **`text-generation`** (voir [Types de modèles](/albert-api/modeles/model-types.md)). Notez son `id` (par ex. `Meta-Llama-3.1-8B-Instruct` — l’offre exacte dépend de la plateforme).

## Étape 3 — Envoyer une complétion de chat

{% tabs %}
{% tab title="curl" %}

```bash
curl -sS "https://albert.api.etalab.gouv.fr/v1/chat/completions" \
  -H "Authorization: Bearer $ALBERT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "REMPLACER_PAR_ID_MODELE",
    "messages": [
      {"role": "system", "content": "Tu réponds en français, de façon concise."},
      {"role": "user", "content": "Explique ce qu’est une API compatible OpenAI en deux phrases."}
    ]
  }'
```

{% endtab %}

{% tab title="Python" %}

```python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://albert.api.etalab.gouv.fr/v1",
    api_key=os.environ["ALBERT_API_KEY"],
)

r = client.chat.completions.create(
    model="REMPLACER_PAR_ID_MODELE",
    messages=[
        {"role": "system", "content": "Tu réponds en français, de façon concise."},
        {"role": "user", "content": "Explique ce qu’est une API compatible OpenAI en deux phrases."},
    ],
)
print(r.choices[0].message.content)
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://albert.api.etalab.gouv.fr/v1",
  apiKey: process.env.ALBERT_API_KEY,
});

const r = await client.chat.completions.create({
  model: "REMPLACER_PAR_ID_MODELE",
  messages: [
    { role: "system", content: "Tu réponds en français, de façon concise." },
    { role: "user", content: "Explique ce qu’est une API compatible OpenAI en deux phrases." }
  ],
});

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

{% endtab %}
{% endtabs %}

## Compatibilité OpenAI

Albert API est **compatible OpenAI** sur les endpoints courants : en conservant votre code basé sur le SDK ou sur des appels HTTP OpenAI, vous changez en principe uniquement la **base URL** (ici `https://albert.api.etalab.gouv.fr/v1`) et la **clé** (jeton Albert). Les extensions spécifiques — par exemple l’outil natif **SearchTool** pour le RAG — sont documentées à part ; elles ne sont pas équivalentes aux outils hébergés par OpenAI.

Pour aller plus loin : [Chat completions](/albert-api/guides/chat-completions.md), [page de l’endpoint Chat](https://doc.incubateur.net/alliance/albert-api/api-reference/liste-des-endpoint/chat).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://guides.ia.numerique.gouv.fr/albert-api/prise-en-main/quickstart.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
