Upload Large File >250MB
By using Upload Server API, you can upload large files of size up to 50 GB based on your WorkDrive edition. In stream mode, files will automatically be split into many small parts and uploaded to the server. The API response will only have details of the successfully uploaded files. To check the failure status of files, you have to use the Upload Progress API.
The various domains and their respective upload server domain URLs are:
- US: https://upload.zoho.com
- AU: https://upload.zoho.com.au
- EU: https://upload.zoho.eu
- IN: https://upload.zoho.in
- CN: https://upload.zoho.com.cn
- JP: https://upload.zoho.jp
- UAE: https://files.zoho.ae
- CA: https://upload.zohocloud.ca
- SA: https://files.zoho.sa
Note:
We have to send the file content in request body as binary.
We have code samples for this API in multiple programming languages.See code samples
We recommend using Chunk File Upload API for files greater than 1 GB in size.
<a href='Getting Started Filters' class='zen-ref'>refer here</a>
Endpoints
OAuth Scope
curl --request POST \
--url https://upload.zoho.com/workdrive-api/v1/stream/upload \
--header 'Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52' \
--header 'upload-id: SOME_STRING_VALUE' \
--header 'x-filename: SOME_STRING_VALUE' \
--header 'x-parent_id: SOME_STRING_VALUE' \
--header 'x-streammode: SOME_STRING_VALUE'Headers
The name of the file should be URL encoded with UTF-8 Charset.
The unique ID of the folder where files are to be uploaded.
unique string - for processing each upload.
If set as "true", a file with the matching name will be uploaded as a top version over the existing file.
If set as "false", a file with the matching name will have the timestamp added to it on upload.
Default value 1 - for stream mode.
{
"initParameterNames": {},
"servletContext": {
"initParameterNames": {},
"virtualServerName": "string",
"classLoader": {
"parent": {},
"unnamedModule": {
"declaredAnnotations": [
{}
],
"named": true,
"classLoader": {},
"name": "string",
"annotations": [
{}
],
"descriptor": {
"automatic": true,
"open": true
},
"packages": [
"string"
],
"layer": {}
},
"name": "string",
"registeredAsParallelCapable": true,
"definedPackages": [
{
"specificationVendor": "string",
"declaredAnnotations": [
null
],
"specificationTitle": "string",
"implementationVersion": "string",
"sealed": true,
"name": "string",
"implementationVendor": "string",
"annotations": [
null
],
"implementationTitle": "string",
"specificationVersion": "string"
}
]
},
"filterRegistrations": {
"property1": {
"initParameters": {
"property1": "string",
"property2": "string"
},
"name": "string",
"className": "string",
"servletNameMappings": [
"string"
],
"urlPatternMappings": [
"string"
]
},
"property2": {
"initParameters": {
"property1": "string",
"property2": "string"
},
"name": "string",
"className": "string",
"servletNameMappings": [
"string"
],
"urlPatternMappings": [
"string"
]
}
},
"servletNames": {},
"contextPath": "string",
"defaultSessionTrackingModes": [
"COOKIE"
],
"majorVersion": 0,
"sessionCookieConfig": {
"path": "string",
"maxAge": 0,
"domain": "string",
"name": "string",
"comment": "string",
"httpOnly": true,
"secure": true
},
"effectiveMinorVersion": 0,
"effectiveSessionTrackingModes": [
"COOKIE"
],
"attributeNames": {},
"servletRegistrations": {
"property1": {
"initParameters": {
"property1": "string",
"property2": "string"
},
"mappings": [
"string"
],
"runAsRole": "string",
"name": "string",
"className": "string"
},
"property2": {
"initParameters": {
"property1": "string",
"property2": "string"
},
"mappings": [
"string"
],
"runAsRole": "string",
"name": "string",
"className": "string"
}
},
"serverInfo": "string",
"jspConfigDescriptor": {
"jspPropertyGroups": [
{
"elIgnored": "string",
"isXml": "string",
"errorOnUndeclaredNamespace": "string",
"trimDirectiveWhitespaces": "string",
"scriptingInvalid": "string",
"urlPatterns": [
null
],
"pageEncoding": "string",
"includePreludes": [
null
],
"buffer": "string",
"deferredSyntaxAllowedAsLiteral": "string",
"defaultContentType": "string",
"includeCodas": [
null
]
}
],
"taglibs": [
{
"taglibLocation": "string",
"taglibURI": "string"
}
]
},
"servlets": {},
"requestCharacterEncoding": "string",
"responseCharacterEncoding": "string",
"sessionTimeout": 0,
"minorVersion": 0,
"servletContextName": "string",
"effectiveMajorVersion": 0
},
"servletConfig": {
"initParameterNames": {},
"servletContext": {
"initParameterNames": {},
"virtualServerName": "string",
"classLoader": {
"parent": {},
"unnamedModule": {
"declaredAnnotations": [
null
],
"named": true,
"classLoader": {},
"name": "string",
"annotations": [
null
],
"descriptor": {},
"packages": [
null
],
"layer": {}
},
"name": "string",
"registeredAsParallelCapable": true,
"definedPackages": [
{
"declaredAnnotations": [],
"annotations": []
}
]
},
"filterRegistrations": {
"property1": {
"initParameters": {},
"name": "string",
"className": "string",
"servletNameMappings": [
null
],
"urlPatternMappings": [
null
]
},
"property2": {
"initParameters": {},
"name": "string",
"className": "string",
"servletNameMappings": [
null
],
"urlPatternMappings": [
null
]
}
},
"servletNames": {},
"contextPath": "string",
"defaultSessionTrackingModes": [
"COOKIE"
],
"majorVersion": 0,
"sessionCookieConfig": {
"path": "string",
"maxAge": 0,
"domain": "string",
"name": "string",
"comment": "string",
"httpOnly": true,
"secure": true
},
"effectiveMinorVersion": 0,
"effectiveSessionTrackingModes": [
"COOKIE"
],
"attributeNames": {},
"servletRegistrations": {
"property1": {
"initParameters": {},
"mappings": [
null
],
"runAsRole": "string",
"name": "string",
"className": "string"
},
"property2": {
"initParameters": {},
"mappings": [
null
],
"runAsRole": "string",
"name": "string",
"className": "string"
}
},
"serverInfo": "string",
"jspConfigDescriptor": {
"jspPropertyGroups": [
{
"urlPatterns": [],
"includePreludes": [],
"includeCodas": []
}
],
"taglibs": [
{}
]
},
"servlets": {},
"requestCharacterEncoding": "string",
"responseCharacterEncoding": "string",
"sessionTimeout": 0,
"minorVersion": 0,
"servletContextName": "string",
"effectiveMajorVersion": 0
},
"servletName": "string"
},
"servletInfo": "string",
"servletName": "string"
}
{
"errors": [
{
"id": "D9236",
"title": "File extension is on the blocked list"
}
]
}
{
"errors": [
{
"id": "D9237",
"title": "File extension not in org-allowed list"
}
]
}
{
"errors": [
{
"id": "D9202",
"title": "File size exceeds the allowed limit"
}
]
}
{
"errors": [
{
"id": "D9218",
"title": "Duplicate filename with no override"
}
]
}
{
"errors": [
{
"id": "D9234",
"title": "Chunk upload session timed out"
}
]
}
{
"errors": [
{
"id": "D9244",
"title": "Camera upload device folder not found"
}
]
}
{
"errors": [
{
"id": "D9233",
"title": "Chunk uploaded out of sequence"
}
]
}
{
"errors": [
{
"id": "D9245",
"title": "Invalid camera upload device folder"
}
]
}
{
"errors": [
{
"id": "D9235",
"title": "Chunk MD5 checksum does not match"
}
]
}
{
"errors": [
{
"id": "D9238",
"title": "Same chunk uploaded more than once"
}
]
}
{
"errors": [
{
"id": "D9231",
"title": "Upload partially completed"
}
]
}
{
"errors": [
{
"id": "D9222",
"title": "MyFolder storage restricted"
}
]
}
{
"errors": [
{
"id": "D9200",
"title": "Unhandled / unknown upload error"
}
]
}
{
"errors": [
{
"id": "D9201",
"title": "No file content found"
}
]
}
{
"errors": [
{
"id": "D9223",
"title": "Team folder library storage limit exceeded"
}
]
}
{
"errors": [
{
"id": "D9214",
"title": "Bad input - missing folder/resource ID"
}
]
}
{
"errors": [
{
"id": "D9239",
"title": "OnBehalf user is not a member of the org"
}
]
}
{
"errors": [
{
"id": "D9219",
"title": "Permission denied"
}
]
}
{
"errors": [
{
"id": "D9220",
"title": "File locked by another user"
}
]
}
{
"errors": [
{
"id": "D9211",
"title": "Org storage quota exceeded"
}
]
}
{
"errors": [
{
"id": "D9221",
"title": "MyFolder storage quota exceeded"
}
]
}
© 2026, Zoho Corporation Pvt. Ltd. All Rights Reserved.