---
title: "Internal workers-v1 build job app release actions: begin, reserve blobs, create the release, renew its manifest grant, and continue bounded verification until ready"
method: POST
path: "/internal/runner/jobs/{jobId}/app-release"
---

# Internal workers-v1 build job app release actions: begin, reserve blobs, create the release, renew its manifest grant, and continue bounded verification until ready

`POST /internal/runner/jobs/{jobId}/app-release`

## Request

- Base URL: `https://api.eurobase.dev`
- URL: `https://api.eurobase.dev/internal/runner/jobs/{jobId}/app-release`
- Auth: none declared

## Request body

- union
  - object
    - `action` 'begin', required
  - object
    - `action` 'reserve', required
    - `releaseId` string, required
    - `blobs` object[], required
      - `kind` 'asset' | 'bundle', required
      - `sha256` string, required
      - `byteSize` integer, required
  - object
    - `action` 'create', required
    - `releaseId` string, required
    - `manifestSha256` string, required
    - `manifestBytes` integer, required
    - `bundleSha256` string, nullable, required
    - `compatibilityDate` string, required
    - `minWorkerdVersion` string, required
    - `assetFileCount` integer, required
    - `distinctAssetCount` integer, required
  - object
    - `action` 'manifest-grant', required
    - `releaseId` string, required
  - object
    - `action` 'complete', required
    - `releaseId` string, required

## Response `200`

Action result. reserve returns present or upload per blob, and only upload carries an exact-key write-once PUT grant (URL and required headers, at most 300 s); create and manifest-grant return one manifest PUT grant; complete returns either staged verification progress (repeat complete) or the ready release. No storage credential is returned.

## Other responses

- `409`: Typed conflict: intent expired or not open, stale attempt, changed candidate, blob limit, cleanup in progress (retry), object not uploaded yet (retry) or integrity failure
- `422`: Invalid action body
- `503`: app-release-signer-unavailable when the API holds no release signer, or retryable storage unavailability

---

[API](https://skmtc.dev/eurobase/apis/eurobase-api.md) · [All operations](https://skmtc.dev/eurobase/apis/eurobase-api/llms.txt) · [OpenAPI document](https://skmtc.dev/eurobase/apis/eurobase-api/revisions/5266a299d18a?raw)
