API Reference

Compliance data API
for AI agents

500+ verified compliance obligations with legal citations, deadlines, and penalties. Match obligations to any company profile in a single API call.

Base URL https://compliancesingularity.com/api/v1

Authentication

Free endpoints require no authentication. Paid endpoints require an API key passed as a Bearer token in the Authorization header.

Authorization Header
Authorization: Bearer cs_live_your_api_key_here

API keys are prefixed with cs_live_ for production and cs_test_ for sandbox. Create keys from your account dashboard or via the Create API Key endpoint.

Quick Start

1

Get your API key

Sign up for a free account and generate an API key from the Settings page. The free tier includes 100 calls per day.

2

Make your first call

List all compliance obligations or search by jurisdiction:

cURL
curl https://compliancesingularity.com/api/v1/obligations \
  -G \
  -d jurisdiction=California \
  -d category=Tax \
  -d limit=5
Python
import requests

resp = requests.get(
    "https://compliancesingularity.com/api/v1/obligations",
    params={
        "jurisdiction": "California",
        "category": "Tax",
        "limit": 5
    }
)
data = resp.json()
print(f"Found {data['total']} obligations")
JavaScript
const params = new URLSearchParams({
    jurisdiction: "California",
    category: "Tax",
    limit: 5
});

const resp = await fetch(
    `https://compliancesingularity.com/api/v1/obligations?${params}`
);
const data = await resp.json();
console.log(`Found ${data.total} obligations`);
3

Parse the response

Every response returns a consistent JSON envelope:

Response
{
  "obligations": [
    {
      "slug": "ca-employer-payroll-tax-registration",
      "title": "California Employer Payroll Tax Registration (DE-1)",
      "category": "Tax",
      "jurisdiction": "California",
      "jurisdiction_level": "state",
      "legal_citation": "Cal. Unemp. Ins. Code \u00a7 1088",
      "penalty": "$50/day late filing penalty",
      "recurrence": "once",
      "description": "Register with the CA EDD within 15 days of paying $100+ in wages..."
    }
  ],
  "total": 43,
  "page": 1,
  "limit": 5,
  "has_more": true
}
Free Endpoints No API key required
GET /api/v1/obligations Free

List and filter compliance obligations from the global catalog. Supports pagination, jurisdiction filtering, category filtering, and more.

Query Parameters

jurisdictionstring
Filter by jurisdiction name (e.g. "California", "United Kingdom")
jurisdiction_levelstring
Filter by level: federal, state, city, country
categorystring
Filter by category: Tax, Legal, HR, Benefits, Security
entity_typestring
Filter by entity type: c_corp, llc, s_corp, etc.
industrystring
Filter by industry or NAICS prefix
pageinteger1
Page number for pagination
limitinteger25
Items per page (max 100)
Request
curl https://compliancesingularity.com/api/v1/obligations \
  -G \
  -d jurisdiction=Delaware \
  -d category=Legal
Request
import requests

resp = requests.get(
    "https://compliancesingularity.com/api/v1/obligations",
    params={"jurisdiction": "Delaware", "category": "Legal"}
)
print(resp.json())
Response 200 OK
{
  "obligations": [
    {
      "slug": "de-annual-franchise-tax",
      "title": "Delaware Annual Franchise Tax Filing",
      "category": "Legal",
      "jurisdiction": "Delaware",
      "jurisdiction_level": "state",
      "recurrence": "annual",
      "legal_citation": "8 Del. C. \u00a7 502",
      "penalty": "$200 penalty + 1.5%/month interest",
      "description": "All domestic corporations must file an annual report and pay franchise tax by March 1..."
    }
  ],
  "total": 8,
  "page": 1,
  "limit": 25,
  "has_more": false
}
GET /api/v1/obligations/search Free

Full-text search across obligation titles, descriptions, and legal citations.

Query Parameters

qstringrequired
Search query (e.g. "payroll tax", "COBRA", "annual report")
limitinteger25
Max results to return (max 100)
Request
curl "https://compliancesingularity.com/api/v1/obligations/search?q=COBRA"
GET /api/v1/obligations/:slug Free + Rules with key

Get a single obligation by slug. Without an API key, returns the obligation without applicability rules. With a valid API key, includes the full applicability_rules object.

Path Parameters

slugstringrequired
The obligation slug (e.g. ca-employer-payroll-tax-registration)
Response (authenticated) 200 OK
{
  "slug": "federal-form-941",
  "title": "IRS Form 941 — Quarterly Payroll Tax Return",
  "category": "Tax",
  "jurisdiction": "Federal",
  "recurrence": "quarterly",
  "legal_citation": "26 USC \u00a7 3111, 26 CFR 31.6011(a)-1",
  "penalty": "5% of unpaid tax per month, max 25%",
  "description": "Quarterly filing of employment taxes...",
  "applicability_rules": {
    "country": "US",
    "entity_type": ["c_corp", "s_corp", "llc"],
    "has_employees": true,
    "employee_count_min": 1
  }
}
GET /api/v1/deadlines Free

Get recurring obligations with their next deadline dates, grouped by jurisdiction. Useful for building compliance calendars.

Query Parameters

