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.

Core Endpoints

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. gdpr-2018).

example
curl https://api.regintelapi.com/regulations/gdpr-2018 \
  -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"

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 — missing or invalid API key
403Forbidden — valid key but out of credits
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.