Embeddings client runbook
Operator notes for POST /v1/embeddings when OmniRoute sits in front of
Hindsight 0.9.1 (text-only encode(list[str])) and Memorix 1.6.0 (Jina media
gate). Live-verified 2026-08-17 against OmniRoute 3.8.49 at
https://omniroute.jaguar-fish.ts.net/v1. No secrets below.
Working model ids
Section titled “Working model ids”| Client id | HTTP | Vectors | Dim | Notes |
|---|---|---|---|---|
openrouter/google/gemini-embedding-2 |
200 | batch 2 → 2 | 3072 | Works without a native Gemini key |
openrouter/google/gemini-embedding-2-preview |
200 | batch 2 → 2 | 3072 | Same space as the non-preview id |
openrouter/google/gemini-embedding-001 |
200 | batch 2 → 2 | 3072 | Listed in GET /v1/embeddings |
jina-ai/jina-embeddings-v5-omni-small |
200 | batch 2 → 2 | 1024 | Canonical Jina omni id |
jina/jina-embeddings-v5-omni-small |
200 | batch 2 → 2 | 1024 | Alias; response model is jina-ai/... |
jina-embeddings-v5-omni-small |
200 | batch 2 → 2 | 1024 | Bare id also resolves |
jina-ai/jina-embeddings-v5-omni-nano |
200 | 1 → 1 | 768 | Different vector space from small |
GET /v1/models and GET /v1/embeddings listed
jina-ai/jina-embeddings-v5-omni-small (1024) and
jina-ai/jina-embeddings-v5-omni-nano (768) and
openrouter/google/gemini-embedding-001. They did not list
openrouter/google/gemini-embedding-2 even though that id already serves.
Do not mix nano (768-d) and small (1024-d) in one index. They are not comparable.
Broken / misleading ids
Section titled “Broken / misleading ids”Native Gemini Embedding 2
Section titled “Native Gemini Embedding 2”Request:
{ "model": "gemini-embedding-2", "input": ["alpha", "beta"] }Actual (2026-08-17): HTTP 400
{ "error": { "message": "No credentials for embedding provider: gemini", "type": "invalid_request_error", "code": "bad_request" }}gemini/gemini-embedding-2 returns the same 400. google/gemini-embedding-2
returns HTTP 400 Unknown embedding provider: google unless a custom
provider node uses the google prefix.
Expected: either a native Gemini embed with a Google AI Studio key on the
gemini provider, or a 400 that names the working OpenRouter id.
Repro (redact the bearer):
curl -sS -D- https://omniroute.example/v1/embeddings \ -H "Authorization: Bearer $OMNIROUTE_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"gemini-embedding-2","input":["alpha","beta"]}'Working substitute:
curl -sS https://omniroute.example/v1/embeddings \ -H "Authorization: Bearer $OMNIROUTE_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"openrouter/google/gemini-embedding-2","input":["alpha","beta"]}'Native gemini-embedding-2 cannot succeed from GitOps alone. A Google AI
Studio key must be added as a gemini provider connection (dashboard or
GEMINI_API_KEY imported into OmniRoute). That secret is not in this repo.
Jina multimodal path
Section titled “Jina multimodal path”POST /v1/multimodal-embeddings → HTTP 404
{ "error": { "message": "Unknown API route: /v1/multimodal-embeddings", "type": "not_found", "code": "unknown_route", "path": "/v1/multimodal-embeddings" }}Use POST /v1/embeddings until an alias exists.
Jina / Memorix image object
Section titled “Jina / Memorix image object”OmniRoute canonical image item (28×28 PNG, 784 pixels — Jina rejects 1×1):
{ "model": "jina-ai/jina-embeddings-v5-omni-small", "input": [ { "type": "image", "source": { "type": "base64", "data": "<base64-png>", "media_type": "image/png" } } ]}Actual: HTTP 200, 1 vector, 1024-d.
Memorix 1.6.0 / Jina native shape:
{ "model": "jina-ai/jina-embeddings-v5-omni-small", "input": [{ "image": "data:image/png;base64,<base64-png>" }]}Actual: HTTP 400
{ "error": { "message": "Invalid request", "type": "invalid_request_error", "code": "bad_request" }}{ "text": "..." } mixed with { "image": "data:..." } is the same 400.
Client notes
Section titled “Client notes”Hindsight 0.9.1
Section titled “Hindsight 0.9.1”Hindsight embeddings are text-only (encode(list[str])). It does not send
image objects. Point Hindsight’s OpenAI-compatible embeddings base URL at
OmniRoute /v1 and use a working id from the table above
(jina-ai/jina-embeddings-v5-omni-small or
openrouter/google/gemini-embedding-2). Do not set the model to bare
gemini-embedding-2 unless a gemini API key exists on the gateway.
Memorix 1.6.0
Section titled “Memorix 1.6.0”Memorix only treats baseUrl matching /jina\.ai/i as native media. An
OmniRoute URL stays on the text-only path even when the model is Jina omni.
That gate is a Memorix client issue. Independently, OmniRoute still rejects
the Jina {image: "data:..."} body that Memorix would send if the gate
opened, so Jina-compatible clients cannot embed images through OmniRoute
without the canonical {type,source} schema.
Use jina-ai/jina-embeddings-v5-omni-small for text. Do not point Memorix
base_url at https://api.jina.ai — keep OmniRoute as the only hop.
HagiCode
HagiCode is an agentic coding workspace. Rich, convenient UI interactions make planning, agent execution, and project work approachable and easy to navigate, creating an engaging development experience.
Explore an engaging development experience through rich, convenient UI interactions.
- SmartOpenSpec workflows turn intent into an executable path, from proposal to design, tasks, and a shipped change.
- EfficientMulti-agent execution keeps research, implementation, and review moving in parallel, across several repositories and the Agent CLIs you already use.
- InterestingRich, convenient UI interactions make planning, agent execution, and project work approachable and easy to navigate.
Download for Windows
Share HagiCode
Turn ideas into shipped software.
HagiCode is an agentic coding workspace. OpenSpec workflows plan the change, multi-agent execution carries it out, and Hero Scenario makes the long run visible, so ideas become shipped software.
- Smart
- OpenSpec workflows turn intent into a path from proposal to shipped change.
- Efficient
- Multi-agent execution runs research, build, and review in parallel.
- Fun
- Rich UI interactions make planning, agent work, and projects easier to follow.
© 2026 HagiCode | Powered By hagilight-starlight@0.21.0 | Branch: main | Commit: de60bcd | Built:

