---
title: "Upload provisioning profile for a tenant"
method: POST
path: "/v2/provisioning-profiles"
tags: ["apps_management_Provisioning Profiles"]
---

# Upload provisioning profile for a tenant

`POST /v2/provisioning-profiles`

⚠️ Apple devices only.

Upload a .mobileprovision file to register an iOS provisioning profile for use with Enterprise app distribution in Esper.
The uploaded file is parsed and validated by Esper, which extracts the App ID, team identifier, profile type, expiration date, and entitlements. The resulting profile record is then available to attach to blueprints. App Store (VPP) apps distributed through Apple's App Store do not require provisioning profiles.

**About Upload Provisioning Profile**
iOS provisioning profiles are Apple-issued authorization files that enable Enterprise apps to run on iOS and iPadOS devices without going through the App Store. In Esper, provisioning profiles are uploaded here, then associated with specific blueprints via the blueprint's iOS app configuration. Each upload creates a new version under a profile record keyed by App ID; uploading a .mobileprovision file with the same App ID as an existing profile creates an additional version rather than overwriting it.

**Key Fields / Request Body**

file (required) — The .mobileprovision binary file to upload, sent as multipart/form-data

id (response) — Esper's UUID for the parent provisioning profile record

version_id (response) — UUID for this specific uploaded version

app_identifier (response) — The app's bundle ID extracted from the file (e.g., com.example.app)

profile_type (response) — One of development, ad-hoc, app-store, or enterprise

expiration_date (response) — When Apple's authorization on this profile expires

**Common Use Cases**

Registering a new app profile before attaching it to a blueprint

Adding an updated or renewed profile version for an app whose previous profile is nearing expiration

Managing multiple profile versions for the same App ID across development and enterprise distribution types

**Best Practices**

Upload profiles before configuring blueprints — the profile must exist in Esper before it can be added to a blueprint's iOS tab

Track expiration_date in the response and plan renewals before profiles expire, as expired profiles will block app installation on devices

Uploading a file with the same App ID as an existing profile creates a new version; verify which version blueprints are using after uploading renewals

**Workflow**

Obtain the .mobileprovision file from the Apple Developer portal for the Enterprise app

POST the file to this endpoint as multipart/form-data and capture the returned id and version_id

Navigate to the target blueprint's Apps & Configuration > iOS tab and use Add Provisioning Profile to attach the uploaded profile

Set the expiration date in the blueprint configuration, then save, publish, and converge to apply to devices

## Response `200`

Success

- object
  - `content` AppsManagementProvisioningProfileUploadResponse
    - `id` string, uuid — Unique identifier for the provisioning profile
    - `version_id` string, uuid — Unique identifier for this specific version of the profile
    - `name` string — Display name of the provisioning profile
    - `team_identifier` string — Apple Developer Team identifier
    - `app_identifier` string — Bundle identifier of the associated app
    - `profile_type` 'development' | 'ad-hoc' | 'app-store' | 'enterprise' — Type of profile (development, distribution, etc.)
    - `expiration_date` string, date-time — When the provisioning profile expires
    - `tenant_id` string, uuid — Tenant that owns this provisioning profile
    - `created_at` string, date-time — When the provisioning profile was first created
    - `updated_at` string, date-time — When this version was last updated
    - `created_by` string — User who created the provisioning profile
    - `updated_by` string — User who created this version

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `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)
