Watch API for AI agents
Wake me when it happens.
Price drops, item back in stock, page changes.
Until is a no-signup, prepaid watch for AI agents: give it a page and a condition, pay once, and get a signed evidence receipt when the condition becomes true.
$0.50 per watch 5 min minimum interval HMAC-signed receipts
curl -X POST https://untilapi.com/v1/check \
-H 'content-type: application/json' \
-d '{"url":"https://example.com","condition":{"type":"text_appears","text":"Example Domain"}}'{
"charged": false,
"accepted": true,
"evaluation": { "evaluable": true, "matches_now": true }
}Free, no key needed. Dry-runs are limited to 30 per hour per IP.
How it works
Describe the watch
POST a URL and a deterministic condition such as price below 50, in stock, or some text appearing. Dry-run it for free first.
Pay once
Buy a prepaid credit bundle. No account, no signup: you get a credit key. A watch costs $0.50 at list price (less in bigger packs), and refused pages are never charged.
Get the receipt
Poll the watch or get a signed webhook. When the condition is true you receive an HMAC-signed receipt with the matched value, timestamp and content hash.
activematchedstates
Try it live
This box calls POST /v1/check, the free dry-run, against the real service.
Pricing
Prepaid credits that never expire. $0.50 per watch at list price, and less per watch in the bigger packs. Dry-run checks are free.
Free Never charged
- Dry-run checks (30 per hour per IP)
- Pages refused when you create a watch: JavaScript-only, bot-blocked, disallowed by robots.txt, unreachable
- Conditions that cannot be evaluated, or are already true
$0.50 Charged
- One watch that was accepted and created, at $0.50 list price or less from a pack
- It runs for up to 7 days. If it expires without matching, the credit is spent
$5 pack
10 watches · $0.50 / watch
$20 packSave 20%
50 watches · $0.40 / watch
$50 packSave 33%Best value
150 watches · $0.33 / watch
Credits never expire • $0.50 per watch at list price, $0.50 / 0.40 / 0.33 per watch in the packs • Pages refused at creation are never charged.
Pricing FAQ
What happens when I run out of credits?
Creating a watch returns 402 with payment instructions. Watches you already created keep running; credits are only spent when a watch is created.
Do credits expire?
No. Credits never expire. Each watch itself lasts up to 7 days.
What if the page can't be watched?
Until fetches the page before charging. Bot-blocked, JavaScript-only, robots.txt-disallowed or unreachable pages, conditions that cannot be evaluated, and conditions that are already true (unless you set allow_already_true) are refused with a 4xx and never charged. Once a watch is created it costs one watch of credit, whether or not the condition becomes true before it expires.
Is there a subscription or signup?
No. There is no account and no subscription. Your first checkout returns a credit key, shown once; that key is your balance.
I lost my credit key. Can I recover it?
No. The credit key is the only credential. Until stores only a hash of it, and there is no recovery today, so save it when it is shown.
Who it is for
Developers building shopping, booking and assistant agents that need to wait for the world to change: a price drop, a restock, tickets going on sale, a status page turning green. Instead of looping or keeping a worker alive, your agent hands the wait to Until and moves on. Until is deterministic: no LLM judges the page, so a receipt means a specific rule matched specific content.
Limits, stated plainly
- Static pages and JSON only. No JavaScript-rendered pages: if the content is built in the browser, Until cannot see it.
- No logins, and no bot-protected sites. Captcha or bot-blocked pages are refused and not charged. Until never solves captchas and uses no proxies.
- robots.txt is respected. Disallowed paths are refused and not charged. Private and internal addresses are blocked.
- Each watch is checked at its own check interval (default 15 minutes, minimum 5 minutes). The scanner runs every minute and picks up whatever is due, plus an immediate first check when the watch is created. Checks are periodic, not continuous, so Until is not a real-time alert service.
- A watch lasts up to 7 days. Bodies over 1 MB are truncated.
For agents and tools
- /openapi.json: OpenAPI 3.1 description
- /llms.txt: agent-readable summary
- MCP server at
POST /mcpwith toolstest_condition,create_watch,get_watch