You don’t write the orchestration
One POST carries the whole graph: model calls, media, transforms, code, HTTP, web search, fan-out. The alternative is your own queue, your own retries, your own intermediate storage and transcode — weeks of it, then maintenance forever.
- OpenAI-compatible
- Fallback by default
- Quotas per key
- One invoice
POST /v1/pipelines
{
"name": "Scene → clip → cut with the voiceover",
"definition": {
"inputs": [
{ "name": "brief", "type": "text", "label": "Scene brief" },
{ "name": "voice", "type": "audio", "label": "Voiceover" }
],
"steps": [
{ "id": "scene", "type": "media", "model": "nano-banana-2",
"input": { "prompt": "${input.brief}" } },
{ "id": "clip", "type": "media", "model": "veo-3.1-fast",
"input": { "prompt": "${input.brief}",
"image": "${steps.scene.output.url}" } },
{ "id": "final", "type": "video.add_audio",
"input": { "video_url": "${steps.clip.output.url}",
"audio_url": "${input.voice}" },
"params": { "mode": "replace" } }
],
"output": { "video": "${steps.final.output.url}" }
}
}What the gateway takes off you
Ranked by what costs the most to build yourself, not by what is easiest to demo.
A workflow is one POST
Model calls, media generation, transforms, code, HTTP, web search and fan-out over a list, as one request carrying a graph. You do not build the queue, the retries, the intermediate storage or the transcode.
Read the run, not the log
When a multimodal chain fails at step five the intermediates are images and video, and you cannot read those in a log. Run inspection shows each step’s own output, duration and credits.
Drop-in, now across every modality
Swap the base URL and keep your SDK — openai-python, openai-node, LangChain, LlamaIndex, Vercel AI SDK, or anything that takes one. The same key then also reaches image, video, audio, music and 3D.
Fallback chains per workspace, per model
Configure an ordered list of models for a workspace and a source model. A 5xx, a timeout or a rate limit is retried on the same model first, and only then handed to the next entry. Flagship models arrive with a default chain already set, so those fail over before you configure anything; a source model outside that set fails over once you give it one.
Quotas per key, not per trust
Requests per minute, allowed models, and a credit budget over an hour, a day, a week or a month — set on each key. A runaway loop in staging cannot spend production’s budget.
Usage you can slice
Summary, daily, by model, by API key, by user, and the recent requests themselves — in the dashboard and over the API. One balance and one invoice behind all of it.
The canvas and the API are the same thing
Compose the graph on a canvas, read it back as JSON, call the same thing from code. The bridge runs both ways — and where a step wraps an existing HTTP call, a pasted curl command fills that step in for you. It is a thin layer over the same endpoints, not a second product with its own semantics.
- Read any graph as the JSON you would have POSTed
- Paste a curl command into an HTTP step and it fills in the method, URL, query, headers and body
- Compare up to five models on one prompt before you write the integration
- Share a run or a template with someone who does not write code

One line, and the same key reaches every modality
Drop-in compatibility is table stakes for text. What is not is the same key and the same SDK reaching image, video, audio, music and 3D, and then whole workflows on top.
- Swap the base URL; keep the SDK, the types and the streaming you already handle
- The same credentials reach chat, image, video, audio, music, 3D and workflows
- Trial credits with no card, so the first call costs nothing but the line you changed
from openai import OpenAI
client = OpenAI(
base_url="https://api.infery.ai/v1",
api_key="ik_...",
)Frequently asked questions
Which SDKs work out of the box?
Any OpenAI-compatible SDK: openai-python, openai-node, LangChain, LlamaIndex, Vercel AI SDK, Mastra, and anything that takes a base URL. Change one line and you are in.
What is the latency overhead?
We do not publish a figure, because we do not measure one — and an overhead number you cannot reproduce is worth nothing to you. What we can tell you about the shape: streaming starts as soon as the upstream starts, because nothing is buffered on the way through.
Do tool calls and structured outputs work?
Yes, on every model that supports them — and the gateway translates function tools to and from each provider’s native shape, so one request format reaches all of them. On a model with no tool support we say so rather than faking it in the prompt.
How do fallback chains work?
A chain is an ordered list of models scoped to a workspace and a source model — never to the API key that sent the request. A 5xx, a timeout or a rate limit is retried on that model first, and only then moves to the next entry. Flagship source models arrive with a default chain already in place; a source model outside that set fails over once you set one for it.
Can a model change underneath a running agent?
Not the model itself. There is no alias layer and no version parameter — the slug you send resolves to exactly one catalogue row, and slugs are unique, so nothing repoints yours at something else. What can change is which upstream serves that row: the same model is often reachable through more than one, and routing takes the highest-ranked of them.
Can I get usage out into my own warehouse?
Not yet — there is no export endpoint. Usage is readable over the API as a summary, daily, by model, by key, by user, and as the recent requests themselves, so you can pull it, but you would be writing the pull. If a push export matters to you, say so; it is a small build.
Send one POST and see what comes back
Free trial credits, no card. Enough to run a real workflow end to end and read the run afterwards.