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_idwhen 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}