Versioning and history
Breaking changes get a new path version. Additive fields and endpoints do not, so clients must tolerate fields they do not know.
Versioning policy
The version is in the path: /v2. A change that removes or renames a field or endpoint, or changes the meaning of a value, ships under a new path version, and the previous version keeps answering for a stated period announced here. Adding a field to a response, a parameter to a request, a problem code, or an endpoint is not a breaking change and does not change the version; a client that rejects unknown fields will break on its own, and a client should treat a problem code it does not know by its HTTP status. Two request parameters are deprecated aliases, group (for order) and combine (for sum=areas), and the reference marks them; removing them is a breaking change under this policy, and it will be announced here before it happens. One parameter, region, and the route /v2/account/regions are retired rather than deprecated: they were removed before launch, answer 404 with region_retired, and the reference marks them as retired. Use areas=cluster:<id> instead.
This page tracks the interface. Changes to the data itself are recorded per vintage on the releases page, which is a different thing: a new vintage changes values; a new API version changes shapes.
History
Entries are dated, newest first, and never edited after publication.
Version 2, at launch
The first public version of the API, version 2.0. Live keys and signed-in sessions use https://api.datatactical.group; sandbox keys use https://api.datatactical.group/sandbox. Every path starts /v2 except the health check /healthz. The reference documents 160 operations on 14 pages, and the errors page lists 115 problem codes.
| Reference page | What it covers | Operations |
|---|---|---|
| Industry data | Industry (QCEW) series, map and location quotient endpoints. | 4 |
| Occupation data | Occupation (OEWS) series, map and location quotient endpoints. | 4 |
| Taxonomies | The codes the data routes take: NAICS, SOC, areas, MSAs, ownership, periods. Not metered; cacheable. | 9 |
| Vintages | The data releases this credential can read. | 1 |
| Account | The signed-in person, their active organization, the rules the screens state, sessions, closing and reopening. | 17 |
| Keys & usage | API keys (live and sandbox) and the month’s usage. | 4 |
| Notifications & workspace | The in-app notifications and the app’s saved workspace. | 6 |
| Organization | Organizations a person can find or join, verified domains and join requests. | 16 |
| Members & invitations | Members, seats, roles, invitations and ownership. | 17 |
| Clusters & counties | The organization’s county set and its saved clusters of codes or counties. | 17 |
| Billing | The self-serve subscription: plan, interval, seats, county slots, the API add-on, the card, invoices. | 16 |
| Support | Support tickets, open to signed-out visitors. | 7 |
| Authentication | Sign-up, sign-in, verification, password reset and the second factor (better-auth). These answer {code, message} JSON, not problem documents, except where noted. |
40 |
| Service | Liveness and this document. | 2 |
Deprecated at launch, still answered, and marked in the reference:
- the parameter
combine, on/v2/industry/series,/v2/industry/map,/v2/industry/lq,/v2/occupation/series,/v2/occupation/map,/v2/occupation/lq - the parameter
group, on/v2/industry/series,/v2/occupation/series
Retired before launch: still documented, answered with an error, and marked in the reference:
- the parameter
region, on/v2/industry/series,/v2/industry/lq,/v2/occupation/series,/v2/occupation/lq - the route
/v2/account/regions(GET, PUT, POST, PATCH, DELETE)