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

Membuat vektor embedding dari input teks atau media. Permintaan yang hanya berisi teks mengembalikan satu vektor per input, berguna untuk retrieval, pencarian semantik, clustering, klasifikasi, dan RAG. Permintaan yang berisi media (gambar, audio, atau video sebagai base64 data URI) menggabungkan **semua** input menjadi **satu** vektor lintas-modal — embed setiap aset dalam permintaannya masing-masing jika Anda membutuhkan satu vektor per aset. Kompatibel dengan format OpenAI Embeddings API. Streaming tidak didukung pada endpoint ini.

## Autentikasi

<ParamField header="Authorization" type="string" required>
  Bearer token. Gunakan kunci API Anda sebagai bearer token di header Authorization.

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

## Permintaan

Endpoint ini menerima sebuah objek.

<ParamField body="model" type="string" required>
  ID model embedding yang akan digunakan, mis. `google/gemini-embedding-2`. Lihat [halaman model](https://sunra.ai/models) untuk model embedding yang tersedia.
</ParamField>

<ParamField body="input" type="string | string[]" required>
  Input yang akan di-embed, sebagai satu string atau array string. Input yang hanya berupa teks di-embed secara independen, mengembalikan satu vektor per input dalam urutan input. Input media diberikan sebagai base64 data URI (`data:image/png;base64,…`, `data:audio/mpeg;base64,…`, `data:video/mp4;base64,…`) dan dapat dicampur dengan teks — tetapi setiap permintaan yang berisi media mengembalikan satu vektor gabungan untuk seluruh input sekaligus. Batasan (upstream): maksimal 6 gambar per permintaan, video hingga 120 detik, dan anggaran gabungan 8.192 token di seluruh modalitas (token teks; setiap gambar dihitung 258 token, audio 25 token/detik, video 66 token/detik).
</ParamField>

<ParamField body="dimensions" type="integer">
  Jumlah dimensi untuk embedding output. Hanya didukung oleh model dengan dimensi output fleksibel (Matryoshka Representation Learning). Untuk `google/gemini-embedding-2` nilai default-nya adalah `3072`, dan nilai dari `128` hingga `3072` didukung. Nilai yang lebih kecil memotong vektor sambil mempertahankan sebagian besar kualitas semantik.
</ParamField>

<ParamField body="encoding_format" type="string">
  Format embedding yang dikembalikan. Antara `float` (default) atau `base64`.
</ParamField>

## Respons

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

<ResponseField name="data" type="object[]">
  Daftar objek embedding, satu per input, dalam urutan input.

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

    <ResponseField name="index" type="integer">
      Indeks input yang bersangkutan.
    </ResponseField>

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

<ResponseField name="model" type="string">
  Model yang digunakan untuk membuat embedding.
</ResponseField>

<ResponseField name="usage" type="object">
  Penggunaan token untuk permintaan ini. Embedding hanya ditagih berdasarkan token input, dengan tarif spesifik per modalitas (lihat halaman model untuk harga). Permintaan media menyertakan jumlah token per modalitas.

  <Expandable title="usage object">
    <ResponseField name="prompt_tokens" type="integer">
      Jumlah token input teks.
    </ResponseField>

    <ResponseField name="input_image_tokens" type="integer">
      Token input gambar (258 per gambar). Hanya ada jika permintaan berisi gambar.
    </ResponseField>

    <ResponseField name="input_audio_tokens" type="integer">
      Token input audio (25 per detik). Hanya ada jika permintaan berisi audio.
    </ResponseField>

    <ResponseField name="input_video_tokens" type="integer">
      Token input video (66 per detik). Hanya ada jika permintaan berisi video.
    </ResponseField>

    <ResponseField name="total_tokens" type="integer">
      Total token input di seluruh modalitas (embedding tidak menghasilkan token 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>
