Skip to content

API Reference Fresh 🌱

Complete API reference for Gemini Embedding 2 (gemini-embedding-2-preview).

Endpoint

POST https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview:embedContent

Authentication

MethodHeader
API Keyx-goog-api-key: YOUR_API_KEY
OAuth 2.0Authorization: Bearer YOUR_TOKEN

Request Format

Request Body (REST)

json
{
  "content": {
    "parts": [
      { "text": "Your text here" }
    ]
  },
  "taskType": "RETRIEVAL_QUERY",
  "outputDimensionality": 768
}

Request Body (Image via REST)

json
{
  "content": {
    "parts": [
      {
        "inline_data": {
          "mime_type": "image/png",
          "data": "BASE64_ENCODED_DATA"
        }
      }
    ]
  }
}

Parameters

ParameterTypeRequiredDefaultDescription
contentContentYes-The content to embed
content.partsPart[]Yes-Array of content parts
taskTypestringNo-Optimization hint (see Task Types)
outputDimensionalityintegerNo3072Output vector size (128-3072)

Content Part Types

Part TypeFieldsUse For
Text{ "text": "..." }Plain text
Inline Data{ "inline_data": { "mime_type": "...", "data": "..." } }Images, video, audio, PDF

Supported MIME Types

ModalityMIME Types
Imageimage/png, image/jpeg
Videovideo/mp4, video/quicktime
Audioaudio/mp3, audio/wav
Documentapplication/pdf

Task Types

Task TypeCodeBest For
Semantic SimilaritySEMANTIC_SIMILARITYComparing two texts for meaning overlap
ClassificationCLASSIFICATIONCategorizing text into preset labels
ClusteringCLUSTERINGGrouping similar texts together
Retrieval (Document)RETRIEVAL_DOCUMENTIndexing documents for search
Retrieval (Query)RETRIEVAL_QUERYEncoding search queries
Code RetrievalCODE_RETRIEVAL_QUERYFinding code via natural language
Question AnsweringQUESTION_ANSWERINGFinding documents that answer questions
Fact VerificationFACT_VERIFICATIONVerifying claims against sources

Task Type Pairing

For search/retrieval, use RETRIEVAL_DOCUMENT when indexing and RETRIEVAL_QUERY when searching. This asymmetric pairing gives the best results.

Response Format

json
{
  "embeddings": [
    {
      "values": [0.0123, -0.0456, 0.0789, ...]
    }
  ]
}
FieldTypeDescription
embeddingsEmbedding[]Array of embedding objects
embeddings[].valuesfloat[]Vector of floating-point numbers

Input Limits

ModalityLimit
Text8,192 tokens
Images6 per request
Video128 seconds (MP4/MOV, H264/H265/AV1/VP9)
Audio80 seconds (MP3/WAV)
PDF6 pages
Overall8,192 tokens across all modalities combined

Embedding Behavior

ScenarioResult
Single content with multiple partsOne aggregated embedding
Multiple entries in contents arraySeparate embedding per entry
No task type specifiedGeneral-purpose embedding
Dimensions below 3072Normalization recommended

SDK Examples

Python

python
from google import genai
from google.genai import types

client = genai.Client()

# Text
result = client.models.embed_content(
    model='gemini-embedding-2-preview',
    contents='Your text',
    config=types.EmbedContentConfig(
        task_type='RETRIEVAL_QUERY',
        output_dimensionality=768
    )
)

# Image
result = client.models.embed_content(
    model='gemini-embedding-2-preview',
    contents=[
        types.Part.from_bytes(data=image_bytes, mime_type='image/png')
    ]
)

JavaScript

javascript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});

// Text
const response = await ai.models.embedContent({
    model: 'gemini-embedding-2-preview',
    contents: 'Your text',
});

// Image
const response = await ai.models.embedContent({
    model: 'gemini-embedding-2-preview',
    contents: [{
        inlineData: { mimeType: 'image/png', data: imgBase64 }
    }],
});

cURL

bash
# Text
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview:embedContent" \
    -H "Content-Type: application/json" \
    -H "x-goog-api-key: ${GEMINI_API_KEY}" \
    -d '{"content": {"parts": [{"text": "Hello world"}]}}'

# Image
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview:embedContent" \
    -H "Content-Type: application/json" \
    -H "x-goog-api-key: ${GEMINI_API_KEY}" \
    -d '{"content": {"parts": [{"inline_data": {"mime_type": "image/png", "data": "'"${IMG_B64}"'"}}]}}'

HTTP Status Codes

CodeMeaningAction
200SuccessParse response normally
400Bad RequestCheck input format and content
401UnauthorizedVerify API key
403ForbiddenCheck API enablement and quotas
429Rate LimitedImplement exponential backoff
500Server ErrorRetry with backoff

See Also

Built with VitePress. Not affiliated with Google.