Publish a release
Creates an immutable release on a channel. Artifacts point at your existing storage. Duplicate app+channel+version returns `409`.
Creates an immutable release on a channel. Artifacts point at your
existing storage. Duplicate app+channel+version returns 409.
Authorization
bearerAuth Mint keys from the dashboard (API keys). Shown once, stored hashed.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
App ref (shown on the app page) or app id
Must exist on the app
Semver-ish, unique per app+channel
Markdown release notes
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/releases" \ -H "Content-Type: application/json" \ -d '{ "app": "qsxsicotpbmtf8ag", "channel": "stable", "version": "1.4.2", "notes": "## 1.4.2\\n\\n- Fixes the sync-engine memory leak", "artifacts": [ { "platform": "darwin", "arch": "aarch64", "url": "https://github.com/you/app/releases/download/v1.4.2/app-darwin-arm64.dmg", "sha512": "…" } ] }'{ "release": { "id": "string", "app": "string", "channel": "string", "version": "string", "notes": "string", "status": "published", "rolloutPct": 0, "createdAt": "2019-08-24T14:15:22Z", "artifacts": [ { "platform": "darwin", "arch": "aarch64", "url": "http://example.com", "sha512": "string", "size": 0, "signature": "string" } ] }}{ "error": "app, channel and version are required"}{ "error": "Invalid or revoked API key"}{ "error": "Unknown app"}{ "error": "Version 1.4.2 already exists on myapp/stable"}{ "error": "Rate limit exceeded"}List releases GET
Newest first, paginated.
Manage serving (rollout, status, targeting) PATCH
Ramp, pause, resume, roll back or target a release from CI - no dashboard needed. Identified by app + channel + version. The same invariants as the dashboard apply (shared code): the rollout percentage only increases once the release has been offered (422), label targeting only broadens once offered (422), match expressions are frozen once offered (422), and a rolled-back release can never be re-served (409). Applied in order: targets, rollout, status.