API · v1.0
CivicLens REST API
Complete reference for the CivicLens platform. All endpoints are JSON, authenticated via bearer tokens, and rate-limited at 600 req/min per organization.
Base URL
https://api.civiclens.app/v1Authentication
Authorization: Bearer cl_live_••••••••••••••••
Entities
GET
/v1/entitiesList entities by state + ZIPGET
/v1/entities/:idGet entity detailGET
/v1/lookupGeographic lookup (state + zip → entities)Findings
GET
/v1/findingsList findings (filters: category, severity, entity)GET
/v1/findings/:idGet finding detail with countsPOST
/v1/findingsCreate finding (admin only)PATCH
/v1/findings/:idUpdate finding status / fieldsDELETE
/v1/findings/:idDelete finding (admin only)Actions
POST
/v1/actionsLog a user engagement action (level 1–6)GET
/v1/actions/meCurrent user's action historyGET
/v1/actions/templatesList active action templatesUsers
GET
/v1/meCurrent user profilePATCH
/v1/meUpdate profile (state, zip, interests)GET
/v1/me/progressLevel, points, next thresholdAdmin
GET
/v1/admin/usersList users (participants & observers)POST
/v1/admin/templatesCreate action templatePATCH
/v1/admin/levels/:idUpdate engagement level thresholdGET
/v1/admin/schema/versionsList schema migrationsExample: log an action
POST /v1/actions
Authorization: Bearer cl_live_••••••••
Content-Type: application/json
{
"finding_id": "fd_8e2b1c",
"level": 3,
"payload": { "comment": "I support reallocating funds..." }
}
200 OK
{
"id": "act_71fa9c",
"user_id": "usr_jr1001",
"finding_id": "fd_8e2b1c",
"level": 3,
"points_awarded": 75,
"total_points": 1315,
"new_level": 3,
"created_at": "2026-05-17T14:22:08Z"
}Errors
401
Unauthorized — missing or invalid bearer token403
Forbidden — admin scope required404
Not Found — resource does not exist409
Conflict — duplicate action for level422
Unprocessable — validation failed429
Rate limited — slow down