Public API · v1

Release data, ready to use.

Read public release records with one stable API. Get versions, events, builds, changes, citations, and provenance.

Example requestGET · JSON · no key
curl -sS "https://www.versionrecord.com/api/v1/events/?platform=ios&channel=developer_beta&limit=3"

Use the direct path shown. It reaches the API without a redirect.

Start

Send GET requests.

Use the API base path /api/v1/. The API has public data only. It does not require a key. It does not accept write requests.

  1. Send a GET request to a documented endpoint.
  2. Set each documented query parameter one time.
  3. Read the data, links, and pagination fields.

Use canonical paths

Collection and search paths end with /. Detail paths can vary when an ID contains a period. Follow the returned links.self or record.api_pathvalue. This avoids an HTTP redirect before a browser CORS preflight reaches the API.

Filter values ignore letter case. Record IDs must match exactly. Use a UTC date or time for updated_since.

Responses

Read the response envelope first.

Each response is JSON. Check api_version before you process data. generated_at is the time the API made this response snapshot. Use each record’s updated_atwhen you need its individual update time.

{
  "api_version": "v1",
  "generated_at": "2026-08-01T12:00:00.000Z",
  "data": [
    {
      "id": "release.ios.26.3",
      "vendor": "apple",
      "platform": "ios",
      "family": "26",
      "version": "26.3",
      "status": "active",
      "public_release_date": null,
      "release_notes_url": null,
      "provenance_status": "audit_verified",
      "updated_at": "2026-08-01T10:00:00.000Z"
    }
  ],
  "pagination": {
    "limit": 3,
    "offset": 0,
    "returned": 1,
    "total": 1,
    "next": null,
    "previous": null
  },
  "links": {
    "self": "/api/v1/releases/?limit=3",
    "openapi": "/api/v1/openapi.json"
  }
}
data
The requested records or search results.
pagination
Page size, position, total, and direct page paths.
links
Canonical API paths related to the response.

Record endpoints

Read every public dataset.

Use a collection endpoint to get a page. Use the returnedid value to get one record. Every field below has a type, null rule, and short description.

GET

/api/v1/releases/

Get recorded software versions and release state.

Query parameters

limitinteger
Page size. Use an integer from 1 through 100. Example: 25.
offsetinteger
Zero-based record offset. Use 0 through 1000000. Example: 0.
vendorstring
Get records from one vendor. Example: apple.
platformstring
Get records from one platform. Example: ios.
familystring
Get records from one major release family. Example: 26.
versionstring
Get records from one version. Example: 26.3.
statusstring
Get records with one release state. Example: released.
provenance_statusstring
Get records with one evidence state. Example: audit_verified.
updated_sinceUTC date or time
Get records changed at or after one UTC date or time. Example: 2026-07-01T00:00:00Z.

Public fields

idstring
Stable public identifier for this record.
vendorstring
Software vendor that owns the release record.
platformstring
Platform identifier, such as ios or macos.
familystring
Major release family identifier.
versionstring
Version number as recorded by the archive.
statusstring
Current release or publication status.
public_release_datestring or null
Date the public software release became available.
release_notes_urlstring or null
First-party release notes URL when available.
provenance_statusstring
Evidence-review state for the record.
updated_atstring or null
UTC time when this record was last updated.
GET

/api/v1/events/

Get dated channel appearances for release versions.

Query parameters

limitinteger
Page size. Use an integer from 1 through 100. Example: 25.
offsetinteger
Zero-based record offset. Use 0 through 1000000. Example: 0.
vendorstring
Get records from one vendor. Example: apple.
platformstring
Get records from one platform. Example: ios.
familystring
Get records from one major release family. Example: 26.
versionstring
Get records from one version. Example: 26.3.
version_idstring
Get events for one release record ID. Example: release.ios.26.3.
channelstring
Get events from one release channel. Example: developer_beta.
availability_statestring
Get events with one availability state. Example: available.
build_idstring
Get events for one verified build ID. Example: build.23d123.
build_numberstring
Get events for one verified build number. Example: 23d123.
is_revisionboolean
Get revision events or initial events. Example: false.
updated_sinceUTC date or time
Get records changed at or after one UTC date or time. Example: 2026-07-01T00:00:00Z.

Public fields