jurisdictionstring
Filter by jurisdiction
months_aheadinteger3
How many months ahead to show deadlines (max 12)
Request
curl "https://compliancesingularity.com/api/v1/deadlines?jurisdiction=Federal&months_ahead=6"
Response 200 OK
{
  "deadlines": [
    {
      "slug": "federal-form-941",
      "title": "IRS Form 941",
      "recurrence": "quarterly",
      "next_deadline": "2026-04-30",
      "jurisdiction": "Federal"
    }
  ],
  "total": 12
}
GET /api/v1/jurisdictions Free

List all jurisdictions in the catalog with obligation counts per category.

Response 200 OK
{
  "jurisdictions": [
    {
      "name": "California",
      "level": "state",
      "country": "US",
      "obligation_count": 43,
      "categories": {"Tax": 12, "HR": 18, "Legal": 8, "Benefits": 5}
    }
  ],
  "total": 64
}
GET /api/v1/coverage Free

Get the current catalog coverage score -- how comprehensive the obligation database is across jurisdictions and categories.

Response 200 OK
{
  "total_obligations": 521,
  "jurisdictions_covered": 64,
  "categories": {
    "Tax": 156,
    "Legal": 134,
    "HR": 112,
    "Benefits": 78,
    "Security": 41
  },
  "last_updated": "2026-03-26T04:00:00Z"
}
Paid Endpoints API key required
POST /api/v1/match Paid

The primary endpoint. Send a company profile and receive all applicable compliance obligations. This is the endpoint AI agents should call to determine what a company needs to comply with.

Request Body

countrystringrequired
Primary country of incorporation (ISO 3166-1 alpha-2, e.g. "US")
entity_typestringrequired
Business entity type: c_corp, s_corp, llc, sole_prop, partnership, nonprofit
statestring
State of incorporation (US companies)
employee_countinteger
Total employee count (triggers ACA, FMLA, EEO thresholds)
employee_statesstring[]
States where employees work (triggers state-specific obligations)
industrystring
Industry name or NAICS code for industry-specific obligations
has_1099_contractorsboolean
Whether the company uses independent contractors
is_government_contractorboolean
Federal government contractor (triggers OFCCP, FAR, etc.)
sales_tax_nexusstring[]
States where company has sales tax nexus
Request
curl -X POST https://compliancesingularity.com/api/v1/match \
  -H "Authorization: Bearer cs_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "country": "US",
    "entity_type": "c_corp",
    "state": "Delaware",
    "employee_count": 45,
    "employee_states": ["California", "New York", "Texas"],
    "industry": "SaaS",
    "has_1099_contractors": true
  }'
Request
import requests

resp = requests.post(
    "https://compliancesingularity.com/api/v1/match",
    headers={"Authorization": "Bearer cs_live_your_key"},
    json={
        "country": "US",
        "entity_type": "c_corp",
        "state": "Delaware",
        "employee_count": 45,
        "employee_states": ["California", "New York", "Texas"],
        "industry": "SaaS",
        "has_1099_contractors": True
    }
)
obligations = resp.json()["obligations"]
print(f"Company has {len(obligations)} obligations")
Response 200 OK
{
  "obligations": [
    {
      "slug": "federal-form-941",
      "title": "IRS Form 941 \u2014 Quarterly Payroll Tax Return",
      "category": "Tax",
      "jurisdiction": "Federal",
      "recurrence": "quarterly",
      "match_reason": "US C-Corp with 45 employees",
      "applicability_rules": { /* ... */ }
    },
    {
      "slug": "ca-employer-payroll-tax-registration",
      "title": "California Employer Payroll Tax Registration",
      "category": "Tax",
      "jurisdiction": "California",
      "recurrence": "once",
      "match_reason": "Employees in California",
      "applicability_rules": { /* ... */ }
    }
  ],
  "total": 87,
  "profile_summary": {
    "entity_type": "c_corp",
    "jurisdictions_matched": 5,
    "categories": {"Tax": 28, "Legal": 22, "HR": 19, "Benefits": 12, "Security": 6}
  }
}
POST /api/v1/keys Login Required

Create a new API key. Requires an active platform login session (cookie-based auth, not Bearer token). The key is shown once in the response and cannot be retrieved again.

Request Body

namestringrequired
A label for this key (e.g. "Production", "Development")
Response 201 Created
{
  "key": "cs_live_a1b2c3d4e5f6...",
  "name": "Production",
  "created_at": "2026-03-26T12:00:00Z",
  "message": "Store this key securely. It will not be shown again."
}

Error Handling

The API uses standard HTTP status codes. Error responses include a JSON body with a message field.

400
Bad Request -- Invalid parameters or malformed JSON body
401
Unauthorized -- Missing or invalid API key
404
Not Found -- Obligation slug does not exist
429
Rate Limited -- Too many requests. Check Retry-After header
500
Server Error -- Something went wrong on our end
Error Response Example
{
  "error": "rate_limited",
  "message": "Rate limit exceeded. 100 calls/day on Community plan.",
  "retry_after": 3600
}

Rate Limits

Rate limits are enforced per API key (or per IP for unauthenticated requests). Current usage is returned in response headers:

Rate Limit Headers
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9847
X-RateLimit-Reset: 1711497600

API Explorer

Make live API calls directly from the docs. Responses are shown below.

Response
Click "Send" to make a request...