Home Docs Pricing Sign In Status For AI For Fintech Get API Key →

API Documentation

RegIntel API gives you access to structured regulatory data across 41 jurisdictions and 212 regulations via a simple REST API. All responses are JSON. Authentication is header-based.

Base URL for all API requests:

URL
https://api.regintelapi.com

ℹ️   All endpoints require a valid API key except POST /api/request-keyget your free API key here.

Authentication

Pass your API key in every request using the x-api-key header.

bash
curl https://api.regintelapi.com/regulations \
  -H "x-api-key: YOUR_API_KEY"
⚠️   Keep your API key secret. Never expose it in client-side JavaScript or public repositories.

Quick Start

Up and running in under 2 minutes.

1. Get an API key

Go to the API key page, enter your email, and your key is generated instantly.

2. Make your first request

bash
curl https://api.regintelapi.com/regulations \
  -H "x-api-key: YOUR_API_KEY" \
  -G \
  -d "jurisdiction=EU" \
  -d "industry=Privacy"
python — requests
import requests

resp = requests.get(
    "https://api.regintelapi.com/regulations",
    headers={"x-api-key": "YOUR_API_KEY"},
    params={"jurisdiction": "EU", "industry": "Privacy"},
    timeout=10,
)
resp.raise_for_status()
data = resp.json()
print(data["meta"]["total"], "regulations")
node.js — axios
import axios from "axios";

const { data } = await axios.get(
  "https://api.regintelapi.com/regulations",
  {
    headers: { "x-api-key": "YOUR_API_KEY" },
    params: { jurisdiction: "EU", industry: "Privacy" },
    timeout: 10000,
  }
);
console.log(`${data.meta.total} regulations`);

3. Inspect the response

json
{
  "data": [{
    "id": 127,
    "country": "EU",
    "industry": "Finance",
    "regulation": "MiFID II 2014/65/EU regulates investment services...",
    "effective_date": "2018-01-03",
    "status": "active",
    "change_type": "amended",
    "change_summary": "MiFID III proposals published in 2023...",
    "obligations": "Investment firms must obtain client authorisation, disclose costs and charges, and ensure best execution of orders...",
    "penalties": "Up to EUR 5,000,000 or 10% of annual turnover for legal persons...",
    "scope": "Applies to investment firms, credit institutions, and trading venues operating in the EU...",
    "key_articles": "Art. 24 conduct of business, Art. 25 suitability, Art. 27 best execution, Art. 70 penalties",
    "tags": "MiFID II, investment services, EU, financial markets, best execution, conduct of business",
    "source_url": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32014L0065",
    "updated_at": "2026-03-30",
    "version": 2
  }],
  "meta": {
    "total": 212,
    "limit": 20,
    "page": 1,
    "offset": 0
  }
}

💡   Each regulation includes obligations, penalties, scope, key_articles, and tags — structured fields ready to use in your application without any post-processing.

Core Endpoints

GET/compliance-check

Check compliance status for a specific activity in a country. Returns an instant decision signal — allowed, requires_license, restricted, or prohibited — along with risk level, penalties, obligations, and source regulations.

⚠️   Not legal advice. This endpoint provides regulatory intelligence derived from structured data. Always consult a qualified legal professional before making compliance decisions.
ParameterTypeRequiredDescription
countrystringrequiredCountry code or name — e.g. AU, US, EU, SG, UK
activitystringrequiredcrypto, finance, banking, payments, lending, privacy, data_protection, aml, kyc
example
curl "https://api.regintelapi.com/compliance-check?country=AU&activity=crypto" \
  -H "x-api-key: YOUR_API_KEY"
response
{
  "country": "Australia",
  "activity": "crypto",
  "industry": "Crypto",
  "status": "requires_license",
  "risk_level": "medium",
  "summary": "Crypto requires licensing in Australia. Exchanges must register with AUSTRAC...",
  "penalties": "Up to AUD 28 million per contravention...",
  "regulations_count": 2,
  "regulations": [{
    "regulation": "Crypto exchanges must register with AUSTRAC...",
    "obligations": "Must register as DCE provider, implement AML/CTF program...",
    "penalties": "Up to 2 years imprisonment and/or fines...",
    "scope": "Any business exchanging digital currency in Australia...",
    "key_articles": "Part 6A AML/CTF Act, Section 76A...",
    "source_url": "https://www.austrac.gov.au/..."
  }],
  "disclaimer": "This is not legal advice..."
}