idstring
Stable public identifier for this record.
vendorstring
Software vendor that owns the release record.
platformstring
Platform identifier, such as ios or macos.
familystring
Major release family identifier.
version_idstring
Public identifier of the related release record.
versionstring
Version number as recorded by the archive.
labelstring
Human-readable event label.
route_aliasstring
Stable route label used by the public site.
channelstring
Release channel, such as developer_beta or public.
appearance_datestring
Date the release event appeared in its channel.
version_label_at_appearancestring or null
Version label shown when the event appeared.
availability_statestring
Availability state recorded for the event.
build_idstring or null
Public identifier of the related verified build, if known.
build_numberstring or null
Build number associated with this record, if known.
is_revisionboolean
True when this event revises an earlier build appearance.
audiencestring[]
Named audiences that could receive the event.
device_scopestring[]
Devices included in the recorded scope.
region_scopestring[]
Regions included in the recorded scope.
language_scopestring[]
Languages included in the recorded scope.
provenance_statusstring
Evidence-review state for the record.
index_eligibleboolean
True when the record meets the public indexing gate.
source_countinteger
Number of linked public source records.
updated_atstring or null
UTC time when this record was last updated.
GET

/api/v1/builds/

Get verified build identities and release links.

Query parameters

limitinteger
Page size. Use an integer from 1 through 100. Example: 25.
offsetinteger
Zero-based record offset. Use 0 through 1000000. Example: 0.
vendorstring
Get records from one vendor. Example: apple.
platformstring
Get records from one platform. Example: ios.
familystring
Get records from one major release family. Example: 26.
versionstring
Get records from one version. Example: 26.3.
version_idstring
Get builds for one release record ID. Example: release.ios.26.3.
build_numberstring
Get one verified build number. Example: 23d123.
statusstring
Get builds with one availability state. Example: available.
provenance_statusstring
Get records with one evidence state. Example: source_linked.
updated_sinceUTC date or time
Get records changed at or after one UTC date or time. Example: 2026-07-01T00:00:00Z.

Public fields

idstring
Stable public identifier for this record.
vendorstring
Software vendor that owns the release record.
platformstring
Platform identifier, such as ios or macos.
familystring
Major release family identifier.
version_idstring
Public identifier of the related release record.
versionstring
Version number as recorded by the archive.
build_numberstring
Build number associated with this record, if known.
display_build_numberstring
Build number formatted for display.
canonical_slugstring
Stable URL slug for the verified build.
statusstring
Current release or publication status.
device_scopestring[]
Devices included in the recorded scope.
provenance_statusstring
Evidence-review state for the record.
index_eligibleboolean
True when the record meets the public indexing gate.
updated_atstring or null
UTC time when this record was last updated.
GET

/api/v1/changes/

Get approved change definitions.

Query parameters

limitinteger
Page size. Use an integer from 1 through 100. Example: 25.
offsetinteger
Zero-based record offset. Use 0 through 1000000. Example: 0.
categorystring
Get changes from one category. Example: developer_api.
updated_sinceUTC date or time
Get records changed at or after one UTC date or time. Example: 2026-07-01T00:00:00Z.

Public fields

idstring
Stable public identifier for this record.
titlestring
Human-readable title for the record.
categorystring
Change category.
updated_atstring or null
UTC time when this record was last updated.
GET

/api/v1/occurrences/

Get changes as they occur in a build or event.

Query parameters

limitinteger
Page size. Use an integer from 1 through 100. Example: 25.
offsetinteger
Zero-based record offset. Use 0 through 1000000. Example: 0.
vendorstring
Get records from one vendor. Example: apple.
platformstring
Get records from one platform. Example: ios.
familystring
Get records from one major release family. Example: 26.
versionstring
Get records from one version. Example: 26.3.
change_idstring
Get occurrences for one change record ID. Example: change.example.
target_kindstring
Get occurrences for one target type. Example: event.
target_idstring
Get occurrences for one target record ID. Example: event.ios.26.3.beta-4.
actionstring
Get occurrences with one change action. Example: introduced.
documented_statusstring
Get occurrences with one document state. Example: documented.
evidence_statestring
Get occurrences with one evidence state. Example: confirmed.
updated_sinceUTC date or time
Get records changed at or after one UTC date or time. Example: 2026-07-01T00:00:00Z.

