API Reference

Binary Apps

Manage binary application files for your tests. Supported file extensions include: .ipa, .apk, .xap, .appx, .zip, .wgt. Files can be up to 1 gigabyte in size.

Usage: Binary apps are required for mobile app tests. After uploading, use the binary_app_id when creating test environments (see Test Environments).

Upload a binary application file

Upload a binary application file directly to the API.

Endpoint: POST /binary_apps

Request Body:

  • file (string, required) - Binary application file (up to 1 gigabyte). Supported extensions: .ipa, .apk, .xap, .appx, .zip, .wgt

Example Request:

1curl -X POST "https://api.test.io/customer/v2/binary_apps" \
2  -H "Authorization: Token YOUR_API_TOKEN" \
3  -F "[email protected]"

Response: 201 Created

1{
2  "binary_app": {
3    "id": 123,
4    "filename": "MyApp.apk",
5    "file_size": 52428800,
6    "url": "https://files.test.io/uploads/binary_app/123/MyApp.apk"
7  }
8}

Get direct upload URL (large files)

Request a URL for large files. This lets you upload the file directly from your client to our storage without passing the entire payload through the API server.

Endpoint: GET /binary_apps/upload_url

Example Request:

1curl -X GET "https://api.test.io/customer/v2/binary_apps/upload_url" \
2  -H "Authorization: Token YOUR_API_TOKEN"

Response: 200 OK

1{
2  "binary_app_id": 123,
3  "url": "https://upload.test.io/direct",
4  "fields": {
5    "key": "uploads/binary_app/123/${filename}",
6    "success_action_status": "201",
7    "policy": "<opaque-policy>",
8    "algorithm": "<signature-algorithm>",
9    "date": "20251104T154715Z",
10    "signature": "<signature>"
11  }
12}

Finalize binary app upload

Finalize a direct upload by validating metadata, verifying the file exists in storage, and generating a public download URL.

Endpoint: PUT /binary_apps/{id}

Parameters:

  • id (number, required) - Binary app ID from GET /binary_apps/upload_url

Request Body:

1{
2  "filename": "MyApp-v1.2.3.apk",
3  "file_size": 524288000,
4  "content_type": "application/vnd.android.package-archive",
5  "bundle_identifier": "com.example.myapp",
6  "bundle_version": "1.2.3",
7  "url": "https://files.test.io/uploads/binary_app/13/MyApp-v1.2.3.apk"
8}

Example Request:

1curl -X PUT "https://api.test.io/customer/v2/binary_apps/123" \
2  -H "Authorization: Token YOUR_API_TOKEN" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "filename": "MyApp-v1.2.3.apk",
6    "file_size": 524288000,
7    "content_type": "application/vnd.android.package-archive",
8    "bundle_identifier": "com.example.myapp",
9    "bundle_version": "1.2.3",
10    "url": "https://testcloud-staging-webapp.s3.eu-west-1.amazonaws.com/uploads/binary_app/package/13/MyApp-v1.2.3.apk"
11  }'

Response: 200 OK

1{
2  "binary_app": {
3    "id": 123,
4    "filename": "MyApp-v1.2.3.apk",
5    "file_size": 524288000,
6    "url": "https://files.test.io/uploads/binary_app/123/MyApp-v1.2.3.apk"
7  }
8}

Error Response: 422 Unprocessable Entity

If the file is not found in storage, returns:

1{
2  "error": "File not found: uploads/binary_app/123/MyApp-v1.2.3.apk"
3}
Previous
Test Environments