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.
- Send a GET request to a documented endpoint.
- Set each documented query parameter one time.
- 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.
/api/v1/releases/
Get recorded software versions and release state.
links.self path to get one release.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.
/api/v1/events/
Get dated channel appearances for release versions.
links.self path to get one 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. 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.
/api/v1/builds/
Get verified build identities and release links.
links.self path to get one build.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.
/api/v1/changes/
Get approved change definitions.
links.self path to get one change.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.
/api/v1/occurrences/
Get changes as they occur in a build or event.
links.self path to get one occurrence.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.
/api/v1/citations/
Get public source records and source locators.
links.self path to get one citation.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.
/api/v1/provenance/
Get public audit and correction records.
links.self path to get one provenance record.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.
Search
Find a release record.
Send one or more letters or numbers in q. The API finds records that contain all search terms. Add filters to make the result smaller. Search results return matching metadata, not full editorial text.
/api/v1/search/?q=ios&kind=event&limit=3search_id identifies the search result. Userecord.id and record.api_path to read the matching factual record.kindstringGet one record kind.
eventvendorstringGet records from one vendor.
appleplatformstringGet records from one platform.
iosfamilystringGet records from one major release family.
26versionstringGet records from one version.
26.3statusstringGet records with one status value.
availablechannelstringGet records from one release channel.
developer_betachange_typestringGet records with one change action.
introduceddocumented_statusstringGet records with one document state.
documentedevidence_statestringGet records with one evidence state.
confirmedpublisherstringGet records that cite one publisher.
appleErrors
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.
400Check a query parameter or record ID.
404Check the endpoint path or record ID.
429Wait for Retry-After before you retry.
503Wait 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