Public API
Developers and journalists migrating from OpenSecrets or ProPublica APIs can use this static
reference to find Civibus's nonpartisan, source-linked federal public-record endpoints.
FastAPI router owner: /public/v1; Caddy public URL prefix: /api/public/v1.
Endpoint reference
GET /api/public/v1/federal/officials
Parameters: chamber, state, party.
Curl
: "${CIVIBUS_PUBLIC_API_BASE:?Set CIVIBUS_PUBLIC_API_BASE to a Civibus origin that serves /api}" && curl "${CIVIBUS_PUBLIC_API_BASE}/api/public/v1/federal/officials?state=NC&chamber=House"
Sample JSON
[
{
"person_id": "11111111-1111-1111-1111-111111111111",
"person_name": "Sample Official",
"officeholding_id": "22222222-2222-2222-2222-222222222222",
"office_id": "33333333-3333-3333-3333-333333333333",
"office_name": "U.S. House NC-01",
"chamber": "House",
"state": "NC",
"district": "01",
"district_or_class": "01",
"party": "Independent",
"portrait_source_image_url": "https://www.congress.gov/img/member/sample.jpg",
"person_detail_path": "/person/11111111-1111-1111-1111-111111111111"
}
]
GET /api/public/v1/federal/officials/{person_id}/money
Parameters: none beyond person_id in the path.
Curl
: "${CIVIBUS_PUBLIC_API_BASE:?Set CIVIBUS_PUBLIC_API_BASE to a Civibus origin that serves /api}" && curl "${CIVIBUS_PUBLIC_API_BASE}/api/public/v1/federal/officials/11111111-1111-1111-1111-111111111111/money"
Sample JSON
{
"person_id": "11111111-1111-1111-1111-111111111111",
"person_name": "Sample Official",
"has_fec_money": true,
"candidate_id": "44444444-4444-4444-4444-444444444444",
"total_raised": "125000.00",
"total_spent": "100000.00",
"net": "25000.00",
"cash_on_hand": "45000.00",
"summary_source": "fec_weball",
"ie_support_total": "5000.00",
"ie_oppose_total": "0.00",
"ie_support_count": 2,
"ie_oppose_count": 0,
"sources": [
{
"domain": "campaign_finance",
"jurisdiction": "federal",
"data_source_name": "FEC candidate master",
"data_source_url": "https://www.fec.gov/data/browse-data/?tab=candidates",
"source_record_key": "H4NC00000",
"record_url": "https://www.fec.gov/data/candidate/H4NC00000/",
"pull_date": "2026-07-10T00:00:00Z"
}
]
}
GET /api/public/v1/federal/export.json
Parameters: none.
Curl
: "${CIVIBUS_PUBLIC_API_BASE:?Set CIVIBUS_PUBLIC_API_BASE to a Civibus origin that serves /api}" && curl "${CIVIBUS_PUBLIC_API_BASE}/api/public/v1/federal/export.json"
Sample JSON
[
{
"person_id": "11111111-1111-1111-1111-111111111111",
"person_name": "Sample Official",
"has_fec_money": true,
"candidate_id": "44444444-4444-4444-4444-444444444444",
"total_raised": "125000.00",
"total_spent": "100000.00",
"net": "25000.00",
"cash_on_hand": "45000.00",
"summary_source": "fec_weball",
"ie_support_total": "5000.00",
"ie_oppose_total": "0.00",
"ie_support_count": 2,
"ie_oppose_count": 0,
"sources": [
{
"domain": "campaign_finance",
"jurisdiction": "federal",
"data_source_name": "FEC candidate master",
"data_source_url": "https://www.fec.gov/data/browse-data/?tab=candidates",
"source_record_key": "H4NC00000",
"record_url": "https://www.fec.gov/data/candidate/H4NC00000/",
"pull_date": "2026-07-10T00:00:00Z"
}
]
}
]
GET /api/public/v1/federal/export.csv
Parameters: none.
Curl
: "${CIVIBUS_PUBLIC_API_BASE:?Set CIVIBUS_PUBLIC_API_BASE to a Civibus origin that serves /api}" && curl -L "${CIVIBUS_PUBLIC_API_BASE}/api/public/v1/federal/export.csv" -o civibus_federal_money.csv
Sample CSV
person_id,person_name,has_fec_money,candidate_id,total_raised,total_spent,net,cash_on_hand,summary_source,ie_support_total,ie_oppose_total,ie_support_count,ie_oppose_count,source_urls
11111111-1111-1111-1111-111111111111,Sample Official,true,44444444-4444-4444-4444-444444444444,125000.00,100000.00,25000.00,45000.00,fec_weball,5000.00,0.00,2,0,https://www.fec.gov/data/candidate/H4NC00000/
CSV columns
person_idperson_namehas_fec_moneycandidate_idtotal_raisedtotal_spentnetcash_on_handsummary_sourceie_support_totalie_oppose_totalie_support_countie_oppose_countsource_urls
OpenSecrets and ProPublica migration mapping
| Need | Civibus endpoint |
|---|
| Federal official directory | GET /api/public/v1/federal/officials |
| Current federal member money summary | GET /api/public/v1/federal/officials/{person_id}/money |
| Bulk federal money export | GET /api/public/v1/federal/export.json |
| Spreadsheet-friendly federal money export | GET /api/public/v1/federal/export.csv |
Reference links
Rate limits and cache
Public API requests are rate limited. Public responses use Cache-Control: public, max-age=900.
Report a data issue