Skip to Content
API for developersDiscovery (meta)

Discovery endpoints

The /v1/meta/* endpoints list the platform’s current vocabulary — engines, models, jurisdictions, regulatory areas, and export types — so clients can discover valid values at runtime instead of hardcoding them. All five are cheap bearer-authenticated reads (60/min bucket) with no parameters.

EndpointFeeds
GET /v1/meta/enginesengine and horizon on POST /v1/scans
GET /v1/meta/modelsmodel / searchModel on POST /v1/scans
GET /v1/meta/jurisdictionsjurisdictions on POST /v1/scans
GET /v1/meta/areasareas on POST /v1/scans
GET /v1/meta/export-typesThe whole body of POST /v1/exports

Engines

GET /v1/meta/engines

curl https://api.regsn.app/v1/meta/engines \ -H "Authorization: Bearer $REGSN_API_KEY"

200 — the current response, in full:

{ "data": [ { "id": "v4", "label": "V4", "description": "V4 classic" }, { "id": "v4.5-alpha", "label": "V4.5α", "description": "Verifier-aware (Sonnet+Tools)" }, { "id": "v4.5-beta", "label": "V4.5β", "description": "Verifier-aware (SerpAPI/Firecrawl)" } ], "horizons": [3, 6, 12, 18, 24, 36] }
FieldNotes
data[].idThe value to send as engine on POST /v1/scans.
data[].label / descriptionDisplay strings, as shown in the product UI.
horizonsValid horizon values, in months.

Models

GET /v1/meta/models — the model catalogue, grouped by provider. The catalogue is dynamic; always read it rather than assuming these ids.

curl https://api.regsn.app/v1/meta/models \ -H "Authorization: Bearer $REGSN_API_KEY"

200 (truncated example):

{ "data": [ { "provider": "anthropic", "label": "Anthropic", "configured": true, "models": [ { "id": "sonnet", "label": "Sonnet 4.6", "role": "analyst", "tier": null, "model_id": "claude-sonnet-4-6" } ] } ] }
FieldNotes
data[].providerProvider key (anthropic, openai, gemini, deepl, cohere, perplexity).
data[].configuredWhether the provider is usable on this deployment. Unconfigured providers are listed but their models will fail at scan time.
models[].idThe value to send as model / searchModel on POST /v1/scans.
models[].roleWhich pipeline role the entry is offered for.
models[].tierOptional tier tag, or null.
models[].model_idThe provider’s own identifier for the model, where applicable.
models[].pro_variantOptional { id, label, model_id } — a higher-capability variant selectable by its own id.

Note model: "haiku" is rejected on verifier-aware scan configs — see Scans.

Jurisdictions

GET /v1/meta/jurisdictions — the jurisdiction vocabulary the product scans with, each with its principal regulators.

curl https://api.regsn.app/v1/meta/jurisdictions \ -H "Authorization: Bearer $REGSN_API_KEY"

200 (truncated):

{ "data": [ { "id": "UK", "label": "UK", "regulators": ["FCA", "PRA", "BoE", "HMT", "PSR", "ICO"] }, { "id": "EU", "label": "EU", "regulators": ["EC", "ESMA", "EBA", "EIOPA", "ECB/SSM", "EDPB"] } ] }

Current ids: US, EU, UK, Singapore, Hong Kong, Japan, Australia, Switzerland, Canada, Brazil, India, China, South Korea.

POST /v1/scans does not reject names outside this list (only count and length are validated) — but this list is what the product itself is tuned for.

Areas

GET /v1/meta/areas — the regulatory-area vocabulary.

curl https://api.regsn.app/v1/meta/areas \ -H "Authorization: Bearer $REGSN_API_KEY"

200:

{ "data": [ { "id": "Banking / Prudential", "label": "Banking / Prudential" }, { "id": "Capital Markets", "label": "Capital Markets" }, { "id": "Digital Assets / Crypto", "label": "Digital Assets / Crypto" }, { "id": "AML / KYC", "label": "AML / KYC" }, { "id": "Payments", "label": "Payments" }, { "id": "Data Privacy", "label": "Data Privacy" }, { "id": "Operational Resilience", "label": "Operational Resilience" }, { "id": "ESG / Sustainable Finance", "label": "ESG / Sustainable Finance" }, { "id": "Sanctions", "label": "Sanctions" }, { "id": "Research Bundling / Unbundling", "label": "Research Bundling / Unbundling" }, { "id": "Consumer Protection", "label": "Consumer Protection" } ] }

As with jurisdictions, free-text areas are accepted on POST /v1/scans; this is the recommended vocabulary. See also jurisdictions and topics in the concepts guide.

Export types

GET /v1/meta/export-types — every (provider, artifact_type) pair accepted by POST /v1/exports, each with a machine-readable options schema.

curl https://api.regsn.app/v1/meta/export-types \ -H "Authorization: Bearer $REGSN_API_KEY"

200 (one row shown):

{ "data": [ { "key": "pptx", "label": "Regulation-focused", "provider": "internal-pptx", "artifact_type": "slide-deck", "group": "internal", "provider_label": "Internal", "requires_provider": null, "has_options": true, "options_schema": { "theme": { "type": "string", "enum": ["light", "dark"], "default": "dark", "description": "Deck visual theme." }, "editorialModel": { "type": "string", "enum": ["haiku", "sonnet", "opus"], "default": "sonnet", "description": "DEPRECATED — accepted for backwards compatibility but ignored. …" }, "targetLanguage": { "type": "string", "description": "…" } } } ] }
FieldNotes
key / label / group / provider_labelDisplay metadata, as used in the product UI.
provider + artifact_typeThe pair to send on POST /v1/exports.
requires_providerNon-null when the type depends on an integration being configured for your account (notebooklm, elevenLabsPodcast).
has_optionstrue when options_schema is non-empty.
options_schemaField name → { type, enum?, default?, description?, maxLength? }. This is the validation vocabulary for the options object — unknown fields and out-of-enum values are rejected with 422.

Build export UIs and pipelines from options_schema rather than hardcoding — style catalogues in particular change over time. A human-readable summary is on the Exports page.

Last updated on