One surface.
Every upstream underneath.
OP Inference resolves a public model id to a provider endpoint, enforces your key's policy and budget, streams the answer back, and writes exactly one usage record, with a retention class on every artifact along the way.
Four things happen between your call and the first token.
The data plane holds no durable state and never waits on a control plane to answer you. Everything it needs (policy, budget, catalog and breaker state) is already in hot shared memory when your request arrives.
01
Resolve
A public model id maps to a set of provider endpoints that can actually serve it, with the feature flags you asked for rather than just the family name. Adding an OpenAI-compatible upstream is a manifest file, not a release.
02
Compare
Price, latency, uptime and feature support are measured continuously per route. The comparison happens before dispatch, on the call you are making, not in a monthly report about calls you already paid for.
03
Enforce
Every key carries a routing policy, a spend limit, an expiry and a model allowlist. Budget is reserved before dispatch and settled after, so an agent in a loop stops at its own ceiling instead of at your invoice.
04
Stream
Answers forward chunk by chunk with as little added lag as we can manage on the part we control. A route that fails before sending anything is retried on another endpoint serving the same model.
Change the base URL. Keep everything else.
Your existing client, SDK and streaming code keep working. Tool calls, structured output and server-sent events behave the way they already do.
request.sh
curl https://api.opinference.com/v1/chat/completions \
-H "Authorization: Bearer $OP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-oss-120b",
"messages": [{"role": "user", "content": "Say hello."}],
"stream": true
}'HTTP/1.1 200 OK · content-type: text/event-stream
data: {"choices":[{"delta":{"content":"Hello"}}]}
data: {"choices":[{"delta":{"content":" there."}}]}
data: [DONE]Everything a product needs, on one key.
- 01
Text
POST /v1/chat/completionsStreaming, tool calls, structured output, reasoning
- 02
Image
POST /v1/images/generationsGeneration and editing
- 03
Video
POST /v1/videosText-to-video and image-to-video, as a job you poll
- 04
Audio
POST /v1/audio/speechSpeech synthesis and transcription
- 05
Music
POST /v1/audio/musicGeneration from a prompt
Signed on request
Add
sign=trueto any generation and the media returns with a C2PA manifest and a watermark.