Transloadit
Pricing
  • File Uploads
  • File Importing
  • Batch Processing
  • Video Encoding
  • Audio Encoding
  • Image Processing
  • Document Processing
  • Artificial Intelligence
  • File Filtering & Security
  • Media Cataloging
  • File Compression
  • Code Evaluation
  • File Exporting
  • Smart CDN
  • View all services
  • Explore integrations
  • Explore live demos
  • Uppy
  • TransloaditKit
  • Android SDK
  • Node.js SDK
  • Python SDK
  • Ruby SDK
  • Go SDK
  • Java SDK
  • PHP SDK
  • Zapier
  • MCP Server
  • Transloadit CLI
  • Terraform
  • Essentials
  • Best Practices
  • FAQ
  • Robots
  • API
  • Formats
  • Build your first app
  • About
  • Comparisons
  • Open Source
  • Testimonials
  • Jobs
  • Security
  • Posts
  • DevTimes
  • DevTips
  • Press
  • Research
  • Case Studies
  • Solutions
  • Guides
  • Glossary
  • Legal
  • Tools
  • Helping Coursera bring education to millions around the world
  • Transloadit Support
  • Open Source Support
  • Service level agreement
EssentialsRobotsFAQAPIFormatsBest Practices
Topics
  • Endpoints
  • Response codes
  • Authentication
  • Webhooks
  • Metadata
  • API security
  • Rate limiting
  • Queues
  • Resumable uploads
Authentication
  • Create a bearer token
  • Create a new Auth Key
  • Retrieve list of Auth Keys
  • Retrieve Auth Key scopes
  • Edit an Auth Key
  • Delete an Auth Key
  • Retrieve an Auth Key secret
Assemblies
  • Create a new Assembly
  • Retrieve an Assembly Status
  • Create an Assembly with a supplied ID
  • Stream Assembly changes live
  • Cancel a running Assembly
  • Replay an Assembly
  • Retrieve list of Assemblies
  • Assembly Status response
  • Retrieve Assembly statistics
Webhooks
  • Retrieve Assembly Notifications
  • Replay Assembly Notification
Billing
  • Retrieve a month’s bill
Queues
  • Retrieve currently used priority job slots
  • Retrieve priority job slot statistics
Resumable Uploads
  • Discover tus capabilities
  • Create a tus upload
  • Retrieve a tus upload offset
  • Upload tus file bytes
  • Terminate a tus upload
  • Download a tus upload
Template Credentials
  • Create a new Template Credential
  • Retrieve a Template Credential
  • Edit a Template Credential
  • Delete a Template Credential
  • Retrieve list of Template Credentials
  • Retrieve Template Credential types
Templates
  • Create a new Template
  • Retrieve a Template
  • Edit a Template
  • Delete a Template
  • Retrieve list of Templates
Digital Asset Management
  • Move or rename a DAM asset
  • Delete a DAM asset
  • Move DAM assets in bulk
  • Delete DAM assets in bulk

Download a tus upload

Downloads bytes from a resumable upload, including supported range responses.

GET{UPLOAD_URL}
Note

Use the upload capability URL from the Location header of the successful create-upload response. It does not use ambient API2 host credentials.

This endpoint downloads the bytes received so far, even while an upload is unfinished. A successful HTTP 200 or 206 response does not mean the upload is complete. An upload with no received bytes can return HTTP 200 with an empty body. For a range response, the size in Content-Range is the current stored size, not the declared final upload length.

Before downloading a complete upload, retrieve its offset. Check that Upload-Length is present and Upload-Offset equals Upload-Length. Upload-Defer-Length: 1 means the total length is still unknown, so the transfer is not complete.

Assembly processing and export success are separate from completing this tus transfer. Check the terminal Assembly Status and its results before publishing a processed asset.

Request example

Set UPLOAD_URL to the complete Location URL returned when creating the tus upload. Keep this URL secret.

