Versions Endpoints
Create a New Version
Creates a new version for an app and returns signed upload URLs for the IPA file and app icon.
POST /apps/:slug/versions
Path Parameters
| Parameter | Type | Description |
|---|---|---|
slug | String | The app slug |
Request Body
{
"versionString": "1.3.0",
"buildNumber": "43",
"releaseNotes": "Bug fixes and performance improvements",
"ipaSizeBytes": 52428800
}
| Field | Type | Required | Description |
|---|---|---|---|
versionString | String | Yes | Version number (e.g. "1.3.0") |
buildNumber | String | Yes | Build number (e.g. "43") |
releaseNotes | String | No | Release notes for this version |
ipaSizeBytes | Int64 | Yes | Size of the IPA file in bytes |
Response
{
"id": "770e8400-e29b-41d4-a716-446655440000",
"versionString": "1.3.0",
"buildNumber": "43",
"uploadURL": "https://api.inhouse.vision/upload/770e8400.../ipa?token=...",
"iconUploadURL": "https://api.inhouse.vision/upload/770e8400.../icon?token=..."
}
cURL Example
curl -X POST \
-H "Authorization: Bearer iv_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"versionString":"1.3.0","buildNumber":"43","releaseNotes":"Bug fixes","ipaSizeBytes":52428800}' \
https://api.inhouse.vision/apps/my-app/versions
Get Version Details
Returns details for a specific version by its ID.
GET /apps/:slug/versions/:id
Path Parameters
| Parameter | Type | Description |
|---|---|---|
slug | String | The app slug |
id | UUID | The version ID |
Response
{
"id": "770e8400-e29b-41d4-a716-446655440000",
"appSlug": "my-app",
"versionString": "1.3.0",
"buildNumber": "43",
"releaseNotes": "Bug fixes and performance improvements",
"ipaSizeBytes": 52428800,
"ipaSizeMB": "50.0",
"installURL": "https://apps.inhouse.vision/user-slug/my-app/770e8400...",
"uploadedAt": "2026-02-20T15:00:00Z"
}
cURL Example
curl -H "Authorization: Bearer iv_YOUR_API_KEY" \
https://api.inhouse.vision/apps/my-app/versions/770e8400-e29b-41d4-a716-446655440000
Get Latest Version
Returns the most recently created version for an app.
GET /apps/:slug/versions/latest
Path Parameters
| Parameter | Type | Description |
|---|---|---|
slug | String | The app slug |
Response
Same format as Get Version Details.
cURL Example
curl -H "Authorization: Bearer iv_YOUR_API_KEY" \
https://api.inhouse.vision/apps/my-app/versions/latest
Error Responses
| Status | Reason |
|---|---|
| 404 | No versions found for this app |
Delete a Version
Permanently deletes a version and its associated IPA file from storage.
DELETE /apps/:slug/versions/:id
Path Parameters
| Parameter | Type | Description |
|---|---|---|
slug | String | The app slug |
id | UUID | The version ID |
Response
{
"message": "Version deleted successfully"
}
cURL Example
curl -X DELETE \
-H "Authorization: Bearer iv_YOUR_API_KEY" \
https://api.inhouse.vision/apps/my-app/versions/770e8400-e29b-41d4-a716-446655440000
Upload IPA File
Uploads the IPA binary for a version. Use the uploadURL returned by Create Version.
PUT /upload/:id/ipa?token=SIGNED_TOKEN
Headers
Content-Type: application/octet-stream
Note: This endpoint uses a time-limited HMAC-signed token (valid for 1 hour) instead of Bearer authentication. The token is included in the uploadURL returned when creating a version.
cURL Example
curl -X PUT \
-H "Content-Type: application/octet-stream" \
--data-binary @MyApp.ipa \
"https://api.inhouse.vision/upload/770e8400.../ipa?token=SIGNED_TOKEN"
Response
{
"message": "IPA uploaded successfully"
}
Upload App Icon
Uploads an icon image for a version. Use the iconUploadURL returned by Create Version.
PUT /upload/:id/icon?token=SIGNED_TOKEN
Headers
Content-Type: image/png
Note: This endpoint uses a time-limited HMAC-signed token (valid for 1 hour) instead of Bearer authentication.
cURL Example
curl -X PUT \
-H "Content-Type: image/png" \
--data-binary @icon.png \
"https://api.inhouse.vision/upload/770e8400.../icon?token=SIGNED_TOKEN"
Response
{
"message": "Icon uploaded successfully"
}
Complete Upload Workflow
Here is the full workflow for uploading a new app version via the API:
-
Create the version to get upload URLs:
curl -X POST \ -H "Authorization: Bearer iv_YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"versionString":"1.0.0","buildNumber":"1","ipaSizeBytes":52428800}' \ https://api.inhouse.vision/apps/my-app/versions -
Upload the IPA using the
uploadURLfrom the response:curl -X PUT \ -H "Content-Type: application/octet-stream" \ --data-binary @MyApp.ipa \ "UPLOAD_URL_FROM_STEP_1" -
Upload the icon (optional) using the
iconUploadURL:curl -X PUT \ -H "Content-Type: image/png" \ --data-binary @icon.png \ "ICON_UPLOAD_URL_FROM_STEP_1" -
Verify the version:
curl -H "Authorization: Bearer iv_YOUR_API_KEY" \ https://api.inhouse.vision/apps/my-app/versions/latest
Error Responses
| Status | Reason |
|---|---|
| 400 | Invalid or missing request fields |
| 401 | Invalid or expired upload token |
| 404 | App or version not found |
| 500 | Storage upload failed |