How do I monitor a supplier and get a webhook when it changes?

Find the supplier's company_id with a search, subscribe it with POST /monitor and a webhook_url, and a signed alert is posted to you when its status, dissolution, corporate events or sanctions position change.

Step 1: find the company id

curl 'https://api.prometiam.com/functions/v1/risk-api/companies/search?country=ES&company_number=A15075062' \
  -H 'Authorization: Bearer rk_live_demo_publichn'

The demo key can run the search, and the record comes back with "id": 1741526 (answer of 10 November 2026). That is the number POST /monitor takes. Monitoring itself is not in the demo key.

Step 2: subscribe it

This call needs a key of your own. It is shown here and was not run for this page:

curl -X POST 'https://api.prometiam.com/functions/v1/risk-api/monitor' \
  -H 'Authorization: Bearer rk_live_...' \
  -H 'Content-Type: application/json' \
  -d '{"company_id": 1741526, "country": "ES", "label": "supplier-001",
       "webhook_url": "https://yourapp.com/hooks/prometiam",
       "events": ["corporate_event", "status_change", "sanctions_match"]}'

The answer is a 201 with the subscription. Its webhook_secret is shown once, so store it:

{
  "data": {
    "id": 42,
    "country": "ES",
    "company_id": 1741526,
    "label": "supplier-001",
    "webhook_url": "https://yourapp.com/hooks/prometiam",
    "webhook_secret": "...",
    "watched_events": ["corporate_event", "status_change", "sanctions_match"],
    "created_at": "..."
  },
  "meta": { "note": "webhook_secret is shown once — store it to verify signatures." }
}

Step 3: receive the alert

When something changes, the API posts a JSON body to your URL, signed with HMAC-SHA256 over the raw body using your webhook_secret, in the X-Prometiam-Signature: sha256=... header. Verify the signature before you act on the payload. The values below are illustrative; the fields are the ones in the API reference.

{
  "event": "company_monitor.alert",
  "alert_type": "corporate_event",
  "monitor_id": 42,
  "label": "supplier-001",
  "company": { "id": 1741526, "company_number": "A15075062", "name": "...", "country": "ES" },
  "event_date": "2026-10-22",
  "detail": { "event_type": "director_change", "notice_url": "https://www.boe.es/borme/..." },
  "created_at": "2026-10-23T05:10:00Z"
}

Without a webhook_url nothing is pushed: read the alerts with GET /monitor, which lists your subscriptions and the recent alerts. For an account with no subscription yet it answered, on 10 November 2026:

{
  "data": { "entries": [], "recent_alerts": [] },
  "meta": { "entry_count": 0, "note": "Scanned daily. New corporate events, status changes, and new sanctions matches appear here and POST to webhook_url if set. ...", ... }
}

How to read the alert

FieldWhat it tells you
alert_typecorporate_event, status_change, dissolution or sanctions_match (sanctions screening is beta).
monitor_id and labelYour subscription and the reference you gave it.
companyThe id, number, name and country of the company.
event_dateThe date of the change. For a dissolution without a register date, detail.date_basis is first_seen_closed.
detailWhat changed: the previous and the current value, or the event.

What it costs

Managing monitored companies, POST, GET and DELETE /monitor, costs 0 credits. What each plan can watch: free trial 3 companies, Starter EUR 9.99 25, Professional EUR 29.99 250, Scale EUR 99.99 2,500. Alerts are checked daily.

Limits

  • Every live country is monitorable except France and Chile.
  • Alerts: status change, dissolution, sanctions match (beta) and corporate events. Corporate events are gazette events for Spain and the United Kingdom (Companies House filings and Gazette notices), and register-change events for the others, dated when the change first appears in the register data and not before the country's start date. Switzerland also alerts on the SHAB gazette.
  • Argentina is read monthly and has no dissolution alert.
  • An alert is a lead to review, never a determination about the company.

What can go wrong

  • 400: the body is invalid, for example a webhook_url that is not https.
  • 422: the cap of your plan is reached, or the country cannot be monitored.
  • 403 upgrade_required: the plan does not include monitoring.
  • 429: rate limit or credits exhausted.

Related pages

Sign up · API documentation

The free trial lasts 14 days and includes 500 credits. A card is required and nothing is charged during the trial; it then continues as Starter (EUR 9.99/month) unless you cancel.

Frequently asked questions

What if my endpoint is down when an alert fires?
The alert stays in GET /monitor, so you can poll it to catch up. Return a 2xx quickly and do the heavy work afterwards.
Can I watch a French supplier?
Not with a subscription: France is not monitorable. Check the supplier daily with the insolvency batch instead, see the recipe for a French company by SIREN.
How do I stop watching a company?
DELETE /monitor/{id}. It costs nothing and frees one place in your cap.
Is the payload on this page real?
No, it is illustrative. The field names are those of the API reference and the monitoring documentation.