> ## 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

Crea vettori di embedding a partire da input di testo o multimediali. Le richieste di solo testo restituiscono un vettore per ogni input, utile per retrieval, ricerca semantica, clustering, classificazione e RAG. Le richieste che contengono contenuti multimediali (immagini, audio o video come data URI base64) fondono **tutti** gli input in un **unico** vettore cross-modale — effettua l'embedding di ogni asset in una richiesta separata quando ti serve un vettore per asset. Compatibile con il formato dell'API OpenAI Embeddings. Lo streaming non è supportato su questo endpoint.

## Autenticazione

<ParamField header="Authorization" type="string" required>
  Token Bearer. Utilizza la tua chiave API come token Bearer nell'header Authorization.

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

## Richiesta

Questo endpoint si aspetta un oggetto.

<ParamField body="model" type="string" required>
  ID del modello di embedding da utilizzare, ad es. `google/gemini-embedding-2`. Consulta la [pagina dei modelli](https://sunra.ai/models) per i modelli di embedding disponibili.
</ParamField>

<ParamField body="input" type="string | string[]" required>
  Input da trasformare in embedding, come stringa singola o come array di stringhe. Gli input di solo testo vengono elaborati in modo indipendente, restituendo un vettore per ogni input nell'ordine degli input. Gli input multimediali vengono passati come data URI base64 (`data:image/png;base64,…`, `data:audio/mpeg;base64,…`, `data:video/mp4;base64,…`) e possono essere combinati con il testo — ma qualsiasi richiesta che contiene contenuti multimediali restituisce un unico vettore fuso per l'insieme di tutti gli input. Limiti (upstream): al massimo 6 immagini per richiesta, video fino a 120 secondi e un budget complessivo di 8.192 token tra tutte le modalità (token di testo; le immagini contano 258 token ciascuna, l'audio 25 token/secondo, il video 66 token/secondo).
</ParamField>

<ParamField body="dimensions" type="integer">
  Il numero di dimensioni degli embedding in output. Supportato solo dai modelli con dimensioni di output flessibili (Matryoshka Representation Learning). Per `google/gemini-embedding-2` il valore predefinito è `3072` e sono supportati valori da `128` a `3072`. Valori più piccoli troncano il vettore preservando la maggior parte della qualità semantica.
</ParamField>

<ParamField body="encoding_format" type="string">
  Il formato degli embedding restituiti. Può essere `float` (predefinito) o `base64`.
</ParamField>

## Risposta

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

<ResponseField name="data" type="object[]">
  Una lista di oggetti embedding, uno per ogni input, nell'ordine degli input.

  <Expandable title="oggetto embedding">
    <ResponseField name="object" type="string">
      Sempre `embedding`.
    </ResponseField>

    <ResponseField name="index" type="integer">
      L'indice dell'input corrispondente.
    </ResponseField>

    <ResponseField name="embedding" type="number[]">
      Il vettore di embedding.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="model" type="string">
  Il modello utilizzato per creare gli embedding.
</ResponseField>

<ResponseField name="usage" type="object">
  Utilizzo dei token per la richiesta. Gli embedding vengono fatturati solo sui token di input, con tariffe specifiche per modalità (consulta la pagina del modello per i prezzi). Le richieste con contenuti multimediali includono i conteggi dei token per modalità.

  <Expandable title="oggetto usage">
    <ResponseField name="prompt_tokens" type="integer">
      Numero di token di input testuali.
    </ResponseField>

    <ResponseField name="input_image_tokens" type="integer">
      Token di input immagine (258 per immagine). Presente solo quando la richiesta contiene immagini.
    </ResponseField>

    <ResponseField name="input_audio_tokens" type="integer">
      Token di input audio (25 al secondo). Presente solo quando la richiesta contiene audio.
    </ResponseField>

    <ResponseField name="input_video_tokens" type="integer">
      Token di input video (66 al secondo). Presente solo quando la richiesta contiene video.
    </ResponseField>

    <ResponseField name="total_tokens" type="integer">
      Totale dei token di input tra tutte le modalità (gli embedding non producono token di output).
    </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>
