---
title: "Update Foundry build"
method: PUT
path: "/v1/foundry/builds/{build_id}/"
tags: ["foundation_FoundryBuilds"]
---

# Update Foundry build

`PUT /v1/foundry/builds/{build_id}/`

Retrieves full details for a single Foundation OS build by its unique Foundry build ID.

Use this endpoint to inspect a specific build's metadata — including its architecture, Foundation version numbers, Android SDK level, approval status, and lifecycle state — before approving it or locking it to a device model for auto-update.

**About Get Foundry Build**

Foundry builds are the individual compiled OS images that make up the Foundation update catalog. Each build is identified by a UUID (build_id) and carries detailed metadata about the OS it contains: Foundation major/minor/build version numbers, Android version, CPU architecture, build hash, and whether it has been approved for OTA deployment. This endpoint returns the full Build_V1 object for a single build, providing the complete picture needed for approval or deployment decisions.

Key Fields / Query Parameters

build_id (path, required) — UUID of the Foundry build to retrieve

foundation_major_number / foundation_minor_number / foundation_build_number — Foundation version components of the build

android_major_version / android_sdk_level — Android version metadata

build_arch — CPU architecture (arm, arm64, x86, x86_64)

approved — Whether the build has been approved for OTA deployment

build_state — Lifecycle status: released, to_be_deprecated, or unavailable

deprecated_on — Date the build was or will be deprecated

release_notes — JSON-formatted release notes for the build

**Common Use Cases**

Confirming a build's approval status and lifecycle state before using its build_id in a device model auto-update configuration

Reviewing release notes and version metadata for a specific build ahead of a planned deployment

Retrieving build details to display in internal tooling or audit records

**Best Practices**

Always check approved and build_state before proceeding with deployment — only approved: true builds in released state are safe to deploy

Store the build_fingerprint_hash if you need to identify this build later via the list endpoint's locked filter

Review deprecated_on to understand the support window remaining for this build

**Workflow**

Obtain a build_id from GET /v1/foundry/builds/ filtered by device model and architecture

Call GET /v1/foundry/builds/{build_id}/ to confirm approval status, version details, and release notes

Proceed to PUT /v1/foundry/builds/{build_id}/ to approve the build, or PUT /v1/foundry/device-models/{device_model_id}/ to lock it for auto-update

## Path parameters

- `build_id` string, required

## Request body

- FoundationFoundryBuildPUTRequestV1
  - `approve` boolean
  - `user_remarks` string

## Response `200`

Updated

- object
  - `data` FoundationBuildV1
    - `build_id` string
    - `created_at` string, date-time
    - `updated_at` string, date-time
    - `deprecated_on` string, date-time
    - `created_by` string
    - `updated_by` string
    - `ab_update` boolean
    - `android_major_version` integer
    - `android_minimum_sdk_level` integer
    - `android_minor_version` string
    - `android_sdk_level` integer
    - `build_arch` string
    - `build_flavor` string
    - `build_hash` string
    - `build_ota_hash` string
    - `build_job_url` string
    - `build_job_id` integer
    - `build_fingerprint_hash` string
    - `build_type` string
    - `build_url` string, url
    - `build_update_meta_data` string, json
    - `build_update_url` string, url
    - `file_size_kb` integer
    - `foundation_build_number` integer
    - `foundation_major_number` integer
    - `foundation_minor_number` integer
    - `foundation_name` string
    - `model_display_name` string
    - `build_job_params` string, json
    - `prebuilt_app_info` string, json
    - `release_notes` string, json
    - `release_rating` string
    - `source_build_id` string
    - `build_state` 'released' | 'to_be_deprecated' | 'unavailable'
    - `device_model_id` string
    - `approved` boolean

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Builds not found

---

[API](https://skmtc.net/esper/apis/esper-api-reference.md) · [All operations](https://skmtc.net/esper/apis/esper-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/esper/esper-api-reference/versions/e1f64cbb488e/schema)
