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

ParameterTypeDescription
slugStringThe app slug

Request Body

{
  "versionString": "1.3.0",
  "buildNumber": "43",
  "releaseNotes": "Bug fixes and performance improvements",
  "ipaSizeBytes": 52428800
}
FieldTypeRequiredDescription
versionStringStringYesVersion number (e.g. "1.3.0")
buildNumberStringYesBuild number (e.g. "43")
releaseNotesStringNoRelease notes for this version
ipaSizeBytesInt64YesSize 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

ParameterTypeDescription
slugStringThe app slug
idUUIDThe 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

ParameterTypeDescription
slugStringThe 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

StatusReason
404No 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

ParameterTypeDescription
slugStringThe app slug
idUUIDThe 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:

  1. 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
  2. Upload the IPA using the uploadURL from the response:
    curl -X PUT \
      -H "Content-Type: application/octet-stream" \
      --data-binary @MyApp.ipa \
      "UPLOAD_URL_FROM_STEP_1"
  3. 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"
  4. Verify the version:
    curl -H "Authorization: Bearer iv_YOUR_API_KEY" \
      https://api.inhouse.vision/apps/my-app/versions/latest

Error Responses

StatusReason
400Invalid or missing request fields
401Invalid or expired upload token
404App or version not found
500Storage upload failed