Uploading builds
From the browser, from curl, or from a CI pipeline.
Everything about a build that can be read from the file is read from the file. You are never asked to type a version number, and the two can therefore never disagree.
From the browser
Drag an .apk or .ipa onto the upload panel on an app's page, pick a channel, and add release notes if you want them. Large uploads show real progress.
From CI or a terminal
Create a token under CI tokens — scope it to a single app if the pipeline only ever publishes that one — then post the file:
curl -H "Authorization: Bearer hst_YOUR_TOKEN" \
-F file=@app-release.apk \
-F app=your-app-slug \
-F channel=Prelive \
-F releaseNotes="Fix invoice totals" \
https://hashdrop.io/api/buildsIn GitHub Actions
- name: Publish to Hashdrop
run: |
curl --fail-with-body \
-H "Authorization: Bearer ${{ secrets.HASHDROP_TOKEN }}" \
-F file=@android/app/build/outputs/apk/release/app-release.apk \
-F app=your-app-slug \
-F channel=Prelive \
-F gitCommit=${{ github.sha }} \
-F gitBranch=${{ github.ref_name }} \
-F releaseNotes="${{ github.event.head_commit.message }}" \
https://hashdrop.io/api/buildsFields
| Field | Required | Meaning |
|---|---|---|
| file | yes | The .apk or .ipa itself |
| app | yes | The app slug |
| channel | no | Dev, QA, Prelive or Live. Defaults to Dev |
| releaseNotes | no | Shown on the install page and in notifications |
| gitCommit | no | Recorded against the build |
| gitBranch | no | Recorded against the build |
What comes back
A 201 with the build's id, version and install URL. Some other answers are worth recognising:
| Status | Meaning |
|---|---|
| 409 | That version and build number already exist for this app and platform. Bump the build number |
| 402 | A plan limit — storage, or builds this month |
| 413 | Larger than the upload limit |
| 415 | Not a file this understands |
Retention
Builds older than 90 days are removed automatically each night. The newest build in each platform and channel is always kept however old it is, so a link never goes dead because a project went quiet.