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

# Create embeddings

Erstellt Embedding-Vektoren aus Text- oder Medieneingaben. Reine Text-Anfragen geben einen Vektor pro Eingabe zurück, nützlich für Retrieval, semantische Suche, Clustering, Klassifikation und RAG. Anfragen mit Medien (Bilder, Audio oder Video als base64-Daten-URIs) verschmelzen **alle** Eingaben zu einem **einzigen** modalitätsübergreifenden Vektor — betten Sie jedes Asset in einer eigenen Anfrage ein, wenn Sie einen Vektor pro Asset benötigen. Kompatibel mit dem OpenAI Embeddings API-Format. Streaming wird auf diesem Endpunkt nicht unterstützt.

## Authentifizierung

<ParamField header="Authorization" type="string" required>
  Bearer-Token. Verwenden Sie Ihren API-Schlüssel als Bearer-Token im Authorization-Header.

  Format: `Bearer <SUNRA_KEY>`
</ParamField>

## Anfrage

Dieser Endpunkt erwartet ein Objekt.

<ParamField body="model" type="string" required>
  ID des zu verwendenden Embedding-Modells, z. B. `google/gemini-embedding-2`. Verfügbare Embedding-Modelle finden Sie auf der [Modellseite](https://sunra.ai/models).
</ParamField>

<ParamField body="input" type="string | string[]" required>
  Die einzubettenden Eingaben, als einzelner String oder als Array von Strings. Reine Text-Eingaben werden unabhängig eingebettet und liefern einen Vektor pro Eingabe in der Reihenfolge der Eingaben. Medieneingaben werden als base64-Daten-URIs übergeben (`data:image/png;base64,…`, `data:audio/mpeg;base64,…`, `data:video/mp4;base64,…`) und können mit Text gemischt werden — jede Anfrage, die Medien enthält, gibt jedoch einen einzigen fusionierten Vektor für alle Eingaben zusammen zurück. Limits (Upstream): höchstens 6 Bilder pro Anfrage, Video bis zu 120 Sekunden und ein gemeinsames Budget von 8.192 Tokens über alle Modalitäten hinweg (Text-Tokens; Bilder zählen je 258 Tokens, Audio 25 Tokens/Sekunde, Video 66 Tokens/Sekunde).
</ParamField>

<ParamField body="dimensions" type="integer">
  Die Anzahl der Dimensionen für die Ausgabe-Embeddings. Wird nur von Modellen mit flexiblen Ausgabedimensionen unterstützt (Matryoshka Representation Learning). Für `google/gemini-embedding-2` ist der Standardwert `3072`, und Werte von `128` bis `3072` werden unterstützt. Kleinere Werte kürzen den Vektor, wobei der größte Teil der semantischen Qualität erhalten bleibt.
</ParamField>

<ParamField body="encoding_format" type="string">
  Das Format der zurückgegebenen Embeddings. Entweder `float` (Standard) oder `base64`.
</ParamField>

## Antwort

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

<ResponseField name="data" type="object[]">
  Eine Liste von Embedding-Objekten, eines pro Eingabe, in der Reihenfolge der Eingaben.

  <Expandable title="Embedding-Objekt">
    <ResponseField name="object" type="string">
      Immer `embedding`.
    </ResponseField>

    <ResponseField name="index" type="integer">
      Der Index der zugehörigen Eingabe.
    </ResponseField>

    <ResponseField name="embedding" type="number[]">
      Der Embedding-Vektor.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="model" type="string">
  Das zur Erstellung der Embeddings verwendete Modell.
</ResponseField>

<ResponseField name="usage" type="object">
  Token-Verbrauch für die Anfrage. Embeddings werden nur nach Eingabe-Tokens abgerechnet, mit modalitätsspezifischen Sätzen (die Preise finden Sie auf der Modellseite). Medien-Anfragen enthalten Token-Zahlen pro Modalität.

  <Expandable title="Usage-Objekt">
    <ResponseField name="prompt_tokens" type="integer">
      Anzahl der Text-Eingabe-Tokens.
    </ResponseField>

    <ResponseField name="input_image_tokens" type="integer">
      Bild-Eingabe-Tokens (258 pro Bild). Nur vorhanden, wenn die Anfrage Bilder enthält.
    </ResponseField>

    <ResponseField name="input_audio_tokens" type="integer">
      Audio-Eingabe-Tokens (25 pro Sekunde). Nur vorhanden, wenn die Anfrage Audio enthält.
    </ResponseField>

    <ResponseField name="input_video_tokens" type="integer">
      Video-Eingabe-Tokens (66 pro Sekunde). Nur vorhanden, wenn die Anfrage Video enthält.
    </ResponseField>

    <ResponseField name="total_tokens" type="integer">
      Gesamte Eingabe-Tokens über alle Modalitäten hinweg (Embeddings erzeugen keine Ausgabe-Tokens).
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api-llm.sunra.ai/v1/embeddings \
    -H "Authorization: Bearer <SUNRA_KEY>" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "google/gemini-embedding-2",
      "input": [
        "The quick brown fox jumps over the lazy dog.",
        "Sunra is a platform for AI models."
      ],
      "dimensions": 768
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api-llm.sunra.ai/v1/embeddings",
      headers={
          "Authorization": "Bearer <SUNRA_KEY>",
          "Content-Type": "application/json"
      },
      json={
          "model": "google/gemini-embedding-2",
          "input": [
              "The quick brown fox jumps over the lazy dog.",
              "Sunra is a platform for AI models."
          ],
          "dimensions": 768
      }
  )
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api-llm.sunra.ai/v1/embeddings", {
    method: "POST",
    headers: {
      "Authorization": "Bearer <SUNRA_KEY>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "google/gemini-embedding-2",
      input: [
        "The quick brown fox jumps over the lazy dog.",
        "Sunra is a platform for AI models."
      ],
      dimensions: 768
    })
  });
  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "object": "list",
    "data": [
      {
        "object": "embedding",
        "index": 0,
        "embedding": [0.011253, -0.020551, 0.049236, "..."]
      },
      {
        "object": "embedding",
        "index": 1,
        "embedding": [0.031744, 0.008122, -0.014307, "..."]
      }
    ],
    "model": "google/gemini-embedding-2",
    "usage": {
      "prompt_tokens": 18,
      "total_tokens": 18
    }
  }
  ```
</ResponseExample>
