Skip to content

Polling fallback feed for watchlist events

GET
/v1/watchlist/events

Cursor-paginated list of webhook-shape events (same envelope, minus the per-delivery signature) that would have fired for the caller’s watchlist. Use as a fallback when an inbound webhook receiver is not feasible — corporate networks, agents without a public URL, backfill after webhook outages.

Pass since=<ISO> for the first call (bootstrap window, max 30 days). Subsequent calls pass the next_cursor from the previous response. Don’t pass both.

Rate limit — separate from the monthly quota. Per-hour ceiling per plan: Starter 10, Pro 60, Business 600, Enterprise unlimited. 429 with details.reason=watchlist_events_poll_limit when exhausted.

Every response carries X-Poll-RateLimit-{Limit,Remaining,Reset,Window} plus X-Poll-Recommended-Interval (seconds the SDK should sleep between polls to stay under the ceiling).

since
string format: date-time

ISO-8601 timestamp. Returns events created after this point. Window capped at 30 days (matches webhook_events retention).

cursor
string
<= 512 characters

Opaque base64url cursor returned from the previous response.

limit
integer
default: 100 >= 1 <= 500

Events page.

object
events
required
Array<object>

Common shape across every webhook event (and every entry in /v1/watchlist/events). The data block varies by event — see https://igregulator.io/docs/webhooks for per-event field tables.

object
event
required
string
Allowed values: license.status_changed license.expiring_30d license.expiring_60d license.expiring_90d license.expired license.issued regulatory_action.added coverage.degraded coverage.restored webhook.endpoint_degraded
event_id
required
string
evt_01HX8EGQK3J7WA6MYTP7ZGYF21
api_version
required
string
2026-04-20
timestamp
required
string format: date-time
livemode
required
boolean
data
required
object
key
additional properties
any
{
"event": "license.status_changed",
"event_id": "evt_01HX8EGQK3J7WA6MYTP7ZGYF21",
"api_version": "2026-04-20",
"timestamp": "2026-04-20T14:32:00.000Z",
"livemode": true,
"data": {
"license_id": "4db0141c-a863-49b1-808d-75fa49e36fd9",
"license_number": "039028-R-319297-013",
"operator_id": "00000000-0000-0000-0000-000000000000",
"operator_slug": "888-uk-limited",
"jurisdiction_code": "UKGC",
"previous_status": "active",
"new_status": "suspended",
"changed_at": "2026-04-20T03:04:12.000Z",
"source_url": "https://www.gamblingcommission.gov.uk/..."
}
}
next_cursor
string | null
has_more
required
boolean
X-Poll-RateLimit-Limit
string

Per-hour poll ceiling for the caller’s plan, or unlimited.

X-Poll-RateLimit-Remaining
integer

Polls remaining this hour. Omitted when the limit is unlimited.

X-Poll-RateLimit-Reset
string format: date-time

ISO-8601 timestamp when the per-hour counter rolls over.

X-Poll-RateLimit-Window
string

Always hour.

X-Poll-Recommended-Interval
integer

Recommended seconds between polls — ceil(3600 / limit). SDKs that sleep this long never hit the limit by construction.

Invalid query / parameters.

object
error
required

Human-readable error summary.

string
code
required

HTTP-status-level class. Stable enum; branch on details.reason for finer control. Current values: invalid_query, invalid_slug, invalid_license_id, invalid_jurisdiction_code, invalid_pagination, not_found, auth_required, auth_invalid, auth_revoked, payment_required, quota_exceeded, rate_limited, server_error.

string
details
required
object
reason
required

Machine-readable refinement of the top-level code. Stable vocabulary; branch on this in clients. Examples: invalid_input, missing_required_parameter, conflicting_parameters, operator_not_found, license_not_found, jurisdiction_not_found, route_not_found, api_key_missing, malformed_header, api_key_invalid, api_key_revoked, quota_exceeded, internal_error.

string
field

Present only when the error maps to a specific request input field (query param, path param, body key). Omitted for errors that aren’t field-scoped (e.g. rate_limited, auth_revoked).

string
suggestion

Optional human-readable / agent-actionable hint describing how to resolve the error.

string
{
"reason": "api_key_revoked",
"suggestion": "Generate a new API key at https://app.igregulator.io/settings. Revoked keys cannot be restored."
}
{
"error": "API key has been revoked",
"code": "auth_revoked",
"details": {
"reason": "api_key_revoked",
"suggestion": "Generate a new API key at https://app.igregulator.io/settings. Revoked keys cannot be restored."
}
}

Missing / malformed / revoked API key.

object
error
required

Human-readable error summary.

string
code
required

HTTP-status-level class. Stable enum; branch on details.reason for finer control. Current values: invalid_query, invalid_slug, invalid_license_id, invalid_jurisdiction_code, invalid_pagination, not_found, auth_required, auth_invalid, auth_revoked, payment_required, quota_exceeded, rate_limited, server_error.

string
details
required
object
reason
required

Machine-readable refinement of the top-level code. Stable vocabulary; branch on this in clients. Examples: invalid_input, missing_required_parameter, conflicting_parameters, operator_not_found, license_not_found, jurisdiction_not_found, route_not_found, api_key_missing, malformed_header, api_key_invalid, api_key_revoked, quota_exceeded, internal_error.

