Hashdrop
← All documentation

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/builds

In 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/builds

Fields

FieldRequiredMeaning
fileyesThe .apk or .ipa itself
appyesThe app slug
channelnoDev, QA, Prelive or Live. Defaults to Dev
releaseNotesnoShown on the install page and in notifications
gitCommitnoRecorded against the build
gitBranchnoRecorded against the build

What comes back

A 201 with the build's id, version and install URL. Some other answers are worth recognising:

StatusMeaning
409That version and build number already exist for this app and platform. Bump the build number
402A plan limit — storage, or builds this month
413Larger than the upload limit
415Not a file this understands
Re-uploading the same version is refused rather than silently accepted, because two different binaries sharing a version number is the hardest kind of bug report to make sense of afterwards.

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.