Jack axie

Tired of OpenAI-compatible gateways losing fidelity? We built three native APIs instead

by•

hey 👋

i'm one of the makers of [OpenModel](https://openmodel.ai), just opened early access today.

the context

most multi-model gateways out there ([OpenRouter](https://openrouter.ai), [LiteLLM](https://litellm.ai), [Portkey](https://portkey.ai)) normalize everything to OpenAI's API shape. that's fine if you're already on the OpenAI SDK. but if you've built stuff on Anthropic SDK or Google's GenAI SDK, going through OpenAI-shape translation loses fidelity in a few annoying places:

tool use — Anthropic returns structured content blocks (`tool_use`, `text`, etc), OpenAI returns a flat `tool_calls` field. you can map one to the other but you lose the structural info on the way

vision — Anthropic and Gemini accept inline image blocks, OpenAI uses `image_url` URLs as separate items. doesn't round-trip cleanly

streaming — OpenAI sends flat `data:` JSON lines, Anthropic uses named SSE events (`message_start`, `content_block_delta`, `message_stop`). you can normalize them but you lose the event structure your SDK actually relies on

what we did

three native API surfaces in parallel:

- `POST /v1/responses` — OpenAI Responses

- `POST /v1/messages` — Anthropic Messages

- `POST /v1beta/models/...` — Gemini generateContent

routing happens by the model field, not the endpoint. so you hit `/v1/messages` with `model="gpt-5.5"`, gateway translates upstream, runs GPT, response comes back in Anthropic Messages shape. your code doesn't see the underlying provider. same the other way.


what this means in practice: if you've built on Claude Code or some Anthropic SDK based tool and want to try GPT for a subtask, you don't rewrite anything. just change the model name. gateway eats the translation cost.


the hardest part of the build was honestly the streaming format mapping. synthesizing Anthropic's named events from OpenAI's flat stream is doable, but when a tool call spans multiple chunks it gets ugly fast. most of our test suite is just round-trip correctness across format pairs.

what's live right now

- $10 free credits, no card

- GPT, Claude, Gemini, DeepSeek all working

- three native API surfaces

- channel failover, billing dedup on retries, per-key rate limits

heads up

this is a preview round before the official PH launch in a few weeks. credits expire in 7 days, accounts get wiped before public launch. doing the wipe on purpose because we want to lock the API design based on what people actually do with it, not what we assumed. preview users will get matching credits + priority migration when we officially launch.

try it

- 🚀 [openmodel.ai](https://openmodel.ai) — early access

- 📚 [docs.openmodel.ai](https://docs.openmodel.ai) — API reference

for PH folks who've built multi-LLM products — curious what's been your biggest integration pain? tool use mapping, streaming, rate limits across providers? would love to hear what you've actually hit.

34 views

Add a comment

Replies

Be the first to comment