API Reference

Compliance data API
for AI agents

2,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

All endpoints require an API key passed as a Bearer token in the Authorization header. API access is free during beta.

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. All endpoints require an API key. Free during beta.

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
}
Endpoints API key required · Free during beta
GET /api/v1/obligations

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

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

Get a single obligation by slug. Returns full obligation details including the 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

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

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

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"
}
POST /api/v1/match

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

MCP Server

The Compliance Singularity MCP server lets Claude Desktop and any MCP-compatible agent call compliance tools natively — no REST wrapper needed. It speaks JSON-RPC 2.0 over a single HTTP endpoint.

MCP endpoint: POST https://compliancesingularity.com/mcp
Discovery: GET /.well-known/mcp.json

Claude Desktop setup

Add this block to your claude_desktop_config.json (replace the token with one from Settings → Agent Tokens):

claude_desktop_config.json
{
  "mcpServers": {
    "compliance-singularity": {
      "type": "http",
      "url": "https://compliancesingularity.com/mcp",
      "headers": { "Authorization": "Bearer csa_YOUR_TOKEN_HERE" }
    }
  }
}

Agent tokens

Public tools work without any credentials. To access org-scoped tools (your live compliance list, filing automation), create an agent token with a csa_ prefix from Settings → Agent Tokens. Tokens support granular scopes:

ScopeGrants access to
read:obligationsGet org's compliance list, filing status
write:obligationsCreate or update compliance items
file:filingsInitiate automated filings
read:companyRead company profile data
write:companyUpdate company profile

Available tools

ToolAuth requiredDescription
check_obligationsNoneMatch a company profile to applicable obligations
search_catalogNoneFull-text search over 2,500+ catalog items
get_obligation_detailNoneFull details for one obligation by slug
list_upcoming_deadlinesNoneObligations with deadlines in the next N days
submit_regulationNonePropose a regulation for catalog inclusion
get_company_obligationsread:obligationsLive compliance list for your organization
initiate_filingfile:filingsTrigger automated filing for a compliance item
get_filing_statusread:obligationsStatus of a previously initiated filing

Raw JSON-RPC example

You can also call the MCP endpoint directly without a client library:

List tools
curl -X POST https://compliancesingularity.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
Call check_obligations
curl -X POST https://compliancesingularity.com/mcp \
  -H "Content-Type: application/json" \
  -d '{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "check_obligations",
    "arguments": {
      "company_profile": {
        "country": "US",
        "state": "Delaware",
        "entity_type": "c_corp",
        "employee_count": 45,
        "employee_states": ["California", "New York"]
      }
    }
  }
}'
Python (requests)
import requests

BASE = "https://compliancesingularity.com/mcp"
HEADERS = {
    "Content-Type": "application/json",
    "Authorization": "Bearer csa_YOUR_TOKEN_HERE",
}

resp = requests.post(BASE, headers=HEADERS, json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get_company_obligations",
        "arguments": {},
    },
})
data = resp.json()
print(data["result"]["content"][0]["text"])

API Explorer

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

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