Civic Translator API

Explore Civic Translator's public discovery endpoints or request an API key for full, structured meeting and packet summary access.

Quick Start

  1. Explore the public endpoints without an API key.
  2. Review the OpenAPI specification or test requests in the interactive explorer.
  3. Contact Civic Translator for an API key when you need full summaries or protected data access.
curl "https://civic-translator.org/api/v1"

curl "https://civic-translator.org/api/v1/cities?state=iowa"

curl "https://civic-translator.org/api/v1/public-bodies?latitude=41.688319&longitude=-93.791061&radiusMiles=10"

curl "https://civic-translator.org/api/v1/summaries-preview?state=iowa&limit=5"

curl "https://65xguylj8b.execute-api.us-east-1.amazonaws.com/infographics/recent?state=iowa&governmentBody=school-boards&limit=6"

Public vs. Protected Endpoints

EndpointAccessPurpose
GET /api/v1PublicAPI metadata and links.
GET /api/v1/healthPublicService health and version.
GET /api/v1/openapi.jsonPublicMachine-readable API contract.
GET /api/v1/citiesPublicAvailable cities and their geographic coordinates.
GET /api/v1/public-bodiesPublicCovered jurisdictions and public-body metadata.
GET /api/v1/summaries-previewPublicLimited descriptions, topics, and public links.
GET /infographics/recentPublicRecent published infographic records for internal linking and discovery.
GET /api/v1/summariesAPI KeyFull structured summary listing.
GET /api/v1/summaries/{...}API KeyDetailed summary with full text.

Base URL

https://civic-translator.org/api/v1

Authentication

Protected endpoints require an API key in the x-api-key request header.

export CIVIC_API_KEY="YOUR_API_KEY"

curl \
  -H "x-api-key: $CIVIC_API_KEY" \
  "https://civic-translator.org/api/v1/summaries?state=iowa&limit=10"

Never place API keys in URLs, browser JavaScript, public repositories, screenshots, or client-side bundles.

Contact Civic Translator to request an API key. Include your organization, intended use, expected request volume, and the data you need.

Endpoints

API InformationPublic

GET /api/v1

HealthPublic

GET /api/v1/health

CitiesPublic

GET /api/v1/cities
GET /api/v1/cities?state=iowa
GET /api/v1/cities?state=iowa&q=grimes

Returns distinct cities represented by covered jurisdictions. Each item includes the city, state, latitude, and longitude needed for nearby searches.

Supported filters: state and q.

Public BodiesPublic

GET /api/v1/public-bodies
GET /api/v1/public-bodies?state=iowa
GET /api/v1/public-bodies?state=iowa&governmentBody=school-boards
GET /api/v1/public-bodies?q=algona
GET /api/v1/public-bodies?latitude=41.688319&longitude=-93.791061&radiusMiles=10

Supported filters: state, governmentBody, q, latitude, longitude, and radiusMiles. Latitude and longitude must be supplied together. Radius defaults to 10 miles when coordinates are provided.

Summary PreviewsPublic

GET /api/v1/summaries-preview
GET /api/v1/summaries-preview?state=iowa&limit=10
GET /api/v1/summaries-preview?q=construction
GET /api/v1/summaries-preview?topic=facilities-construction
GET /api/v1/summaries-preview?summaryType=packet-summary
GET /api/v1/summaries-preview?latitude=41.688319&longitude=-93.791061&radiusMiles=10

This public endpoint returns limited descriptions, inferred topics, image URLs, and public page URLs. It does not return full Markdown summaries or internal storage keys.

Supported filters: state, governmentBody, publicBody, summaryType, topic, q, latitude, longitude, radiusMiles, and limit. The public maximum is 25.

Radius searches return summaries associated with public bodies whose stored geographic point is within the requested distance.

Recent InfographicsPublic

GET /infographics/recent
GET /infographics/recent?state=iowa&limit=6
GET /infographics/recent?state=nebraska&governmentBody=school-boards&limit=6
GET /infographics/recent?state=colorado&governmentBody=school-boards&publicBody=denver-public-schools&limit=10
GET /infographics/recent?state=colorado&governmentBody=school-boards&publicBody=denver-public-schools&excludeSlug=colorado-school-boards-denver-public-schools-2026-06-22-diligent-community-1437-packet-summary&limit=6

Returns recent published infographic records ordered newest first. This endpoint powers related-content sections such as recent summaries across a state, more summaries from the same public body, and previous/next internal navigation.

Supported filters: state, governmentBody, publicBody, excludeSlug, and limit. The default limit is 12 and the maximum is 50.

The response includes fields such as id, state, governmentBody, publicBody, slug, displayTitle, meetingDate, meetingId, summaryType, s3Key, and timestamps.

List SummariesAPI Key Required

GET /api/v1/summaries
GET /api/v1/summaries?state=iowa
GET /api/v1/summaries?state=iowa&governmentBody=school-boards
GET /api/v1/summaries?publicBody=adel
GET /api/v1/summaries?summaryType=packet-summary&limit=25

Detailed SummaryAPI Key Required

GET /api/v1/summaries/{state}/{governmentBody}/{publicBody}/{meetingDate}/{summaryType}
curl \
  -H "x-api-key: $CIVIC_API_KEY" \
  "https://civic-translator.org/api/v1/summaries/iowa/school-boards/adel/2026-07-13/packet-summary"

Example Preview Response

{
  "data": [
    {
      "state": "iowa",
      "governmentBody": "school-boards",
      "publicBody": "clearcreekamana",
      "displayName": "Clear Creek Amana Community School District",
      "meetingDate": "2026-07-15",
      "summaryType": "packet-summary",
      "title": "Clear Creek Amana Community School District — School Board Meeting — Packet Summary — July 15, 2026",
      "description": "The July 15, 2026 board meeting combines routine annual governance work with several significant spending decisions...",
      "topics": [
        {
          "slug": "facilities-construction",
          "label": "Facilities & Construction"
        }
      ],
      "imageUrl": "https://civic-translator.org/api/infographics/image?key=...",
      "pageUrl": "https://civic-translator.org/iowa/school-boards/clearcreekamana/..."
    }
  ],
  "meta": {
    "count": 1,
    "maxLimit": 25,
    "access": "public-preview",
    "fullTextRequiresApiKey": true
  }
}

Errors

Missing API Key

{
  "error": {
    "code": "api_key_required",
    "message": "An x-api-key header is required."
  }
}

Summary Not Found

{
  "error": {
    "code": "summary_not_found",
    "message": "The requested summary was not found."
  }
}

Common status codes include 200, 400, 401, 404, 429, and 500.

Using Civic Translator with AI Applications

Public discovery endpoints may be used by search tools, assistants, and research systems to identify covered public bodies and available meeting summaries. Full summary integrations, retrieval-augmented generation systems, and higher-volume applications should request an API key.

Developers should retain attribution to Civic Translator and the originating public body. Official public-body records remain the authoritative source.

What You Can Build

See practical examples for newsroom research, policy tracking, public spending alerts, academic research, civic chatbots, monitoring dashboards, and statewide meeting comparisons.

Developer Resources

Civic Translator API Documentation | Civic Translator