string
field

Present only when the error maps to a specific request input field (query param, path param, body key). Omitted for errors that aren’t field-scoped (e.g. rate_limited, auth_revoked).

string
suggestion

Optional human-readable / agent-actionable hint describing how to resolve the error.

string
{
"reason": "api_key_revoked",
"suggestion": "Generate a new API key at https://app.igregulator.io/settings. Revoked keys cannot be restored."
}
{
"error": "API key has been revoked",
"code": "auth_revoked",
"details": {
"reason": "api_key_revoked",
"suggestion": "Generate a new API key at https://app.igregulator.io/settings. Revoked keys cannot be restored."
}
}

Subscription not active (canceled / null plan_tier). Resubscribe at https://igregulator.io/pricing.

object
error
required

Human-readable error summary.

string
code
required

HTTP-status-level class. Stable enum; branch on details.reason for finer control. Current values: invalid_query, invalid_slug, invalid_license_id, invalid_jurisdiction_code, invalid_pagination, not_found, auth_required, auth_invalid, auth_revoked, payment_required, quota_exceeded, rate_limited, server_error.

string
details
required
object
reason
required

Machine-readable refinement of the top-level code. Stable vocabulary; branch on this in clients. Examples: invalid_input, missing_required_parameter, conflicting_parameters, operator_not_found, license_not_found, jurisdiction_not_found, route_not_found, api_key_missing, malformed_header, api_key_invalid, api_key_revoked, quota_exceeded, internal_error.

string
field

Present only when the error maps to a specific request input field (query param, path param, body key). Omitted for errors that aren’t field-scoped (e.g. rate_limited, auth_revoked).

string
suggestion

Optional human-readable / agent-actionable hint describing how to resolve the error.

string
{
"reason": "api_key_revoked",
"suggestion": "Generate a new API key at https://app.igregulator.io/settings. Revoked keys cannot be restored."
}
{
"error": "API key has been revoked",
"code": "auth_revoked",
"details": {
"reason": "api_key_revoked",
"suggestion": "Generate a new API key at https://app.igregulator.io/settings. Revoked keys cannot be restored."
}
}

Rate limit reached. Public endpoints: 10 req / IP / hour. Authenticated: per plan tier. Retry after the window surfaced in X-RateLimit-Reset.

object
error
required

Human-readable error summary.

string
code
required

HTTP-status-level class. Stable enum; branch on details.reason for finer control. Current values: invalid_query, invalid_slug, invalid_license_id, invalid_jurisdiction_code, invalid_pagination, not_found, auth_required, auth_invalid, auth_revoked, payment_required, quota_exceeded, rate_limited, server_error.

string
details
required
object
reason
required

Machine-readable refinement of the top-level code. Stable vocabulary; branch on this in clients. Examples: invalid_input, missing_required_parameter, conflicting_parameters, operator_not_found, license_not_found, jurisdiction_not_found, route_not_found, api_key_missing, malformed_header, api_key_invalid, api_key_revoked, quota_exceeded, internal_error.

string
field

Present only when the error maps to a specific request input field (query param, path param, body key). Omitted for errors that aren’t field-scoped (e.g. rate_limited, auth_revoked).

string
suggestion

Optional human-readable / agent-actionable hint describing how to resolve the error.

string
{
"reason": "api_key_revoked",
"suggestion": "Generate a new API key at https://app.igregulator.io/settings. Revoked keys cannot be restored."
}
{
"error": "API key has been revoked",
"code": "auth_revoked",
"details": {
"reason": "api_key_revoked",
"suggestion": "Generate a new API key at https://app.igregulator.io/settings. Revoked keys cannot be restored."
}
}
X-RateLimit-Limit
integer
X-RateLimit-Remaining
integer
X-RateLimit-Reset
integer

Unix epoch seconds.

X-Upgrade-URL
string format: uri

Unexpected server error.

object
error
required

Human-readable error summary.

string
code
required

HTTP-status-level class. Stable enum; branch on details.reason for finer control. Current values: invalid_query, invalid_slug, invalid_license_id, invalid_jurisdiction_code, invalid_pagination, not_found, auth_required, auth_invalid, auth_revoked, payment_required, quota_exceeded, rate_limited, server_error.

string
details
required
object
reason
required

Machine-readable refinement of the top-level code. Stable vocabulary; branch on this in clients. Examples: invalid_input, missing_required_parameter, conflicting_parameters, operator_not_found, license_not_found, jurisdiction_not_found, route_not_found, api_key_missing, malformed_header, api_key_invalid, api_key_revoked, quota_exceeded, internal_error.

string
field

Present only when the error maps to a specific request input field (query param, path param, body key). Omitted for errors that aren’t field-scoped (e.g. rate_limited, auth_revoked).

string
suggestion

Optional human-readable / agent-actionable hint describing how to resolve the error.

string
{
"reason": "api_key_revoked",
"suggestion": "Generate a new API key at https://app.igregulator.io/settings. Revoked keys cannot be restored."
}
{
"error": "API key has been revoked",
"code": "auth_revoked",
"details": {
"reason": "api_key_revoked",
"suggestion": "Generate a new API key at https://app.igregulator.io/settings. Revoked keys cannot be restored."
}
}