Embeddings
POST /v1/embeddings passthrough and Google translate — dimensions, encoding_format, and task_type.
OpenAI-dialect embeddings with passthrough or Gemini translate.
What it is
Upstream kind |
Behavior |
|---|---|
openai / openai_compat |
Passthrough {base}/embeddings (model rewrite only; unknown keys kept) |
google |
Translate to :embedContent / :batchEmbedContents |
anthropic |
Not supported |
How it works
Passthrough: parse JSON map → set model to upstream id → POST.
Google translate:
inputmust be a string or array of strings (token-id arrays rejected).- One string →
:embedContent; many →:batchEmbedContents. - Map vectors back to OpenAI
object: list/data[].embedding. - Meter prompt tokens when Gemini reports usage.
Field matrix
| Field | Passthrough | |
|---|---|---|
model |
rewritten | path model |
input |
yes | text parts |
dimensions |
yes | outputDimensionality |
encoding_format |
yes | float only (else 400 on translate) |
task_type |
preserved | Gemini taskType |
| other | preserved | dropped |
Examples
# OpenAI-family
curl -sS "$GW/v1/embeddings" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/text-embedding-3-small",
"input": "hello",
"dimensions": 512,
"encoding_format": "float"
}'# Google translate
curl -sS "$GW/v1/embeddings" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/text-embedding-004",
"input": ["a", "b"],
"dimensions": 256,
"task_type": "RETRIEVAL_DOCUMENT"
}'Async / batch jobs (Google)
Long-running jobs use platform routes, not /v1/embeddings:
POST /v1beta/models/{model}:asyncBatchEmbedContent/v1beta/batches*
See Platform API proxies.