Streamline your build process and upload APKs or IPAs directly to TestFairy.


Command line uploader



Android Studio


Travis CI



Visual Studio Team Services









Name Required? Description
api_key Required Your API application key. See for details.
file Required APK (Android), AAB (Android App Bundle), IPA (iOS) or ZIP (MacOS) file data.
symbols_file Optional Symbols mapping file. For iOS this should be a path to the zipped symbols file. For Android, this is the path to the mappings.txt file
groups Optional Comma-separated list of tester groups that will get permission to download this app.
notify Optional Send email to all users in 'groups'. Can be "on" or "off". Default is "off".
release_notes Optional Release notes for this upload. This text will be added to emails and landing pages.
auto_update Optional Allows an easy upgrade of all users to the current version. Can be "on" or "off". Default is "off".
tags Optional Set of comma-separated tags to be displayed and search upon.
folder_name Optional Name of the dashboard folder that will contain this app.
landing_page_mode Optional Landing page mode. Can be "open" or "closed". Default is "open".
upload_to_saucelabs Optional Upload file directly to Sauce Labs. Can be "on" or "off". Default is "off".
platform Optional In case app is not iOS or Android, which are detected automatically, use this to mark an app for specific desktop or console platforms. Values can be "xbox", "playstation", "switch", "windows", "macos". This feature is not enabled by default, please contact support for more information.

Error Codes

In the case of an error, TestFairy will return a JSON with status => fail and code with one of the values
listed below. An additional human-readable error message is supplied to detail the cause of the specific error.

Error Code Reason
1 Parameter 'xxx' is missing
5 Invalid API key
105 Invalid file

Example 1: (CURL)

curl -F api_key='your_api_key' -F file=@sample.apk

Example 2:

curl \
    -F api_key='your_api_key' \
    -F file=@sample.apk \
    -F symbols_file=@sample_mapping.txt \
    -F groups='friends,beta' \
    -F notify='on' \
    -F release_notes='stabilitty fixes, improvedment in ui' \
    -F tags='production, english'

Example Response:

    "status": "ok",
    "app_name": "Jigsaw Puzzlers",
    "app_version": "0.9.5",
    "app_url": "",
    "landing_page_url": "",

Where can I find my API Key?

In order to get your API KEY, open your account preferences at and click on "Upload API Key".

How can I create a new API Key?

In order to create a new API KEY just click on "Regenerate API Key" in your account preferences page.

Why is my API Key empty?

In cases where we identify that your API KEY was used by mistake to initialize the SDK instead of using your APP TOKEN, we automatically reset the API KEY in order to protect your privacy. In this case, please change the SDK initialization to use the APP TOKEN and create a new API KEY.

Can I add custom metadata?

Yes. Any POST parameter that its name is prefixed with "metadata." will be considered custom data and stored along with the upload. For example, consider this command:

curl \
    -F api_key='your_api_key' \
    -F file=@sample.apk \
    -F metadata.branch=master \
    -F metadata.locale=us-en

Metadata is displayed and can be searched upon in App Versions page, by clicking on an app from the Dashboard. They can also be viewed in a single version's settings page.

Last updated on 2023-06-06