Skip to main content

API Reference (v3)

Use the REST API to integrate app distribution into your CI/CD pipeline.

Authentication​

All API requests require authentication via one of the following methods:

MethodExample
X-API-Key headercurl -H "X-API-Key: YOUR_KEY" ...
Bearer tokencurl -H "Authorization: Bearer TOKEN" ...
api_key form parametercurl -F api_key=YOUR_KEY ...
HTTP Basic (email:apiKey)curl -u you@example.com:YOUR_KEY ...
OIDCcurl -H "Authorization: Bearer JWT" -H "X-OIDC-Config-Key: CONFIG_KEY" ...

Find your API key by clicking the key icon in the top navigation bar. You can exchange it for a short-lived Bearer token via POST /api/v3/auth/token.

Pagination​

All list endpoints support pagination via query parameters:

ParameterDefaultDescription
page1Page number
per_page25Results per page (max: 100)

Larger per_page values are capped at 100, except on /api/v3/audits, which returns a validation error instead.

Paginated responses include a pagination object. The list key matches the resource - projects, builds, teams, testers, groups, webhooks, or audits:

{
"projects": [...],
"pagination": {
"page": 1,
"per_page": 25,
"total": 142,
"total_pages": 6
}
}

Postman Collection​

Import the collection into Postman to start testing immediately. Set the base_url and api_key variables after importing.

Download Postman Collection

Interactive Documentation​

For the full interactive API documentation with request/response examples, visit the Swagger UI.

Endpoints​

Authentication​

MethodEndpointDescription
POST/api/v3/auth/tokenExchange API key for a 1-hour Bearer token

Apps​

MethodEndpointDescription
GET/api/v3/projectsList all apps (paginated)
GET/api/v3/projects/{id}Get an app
POST/api/v3/projectsCreate an app
PUT/api/v3/projects/{id}Update an app
DELETE/api/v3/projects/{id}Delete an app (admin)
GET/api/v3/projects/{id}/testersList testers assigned to an app (direct + via groups, deduped)
POST/api/v3/projects/{id}/copyCopy an app

Builds​

MethodEndpointDescription
GET/api/v3/projects/{projectId}/buildsList builds for an app (paginated)
GET/api/v3/builds/{id}Get a build
POST/api/v3/builds/uploadUpload a new build (multipart/form-data)
PUT/api/v3/builds/{id}Update release notes and tags
GET/api/v3/builds/{id}/downloadGet pre-signed download URL. If storage isn't configured, returns the install-page URL instead.
DELETE/api/v3/builds/{id}Delete a build (admin)
POST/api/v3/builds/{id}/copyDuplicate a build within the same app (references the same file)
POST/api/v3/builds/{id}/notify-testersQueue the new-build email to testers. Returns 202 {"status":"queued"}, or 409 if the build isn't distributable. Requires admin rights on the app.
GET/api/v3/builds/{id}/symbols/downloadGet a download URL for the build's symbols file

Upload Parameters​

POST /api/v3/builds/upload takes multipart/form-data:

ParameterRequiredDescription
fileYesThe build file (.apk, .aab, .ipa, or .zip)
project_idSee noteThe app to upload to
team_idSee noteRequired unless project_id is given
versionNoOverride the detected version string
release_notesNoRelease notes for the build
folderNoFolder to place the app in
groupsNoTester groups to notify
notifyNoSet to 1 to email testers about the new build
symbols_fileNoSymbols file to attach to the build
sync_to_saucelabsNoSet to 1 to also copy the build to Sauce Labs App Storage
landing_page_slugNoURL alias for the app's landing page
landing_page_modeNoLanding page visibility

Provide either project_id or team_id. PUT /api/v3/builds/{id} accepts release_notes, tags, landing_page_slug, and landing_page_mode.

Teams​

MethodEndpointDescription
GET/api/v3/teamsList all teams (paginated)
GET/api/v3/teams/{id}Get a team
POST/api/v3/teamsCreate a team (admin)
PUT/api/v3/teams/{id}Update a team (admin)
DELETE/api/v3/teams/{id}Delete a team (admin)

Testers​

MethodEndpointDescription
GET/api/v3/testersList testers (paginated, searchable)
GET/api/v3/testers/{id}Get a tester
POST/api/v3/testersInvite a tester by email (admin). Only the Tester role can be created via the API.
DELETE/api/v3/testers/{id}Remove a tester (admin)
POST/api/v3/testers/{id}/blockBlock a tester (admin)
DELETE/api/v3/testers/{id}/blockUnblock a tester (admin)

Groups​

MethodEndpointDescription
GET/api/v3/groupsList all groups (paginated)
GET/api/v3/groups/{id}Get a group with testers and apps
POST/api/v3/groupsCreate a group (admin)
PUT/api/v3/groups/{id}Update a group (admin)
DELETE/api/v3/groups/{id}Delete a group (admin)
POST/api/v3/groups/{id}/testersAdd tester to group (admin)
DELETE/api/v3/groups/{id}/testers/{userId}Remove tester from group (admin)
GET/api/v3/groups/{id}/testersList testers in a group (paginated)
GET/api/v3/groups/{id}/projectsList apps the group has access to (paginated)

Webhooks​

MethodEndpointDescription
GET/api/v3/webhooksList all webhooks (paginated)
GET/api/v3/webhooks/{id}Get a webhook
POST/api/v3/webhooksCreate a webhook (admin)
PUT/api/v3/webhooks/{id}Update a webhook (admin)
DELETE/api/v3/webhooks/{id}Delete a webhook (admin)

Settings​

MethodEndpointDescription
GET/api/v3/settings/oidcGet the organization's OIDC configuration (admin)
POST/api/v3/settings/oidcCreate or update the OIDC configuration (admin)
DELETE/api/v3/settings/oidcDelete the OIDC configuration (admin)
POST/api/v3/settings/oidc/testTest OIDC discovery against the issuer (admin)

Audit Logs​

MethodEndpointDescription
GET/api/v3/auditsList audit logs (paginated, filterable by action/search/date, admin)
GET/api/v3/audits/actionsList distinct audit action types (admin)