https://gateway.omnia-voice.com/v1 and authenticated with the same
workspace API key:
- Inference API: OpenAI-compatible endpoints for chat, embeddings, rerank, and the Responses API.
- Management API: everything else in the improvement workflow. Capture and
setup, request logs and datasets, grades (labels), judges (criteria), evals
and deploy gates, fine-tuning and reinforcement learning, dedicated GPU
endpoints, and model aliases and versions. (The older base
https://platform.omnia-voice.com/api/v1keeps working as an alias.)
Authentication
Every request uses a Bearer token:401 with the standard error
envelope. See Authentication for creating and managing keys.
One dialect
- Responses are snake_case. Every response body uses snake_case keys
(
base_model,created_at,win_rate). Model names used as map keys pass through untouched. - List envelopes. The measurement products (logs, labels, criteria, evals,
model versions) wrap collections as
{"object": "list", "data": [...]}, and the logs list addstotal,limit, andoffset. The training and infrastructure products return their natural shapes: fine-tuning jobs and files and dedicated endpoints return plain arrays; GRPO returns{"runs": [...], "candidates_waiting": n, ...}. - Request bodies vary by product. The measurement endpoints accept snake_case
bodies (
judge_prompt,sample_count). The training and infrastructure endpoints (fine-tuning jobs, GRPO runs, environment tools, dedicated endpoints, model-version adoption) validate camelCase bodies (baseModel,promptCount,endpointUrl). Each endpoint’s schema in this reference states which dialect it speaks; follow the schema, not a guess. - Errors are nested. Refusals use the same envelope the gateway emits, so one parser handles both surfaces:
type is one of invalid_request_error, insufficient_quota,
rate_limit_error, or api_error; code is the machine-stable cause
(invalid_api_key, not_found, insufficient_permissions,
insufficient_balance, precondition_failed, logging_disabled, …).
A small number of body-validation refusals on the training and
infrastructure endpoints return a flat {"error": "<message>"} string
instead; treat any error field, object or string, as the refusal.
How the reference is organized
The endpoint groups in the sidebar are ordered the way the improvement workflow runs: capture traffic through the gateway (or OTLP ingest), read and curate logs, grade, calibrate judges, run evals and gate deploys, train, serve on dedicated capacity, and repoint aliases at what won.Inference
Chat, embeddings, rerank, responses, models. OpenAI-compatible.
Capture & setup
OTLP trace ingest for your own instrumentation, and the setup-status
probe that doubles as the cheapest possible key check.
Logs & datasets
Browse and export logged exchanges, read whole agent runs, curate
training datasets with a disjoint eval holdout.
Grades & judges
Push ground-truth labels, create judges, calibrate them against your
grades, scan traffic for suspects, auto-improve one consented call at a
time.
Evals & gates
Queue judged comparisons or criterion runs, poll results, inspect every
test case, and gate a deploy with one curl.
Fine-tuning & RL
Upload data, run SFT jobs, prove them with bake-offs, run online GRPO
with validated rewards, download trained adapters.
Dedicated endpoints
Provision, scale, and meter private GPU capacity; serve fine-tuned
weights.
Aliases & versions
Call a stable name, repoint it on evidence, adopt or roll back trained
versions as audited repoints.
Keys that spend money
Endpoints that bill your wallet require a key minted by a workspace owner or admin, and return403 otherwise: creating a dedicated endpoint, a
fine-tuning job, a GRPO run, an eval run, or a dataset, and anything that
judges (calibration, traffic scans, suggested judges, auto-improve, online
monitoring config). Read-only endpoints work with any workspace key, except
the training surfaces (GRPO, RAFT, environment tools, model versions), which
are admin-read as well.
Money-creating endpoints also carry a per-workspace abuse guard (default 20
requests per 60 seconds). Past it you get 429 with a Retry-After header.
Preconditions, not failures
Two endpoints use412 Precondition Failed for “not proven yet”:
GET /v1/evals/{id}/gate when a requested check fails (or the run isn’t
DONE), and PUT /v1/aliases when the evidence policy refuses an unproven
repoint. The request was well-formed and permitted; the proof isn’t there
yet. Pipelines can treat 412 as “stop the deploy” without parsing anything.
Dashboard-only features
Some capabilities are managed in the dashboard rather than the API:- Billing & wallet: top-ups, auto-reload, usage export. There are no
/v1billing endpoints today. - Enabling request logging: the consent toggle itself is a workspace
setting. Until it’s on, the logs, export, and trace endpoints return
409with codelogging_disabledrather than an empty list that would read as “no traffic”. - Whole-run (trace) grading and the review queue: labels created over the API are request-scoped.
- Starting RAFT rounds:
GET /v1/raft/roundsis read-only observability; rounds start from the dashboard. - Team & access, observability charts, playground.