Checks from six probes, on a clock
Every endpoint is called from six probes at once. One slow probe usually means a routing problem; six slow probes means your database. Assert shows you which one you have.
/API monitoring & contract testing
Assert hits your REST and GraphQL endpoints as often as every 15 seconds from probes around the world, checks each response against your spec, and tells the right engineer in Slack, with the failing request and a replay link attached. Catch broken APIs before your customers do.
It watches your API, not your frontend. If you need to see what browsers see, run a real-user tool next to it.
/Running quietly at
Engineering teams who would rather read an alert than a post-mortem.
/01 · What it does
No dashboards to build, no query language to learn. Point it at an endpoint and it starts doing these four things.
Every endpoint is called from six probes at once. One slow probe usually means a routing problem; six slow probes means your database. Assert shows you which one you have.
Assert diffs every live response against your OpenAPI file. A field that turns null, an enum value nobody documented, a 200 that became a 201: each is flagged with the exact path. Fair warning: it is only as honest as your spec. If the spec is wrong, Assert will agree with it.
Every failed check keeps the full request, response and timing. Open the replay link and you are looking at the exact call that broke, with secrets masked, ready to fire again or copy as cURL. No more “can anyone reproduce this?”.
Route by path, by owner or by hour, to Slack, PagerDuty or a webhook. Payments breakage goes to the payments team; a staging blip at 3 a.m. goes nowhere. The first message already carries the failing request and the replay link, so nobody opens a dashboard to find out what happened.
/02 · How it works
Paste the URL of your OpenAPI file. Assert reads every path and drafts a check for each one. You review them; nothing runs until you say so.
Decide what “broken” means: status codes, body shape, a latency budget. Then say who hears about it. Defaults are sane; the budget is yours to set.
Add one line to CI. When a change breaks the contract, the build fails and the deploy never goes out. The argument happens in the pull request, not at 2 a.m.
From here it runs on its own. You hear from it when something is wrong, and not otherwise. Here is what it won't do:
/03 · Integrations
Alerts land where your team already looks. Setup is a token and a channel name.
/04 · Plans
Three plans, billed once a year. The only limits are how many endpoints you watch and how often we check them.
For the API only you depend on.
billed annually
For when a bad deploy wakes someone up.
billed annually
For when security has questions.
billed annually
Side Project if the API is yours alone. Team once a deploy can wake somebody up. Platform when someone from security or procurement joins the thread.
REST and GraphQL checks and replay links on every plan, so even the cheapest one gets you the failing request in your Slack message.
All prices are per year, billed annually.
/05 · From the people on call
We used to learn about a bad release from a customer's support ticket. Now the Slack message arrives with the failing request attached, and whoever's on call can replay it before they've finished their coffee.
/On schema drift
An optional field quietly turned nullable and three mobile clients fell over. Assert flagged the exact path from our OpenAPI spec the same afternoon.
/On the deploy gate
The CI gate is the part we use every day. A contract failure stops the deploy, so the argument happens in the pull request instead of at 2 a.m.
Pick a plan, point Assert at your OpenAPI spec, and your endpoints are being watched before the next deploy. Plans start at $219 a year, billed annually.