A transfer is a shareable link to one or more files or folders already in the workspace’s library (upload them first with Uploads). It is the same kind of link the app’s own send flow creates: an expiry, a password, one-time-download protection. This endpoint covers the plain case only – video, audio and canvas transfers, paid transfers and the “organization” recipient-email flow stay app-only for now.
| Method and path | Scope | What it does |
|---|---|---|
POST /transfers |
transfers:create |
Creates a transfer and returns its share link |
GET /transfers/{id} |
transfers:read |
Reads one transfer’s current status |
DELETE /transfers/{id} |
transfers:create |
Ends a transfer early; the link stops working at once |
Create a transfer
curl -X POST -H "Authorization: Bearer $TARKLE_TOKEN" -H "X-Workspace-Key: $KEY" -H "Content-Type: application/json" \
-d '{"items":[{"id":"123","type":"file"}],"access":"public","title":"Q4 build"}' \
https://tarkle.com/api/v1/transfers{
"id": "2857",
"url": "https://acme.tarkle.com/t/3QL4HIF9OTOP",
"slug": "3QL4HIF9OTOP",
"title": "Q4 build",
"description": null,
"access": "public",
"expires_at": null,
"burn_after_read": false,
"view_only": false,
"download_mode": "standard",
"created_at": "2026-11-06T07:19:01.603729+00:00"
}url is the real, working share link on the workspace’s own custom domain when it has one, otherwise its
hosted address – always /t/{slug}.
Body
| Field | Required | Description |
|---|---|---|
items |
Yes | [{ id, type }], type is "file" or "folder", id is a file id (digits, from POST /uploads/.../complete) or a folder id (uuid) |
access |
Yes | "public" or "password" |
password |
Only with access: "password" |
The password needed to open the link |
title |
No | Shown on the share page |
description |
No | Shown on the share page |
expires_at |
No | ISO 8601, must be in the future. Omit for a link that never expires |
burn_after_read |
No | The link stops working after its first download. There is no numeric download-count limit today – only this one-time form |
view_only |
No | Viewers can open files but not download them |
download_mode |
No | "standard" (default), "email_required" or "direct" |
Read and end a transfer
curl -H "Authorization: Bearer $TARKLE_TOKEN" -H "X-Workspace-Key: $KEY" https://tarkle.com/api/v1/transfers/2857
curl -X DELETE -H "Authorization: Bearer $TARKLE_TOKEN" -H "X-Workspace-Key: $KEY" https://tarkle.com/api/v1/transfers/2857DELETE answers { "deleted": true, "id": "2857" }; the public link answers 404 immediately afterward.
Plan limits
The same transfer-size and monthly-transfer-count limits the app applies: 413 transfer_too_large when the
combined size of the selected items exceeds the plan’s maximum transfer size, 429 transfer_monthly_limit
when the workspace has reached its plan’s monthly transfer count (Free: 15/month, Pro and above:
unlimited).
From a CI pipeline
tarkleHQ/upload-action wraps this endpoint for GitHub
Actions – upload a build artifact and get a share link back in one step. See
Automate with GitHub Actions.