Licences for an operator (paginated)
GET /v1/operators/{slug}/licenses
Every licence the operator holds, sorted by jurisdiction_code, license_number. Append ?include_history=true to embed the status-change timeline under each licence; omit for the slimmer detail view. Agents that want a cross-jurisdiction compliance view should call this instead of the single-licence endpoint.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Query Parameters
Section titled “Query Parameters ”When true, each licence includes its status-change history[].
Responses
Section titled “ Responses ”Paginated licences for the operator.
object
object
Multi-valued type vocabulary, sourced verbatim from the regulator. Stable values per jurisdiction (audited 2026-04-21):
- UKGC —
Remote,Non-Remote,Ancillary Remote - MGA —
Type 1,Type 2,Type 3,Type 4,B2B,B2C - CW (Curaçao) —
B2C,B2B - KH (Kahnawake) —
Interactive Gaming Permit,CSPA - AN (Anjouan) —
B2C,B2B,White Labeling - TGC (Tobique) —
B2C,B2B
Add a new value to your client mapping when a regulator publishes one — we don’t reject unknown strings. Multi-jurisdiction operators carry one license row per jurisdiction, so this array is per-licence.
Cross-jurisdiction harmonised category — derived by @igregulator/normalizer so a multi-regulator query can group by it. UKGC Remote, MGA Type 1/2, CW B2C map to remote; UKGC Non-Remote to non-remote; etc.
Scraper-specific fields captured verbatim from the upstream register (e.g. UKGC activity categories, CGA company-type flags). Not a stable integration surface. Keys here are added, renamed, or removed without a deprecation window when a scraper is updated — they do not carry the 90-day Sunset guarantee that top-level fields do. Use license_types, license_category, status, issued_date, expiry_date for stable compliance logic; read raw_data only for diagnostic / investigative purposes.
object
Point-in-time status, present only when ?as_of= was supplied. Answers ONLY within the observation window: we never extrapolate a status before tracking_since (the first time we recorded the licence).
object
The resolved instant (UTC). Bare YYYY-MM-DD inputs resolve to end-of-day.
observed: the date is within our window, status is known. before_tracking: the date predates when we started watching — status is null, NOT a guess. no_such_license: we have no history for this licence. no_license_resolved: a fuzzy /v1/check match with no specific licence to time-travel.
Licence status as of the date, or null when not observed.
The history transition in effect at the date — when this status was last confirmed relative to the query.
object
Lower bound of our knowledge — when we first observed this licence.
{ "id": "d29fbc19-3ed3-4043-8a74-e001491feb24", "license_number": "039028-R-319297-013", "jurisdiction_code": "UKGC", "status": "active", "license_types": [ "Remote" ], "license_type_raw": "Remote", "license_category": "remote", "issued_date": "2014-11-01", "expiry_date": null, "last_verified_at": "2026-04-19T03:00:12.480Z", "source_url": "https://www.gamblingcommission.gov.uk/downloads/business-licence-data.zip", "raw_data": { "activities": [ "Bingo", "Casino" ] }}Aggregate provenance envelope for list responses. Describes the freshness window of the returned rows.
object
object
Distinct upstream sources represented by this page of rows (roughly: distinct jurisdictions).
{ "freshness_range": { "oldest": "2026-04-18T03:00:00Z", "newest": "2026-04-19T03:45:00Z" }, "total_sources": 1}Missing / malformed / revoked API key.
object
Human-readable error summary.
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.
object
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.
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).
Optional human-readable / agent-actionable hint describing how to resolve the error.
{ "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." }}No row matched.
object
Human-readable error summary.
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.
object
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.
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).
Optional human-readable / agent-actionable hint describing how to resolve the error.
{ "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." }}Unexpected server error.
object
Human-readable error summary.
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.
object
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.
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).
Optional human-readable / agent-actionable hint describing how to resolve the error.
{ "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." }}