---
title: "Get provisioning profile versions list"
method: GET
path: "/v2/provisioning-profiles/{id}/versions"
tags: ["apps_management_Provisioning Profiles"]
---

# Get provisioning profile versions list

`GET /v2/provisioning-profiles/{id}/versions`

⚠️ Apple devices only.

Retrieve a paginated list of all uploaded versions of a specific iOS provisioning profile, ordered by expiration date descending.
Each version corresponds to a separate .mobileprovision file upload made for the same App ID. Results include Apple-extracted metadata (UUID, expiration date, entitlements, platforms, developer certificates) and a signed download_url for the version file. Results default to 10 per page and support search by version name.

**About List Provisioning Profile Versions**

Esper allows multiple versions of a provisioning profile to exist under a single profile record (shared App ID), reflecting real-world scenarios where profiles are renewed or updated over time. This endpoint surfaces that version history in descending expiration order — most recent first — making it straightforward to identify which version is current and which are expired. Version IDs retrieved here are used when attaching a specific version to a blueprint or when deleting an obsolete version.

**Key Fields / Query Parameters**

id (path, required) — Esper UUID of the parent provisioning profile

limit — Max results per page; defaults to 10

offset — Records to skip for pagination; defaults to 0

search — Search within version names

expiration_date (response) — When this version expires; results are ordered by this field descending

uuid (response) — Apple's own UUID for this profile version, distinct from Esper's internal id

provisions_all_devices (response) — true for enterprise profiles that provision all devices without explicit device registration

sha256_hash (response) — Hash of the file, used for duplicate detection on upload

**Common Use Cases**

Reviewing the version history of a profile to confirm which version is currently active in a blueprint

Identifying expired versions to clean up via the delete endpoint

Retrieving a specific version_id needed to fetch or delete an individual version

**Best Practices**

Versions are ordered by expiration_date descending; the first result is the most recently expiring (current) version

Use sha256_hash to detect duplicate uploads before uploading a new version

When renewing profiles, upload the new version first, update the blueprint to reference the new version, then delete the old version

## Path parameters

- `id` string, uuid, required — Unique identifier for the provisioning profile

## Query parameters

- `limit` number — Maximum number of provisioning profile versions to return
- `offset` number — Number of provisioning profile versions to skip
- `search` string — Search in provisioning profile version names

## Response `200`

Success

- object
  - `content` object
    - `count` integer — Total number of provisioning profile versions
    - `prev` string — URL for previous page of results
    - `next` string — URL for next page of results
    - `results` AppsManagementProvisioningProfileVersionWithDownloadResponse[]
      - `id` string, uuid — Primary key and unique identifier for this version
      - `profile_id` string, uuid — Foreign key reference to the parent ProvisioningProfile
      - `uuid` string — Apple's UUID for this specific provisioning profile version
      - `name` string — Display name of the provisioning profile version
      - `sha256_hash` string — SHA256 hash of the provisioning profile file for duplicate detection
      - `creation_date` string, date-time — When Apple created this provisioning profile (from .mobileprovision file)
      - `expiration_date` string, date-time — When this provisioning profile expires (from Apple)
      - `time_to_live` integer — Days until expiration from creation date
      - `provisions_all_devices` boolean — Whether this profile provisions all devices (enterprise profiles)
      - `is_xcode_managed` boolean — Whether this profile is managed by Xcode automatically
      - `platforms` string — JSON array of supported platforms (iOS, macOS, etc.)
      - `entitlements` string — JSON object of app entitlements and capabilities
      - `developer_certificates` string — JSON array of developer certificates included in this profile
      - `tenant_id` string, uuid — Tenant that owns this provisioning profile version
      - `created_by` string — User identifier who uploaded this version
      - `updated_by` string — User identifier who last modified this version record
      - `created_at` string, date-time — Timestamp when this version record was created in the database
      - `updated_at` string, date-time — Timestamp when this version record was last modified
      - `download_url` string, uri — Signed URL for downloading the provisioning profile file

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not Found
- `500` — Internal Server Error

---

[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/revisions/e1f64cbb488e/schema)