Possible status values:

StatusMeaning
allowedActivity is permitted with standard compliance requirements
requires_licenseActivity is legal but requires registration or licensing
restrictedActivity faces significant regulatory restrictions
prohibitedActivity is explicitly banned or illegal
unknownInsufficient data to determine status

OpenAPI & Postman

RegIntel publishes a live OpenAPI 3.x spec describing every endpoint, parameter, and response. Import it into your favourite REST client to explore all 41 jurisdictions without writing a line of code.

OpenAPI spec URL
https://api.regintelapi.com/openapi.json

ℹ️   Set the x-api-key header in your client after importing — the spec describes the schema but does not embed your key.

Vector Embeddings

Regulation text is returned as clean, structured strings optimised for embedding with any model — OpenAI, Cohere, or open-source. We deliberately do not run embeddings server-side: you pick the model, dimensionality, and store that fits your stack.

Each regulation exposes embedding-friendly fields (regulation, obligations, scope, penalties, key_articles, tags) free of HTML, footnotes, or formatting noise. Concatenate the fields you care about and embed in a single call.

python — openai
import requests
from openai import OpenAI

regs = requests.get(
    "https://api.regintelapi.com/regulations",
    headers={"x-api-key": "YOUR_API_KEY"},
    params={"jurisdiction": "EU"},
).json()["data"]

client = OpenAI()
texts = [f"{r['regulation']}\n\n{r['obligations']}\n\n{r['scope']}" for r in regs]
vectors = client.embeddings.create(model="text-embedding-3-small", input=texts).data
python — cohere
import requests, cohere

regs = requests.get(
    "https://api.regintelapi.com/regulations",
    headers={"x-api-key": "YOUR_API_KEY"},
).json()["data"]

co = cohere.Client()
texts = [f"{r['regulation']}\n\n{r['obligations']}" for r in regs]
vectors = co.embed(texts=texts, model="embed-english-v3.0", input_type="search_document").embeddings
python — sentence-transformers
import requests
from sentence_transformers import SentenceTransformer

regs = requests.get(
    "https://api.regintelapi.com/regulations",
    headers={"x-api-key": "YOUR_API_KEY"},
).json()["data"]

model = SentenceTransformer("BAAI/bge-base-en-v1.5")
texts = [f"{r['regulation']}\n\n{r['obligations']}" for r in regs]
vectors = model.encode(texts, normalize_embeddings=True)

ℹ️   Use updated_at + GET /updates to keep your vector store in sync — only re-embed what changed.

Regulation Lookup

GET/regulations

Returns a paginated list of regulations. Filter by jurisdiction, industry, tag, or keyword search.

ParameterTypeRequiredDescription
jurisdictionstringoptionalISO-style jurisdiction code — e.g. EU, US, AU. See GET /jurisdictions for the full list of supported codes.
industrystringoptionalFilter by industry — e.g. Finance, Privacy, AML, Crypto
tagstringoptionalFilter by tag keyword — e.g. GDPR, MiCA, AML, crypto
q (search)stringoptionalFull-text search across regulation text, obligations, scope, and tags
statusstringoptionalactive, pending, or repealed. Defaults to active
limitintegeroptionalResults per page, max 100. Defaults to 20
pageintegeroptionalPage number. Defaults to 1
example
curl "https://api.regintelapi.com/regulations?jurisdiction=EU&tag=GDPR&limit=5" \
  -H "x-api-key: YOUR_API_KEY"
GET/regulations/:id

Returns full details for a single regulation by its unique ID (e.g. 123 (integer)).

example
curl https://api.regintelapi.com/regulations/123 \
  -H "x-api-key: YOUR_API_KEY"
GET/jurisdictions

Returns the complete list of supported jurisdictions with codes and regulation counts. Does not consume credits.

example
curl https://api.regintelapi.com/jurisdictions \
  -H "x-api-key: YOUR_API_KEY"
GET/updates

Returns regulations added or modified recently. Use since for a custom date range.

