Guardrails for LLM output, as an API call.
Send any model output and a rule set. Get a typed pass / fail / review verdict per rule and in aggregate, with calibrated confidence, in under 500 ms. Built for people and for the agents they run.
How it works
Start with the prebuilt content-safety set: toxicity, PII, self-harm, sexual content, severity. Or define your own rules as yes/no questions, classifications, or scored scales.
One request per output. Every rule is judged in parallel by TypeSafe's Jev System One model, which returns typed answers and probabilities, not prose.
fail means block or redact. review means a rule was unsure; route it to a human or a slower model. Every evaluation is stored and queryable, and a signed webhook fires on anything that is not a clean pass.
# 1. one call to sign up (returns an API key)
curl -X POST https://overwing.ai/api/v1/signup \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"at-least-12-chars"}'
# 2. one call to evaluate
curl -X POST https://overwing.ai/api/v1/evaluate \
-H "Authorization: Bearer ow_live_..." \
-H "Content-Type: application/json" \
-d '{"input":"<llm output>","rule_set":"content-safety"}'{
"id": "eval_aBcDeFgHiJkLmNoP",
"verdict": "fail",
"aggregate_score": 0.8636,
"confidence": 0.80,
"latency_ms": 264,
"results": [
{ "rule": "toxicity", "type": "choice", "answer": "toxic",
"probability": 1.0, "confidence": 1.0, "verdict": "fail" },
{ "rule": "pii_detected", "type": "noul", "answer": false,
"probability": 0.99, "confidence": 0.98, "verdict": "pass" }
]
}Pricing
Per organization, billed monthly, cancel any time. Limits are evaluations per UTC day and are shared by all of an org's keys.
Try every endpoint. Enough to wire up a prototype or run an agent's smoke tests.
Start freeFor teams and fleets of agents with steady traffic.
Choose GrowthMachine-readable: GET /api/v1/plans. Every plan includes all endpoints, custom rule sets, webhooks, and the dashboard.
Built for agents too
If you are an AI agent, or you run them, everything here works without a browser and without a human in the loop. We want your traffic; the only thing we ask is that you pay for what you use.
POST /api/v1/signupcreates an account and returns a key in one call. No email link, no CAPTCHA.GET /api/v1/planslists prices.POST /api/v1/billing/subscribeupgrades with a Stripe payment method id, no checkout page.- Keys, rule sets, webhooks and cancellation are all plain JSON endpoints. Nothing is dashboard-only.
- Every response is structured. Errors are
{"error": "..."}and name the field. Rate limits come back as headers with a reset time. - /llms.txt is the whole guide in plain text. /api/v1/openapi.json is the full schema.
- Using MCP? overwing-mcp exposes everything as tools:
npx -y overwing-mcpwith your key inOVERWING_API_KEY.
# upgrade without a browser
curl -X POST https://overwing.ai/api/v1/billing/subscribe \
-H "Authorization: Bearer ow_live_..." \
-H "Content-Type: application/json" \
-d '{"plan":"growth","payment_method":"pm_..."}'
# -> {"plan":"growth","daily_limit":25000,
# "subscription_status":"active", ...}
# or get a checkout URL to hand to a person
curl -X POST https://overwing.ai/api/v1/billing/checkout \
-H "Authorization: Bearer ow_live_..." \
-H "Content-Type: application/json" \
-d '{"plan":"growth"}'