Send every prompt to the model that should answer it.
Zentic sits between your app and twelve providers. It picks the cheapest model that clears your quality bar, retries the failures, and shows you the bill before it arrives.
Running in production at
Platform
The unglamorous half of shipping an AI feature.
The model call is the easy part. Everything around it — fallbacks, spend caps, prompt rollbacks, grading real traffic — is what eats the quarter. Zentic owns that layer.
Scored on quality, latency and price. Per request.
Every prompt is matched against your rules before it leaves the building. Set a quality floor and Zentic spends the least it can to clear it.
A provider drops. Your user never finds out.
Health checks run every second. When one goes down the next model answers in under 40 ms, on the same response shape.
Hard ceilings, not alerts after the fact
Cap spend per team, per key or per feature. Zentic downgrades or refuses at the limit — it does not email you at 2am.
Version prompts like you version code
Every edit is a commit with a diff, an author and a rollback. Promote from staging when the numbers hold.
Grade real traffic, not a fixture file
Sample 1% of live requests, score them overnight against your rubric, and get told when quality slips before support does.
Integration
Change the base URL. Keep the rest.
Point your SDK at Zentic
Same request body, same response shape. One line in your client config.
Write the rules once
Quality floor, monthly ceiling, which providers you are allowed to send data to.
Watch the invoice fall
Teams see 40–60% off their first month, mostly from prompts that never needed the big model.
import Zentic from "zentic";
const zentic = new Zentic({ apiKey: process.env.ZENTIC_KEY });
// Ask for an outcome, not a model name
const res = await zentic.route({
task: "summarise",
quality: 0.92,
budget: "$0.01/req",
input: contractText
});
console.log(res.model); // "zentic-core"
console.log(res.costUsd); // 0.0084
from zentic import Zentic
zentic = Zentic(api_key=os.environ["ZENTIC_KEY"])
# Ask for an outcome, not a model name
res = zentic.route(
task="summarise",
quality=0.92,
budget="$0.01/req",
input=contract_text,
)
print(res.model) # "zentic-core"
print(res.cost_usd) # 0.0084
curl https://api.zentic.io/v1/route \
-H "Authorization: Bearer $ZENTIC_KEY" \
-H "Content-Type: application/json" \
-d '{
"task": "summarise",
"quality": 0.92,
"budget": "$0.01/req",
"input": "..."
}'
# -> { "model": "zentic-core", "cost_usd": 0.0084 }
Measured across 2,400 production workspaces.
In the wild
Most prompts do not need your most expensive model.
Four patterns where routing pays for itself in the first week.
Ticket triage
Nine out of ten tickets are a refund, a password or a delivery date. Those go to the small model; the angry ones escalate.
Answer synthesis
Rerank with a cheap model, synthesise with a strong one, and cache the pairs that keep coming back.
Contract review
Long context work routes to whichever provider has headroom right now, with a hard cap per document.
Code assistants
Autocomplete hits the fast lane, refactors hit the reasoning lane. Same key, same endpoint.
Customers
We were sending every autocomplete to the biggest model we had. Zentic found that in an afternoon and cut the bill by half before we had finished onboarding.
A provider had a two-hour outage in March. We found out from their status page, not from our users. That alone paid for the year.
Being able to pin patient data to one region and prove it in an audit log is the reason legal signed off. The cost saving was the bonus.
Questions
Answers before you write the integration.
Still stuck? Email the engineering team — replies come from the people who build it.
Route your first request in about four minutes.
Free up to 50,000 requests a month. No card, no sales call, no migration.