Export cell scores, score history, and validation data from Locus as CSV or JSON. You can run a one-off export or schedule recurring deliveries on a daily, weekly, or monthly cadence.
On-demand export
GET /api/v1/locus/exports
Requires API key. Export must be enabled on your access tier.
Download scoring data as CSV or JSON. Supports filtering by H3 cell, profile, metro area, date range, and portfolio.
Parameters
| Name | Type | Required | Description |
|---|
table | string | | cell_scores (default), cell_score_history, or locus_validation_view. |
format | string | | csv (default) or json. |
profile | string | | Scoring profile filter (e.g. general, qsr). |
h3_index | string | | Single H3 cell id filter. |
metro_slug | string | | Metro area filter (only for cell_scores). |
since | string | | Start date (ISO format). |
until | string | | End date (ISO format). |
portfolio_id | string | | Scope export to locations in a specific portfolio. |
asset_class | string | | Scope export to locations in portfolios matching this asset class. |
limit | number | | Max rows (default 1,000, capped by your tier). |
offset | number | | Row offset for pagination. |
Available tables
| Table | Description | Key columns |
|---|
cell_scores | Latest composite and signal group scores per cell. | h3_index, profile, composite, signal groups, metro_slug, neighborhood, computed_at |
cell_score_history | Historical score snapshots with deltas and change flags. | h3_index, profile, scored_at, composite, delta_composite, change_flags |
locus_validation_view | Model validation metrics — predicted vs. observed values. | h3_index, metric_type, temporal_period, value_normalized, predicted_score, residual_error |
Example — CSV download
curl -H "X-API-Key: YOUR_KEY" \
"https://axiomlocus.io/api/v1/locus/exports?table=cell_scores&metro_slug=sf&format=csv" \
-o scores.csv
Example — JSON with portfolio scope
curl -H "X-API-Key: YOUR_KEY" \
"https://axiomlocus.io/api/v1/locus/exports?table=cell_scores&portfolio_id=p_abc123&format=json"
JSON response
{
"table": "cell_scores",
"rows": [
{
"h3_index": "882a100d63fffff",
"profile": "general",
"composite": 78.4,
"business_vitality": 82,
"population_momentum": 71,
"demographics": 80,
"economic_strength": 74,
"development_pipeline": 78,
"accessibility": 69,
"safety_environment": 65,
"amenity_demand": 72,
"metro_slug": "sf",
"neighborhood": "Financial District",
"computed_at": "2026-04-19T06:00:00Z"
}
],
"count": 1,
"tier": "pro",
"pagination": {
"limit": 1000,
"has_more": false,
"next_cursor": null
}
}
CSV response includes pagination headers:
| Header | Description |
|---|
X-Pagination-Limit | Current page size. |
X-Pagination-Has-More | true or false. |
X-Pagination-Next-Cursor | Offset for the next page, or empty if no more rows. |
Scheduled delivery
POST /api/v1/locus/exports
Requires API key and session authentication. Export must be enabled on your access tier.
Create a recurring export schedule. Locus runs the export automatically and delivers the results to your email or an S3-compatible bucket.
Parameters
| Name | Type | Required | Description |
|---|
name | string | | Schedule name (defaults to “Scheduled export”). |
table | string | | cell_scores (default), cell_score_history, or locus_validation_view. |
format | string | | csv (default) or json. |
cadence | string | ✓ | daily, weekly, or monthly. |
delivery_mode | string | ✓ | email or s3. |
delivery_target | string | ✓ | For email: your verified account email. For s3: a subfolder name (alphanumeric, hyphens, underscores). |
profile | string | | Scoring profile filter. |
h3_index | string | | Single cell filter. |
metro_slug | string | | Metro area filter. |
since | string | | Start date filter. |
until | string | | End date filter. |
portfolio_id | string | | Scope to a portfolio. |
asset_class | string | | Scope to an asset class. |
limit | number | | Max rows per delivery. |
For email delivery, the target must match your verified account email. For S3 delivery, files are stored under a path scoped to your user id — you provide a subfolder name and Locus manages the prefix.
Example — weekly email delivery
curl -X POST https://axiomlocus.io/api/v1/locus/exports \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Weekly SF scores",
"table": "cell_scores",
"format": "csv",
"cadence": "weekly",
"delivery_mode": "email",
"delivery_target": "analyst@yourcompany.com",
"metro_slug": "sf",
"profile": "retail"
}'
Example — daily S3 delivery for a portfolio
curl -X POST https://axiomlocus.io/api/v1/locus/exports \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Daily portfolio sync",
"table": "cell_scores",
"format": "json",
"cadence": "daily",
"delivery_mode": "s3",
"delivery_target": "portfolio-sync",
"portfolio_id": "p_abc123"
}'
Response
{
"schedule": {
"id": "sched_001",
"name": "Weekly SF scores",
"table_name": "cell_scores",
"format": "csv",
"cadence": "weekly",
"delivery_mode": "email",
"delivery_target": "analyst@yourcompany.com",
"status": "active",
"next_run_at": "2026-04-20T12:00:00Z",
"created_at": "2026-04-20T12:00:00Z"
}
}
| Field | Type | Description |
|---|
status | string | active or paused. |
next_run_at | string | When the next delivery will be processed. |