Skip to content

API reference

Everything the admin panel and the Android app do, they do through this API — so anything they can do, your code can do.

MethodPathAuthPurpose
GET/healthPublicLiveness probe. Returns { "status": "ok" }.
GET/config/statusPublicWhich integrations are configured, as booleans. Never returns a value.
POST/auth/registerPublicCreate an account (role user) and return a token.
POST/auth/loginPublicExchange email and password for a token.
POST/auth/googlePublicExchange a Google ID token for a session. 503 when Google sign-in is not configured.
GET/auth/meTokenThe current user.
POST/auth/verify-emailPublicConfirm an emailed verification link.
POST/auth/request-verificationTokenResend the verification email. Always 200.
POST/auth/forgot-passwordPublicStart a password reset. Always 200, so it cannot probe which emails exist.
POST/auth/reset-passwordPublicComplete a reset with the emailed token and a new password.
GET/watchesTokenList the caller's watches.
POST/watchesTokenCreate a watch. The owner is taken from your token, never the body.
GET/watches/:idTokenFetch one owned watch.
PUT/watches/:idTokenReplace one owned watch. Id and owner are not client-settable.
DELETE/watches/:idTokenDelete one owned watch. Run history is kept.
GET/watches/:id/runsTokenRun history, newest first. Accepts ?limit=.
POST/watches/:id/runTokenRun this watch now, ignoring its schedule. Returns the outcome.
POST/watches/run-allTokenRun all of the caller's enabled watches now. 409 if one is already in flight.
POST/watches/draftTokenTurn a plain-English description into a draft watch. Nothing is saved.
POST/watches/draft/check-domainsTokenBest-effort liveness check for suggested domains.
POST/watches/draft/previewTokenDry-run a search source and return the top candidate titles and URLs.
POST/watches/:id/explainTokenExplain an existing watch in plain English. Read-only.
POST/watches/:id/reviseTokenPropose a field-level change set from one instruction. Nothing is saved.
POST/runs/:id/feedbackTokenLabel a run correct or wrong, or clear the label with null.
GET/feedback/statsTokenRolling precision, recall and F1 with recent false positives and negatives.
GET/collection/statsTokenRolling collection metrics, including the extraction rate.
GET/trust-registryTokenThe caller's domain-to-tier rules.
PUT/trust-registry/:domainTokenUpsert a trust rule. The domain is lowercased.
DELETE/trust-registry/:domainTokenDelete a trust rule.
PUT/devices/:tokenTokenRegister or refresh a push token for the caller.
DELETE/devices/:tokenTokenUnregister a push token.
GET/admin/keysAdmin roleKey pools per use-case category, with masked previews and live status.
POST/admin/keysAdmin roleAdd a key. It is probed live and only stored if the probe succeeds.
DELETE/admin/keys/:idAdmin roleRemove a stored key.
GET/admin/keys/:id/metricsAdmin roleDaily usage series for one key. Accepts ?days=.
POST/admin/keys/:id/validateAdmin roleRe-probe a key on demand. Success revives a key marked dead.
PUT/admin/categories/:categoryAdmin roleSet the provider and model for one use-case category.