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
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": "Unknown app"}{ "error": "Unknown app"}{ "error": "Unknown app"}{ "error": "Unknown app"}List releases GET
Newest first, paginated.
GitHub release webhook (inbound) Webhook
Relayer receives GitHub `release` events at `/wh/github/{appId}` (URL + secret shown when you enable the integration in app settings). Payloads are HMAC-SHA-256 verified. Published releases land on `stable`, pre-releases on `beta`, drafts are ignored, assets are classified per platform/arch by filename, and checksum/metadata files are filtered out.