Endpoints
- Upload
POST /api/v1/upload- Health
GET /api/v1/health- Request schema
/api/v1/schemas/upload-request.json- Response schema
/api/v1/schemas/upload-response.json
Developer docs
Anonymous uploads for curl, scripts, and ShareX. The upload endpoint accepts multipart files and returns either plain text or JSON based on the Accept header.
POST /api/v1/uploadGET /api/v1/health/api/v1/schemas/upload-request.json/api/v1/schemas/upload-response.jsonWithout a JSON Accept header, Warpbox prints one plain box URL for shell-friendly usage.
curl -F file=@./report.pdf {{.Data.UploadURL}}
For automation, request JSON to get file URLs and the private manage/delete URLs.
curl -F file=@./report.pdf \
-H 'Accept: application/json' \
{{.Data.UploadURL}}
The raw delete token is returned only once inside manageUrl and deleteUrl. Keep those links private.
{
"boxId": "abc123",
"boxUrl": "{{.Data.BaseURL}}/d/abc123",
"zipUrl": "{{.Data.BaseURL}}/d/abc123/zip",
"manageUrl": "{{.Data.BaseURL}}/d/abc123/manage/private-token",
"deleteUrl": "{{.Data.BaseURL}}/d/abc123/manage/private-token/delete",
"expiresAt": "2026-06-05T12:00:00Z",
"files": [
{
"id": "file123",
"name": "report.pdf",
"size": "2.4 MiB",
"url": "{{.Data.BaseURL}}/d/abc123/f/file123"
}
]
}
/api/v1/sharex/warpbox-anonymous.sxcu.{{.Data.ShareXExamplePath}} and change RequestURL to {{.Data.ShareXExampleURL}}.FileFormName as {{.Data.ShareXFileFieldName}}..sxcu file into ShareX as a custom uploader.boxUrl as the public URL and manageUrl as the deletion URL.{
"RequestMethod": "POST",
"RequestURL": "{{.Data.ShareXExampleURL}}",
"Headers": { "Accept": "application/json" },
"Body": "MultipartFormData",
"FileFormName": "{{.Data.ShareXFileFieldName}}",
"URL": "$json:boxUrl$",
"DeletionURL": "$json:manageUrl$"
}
fileOne or more files for curl, browser, and generic multipart clients.
sharexOne or more files from ShareX custom uploader configs.
max_daysOptional number of days before expiration. Defaults to 7.
expires_minutesOptional lifetime in minutes. Takes precedence over max_days when greater than zero — useful for sub-day expiries (e.g. 60 for one hour).
max_downloadsOptional download count limit.
passwordOptional password required before viewing/downloading.
obfuscate_metadataOptional on; hides names/counts until unlock when a password is set.