For developers

Drop from anywhere.
Build on top of everything.

REST API, webhooks, API keys, the CLI beta, and a GitHub Actions workflow are ready now. SDKs are coming soon.

REST APIWebhooksAPI KeysCLIBetaSDKsComing soon

Drop from your terminal

Internal beta

The Droploft CLI is ready for internal testing. Download the package, install it with npm, and drop files from your terminal against Stage-A by default.

droploft-cli-0.4.0.tgz
Manual beta package for Node 20+. Use --api-url or DROPLOFT_API_URL to point the CLI at production or a local app.
Install manuallynpm install -g ./droploft-cli-0.4.0.tgz
Stage-A by defaultFresh installs talk to https://stage-a.droploft.ai.
Anonymous first useFirst droploft push works without login; sign in later when you need API keys or account-owned documents.
Pipe from stdinclaude --output html "Q1 report" | droploft push - — drop straight from your AI tool.
terminal
# Internal beta
$ curl -O https://stage-a.droploft.ai/droploft-cli-0.4.0.tgz
$ npm install -g ./droploft-cli-0.4.0.tgz
$ droploft push q1-report.html
 
  Optimizing..... 342 KB → 98 KB
  Auto TOC ...... 5 sections
  OG card ....... ready
 
  ✓ Dropped in 4.2s
  → https://stage-a.droploft.ai/d/a3x9k2
 
# Override the target app when needed
$ droploft push q1-report.html \
    --api-url http://localhost:3000

Ship from your repo

Available now

Ship from GitHub today with a copyable workflow. First run publishes a document; later runs can update the same link from the same repo.

publish-html.yml
Download the workflow, add your Droploft token, and publish HTML from your repo with the same CLI beta path used locally.
Outputs the URLExport url, document_id, slug, and version fields for follow-up steps in the same job.
Same document, new versionKeep DROPLOFT_DOCUMENT_ID in a repo variable so future runs call droploft update instead of creating a new link.
Own the workflowThe YAML lives in your repo, so you can wire step outputs into summaries, PR comments, Slack, or deploy checks.
Or just use the CLIPrefer the terminal? Local publish and CI use the same upload contract.
.github/workflows/drop.yml
name: Drop to Droploft
on:
  push:
    branches: [main]
    paths: ['reports/**.html']
 
jobs:
  drop:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: curl -fsSLO .../droploft-cli-0.4.0.tgz
      - run: npm install -g ./droploft-cli-0.4.0.tgz
      - id: droploft
        run:
          droploft push "$REPORT_PATH" --json
          # later: droploft update "$DROPLOFT_DOCUMENT_ID" ...
 
      - run: echo "Dropped: ${{ steps.droploft.outputs.url }}"

Build on top of Droploft

Use the API when you need Droploft inside your own product, scripts, or internal tools.

Open API documentation
Request and response shapes, authentication, error codes, pagination, webhooks, and SDK notes.

Subscribe to events

Get notified when something happens. Useful for triggering workflows, piping analytics to your data warehouse, or firing Slack alerts when someone reads your proposal.

9 event types
HMAC-SHA256 signed, retry on 5xx, delivered in order per endpoint.
document.publishedA new document was published
document.viewedFirst view by a unique visitor
comment.created / comment.resolvedThreaded comment lifecycle
version.created / fork.createdVersion bumps and forks
POST https://your-server.com/hook
// headers
X-Droploft-Event: document.viewed
X-Droploft-Signature: sha256=a7f...
 
// body
{
  "event": "document.viewed",
  "document_id": "a3x9k2",
  "visitor_id": "anon_f7d...",
  "source": "slack",
  "timestamp": "2026-04-11T..."
}