ParameterTypeRequiredDescription
sincedateoptionalISO 8601 date e.g. 2026-01-01. Defaults to 30 days ago.
jurisdictionstringoptionalScope to a specific jurisdiction code. See GET /jurisdictions for the full list.
example
curl "https://api.regintelapi.com/updates?since=2026-01-01&jurisdiction=EU" \
  -H "x-api-key: YOUR_API_KEY"

AASB-S2 — Australian Climate Disclosure

Structured representation of the disclosure obligations imposed by AASB-S2 — Climate-related Financial Disclosures (the Australian Sustainability Reporting Standard equivalent of IFRS S2). Returns paragraph-cited obligations across the four pillars (governance, strategy, risk management, metrics & targets), with per-Group applicability that encodes phase-in dates, first-year reliefs, and the modified-liability protected-statement window.

⚠️   Information only. RegIntel does not calculate emissions, does not judge assurance, and does not determine which AASB-S2 Group an entity falls into, nor whether the entity is in scope under Chapter 2M of the Corporations Act 2001. Engagement requirements per AUASB ASSA 5000; assurance phase-in per ASSA 5010; Group classification per ASIC RG 280. Consult the standards directly and engage qualified climate-disclosure professionals before relying on disclosure positions.

GET/v1/aasb-s2/obligations

Returns the AASB-S2 disclosure obligations applicable to a covered entity. Defaults to all 26 obligations across the four pillars. Filterable by Group tier, disclosure category, and reporting year.

ParameterTypeRequiredDescription
groupintegeroptionalFilter by Group tier — 1 (largest, FY commencing 1 Jan 2025), 2 (mid-tier, 1 Jul 2026), or 3 (smaller, 1 Jul 2027). The API does NOT determine which Group an entity falls into.
category_codestringoptionalFilter to a specific AASB-S2 disclosure category, e.g. AASB-S2-MET-GHG-S3 for Scope 3 emissions, AASB-S2-GOV for governance. See AASB S2 for the standard.
reporting_yearintegeroptionalReporting year of interest, e.g. 2026. When supplied, each per-group applicability entry reflects whether the obligation is in force that year, factoring in the Scope 3 Year-1 exemption and other transitional reliefs.
example
curl "https://api.regintelapi.com/v1/aasb-s2/obligations?group=1&category_code=AASB-S2-MET-GHG-S3&reporting_year=2025" \
  -H "x-api-key: YOUR_API_KEY"
response (excerpt)
{
  "data": [{
    "id": 13,
    "requirement_code": "AASB-S2-REQ-013",
    "pillar": "metrics_targets",
    "category_code": "AASB-S2-MET-GHG-S3",
    "paragraph_ref": "¶29(a)(i)(3), (vi)",
    "title": "Scope 3 emissions",
    "obligation_text": "Disclose absolute gross Scope 3 emissions and state which of the 15 GHG-Protocol value-chain categories are included.",
    "type": "quantitative",
    "source_url": "https://standards.aasb.gov.au/aasb-s2-sep-2024",
    "applicability_per_group": {
      "group_1": {
        "group_code": "group_1",
        "first_reporting_period_start_date": "2025-01-01",
        "applies": false,
        "assurance_level": null,
        "reliefs": [{
          "relief_type": "scope_3_year1_exemption",
          "relief_summary": "Scope 3 emissions disclosure not required in the entity's first annual reporting period under AASB S2...",
          "relief_expiry": "2026-01-01",
          "source_reference": "AASB S2 Appendix C4(b)"
        }]
      }
    },
    "measurement_categories": [],
    "methodology_references": [],
    "assurance_inputs_required": [],
    "reporting_templates": []
  }],
  "meta": {
    "total": 1,
    "group_filter": 1,
    "category_code_filter": "AASB-S2-MET-GHG-S3",
    "reporting_year": 2025,
    "credits_used": 1,
    "advisory": "Information only. RegIntel does not calculate emissions...",
    "sources": [
      "AASB S2 Climate-related Disclosures (Sep 2024)",
      "Corporations Act 2001 Chapter 2M",
      "ASIC RG 280 Sustainability reporting (31 Mar 2025)",
      "AUASB ASSA 5000 General Requirements for Sustainability Assurance Engagements",
      "AUASB ASSA 5010 Timeline for Audits and Reviews of Information in Sustainability Reports"
    ]
  }
}