Public fields

idstring
Stable public identifier for this record.
change_idstring
Public identifier of the related change definition.
change_titlestring
Title of the related change definition.
actionstring
How the change occurred, such as introduced or removed.
inheritancestring
How the occurrence inherits release context.
target_kindstring
Type of record cited or changed.
target_idstring
Public identifier of the cited or changed target.
vendorstring
Software vendor that owns the release record.
platformstring
Platform identifier, such as ios or macos.
familystring
Major release family identifier.
versionstring
Version number as recorded by the archive.
build_numberstring or null
Build number associated with this record, if known.
documented_statusstring
Documentation state for the change occurrence.
evidence_statestring
Evidence state for the change occurrence.
applicabilitystring[]
Contexts in which the change applies.
source_countinteger
Number of linked public source records.
updated_atstring or null
UTC time when this record was last updated.
GET

/api/v1/citations/

Get public source records and source locators.

Query parameters

limitinteger
Page size. Use an integer from 1 through 100. Example: 25.
offsetinteger
Zero-based record offset. Use 0 through 1000000. Example: 0.
target_kindstring
Get citations for one target type. Example: event.
target_idstring
Get citations for one target record ID. Example: event.ios.26.3.beta-4.
source_idstring
Get citations for one source record ID. Example: source.apple.release-notes.
publisherstring
Get citations from one publisher. Example: apple.
source_classstring
Get citations from one source class. Example: first_party.

Public fields

idstring
Stable public identifier for this record.
target_kindstring
Type of record cited or changed.
target_idstring
Public identifier of the cited or changed target.
source_idstring or null
Public identifier of the related source record.
source_urlstring
Canonical public URL of the source.
source_titlestring or null
Title of the cited source.
publisherstring or null
Publisher of the cited source.
authorstring or null
Named author of the cited source, if available.
publication_datestring or null
Date the cited source was published.
accessed_datestring or null
Date Version Record last accessed the source.
archive_urlstring or null
Archived source URL, if available.
source_classstring or null
Source classification, such as first_party.
locatorstring or null
Location within the source that supports the record.
GET

/api/v1/provenance/

Get public audit and correction records.

Query parameters

limitinteger
Page size. Use an integer from 1 through 100. Example: 25.
offsetinteger
Zero-based record offset. Use 0 through 1000000. Example: 0.
record_typestring
Get one provenance record type. Example: audit_batch.
statusstring
Get records with one publication state. Example: published.
scopestring
Get records that apply to one platform. Example: ios.
reason_categorystring
Get corrections with one reason type. Example: source_error.

Public fields

idstring
Stable public identifier for this record.
record_typestring
Type of provenance record, such as audit_batch.
titlestring
Human-readable title for the record.
statusstring
Current release or publication status.
verification_datestring or null
Date an audit or correction was verified.
scopestring[]
Platforms or records covered by this provenance record.
snapshot_identitystring or null
Identity of the reviewed source snapshot.
affected_target_idsstring[]
Public IDs affected by this provenance record.
reason_categorystring or null
Reason category for a correction, if applicable.
published_atstring or null
UTC time the provenance record was published.

Errors

Check the status and error code.

Error responses use JSON. The error.code value is stable. Use it in program logic. Error responses do not enter the shared data cache.

400

Check a query parameter or record ID.

404

Check the endpoint path or record ID.

429

Wait for Retry-After before you retry.

503

Wait 60 seconds. Then send the request again.

{
  "api_version": "v1",
  "error": {
    "code": "INVALID_PARAMETER",
    "message": "Set limit from 1 through 100.",
    "parameter": "limit"
  }
}

Rules and rights

Use the public data with care.

Cache

Responses can stay in a shared cache for five minutes. Checkgenerated_at when time is important.

Compatibility

Version Record can add documented fields in v1. A breaking change uses a new versioned path.

Rate limits

The production gateway can return 429. HonorRetry-After. Do not retry immediately.

Evidence and rights

Use citation and provenance records with material claims. Public factual fields use CC0 1.0.

Need a complete snapshot?

Download the versioned data files.

Use bulk JSON or CSV files for a full archive copy. Use the API for filtered and paged reads.

Open data exports