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

# Embeddings

> Create vector embeddings for text input. Use for search, clustering, and RAG applications.

## Request

```bash theme={null}
POST https://api.euron.one/api/v1/euri/embeddings
```

### Body parameters

<ParamField body="model" type="string" required>
  Embedding model ID. Options: `text-embedding-3-small`, `togethercomputer/m2-bert-80M-32k-retrieval`, `gemini-embedding-001`, `gemini-embedding-2-preview`.
</ParamField>

<ParamField body="input" type="string | array" required>
  Text to embed. Can be a single string or an array of strings.
</ParamField>

<ParamField body="dimensions" type="integer">
  Number of dimensions for the output vector. Supported by models trained with Matryoshka Representation Learning (MRL): `text-embedding-3-small` (up to 1536), `gemini-embedding-001` and `gemini-embedding-2-preview` (128–3072, recommended: 768, 1536, 3072). If omitted, the model's default is used.
</ParamField>

<ParamField body="encoding_format" type="string">
  Format of the embedding. Options: `"float"` (default), `"base64"`.
</ParamField>

<ParamField body="user" type="string">
  A unique identifier for the end-user, used for abuse monitoring.
</ParamField>

***

## Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.euron.one/api/v1/euri/embeddings \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer YOUR_EURI_API_KEY" \
    -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="YOUR_EURI_API_KEY",
      base_url="https://api.euron.one/api/v1/euri"
  )

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

  print(response.data[0].embedding[:5])  # First 5 dimensions
  ```

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

  const client = new OpenAI({
    apiKey: 'YOUR_EURI_API_KEY',
    baseURL: 'https://api.euron.one/api/v1/euri',
  });

  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));
  ```
</CodeGroup>

### Gemini Embedding 2 with custom dimensions

<Note>`gemini-embedding-2-preview` is a **premium** model. It requires wallet balance. It is Google's first multimodal embedding model with 8K token input and 3072-dimensional vectors with Matryoshka support.</Note>

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.euron.one/api/v1/euri/embeddings \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer YOUR_EURI_API_KEY" \
    -d '{
      "model": "gemini-embedding-2-preview",
      "input": "Semantic search with multimodal embeddings",
      "dimensions": 768
    }'
  ```

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

  client = OpenAI(
      api_key="YOUR_EURI_API_KEY",
      base_url="https://api.euron.one/api/v1/euri"
  )

  response = client.embeddings.create(
      model="gemini-embedding-2-preview",
      input="Semantic search with multimodal embeddings",
      dimensions=768
  )

  print(f"Dimensions: {len(response.data[0].embedding)}")  # 768
  ```

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

  const client = new OpenAI({
    apiKey: 'YOUR_EURI_API_KEY',
    baseURL: 'https://api.euron.one/api/v1/euri',
  });

  const response = await client.embeddings.create({
    model: 'gemini-embedding-2-preview',
    input: 'Semantic search with multimodal embeddings',
    dimensions: 768,
  });

  console.log(`Dimensions: ${response.data[0].embedding.length}`); // 768
  ```
</CodeGroup>

### Batch embeddings

```bash theme={null}
curl -X POST https://api.euron.one/api/v1/euri/embeddings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_EURI_API_KEY" \
  -d '{
    "model": "gemini-embedding-2-preview",
    "input": [
      "First document text",
      "Second document text",
      "Third document text"
    ],
    "dimensions": 1536
  }'
```

***

## Model comparison

| Model                                        | Provider | Premium | Max input | Default dims | Custom dims | Price (\$/M tokens) |
| -------------------------------------------- | -------- | ------- | --------- | ------------ | ----------- | ------------------- |
| `text-embedding-3-small`                     | OpenAI   | No      | 8,191     | 1,536        | Up to 1,536 | \$0.02              |
| `togethercomputer/m2-bert-80M-32k-retrieval` | Together | No      | 32,768    | 768          | Fixed (768) | \$0.008             |
| `gemini-embedding-001`                       | Google   | No      | 2,048     | 3,072        | 128–3,072   | \$0.15              |
| `gemini-embedding-2-preview`                 | Google   | **Yes** | 8,192     | 3,072        | 128–3,072   | \$0.20              |

<Tip>For `gemini-embedding-001` and `gemini-embedding-2-preview`, the default 3072-dimensional output is already normalized. For smaller dimensions (768, 1536), normalize the output vectors yourself (L2 norm) for best cosine similarity results.</Tip>

***

## Response

```json theme={null}
{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": [0.0023064255, -0.009327292, 0.015797347, ...]
    }
  ],
  "model": "gemini-embedding-2-preview",
  "usage": {
    "prompt_tokens": 10,
    "total_tokens": 10
  }
}
```
