---
title: "Delete app builds"
method: POST
path: "/api/v1/experience/app-builds/delete"
tags: ["experience"]
---

# Delete app builds

`POST /api/v1/experience/app-builds/delete`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/experience/app-builds/delete`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://auth.point11.ai/oauth2/authorize`, token URL `https://auth.point11.ai/oauth2/token`)

Delete an app version whose upload was never verified, with any file that reached it, from the app's version list. Allowed once its uploadExpiresAt has passed, when it already no longer holds its version label; a verified version cannot be deleted. If its file cannot be confirmed gone, the version stays listed with deletionPending and deleting it again finishes. Returns the deleted version.

## Headers

- `Point11-Organization` string, uuid
- `Idempotency-Key` string, uuid, required

## Request body

- ExperienceAppBuildsDeleteRequest
  - `connectionId` string, uuid, required
  - `buildId` string, uuid, required

## Response `200`

Success.

- ExperienceAppBuildsDeleteResponse
  - `id` string, uuid, required
  - `connectionId` string, uuid, required
  - `platform` 'ios' | 'android', required
  - `appId` string, required
  - `versionLabel` string, required
  - `filename` string, required
  - `byteLength` integer, required
  - `sha256` string, nullable, required
  - `uploadStatus` 'pending' | 'ready', required
  - `uploadExpiresAt` string, date-time, required: When the upload link closes. A pending version's file can arrive only before it, and it holds its version label until then; after it, recover the version or delete it.
  - `createdAt` string, date-time, required
  - `deletionPending` boolean, required: Its deletion started but its file was not confirmed gone. It can no longer be uploaded or verified; delete it again to finish.

## Other responses

- `400`: The input, query, or Idempotency-Key is invalid.
- `401`: The bearer is missing, expired, or not accepted.
- `402`: Billing refused the write: the code names the reason and `details.reason` carries it.
- `403`: The credential lacks the operation's scope or role, or the operation needs a different door.
- `404`: The resource or organization does not exist for this caller.
- `405`: This path takes another HTTP method, named in `Allow`.
- `409`: The request conflicts with current state or with prior use of its Idempotency-Key.
- `413`: The request, or the answer it asks for, is too large; narrow it.
- `429`: The credential's rate budget is spent; retry after `Retry-After` seconds.
- `500`: An unexpected server failure; retry later. Only `request_id` identifies it.
- `503`: A dependency is temporarily unavailable; retry after `Retry-After` seconds.
- `default`: Another status a product answers for its own refusal (for example `415` for an unsupported attachment); branch on `code`.

---

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