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

# Créer un embedding

> Crée un vecteur d’embedding représentant le texte d’entrée

## Corps de la requête

**Timeout des requêtes synchrones :** cet endpoint non-chat attend que le modèle routé termine son traitement. Les entrées volumineuses, les longs fichiers audio ou les grands lots peuvent dépasser les valeurs par défaut courantes de 30s côté client ; configurez donc le timeout de votre client HTTP à au moins `120s`.

<ParamField body="model" type="string" required>
  ID du modèle d’embedding à utiliser (par ex., `text-embedding-3-small`).
</ParamField>

<ParamField body="input" type="string | array" required>
  Texte d’entrée à transformer en embedding. Peut être une chaîne de caractères ou un tableau de chaînes.
</ParamField>

<ParamField body="encoding_format" type="string" default="float">
  Format des embeddings : `float` ou `base64`.
</ParamField>

<ParamField body="dimensions" type="integer">
  Nombre de dimensions pour la sortie (spécifique au modèle).
</ParamField>

<ParamField body="user" type="string">
  Un identifiant unique représentant votre utilisateur final pour la surveillance des abus.
</ParamField>

## Modèles disponibles

| Modèle                   | Dimensions | Description       |
| ------------------------ | ---------- | ----------------- |
| `text-embedding-3-large` | 3072       | Meilleure qualité |
| `text-embedding-3-small` | 1536       | Équilibré         |
| `text-embedding-ada-002` | 1536       | Hérité            |

## Réponse

<ResponseField name="object" type="string">
  Toujours `list`.
</ResponseField>

<ResponseField name="data" type="array">
  Tableau d’objets embedding.

  Chaque objet contient :

  * `object` (string) : `embedding`
  * `index` (integer) : Index dans le tableau d’entrée
  * `embedding` (array) : Le vecteur d’embedding
</ResponseField>

<ResponseField name="model" type="string">
  Modèle utilisé.
</ResponseField>

<ResponseField name="usage" type="object">
  Utilisation des tokens avec `prompt_tokens` et `total_tokens`.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.tokenlab.sh/v1/embeddings" \
    -H "Authorization: Bearer sk-your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "text-embedding-3-small",
      "input": "The quick brown fox jumps over the lazy dog"
    }'
  ```

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

  client = OpenAI(
      api_key="sk-your-api-key",
      base_url="https://api.tokenlab.sh/v1"
  )

  response = client.embeddings.create(
      model="text-embedding-3-small",
      input="The quick brown fox jumps over the lazy dog"
  )

  embedding = response.data[0].embedding
  print(f"Embedding dimension: {len(embedding)}")
  print(f"First 5 values: {embedding[:5]}")
  ```

  ```javascript JavaScript theme={null}
  import OpenAI from 'openai';

  const client = new OpenAI({
    apiKey: 'sk-your-api-key',
    baseURL: 'https://api.tokenlab.sh/v1'
  });

  const response = await client.embeddings.create({
    model: 'text-embedding-3-small',
    input: 'The quick brown fox jumps over the lazy dog'
  });

  console.log(response.data[0].embedding.slice(0, 5));
  ```

  ```php PHP theme={null}
  <?php
  $ch = curl_init('https://api.tokenlab.sh/v1/embeddings');

  curl_setopt_array($ch, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          'Content-Type: application/json',
          'Authorization: Bearer sk-your-api-key'
      ],
      CURLOPT_POSTFIELDS => json_encode([
          'model' => 'text-embedding-3-small',
          'input' => 'The quick brown fox jumps over the lazy dog'
      ])
  ]);

  $response = curl_exec($ch);
  curl_close($ch);

  $data = json_decode($response, true);
  print_r(array_slice($data['data'][0]['embedding'], 0, 5));
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "object": "list",
    "data": [
      {
        "object": "embedding",
        "index": 0,
        "embedding": [0.0023, -0.0194, 0.0081, ...]
      }
    ],
    "model": "text-embedding-3-small",
    "usage": {
      "prompt_tokens": 9,
      "total_tokens": 9
    }
  }
  ```
</ResponseExample>

## Embeddings par lot

```python theme={null}
# Embed multiple texts at once
response = client.embeddings.create(
    model="text-embedding-3-small",
    input=[
        "First document text",
        "Second document text",
        "Third document text"
    ]
)

for i, data in enumerate(response.data):
    print(f"Document {i}: {len(data.embedding)} dimensions")
```