curl --fail-with-body -sS --request GET \
  --url "${UPLOAD_URL:?Set UPLOAD_URL}" \
  --output './download.bin'

Request headers

Complete JSON Schema

Open JSON in a new tab

Normalized lowercase headers for the tusd download extension.

Fields beyond those listed for this object are accepted.

FieldType and description
if-match
string (minimum length: 1, maximum length: 8192)

An entity tag or wildcard that the upload must match.

if-modified-since
string (minimum length: 1, maximum length: 8192)

An HTTP date after which a modified upload is returned.

if-none-match
string (minimum length: 1, maximum length: 8192)

An entity tag or wildcard that the upload must not match.

if-range
string (minimum length: 1, maximum length: 8192)

An entity tag or HTTP date that makes a byte range conditional.

if-unmodified-since
string (minimum length: 1, maximum length: 8192)

An HTTP date after which a modified upload fails the precondition.

range
string (maximum length: 8192)

One or more canonical byte ranges.

Validation pattern (regular expression)^bytes=(?:[0-9]+-[0-9]*|-[0-9]+)(?:,(?:[0-9]+-[0-9]*|-[0-9]+))*$
tus-resumable
string (always: "1.0.0")

The negotiated tus version when the client supplies it.

Response

HTTP 200

Binary response body. */*

Response headers
Complete JSON Schema

Open JSON in a new tab

Fields beyond those listed for this object are accepted.

FieldType and description
accept-ranges

required

string (always: "bytes")
content-disposition

required

string (minimum length: 1)
content-length

required

string

A canonical unsigned base-10 byte count in the signed 64-bit range, without zero padding or a plus sign.

Validation pattern (regular expression)^(?:0|[1-9][0-9]{0,17}|[1-8][0-9]{18}|9[0-1][0-9]{17}|92[0-1][0-9]{16}|922[0-2][0-9]{15}|9223[0-2][0-9]{14}|92233[0-6][0-9]{13}|922337[0-1][0-9]{12}|92233720[0-2][0-9]{10}|922337203[0-5][0-9]{9}|9223372036[0-7][0-9]{8}|92233720368[0-4][0-9]{7}|922337203685[0-3][0-9]{6}|9223372036854[0-6][0-9]{5}|92233720368547[0-6][0-9]{4}|922337203685477[0-4][0-9]{3}|9223372036854775[0-7][0-9]{2}|922337203685477580[0-6]|9223372036854775807)$
content-type

required

string
Validation pattern (regular expression)^[a-z]+\/[a-z0-9+.-]+$
last-modified

required

string (minimum length: 1)
tus-resumable

required

string (always: "1.0.0")
x-content-type-options

required

string (always: "nosniff")

HTTP 206

Binary response body. */*

Response headers
Complete JSON Schema

Open JSON in a new tab

FieldType and description
accept-ranges

required

string (always: "bytes")
content-disposition

required

string (minimum length: 1)
content-length

required

string

A canonical unsigned base-10 byte count in the signed 64-bit range, without zero padding or a plus sign.

Validation pattern (regular expression)^(?:0|[1-9][0-9]{0,17}|[1-8][0-9]{18}|9[0-1][0-9]{17}|92[0-1][0-9]{16}|922[0-2][0-9]{15}|9223[0-2][0-9]{14}|92233[0-6][0-9]{13}|922337[0-1][0-9]{12}|92233720[0-2][0-9]{10}|922337203[0-5][0-9]{9}|9223372036[0-7][0-9]{8}|92233720368[0-4][0-9]{7}|922337203685[0-3][0-9]{6}|9223372036854[0-6][0-9]{5}|92233720368547[0-6][0-9]{4}|922337203685477[0-4][0-9]{3}|9223372036854775[0-7][0-9]{2}|922337203685477580[0-6]|9223372036854775807)$
last-modified

required

string (minimum length: 1)
tus-resumable

required

string (always: "1.0.0")
x-content-type-options

required

string (always: "nosniff")

