Delivery state
Every record tells you whether you have had it before, whether it changed, and whether this delivery charged you.
Delivery state is a block on every record, on the API and in the CSV export alike. It is not a mode you switch on — the information is always there, so a client never has to guess whether it is paying twice.
| Field | Type | Meaning |
|---|---|---|
delivery.alreadyExported | boolean | Has this credit pool received this record before, through any surface — API, CSV, alert delivery? |
delivery.updatedSinceExport | boolean or null | Has it changed since then? null on a record you have never received, because the question does not apply. |
delivery.lastExportedAt | ISO-8601 or null | When you last received it. |
delivery.billed | boolean | Whether this delivery charged you for it. |
The page totals
meta.delivery sums it for the whole response: notPreviouslyExported, previouslyExported, updatedSinceExport, billed, and notRebilled — how many records you received without a charge.
One net-new record and one that changed since you last saw it
curl 'https://api.boardwalkai.com/api/v1/projects/sync?states=UT&representation=compact&limit=2' \
-H 'Authorization: Bearer bwk_live_YOUR_KEY'Response · HTTP 200
{
"data": [
{
"id": 184203,
"recordType": "project",
"projectName": "Alta Ridge Phase II",
"boardwalkLink": "https://boardwalkai.com/map/#project=184203",
"mergedFrom": [
184203,
184987
],
"lastUpdated": "2026-06-18T09:22:41Z",
"meetingDate": "2026-06-17",
"delivery": {
"alreadyExported": false,
"updatedSinceExport": null,
"lastExportedAt": null,
"billed": true
},
"address": "3600 S Constitution Blvd, West Valley City, UT",
"city": "West Valley City",
"county": "Salt Lake",
"state": "UT",
"latitude": 40.6916,
"longitude": -112.0011,
"propertyType": "residential",
"propertyTypeLabel": "Residential",
"status": "approved_with_conditions",
"statusLabel": "Approved with Conditions"
},
{
"id": 191774,
"recordType": "project",
"projectName": "Foothill Commons",
"boardwalkLink": "https://boardwalkai.com/map/#project=191774",
"mergedFrom": [
191774
],
"lastUpdated": "2026-06-24T14:08:03Z",
"meetingDate": "2026-06-23",
"delivery": {
"alreadyExported": true,
"updatedSinceExport": true,
"lastExportedAt": "2026-07-19T02:14:55Z",
"billed": true
},
"address": null,
"city": "Provo",
"county": "Utah",
"state": "UT",
"latitude": 40.2338,
"longitude": -111.6585,
"propertyType": "residential",
"propertyTypeLabel": "Residential",
"status": "continued",
"statusLabel": "Continued"
}
],
"meta": {
"schemaVersion": "2026-08-02",
"representation": "compact",
"limit": 2,
"creditsUsed": 2,
"creditsRemaining": 284,
"delivery": {
"mode": "all",
"notPreviouslyExported": 1,
"previouslyExported": 1,
"updatedSinceExport": 1,
"billed": 2,
"notRebilled": 0,
"ledgerApplied": true
},
"cursor": "eyJ1cGRhdGVkQXQiOiIyMDI2LTA4LTAyVDE0OjA5OjIyWiIsImlkIjoxOTE3NzR9",
"hasMore": true
}
}Record bodies on this page were produced by running Boardwalk's production response mapper over a documented sample project, so the field set, the labels and the empty fields are exactly what the API emits. The project itself is a sample, not a real filing.
What counts as a change
A change is a change to the content we would deliver you — a new decision, a revised unit count, an added document. Re-processing that produces the same values is not a change and does not make a record billable again. The comparison is made against what you were actually sent, not against a timestamp, which is why re-running a stable query is genuinely free rather than nearly free.
Ready to make a call?
A free Boardwalk trial includes API access and a sandbox key. Counting, filtering, the location tree and the analytics plane cost nothing, so you can evaluate the data before you spend a credit.