The four calculator-ready annotation fields (measurement_categories, methodology_references, assurance_inputs_required, reporting_templates) are forward-compatible slots for sustainability calculator products to consume; they default to empty arrays until per-obligation seed passes land. The endpoint billing is 1 credit per call.

Account Endpoints

POST/api/request-key

Generates a new API key for an email address. Does not require authentication.

ParameterTypeRequiredDescription
emailstringrequiredValid email address. One key per email.
namestringoptionalUser's display name
bash
curl -X POST https://api.regintelapi.com/api/request-key \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "name": "Jane Smith"}'
response
{
  "api_key": "ri_live_xxxxxxxxxxxxxxxxxxxx",
  "credits": 100,
  "plan": "free"
}
GET/api/usage

Returns remaining credits, usage history, and plan details for the authenticated API key. Used by the dashboard.

bash
curl https://api.regintelapi.com/api/usage \
  -H "x-api-key: YOUR_API_KEY"
response
{
  "api_key": "ri_live_xxxx...",
  "email": "you@example.com",
  "plan": "free",
  "credits_remaining": 72,
  "credits_total": 100,
  "requests_today": 3,
  "requests_total": 28,
  "usage_history": [{
    "endpoint": "/regulations",
    "credits_used": 1,
    "status_code": 200,
    "timestamp": "2026-04-13T10:22:00Z"
  }]
}

Account Management

POST/create-checkout-session

Creates a Stripe Checkout session for upgrading a plan. Requires authentication. Returns a redirect URL.

ℹ️  

This endpoint is used internally by the RegIntel Dashboard. Most developers do not need to call it directly — upgrades are handled through the dashboard UI.

Body ParameterTypeRequiredDescription
price_idstringrequiredStripe Price ID for the target plan
bash
curl -X POST https://api.regintelapi.com/create-checkout-session \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"price_id": "price_XXXX"}'
response
{
  "url": "https://checkout.stripe.com/pay/cs_live_..."
}

Redirect the user to url to complete payment. On success, Stripe redirects back to dashboard.html?payment=success.

Rate Limits

Requests are rate-limited per API key. Limits reset every 60 seconds. When exceeded, you receive a 429 Too Many Requests response — check the Retry-After header.

60 req/minFree plan
120 req/minStarter plan
300 req/minPro plan

Error Codes

RegIntel uses standard HTTP status codes. All error responses include a message field.

StatusMeaning
200OK — request succeeded
400Bad Request — invalid parameters
401Unauthorized — x-api-key header missing
402Payment Required — valid key but credit balance is zero. Body returns error: "insufficient_credits" and a top-up URL.
403Forbidden — x-api-key header present but key is invalid or revoked
404Not Found — resource does not exist
429Too Many Requests — rate limit exceeded
500Server Error — something went wrong on our end
error response
{
  "error": "unauthorized",
  "message": "Invalid or missing API key.",
  "status": 401
}

Credits & Billing

Every successful API call deducts 1 credit. Requests that return 4xx/5xx errors do not consume credits.

Credit balances are returned in every response under meta.credits_remaining. Credits do not expire on paid plans.

To upgrade, visit the dashboard or the pricing page.

💡   Need high-volume access? Email support@regintelapi.com for enterprise pricing.

Frequently asked questions

Common integration questions.

How do I authenticate with the RegIntel API?

Pass your API key in the x-api-key HTTP header on every request. Keys are issued via the free signup at /get-key.html — 100 credits, no expiry, no credit card required.

Do failed requests consume credits?

No. Every successful API call deducts 1 credit; requests that return 4xx or 5xx status codes do not consume credits. Every response includes credits_remaining in the body so you always know your balance.

What rate limits apply per plan?

Limits are per API key and reset every 60 seconds — 60 req/min on Free, 120 req/min on Starter, 300 req/min on Pro. Exceeding the limit returns 429 Too Many Requests with a Retry-After header.

How do I keep a downstream cache or vector store in sync?

Call GET /updates?since=<date> to fetch only the regulations modified after a given date. Re-process only the deltas instead of re-ingesting the entire catalog — efficient for vector stores, search indexes, and compliance caches.