FilingPing API
Get a key from the home page, then send it as Authorization: Bearer <key>.
curl -X POST https://filingping.co.uk/v1/watchlist -H "Authorization: Bearer fp_..." -H "Content-Type: application/json" -d '{"company_number":"00445790","label":"Tesco"}'
curl https://filingping.co.uk/v1/events -H "Authorization: Bearer fp_..."
Webhook signatures: header x-filingping-signature: t=<unix>,v1=<hex> where v1 = HMAC_SHA256(secret, "<t>.<raw body>"). Reject if t is more than 5 minutes old.
Endpoints
All endpoints except signup need Authorization: Bearer <key>. The limit is 120 requests per minute per account.
| Method and path | Purpose |
|---|---|
POST /v1/signup {email, accept_terms: true} |
Records acceptance of the terms (version stored), then emails an API key (at most one every 10 minutes per address; 5 signups per hour per IP) |
GET /v1/account |
Plan, limit, usage, features, subscription and digest settings |
PATCH /v1/account {email_digest?, digest_event_types?} |
Turn the daily email off or filter it |
GET /v1/keys · POST /v1/keys · DELETE /v1/keys/:id |
List, create (shown once, maximum 5) and revoke API keys; the last key can't be revoked |
DELETE /v1/account |
Deletes all data (cancel the subscription first) |
GET /v1/watchlist?limit&offset |
List watched companies |
POST /v1/watchlist {company_number,label?} or {companies:[...]} (up to 1000) |
Add companies. Returns 402 if over the plan limit |
POST /v1/watchlist/csv (Content-Type: text/csv) |
Spreadsheet upload: column 1 = company number, column 2 = label (optional); header row optional; up to 5,000 rows |
DELETE /v1/watchlist/:company_number |
Remove a company |
GET /v1/events?after=<cursor>&limit&company_number |
Pull feed of events, newest after the cursor |
POST /v1/webhooks {url, event_types?} |
Pro+. Register an https endpoint (maximum 5 destinations in total). The secret is shown once |
POST /v1/slack {url, event_types?} |
Starter+. Slack incoming-webhook URL; plain-English alerts with a Companies House link |
GET /v1/webhooks · PATCH /v1/webhooks/:id {event_types} · DELETE /v1/webhooks/:id · POST /v1/webhooks/:id/enable |
Manage destinations and filters (null = everything; exact types or company.*, filing.*, …) |
POST /v1/billing/checkout {plan: starter, pro or business, interval: month or year} |
Returns a Stripe Checkout URL. Returns 409 if a subscription is already active |
POST /webhooks/stripe |
Stripe only |
GET /health |
Returns 503 only if the database is down or the worker has stopped. Companies House outages alert you by email instead, so the host doesn't restart the service or take the Stripe webhook endpoint down |
Event types: company.status_changed, company.name_changed, company.accounts_overdue,
company.confirmation_statement_overdue, company.updated, company.deleted, filing.accounts,
filing.charge, filing.insolvency, filing.dissolution (strike-off notices), filing.confirmation_statement, filing.officers, filing.psc, filing.other.