API reference
Base URL: https://commonelements.com/api/v1
Authentication
All API requests must include an Authorization header with a bearer token. Generate an API key from your account settings.
Authorization: Bearer ce_live_your_key_hereKeys are prefixed with ce_live_ for production and ce_test_ for sandbox environments. Never expose keys in client-side code or commit them to version control.
Rate limits
Limits are enforced per API key on a rolling monthly window. When you exceed your limit, requests return 429 Too Many Requests until the window resets.
| Tier | Requests/month | Max requests/second |
|---|---|---|
| Free | 100 | 2 |
| Builder | 2,500 | 10 |
| Growth | 15,000 | 30 |
| Enterprise | Unlimited | Custom |
Response headers include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset (Unix timestamp) on every response.
Endpoints
POST/api/v1/compliance/scan
Submit a community association document for automated compliance analysis. Returns a structured assessment against Florida and multi-state statutory requirements, plus best-practice governance rules.
Request body
| Parameter | Type | Description |
|---|---|---|
| text* | string | The full text of the governing document to analyze. |
| state* | string | Two-letter state code (e.g. "FL", "GA"). |
| doc_type | string | Optional. One of: "cc_rs", "bylaws", "rules_regs", "budget". |
Example request
curl -X POST https://commonelements.com/api/v1/compliance/scan \
-H "Authorization: Bearer ce_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"text": "Article I. Name. The name of this Association...",
"state": "FL",
"doc_type": "cc_rs"
}'Example response
{
"scan_id": "scan_01JZB...",
"health_score": 74,
"rules_checked": 13,
"rules_passed": 9,
"rules_failed": 4,
"findings": [
{
"rule_id": "FL_720_reserve_study",
"status": "fail",
"severity": "high",
"summary": "No reserve study provision found in CC&Rs.",
"citation": "F.S. 720.303(6)"
}
],
"created_at": "2026-06-14T12:00:00Z"
}GET/api/v1/associations/lookup
Search for community associations by address, name, or registration number. Returns a list of matching records with basic contact and governance information.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| q | string | Free-text name or address search. |
| state | string | Two-letter state filter, e.g. "FL". |
| registration_number | string | State registration or DBPR number. |
| limit | number | Max results to return (default 20, max 100). |
| offset | number | Pagination offset (default 0). |
Example request
curl "https://commonelements.com/api/v1/associations/lookup?q=Pelican+Bay&state=FL" \
-H "Authorization: Bearer ce_live_your_key_here"Example response
{
"total": 3,
"results": [
{
"id": "org_01JZA...",
"name": "Pelican Bay Community Association",
"org_type": "association",
"state": "FL",
"county": "Collier",
"registration_number": "HOA-FL-20041102",
"verification_status": "verified",
"unit_count": 742
}
]
}GET/api/v1/associations/{id}/risk
Retrieve flood zone, reserve-study health, and geographic risk signals for a specific association. Useful for underwriting, due diligence, and loan origination workflows.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| id* | string | Association ID from the lookup endpoint. |
Example request
curl "https://commonelements.com/api/v1/associations/org_01JZA.../risk" \
-H "Authorization: Bearer ce_live_your_key_here"Example response
{
"association_id": "org_01JZA...",
"flood_zone": "AE",
"fema_firm_panel": "12021C0454H",
"reserve_health": {
"funded_percent": 62,
"study_year": 2023,
"next_study_due": 2028
},
"risk_signals": [
{ "type": "coastal_proximity", "value": "0.8mi", "severity": "medium" }
],
"data_as_of": "2026-01-15"
}Error codes
All errors follow a consistent JSON envelope with a machine-readable code and a human-readable message.
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Monthly request limit reached. Resets 2026-07-01T00:00:00Z.",
"status": 429
}
}| HTTP status | Code | Description |
|---|---|---|
| 400 | INVALID_REQUEST | Missing or malformed request body or parameters. |
| 401 | UNAUTHORIZED | Missing or invalid Authorization header. |
| 403 | FORBIDDEN | Valid key but insufficient tier for this endpoint. |
| 404 | NOT_FOUND | The requested resource does not exist. |
| 422 | UNPROCESSABLE | Request is valid but the document could not be processed. |
| 429 | RATE_LIMIT_EXCEEDED | Monthly or per-second rate limit reached. |
| 500 | INTERNAL_ERROR | Unexpected server error. Retry with exponential backoff. |
| 503 | SERVICE_UNAVAILABLE | Temporary outage. Check status.commonelements.com. |
MCP integration
Common Elements exposes an MCP (Model Context Protocol) server that lets AI agents — including Claude — call the API directly as tools without writing HTTP client code.
{
"mcpServers": {
"common-elements": {
"command": "npx",
"args": ["-y", "@common-elements/mcp"],
"env": {
"CE_API_KEY": "ce_live_your_key_here"
}
}
}
}Once connected, your agent can call tools like compliance_scan and association_lookup conversationally, with structured responses automatically parsed. MCP server documentation and changelog live at commonelements.com/developers/mcp.
Ready to integrate?
Generate a free API key from your account settings and start building.
Get your API key