Tera Router

Embeddings

Text embeddings for RAG and semantic search in OpenAI's format — POST /v1/embeddings.

POST /v1/embeddings takes OpenAI's embeddings request. The router resolves model like chat and rewrites only that field, so provider extras such as NVIDIA's input_type or Jina's task pass through. The response is relayed unchanged.

curl http://localhost:8080/v1/embeddings \
  -H "Authorization: Bearer sk_tr_..." \
  -H "Content-Type: application/json" \
  -d '{ "model": "openai/text-embedding-3-small", "input": ["first passage", "second passage"] }'
{
  "object": "list",
  "data": [{ "object": "embedding", "index": 0, "embedding": [0.0123, -0.0456] }],
  "model": "text-embedding-3-small",
  "usage": { "prompt_tokens": 6, "total_tokens": 6 }
}

Providers

Providermodel exampleNotes
OpenAIopenai/text-embedding-3-small
OpenRouteropenrouter/openai/text-embedding-3-small
NVIDIA NIMnvidia/nvidia/nv-embedqa-e5-v5send "input_type": "query" or "passage"
Geminigemini/gemini-embedding-001
Mistral AImistral/mistral-embed
Together AItogether/BAAI/bge-large-en-v1.5
Fireworks AIfireworks/nomic-ai/nomic-embed-text-v1.5
Nebius Token Factorynebius/BAAI/bge-en-icl
Cloudflare AIcloudflare/@cf/baai/bge-m3
Voyage AIvoyage-ai/voyage-3.5
Jina AIjina-ai/jina-embeddings-v3optional "task", e.g. retrieval.query

OpenAI-compatible custom providers work too.

Metering

The usage.prompt_tokens an upstream reports is recorded like chat tokens: it shows on the Usage page, is priced through your model pricing overrides, and counts against the key's budgets.

One model per index

Embed queries and documents with the same model — vectors from different models are not comparable.

On this page