BUILD WITH THE INDEX

The firmware API

Structured records. Clear provenance. A versioned REST API.

OpenAPI 3.1 ↗

Signing is specific to the device and file. A signed build does not guarantee a downgrade or successful installation.

GET/api/v1/devicesDevice catalog
GET/api/v1/firmwaresDownload assets
GET/api/v1/firmwares/{id}Asset details & provenance
GET/api/v1/releasesRelease archive
GET/api/v1/signing/iPhone12%2C1Device-specific signing
GET/api/v1/downloads/{firmwareId}Safe Apple CDN redirect
GET/api/v1/healthDatabase health

Filters & pagination

q, family, device, channel, type, signing, from, to, sort, page, limit. Defaults: page 1, limit 24 (maximum 100). See OpenAPI for which parameters apply to each resource.

GET /api/v1/firmwares?device=iPhone12%2C1&type=ipsw&channel=stable&limit=10
GET /api/v1/search?q=22A3354

Responses

{
  "data": { "items": [], "total": 0, "page": 1, "limit": 24 },
  "meta": { "requestId": "…", "timestamp": "…" }
}

Errors use error.code and error.message. Invalid queries return 400, unknown resources 404, throttled requests 429 with Retry-After, and database failures 503. Public queries cannot modify records or start ingestion.

Signing & caching

Firmware and signing responses use no-store so expired observations do not persist in a CDN. Other read endpoints have short configurable shared-cache headers. Signing is evaluated only for an explicit hardware context; aggregate release pages never label all devices Signed. Fair-use rate limits are stored atomically in PostgreSQL. The deployment proxy must be configured before trusting forwarded client identifiers.