Sync layer
Bulk export
Data LiveAPI PlannedFull-graph snapshots as CSV or Parquet for warehouse loads and offline analysis, requested on demand or delivered on a schedule.
Requesting an export
{
"format": "parquet",
"tables": ["candidacies", "contests", "offices", "provenance"],
"filters": { "states": ["AZ", "KS", "MO"], "min_confidence": 0.6 }
}{ "id": "exp_01K2Q8…", "status": "building", "poll": "/v1/exports/exp_01K2Q8…" }Poll until the status reads ready, then download from the signed URLs, which last an hour and can be reissued at any time. Parquet output is compressed and carries the statistics that let a reader skip whole blocks it does not need, and geometry ships in both a binary spatial column and a GeoJSON column for tools without a spatial type.
Tables
| Table | Grain |
|---|---|
candidacies | One row per person per contest |
people | One row per person, deduplicated across cycles |
offices | One row per elected position |
contests | One row per office per election |
regions | One row per jurisdiction, with geometry |
authorities | One row per governing or administering body |
results | One row per candidacy per contest |
aliases | Alternate names and identifiers, for joining |
provenance | One row per asserted field value, with its source |
edges | Typed relationships, for rebuilding the graph locally |
Contact columns appear only when your key carries the contact entitlement.
Snapshots are reproducible. Every export records the graph version it was cut from and each file carries a checksum, so requesting that version again later returns byte-identical files, which matters when reconciling a model trained on last quarter's data.