Docs
Move from Diawi
If a script or plugin uploads your builds to Diawi, it can upload to AppForShare after two changes: the URL and the token. The field names and status codes are the same. This guide shows the curl calls, how each Diawi field maps, and what to use for builds over 100 MB, stable links and iPhone checks.
Step 1, Pro and Team for the API
Make an account and a token
Sign up and upload one build of each app from the web page to see the install page your testers get. Then make an API token under Dashboard, Settings, API tokens. It starts with afs_ and takes the place of your Diawi token.
Step 2, Pro and Team
Change the upload URL
Send the same multipart form to AppForShare. The answer is a job id, as on Diawi. The token can go in the token field or as an Authorization: Bearer header.
# Before curl https://upload.diawi.com/ -F token=$DIAWI_TOKEN -F [email protected] -F comment="Fixes the login crash" # After curl https://appforshare.io/api/ci/diawi -F token=$APPFORSHARE_TOKEN -F [email protected] -F comment="Fixes the login crash" # {"job":"Q3vF8kL2mN0pR7sT"}Step 3, Pro and Team
Change the status call
Poll the status with the token and the job id. 2001 means still processing, 2000 means done and 4000 means it failed, with the reason in message. When it is done, link is the install page, hash is the link code and qrcode is a PNG of the QR code.
curl -s "https://appforshare.io/api/ci/diawi/status?token=$APPFORSHARE_TOKEN&job=Q3vF8kL2mN0pR7sT" # {"status":2001,"message":"Processing"} # {"status":2000,"message":"Ok","hash":"Stw0Ae","link":"https://appforshare.io/i/Stw0Ae","qrcode":"https://appforshare.io/i/Stw0Ae/qr"}Step 4, Pro and Team
Builds over 100 MB: use the CLI
One request to the Diawi compatible endpoint carries up to 100 MB. The CLI sends bigger builds in parts and resumes after a dropped connection, up to your plan's file limit (2 GB on Pro, 4 GB on Team). It takes the same options under its own names: --comment, --password and --email.
All CLI commandsexport APPFORSHARE_TOKEN=afs_your_token npx appforshare upload app.ipa --comment "Fixes the login crash" --password "$LINK_PASSWORD" --email [email protected]Step 5, Pro and Team
Give testers one link that stays
A Diawi link points at one upload. A channel link points at whatever build is in the channel now, so testers keep one link and one QR code for the whole project. Add channel to the form (or --channel to the CLI) and pick an address such as /c/acme-beta. iPhones get the iOS build and Android phones the Android build from the same link.
Custom channel addresscurl https://appforshare.io/api/ci/diawi -F token=$APPFORSHARE_TOKEN -F [email protected] -F channel=beta npx appforshare channel-address acme-beta --channel beta --app com.example.shopStep 6, Every plan
Tell testers about the iPhone check
Diawi warns a tester whose device is not in the build after they identify it in its web app. On AppForShare the tester runs the free UDID finder once and taps Remember this device. From then on every iOS install page says whether the build includes that iPhone before they tap Install, and when it does not, they can copy the UDID or send the iPhone to you.
Remember my iPhoneStep 7, Pro and Team
Swap the plugins
fastlane: replace the diawi action with appforshare, which takes the build from gym or gradle and takes email: and password:. GitHub Actions: use appforshare/appforshare-action@v1 with the email and password inputs. Jenkins and Bitrise: an AppForShare plugin and step are coming; until they are published, run the CLI in a shell step.
CI guides# fastlane (fastlane add_plugin appforshare, APPFORSHARE_TOKEN set) appforshare(release_notes: "Fixes the login crash", email: ["[email protected]"], channel: "beta")
Field mapping
| Diawi | AppForShare |
|---|---|
| token | Your AppForShare API token (afs_...), in the field or as Authorization: Bearer |
| file | The build: .ipa, a zipped .app, .apk or .aab, up to 100 MB per request |
| password | Install link password, 4 to 128 characters |
| comment | Release notes shown on the install page |
| callback_url | An https address we call once with the result, when the build is ready or failed |
| callback_emails | Up to 5 addresses that get the install link by email |
| installation_notifications | Accepted and ignored. Use the daily install email or a webhook instead |
| find_by_udid | Accepted and ignored. Testers use Remember this device instead |
| wall_of_apps | Accepted and ignored. There is no public app wall |
| status: 2000, 2001, 4000 | The same codes, with hash, link and qrcode when done |
Also accepted: channel, to put the build into a channel when it is ready. The upload endpoint is https://appforshare.io/api/ci/diawi and the status endpoint https://appforshare.io/api/ci/diawi/status.
Questions
- Which plan do I need?
- The Diawi compatible API, the CLI and CI uploads are on Pro and Team. Install links, the QR code, passwords, the UDID finder and the iPhone check on install pages work on every plan.
- Do my old Diawi links move over?
- No. Diawi links stay on Diawi until they run out. Upload the builds your testers still need here and send the new links, or one channel link that keeps working for later builds.
- Does .aab work?
- Yes, with an account. An .aab is turned into one universal APK testers install from the link. Diawi does not take .aab files.
- What about install notifications?
- Turn on the daily install email for a project (Pro and Team): one mail a day with the installs by build, device and country, and no mail on days with no installs. Webhooks to Slack, Microsoft Teams, Google Chat or Discord can post each install.
- How long do links last?
- Without an account 3 days, on Free 7 days, on Pro and Team as long as you subscribe. Diawi counts its link life from the last install; ours counts from the upload on Free.
Weighing the two first? Read AppForShare vs Diawi. For every endpoint, see the CI API reference.