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

Cria vetores de embedding a partir de entradas de texto ou mídia. Requisições somente de texto retornam um vetor por entrada, útil para recuperação de informação, busca semântica, clustering, classificação e RAG. Requisições contendo mídia (imagens, áudio ou vídeo como data URIs base64) fundem **todas** as entradas em um **único** vetor cross-modal — envie cada ativo em sua própria requisição quando precisar de um vetor por ativo. Compatível com o formato da API OpenAI Embeddings. Streaming não é suportado neste endpoint.

## Autenticação

<ParamField header="Authorization" type="string" required>
  Token Bearer. Use sua chave de API como token Bearer no cabeçalho Authorization.

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

## Requisição

Este endpoint espera um objeto.

<ParamField body="model" type="string" required>
  ID do modelo de embedding a ser usado, por exemplo `google/gemini-embedding-2`. Consulte a [página de modelos](https://sunra.ai/models) para ver os modelos de embedding disponíveis.
</ParamField>

<ParamField body="input" type="string | string[]" required>
  Entradas a serem convertidas em embedding, como uma única string ou um array de strings. Entradas somente de texto são processadas de forma independente, retornando um vetor por entrada na ordem das entradas. Entradas de mídia são passadas como data URIs base64 (`data:image/png;base64,…`, `data:audio/mpeg;base64,…`, `data:video/mp4;base64,…`) e podem ser misturadas com texto — mas qualquer requisição contendo mídia retorna um único vetor fundido para todas as entradas combinadas. Limites (do upstream): no máximo 6 imagens por requisição, vídeo de até 120 segundos e um orçamento combinado de 8.192 tokens em todas as modalidades (tokens de texto; cada imagem conta 258 tokens, áudio 25 tokens/segundo, vídeo 66 tokens/segundo).
</ParamField>

<ParamField body="dimensions" type="integer">
  O número de dimensões dos embeddings de saída. Suportado apenas por modelos com dimensões de saída flexíveis (Matryoshka Representation Learning). Para `google/gemini-embedding-2`, o padrão é `3072`, e valores de `128` a `3072` são suportados. Valores menores truncam o vetor preservando a maior parte da qualidade semântica.
</ParamField>

<ParamField body="encoding_format" type="string">
  O formato dos embeddings retornados. Pode ser `float` (padrão) ou `base64`.
</ParamField>

## Resposta

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

<ResponseField name="data" type="object[]">
  Uma lista de objetos de embedding, um por entrada, na ordem das entradas.

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

    <ResponseField name="index" type="integer">
      O índice da entrada correspondente.
    </ResponseField>

    <ResponseField name="embedding" type="number[]">
      O vetor de embedding.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="model" type="string">
  O modelo usado para criar os embeddings.
</ResponseField>

<ResponseField name="usage" type="object">
  Uso de tokens da requisição. Embeddings são cobrados apenas pelos tokens de entrada, com tarifas específicas por modalidade (consulte a página do modelo para ver os preços). Requisições com mídia incluem contagens de tokens por modalidade.

  <Expandable title="objeto usage">
    <ResponseField name="prompt_tokens" type="integer">
      Número de tokens de entrada de texto.
    </ResponseField>

    <ResponseField name="input_image_tokens" type="integer">
      Tokens de entrada de imagem (258 por imagem). Presente apenas quando a requisição contém imagens.
    </ResponseField>

    <ResponseField name="input_audio_tokens" type="integer">
      Tokens de entrada de áudio (25 por segundo). Presente apenas quando a requisição contém áudio.
    </ResponseField>

    <ResponseField name="input_video_tokens" type="integer">
      Tokens de entrada de vídeo (66 por segundo). Presente apenas quando a requisição contém vídeo.
    </ResponseField>

    <ResponseField name="total_tokens" type="integer">
      Total de tokens de entrada em todas as modalidades (embeddings não produzem tokens de saída).
    </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>
