Shares

A share is one or more encrypted files behind one link. Uploads are multipart: create the share, upload each encrypted part to the presigned URL you get back, then complete. Encryption happens in your client: the server stores only the encrypted file and never sees the key. Unless you are reimplementing the envelope, use the CLI, which does all of this.

POST/api/v1/sharesscope: shares:write

Create a share. Returns the share id, an upload_id, and the part geometry (size and count).

POST/api/v1/shares/{id}/partsscope: shares:write

Get presigned PUT URLs for the parts you still need to upload.

GET/api/v1/shares/{id}/uploadscope: shares:write

Upload status: which parts are already stored, so an interrupted upload can continue.

POST/api/v1/shares/{id}/completescope: shares:write

Finish the multipart upload once every part is stored. The share becomes active.

POST/api/v1/shares/{id}/abortscope: shares:write

Cancel an unfinished upload and discard its parts.

GET/api/v1/sharesscope: shares:read

List the shares in the workspace, with status, size, downloads and expiry.

GET/api/v1/shares/{id}scope: shares:read

One share's details, including the people it was emailed to.

PATCH/api/v1/shares/{id}scope: shares:write

Move an active share's expiry: {"expires_at": "2026-10-12T17:00:00Z"}. The link and key stay the same. A share is available at most your plan's longest time from the day it was sent (expires_max in the reply); later dates answer expiry_too_long.

GET/api/v1/shares/{id}/receiptsscope: shares:read

The download activity (receipts in the API): who opened, started and finished, and the browser used.

POST/api/v1/shares/{id}/emailscope: email:send

Email the link to one or more people, one message each. The full link (with the key after the #) is used once to send and never stored, so pass it from the client that holds the key. Or send {"strict": true} and no link: the email carries the link without its key, the recipient's page asks for it, and you pass the key on another way. A workspace rule can make every email go without the key; the reply's keyless says which went.

DELETE/api/v1/shares/{id}scope: shares:write

Delete the share: the file is deleted and the link stops working.

Upload links (handoffs in the API)

An upload link is a one-time link you give someone (or an assistant) to drop a file into.

POST/api/v1/handoffsscope: shares:write
GET/api/v1/handoffs/{id}scope: shares:read