Reference
Get a dataset version changelog
GET /v1/datasets/{dataset}/versions/{version}. What changed in one immutable weekly build: records added, retired and re-verified, companies dissolved, job changes confirmed, suppressions applied, coverage by field and the input snapshots.
GET /v1/datasets/{dataset}/versions/{version}
What changed in one immutable weekly build: records added, retired and re-verified, companies dissolved, job changes confirmed, suppressions applied, coverage by field and the input snapshots.
| Property | Value |
|---|---|
| Endpoint | GET https://mydatahub.emailmovers.com/v1/datasets/{dataset}/versions/{version} |
| Operation id | getDatasetVersion |
| Cost | Free (0 credits) |
| Access | No account, key or token needed. |
| Tag | Catalogue |
Request
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dataset | path | enum: uk_contacts, ie_contacts, global_contacts | yes | The dataset an audience draws from. uk_contacts is live; ie_contacts and global_contacts are listed but not yet served. |
version | path | string | yes | The immutable weekly build a count is bound to, such as 2026-W39. The last 52 stay queryable. |
MyDataHub-Version | header | string | no | The dated API version, pinned per key when left out. Non-breaking changes ship as new dates; the path major changes only for breaking changes, with a 12 month deprecation window. |
Example request
curl "https://mydatahub.emailmovers.com/v1/datasets/uk_contacts/versions/2026-W39"Responses
200: The version's changelog.
Headers: RateLimit, RateLimit-Policy.
| Member | Type | Always present | Description |
|---|---|---|---|
dataset | enum: uk_contacts, ie_contacts, global_contacts | yes | The dataset an audience draws from. uk_contacts is live; ie_contacts and global_contacts are listed but not yet served. |
version | string | yes | The immutable weekly build a count is bound to, such as 2026-W39. The last 52 stay queryable. |
built_at | string (date-time) | yes | |
checksum | string | yes | SHA-256 over the version's files. |
row_counts | object | yes | |
row_counts.companies | integer (0 or more) | yes | |
row_counts.sites | integer (0 or more) | yes | |
row_counts.contacts | integer (0 or more) | yes | |
row_counts.emails | integer (0 or more) | yes | |
row_counts.phones | integer (0 or more) | yes | |
changes | object | yes | |
changes.records_added | integer (0 or more) | yes | |
changes.records_retired | integer (0 or more) | yes | |
changes.records_reverified | integer (0 or more) | yes | |
changes.companies_dissolved | integer (0 or more) | yes | |
changes.job_changes_confirmed | integer (0 or more) | yes | |
changes.suppressions_applied | integer (0 or more) | yes | |
coverage_pct | map of number (0 to 100) | yes | Share of contacts holding each field, such as named_email. |
input_snapshots | array of object | yes | |
input_snapshots[].source | string | yes | |
input_snapshots[].as_of | string (date) | yes |
Example response
{
"dataset": "uk_contacts",
"version": "2026-W39",
"built_at": "2026-09-21T04:00:00Z",
"checksum": "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
"row_counts": {
"companies": 5689369,
"sites": 3232415,
"contacts": 9028587,
"emails": 1660190,
"phones": 1210000
},
"changes": {
"records_added": 4120,
"records_retired": 1870,
"records_reverified": 118400,
"companies_dissolved": 15130,
"job_changes_confirmed": 210,
"suppressions_applied": 96
},
"coverage_pct": {
"named_email": 17.8,
"email": 18.4
},
"input_snapshots": [
{
"source": "companies_house",
"as_of": "2026-09-01"
},
{
"source": "onspd",
"as_of": "2026-08-01"
}
]
}Errors
Every error is a problem object with a code and a next_step. Every response carries the RateLimit and RateLimit-Policy headers; see Rate limits.
| Status | Problem codes | When |
|---|---|---|
| 400 | invalid-request, idempotency-key-required, unsupported-version | The request could not be read, or an Idempotency-Key is missing. |
| 404 | not-found | No such object for this organisation. |
| 429 | rate-limited | Too many requests. Wait for Retry-After. |
| Any other failure | internal-error, service-unavailable, tps-screen-expired | Something failed on our side (500 internal-error) or the service is briefly unavailable (503 service-unavailable, with Retry-After). Nothing was charged; retry with the same Idempotency-Key. A count, sample, quote or order with telephone in play is also refused with 503 tps-screen-expired, with no Retry-After, while the dataset version's TPS and CTPS screen is more than 28 days old. |