Skip to main content
Version: v3

Build a signed Android APK of a published phone app revision.

POST 

/ai-builder-api/projects/:projectId/app-config/apk-builds

Idempotent per Idempotency-Key. For a project whose current revision carries generated screens, the build is instead identified by the revision and the generated sources it carries (sha256(locationId:projectId:revision:sourcesSha)): repeating the request for the same revision and sources returns the same build whatever the key, and a failed one is queued again. Such a build is made from the React Native kernel commit the screens were generated against, and must be requested for the current revision. Generated screens reach members only through a new APK; they are never delivered over the air. At most one build may be active per project; sibling projects in the same location may build in parallel. Deleting a project while its build is still queued or building fails that build. A project compiles one signed APK for now: after a successful build the binary is final. A project without generated screens keeps reaching installed apps by publishing a revision; a project with generated screens cannot build another APK yet. Failed builds do not consume the allowance.

Request​

Idempotency-Key stringrequired

A key you choose for this build. Retrying with the same key returns the same build.

Possible values: non-empty and <= 200 characters

Version stringrequired

The API version.

Available optionsv3
projectId stringrequired

The app's id.

Possible values: Value must match regular expression ^prj_[A-Za-z0-9_-]+$

application/json

Bodyrequired

    revisionintegerrequired

    The published revision to build. An app with generated screens builds its current revision.

    Possible values: >= 1

application/json

APK build queued or the existing idempotent build returned.

Schema
    idstringrequired

    The build's id.

    Possible values: Value must match regular expression ^apk_[a-f0-9]{32}$

    projectIdstringrequired

    The app's id.

    Possible values: Value must match regular expression ^prj_[A-Za-z0-9_-]+$

    revisionintegerrequired

    The revision the APK is built from.

    Possible values: >= 1

    appNamestringrequired

    The app's name on the device.

    Possible values: non-empty and <= 120 characters

    statusstringrequired

    Where the build is. Read it again until finished or failed.

    Available optionsqueuedbuildingfinishedfailed
    artifactUrlstring<uri>

    Short-lived signed GCS URL for the archived APK. Expo artifact URLs are never exposed.

    Possible values: Value must match regular expression ^https://

    errorstring

    Creator-facing summary of why the build failed, safe to render as-is. Raw EAS, npm, or Gradle console output is never returned here; it stays in the build worker log.

    createdAtstring<date-time>required

    When the build was requested.

    updatedAtstring<date-time>required

    When the build last changed state.

    completedAtstring<date-time>

    When the build finished or failed.