1 · Authenticate
Create a key under Dashboard → API & webhooks and send it as “Authorization: Bearer dvk_…” (or the X-Api-Key header).
Upload files from your app, script or server, get share links back and react to downloads with signed webhooks. JSON over HTTPS, one API key.
Create a key under Dashboard → API & webhooks and send it as “Authorization: Bearer dvk_…” (or the X-Api-Key header).
Small files in one request; large files (up to your plan limit) in resumable chunks. The same limits as in the web app apply.
Webhooks tell your system when a transfer is live, downloaded, commented on or updated.
curl -H "Authorization: Bearer dvk_YOUR_KEY" \
-F "files[][email protected]" -F "files[][email protected]" \
-F "title=Quarterly report" -F "retention_days=7" \
https://dropvik.com/api/v1/upload
Response (201):
{
"code": "k3x9q2m7tz",
"status": "active",
"link": "https://dropvik.com/t/k3x9q2m7tz",
"file_count": 2,
"total_size": 48213377,
"files": [ { "id": 812, "name": "report.pdf", "size": 1204331, "sha256": "…" }, … ]
}
Base URL: https://dropvik.com/api/v1
/accountYour plan, storage quota and upload limits.
/uploadUpload small files in one multipart request and get the link back.
/transfersStart a chunked upload for large files (returns the file ids and chunk size).
/transfers/{uuid}/chunk/{file}/{index}Send one chunk as the raw request body.
/transfers/{uuid}/completeFinish the upload: virus scan, storage and e-mail delivery.
/transfers/{uuid}/statusPoll a transfer that is still processing.
/transfersList your transfers (filters: status, search; paging: count, page).
/transfers/{code}Details of one transfer including its files.
/transfers/{code}Delete a transfer and its files.
# 1. start
curl -H "Authorization: Bearer dvk_YOUR_KEY" -H "Content-Type: application/json" \
-d '{"files":[{"name":"film.mov","size":7340032000}],"delivery":"email","recipients":["[email protected]"]}' \
https://dropvik.com/api/v1/transfers
# 2. every chunk (index 0, 1, 2 … up to total_chunks - 1)
curl -X PUT -H "Authorization: Bearer dvk_YOUR_KEY" -H "Content-Type: application/octet-stream" \
--data-binary @chunk-0.bin https://dropvik.com/api/v1/transfers/UUID/chunk/FILE_ID/0
# 3. finish
curl -X POST -H "Authorization: Bearer dvk_YOUR_KEY" https://dropvik.com/api/v1/transfers/UUID/complete
Options for both upload methods: title, message, retention_days (1, 3, 7, 30, 365, 0), password, self_destruct, max_downloads, delivery (link | email), recipients[], folder_id.
Set a webhook URL in your dashboard. Every event is a JSON POST with an X-Dropvik-Event header; if you set a secret, the body is signed in X-Dropvik-Signature.
transfer.completedA transfer finished uploading and is live.
transfer.downloadedSomeone downloaded files from your transfer.
transfer.commentA recipient left a comment, picks or feedback.
transfer.versionA new version was uploaded to an existing link.
file_request.uploadFiles arrived through one of your file request links.
Verifying the signature (PHP):
$body = file_get_contents('php://input');
$expected = 'sha256=' . hash_hmac('sha256', $body, $webhookSecret);
if (! hash_equals($expected, $_SERVER['HTTP_X_DROPVIK_SIGNATURE'] ?? '')) {
http_response_code(401); exit;
}
$event = json_decode($body, true); // { "event": "transfer.downloaded", "time": "…", "data": { … } }
Our Chrome extension (also works in Edge and Brave) is built on this API: upload large files from the toolbar and insert the download link straight into the e-mail you are writing in Gmail or Outlook on the web.
Download the extension (ZIP · v1.0.0)
Errors return a JSON body with an “error” message and the usual HTTP status codes: 401 invalid key, 403 API not enabled, 422 validation or plan limit, 429 too many requests. Depending on your plan, API access is available right away or after a short application in the dashboard.