Any of the following schemas may apply:

required properties: content-range, content-type

Fields beyond those listed for this object are accepted.

FieldType and description
content-range

required

string

The inclusive returned byte range and current stored size, not the declared final upload length.

Validation pattern (regular expression)^bytes [0-9]+-[0-9]+\/[0-9]+$
content-type

required

string
Validation pattern (regular expression)^[a-z]+\/[a-z0-9+.-]+$
required properties: content-type

Fields beyond those listed for this object are accepted.

FieldType and description
content-range
never

This value is prohibited.

content-type

required

string
Validation pattern (regular expression)^multipart\/byteranges; boundary=[0-9a-f]{60}$

HTTP 304

No response body.

Response headers
Complete JSON Schema

Open JSON in a new tab

Fields beyond those listed for this object are accepted.

FieldType and description
content-disposition

required

string (minimum length: 1)
last-modified

required

string (minimum length: 1)
tus-resumable

required

string (always: "1.0.0")
x-content-type-options

required

string (always: "nosniff")

HTTP 412

No response body.

Response headers
Complete JSON Schema

Open JSON in a new tab

Fields beyond those listed for this object are accepted.

FieldType and description
content-disposition

required

string (minimum length: 1)
content-type

required

string
Validation pattern (regular expression)^[a-z]+\/[a-z0-9+.-]+$
last-modified

required

string (minimum length: 1)
tus-resumable

required

string (always: "1.0.0")
x-content-type-options

required

string (always: "nosniff")

HTTP 416

Text response body. text/plain; charset=utf-8

Response body schema
Complete JSON Schema

Open JSON in a new tab

"invalid range: failed to overlap\n" | "invalid range\n"
Response headers
Complete JSON Schema

Open JSON in a new tab

FieldType and description
content-disposition

required

string (minimum length: 1)
content-type

required

string (always: "text/plain; charset=utf-8")
tus-resumable

required

string (always: "1.0.0")
x-content-type-options

required

string (always: "nosniff")

Any of the following schemas may apply:

required properties: content-range

Fields beyond those listed for this object are accepted.

FieldType and description
content-range

required

string

The current stored size for an unsatisfied byte range, not the declared final upload length.

Validation pattern (regular expression)^bytes [*]\/[0-9]+$
Variant 2

Fields beyond those listed for this object are accepted.

FieldType and description
content-range
never

This value is prohibited.

Error response

Text response body. text/plain; charset=utf-8

Response body schema
Complete JSON Schema

Open JSON in a new tab

string

Any of the following schemas may apply:

Variant 1: string
string
Validation pattern (regular expression)^ERR_[A-Z0-9_]+: [^\r\n]*\n$
Variant 2: string
string

Raw text/plain hook error framing with a verbatim payload; JSON-shaped but not necessarily valid JSON.

Validation pattern (regular expression)^\{"error":"(?:[\x09-\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]|[^\x09-\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff])*"\}$
Response headers
Complete JSON Schema

Open JSON in a new tab

Fields beyond those listed for this object are accepted.

FieldType and description
content-type

required

string (always: "text/plain; charset=utf-8")
tus-resumable

required

string (always: "1.0.0")
x-content-type-options

required

string (always: "nosniff")
Previous page ← Terminate a tus uploadNext page Create a new Template Credential →
Contact support⁠

TransloaditChecking status…

Product

  • Services
  • Pricing
  • Demos
  • Tools
  • Security
  • Support

Company

  • About/Press
  • Blog/Jobs
  • Comparisons/Compliance matrix
  • Research
  • Open source
  • Solutions

Docs

  • Getting started
  • Transcoding
  • FAQ
  • API
  • Guides/DevTips
  • Supported formats

More

  • Platform status⁠
  • Community forum⁠
  • StackOverflow⁠
  • Uppy
  • tus⁠

© 2009–2026 Transloadit-II GmbH

PrivacyTermsImprint
EnglishDeutschEspañol