curl --request PATCH \
--url https://api.tusky.io/v2/uploads/{uploadId} \
--header 'Content-Type: <content-type>' \
--header 'Tus-Resumable: <tus-resumable>' \
--header 'Upload-Offset: <upload-offset>'{
"Upload-Offset": {}
}curl --request PATCH \
--url https://api.tusky.io/v2/uploads/{uploadId} \
--header 'Content-Type: <content-type>' \
--header 'Tus-Resumable: <tus-resumable>' \
--header 'Upload-Offset: <upload-offset>'{
"Upload-Offset": {}
}Upload-Offset must match the server’s current offset exactly.
When the final chunk is received (offset equals Upload-Length), Tusky processes the file — encrypting if applicable, creating the file record, and queuing for Walrus publishing.
Location header returned by Create Upload.1.0.0.application/offset+octet-stream.204 No Content on success.
Upload-Length, the upload is complete.{
"uploadId": "upload_xyz789"
}
curl -X PATCH https://api.tusky.io/v2/uploads/upload_xyz789 \
-H "Api-Key: YOUR_API_KEY" \
-H "Tus-Resumable: 1.0.0" \
-H "Upload-Offset: 0" \
-H "Content-Type: application/offset+octet-stream" \
--data-binary @chunk1.bin \
-D -
HTTP/1.1 204 No Content
Upload-Offset: 5242880
Tus-Resumable: 1.0.0
Upload-Offset must exactly match the server’s current offset. On mismatch the server returns 409 Conflict. Use Get Upload Status to check the current offset before retrying.