Access & visibility
Allow documents.CreateUpload on your API key.
Workspace access by default. Private member data requires approved member delegation through Brigg-Act-As; the key supplies permissions while private ownership and project boundaries remain enforced.
Request fields
Send a JSON object with the following fields. Required fields must be included; omit optional fields you do not need.
filenamestringRequiredOriginal filename, including its extension.
At least 1 character. At most 255 characters.
content_typestringRequiredMedia type of the file, such as application/pdf. Null when no binary file exists.
At least 1 character.
size_bytesintegerRequiredFile size in bytes. Null for a document without a downloadable binary file.
Greater than 0.
visibilitystringRequiredWho may read the completed file. Personal files belong to the approved acting member; workspace files use shared access.
Allowed: "personal", "workspace".
pathstringOptionalFolder path within the selected document collection. An empty string is its root.
Default: "".
Where this fits in an upload
The file guide includes a streaming Node.js helper and the complete HTTP sequence: create an upload, request a signed URL for each part, PUT the bytes directly to that URL, then complete the upload. Never send the Brigg API key to a transfer URL.
Keep the same credential and acting member for every step. Follow the returned part size and count rather than imposing your own split. Completing with only upload_id lets Brigg collect part receipts. A successful byte transfer is not a completed file: verification and scanning must finish before you receive a usable file_id.
Retain upload_id for recovery. Read its state before retransferring an interrupted upload; ready returns the existing file ID, while an expired upload requires a new start. Temporary transfer URLs and completed file IDs have different lifetimes.
Response
Returns 200 OK with a JSON body.
upload_idstringRequiredUpload ID returned by documents.CreateUpload. Only the credential that created this upload can transfer parts, complete it or cancel it. This is different from the completed file ID.
statestringRequiredUpload lifecycle state. Uploading bytes and completing the file are separate steps.
Allowed: "uploading", "ready", "cancelled", "expired".
expires_atnumberRequiredUpload expiry, in Unix milliseconds. Complete the upload before this time.
modestringRequiredTransfer mode selected by Brigg: single upload or multipart upload. Follow the returned part count and part size.
Allowed: "single", "multipart".
part_sizeintegerRequiredBytes in each part, except the last part which contains the remaining bytes. Split the original file at these boundaries.
part_countintegerRequiredNumber of parts to transfer before completion. One means the entire file is sent in a single PUT request.
file_idstringOptionalStable file ID returned by documents.CompleteUpload, documents.ListDocuments or a document creation operation. Use the same ID for downloads, attachments and supported file-based workflows. Do not use a filename or storage path.
Errors & retries
Set BRIGG_REQUEST_ID once for each logical action. The samples send it as Idempotency-Key. Reuse the same value and body on retries, including after a timeout; a missing response does not prove the action failed.
For rate limits, follow the server’s retry guidance and back off. See HTTP errors and safe retries and limits.
| HTTP status | Code | What to do |
|---|---|---|
| 400 | invalid_json |
Send a JSON object with Content-Type: application/json. |
| 400 | invalid_input |
Check the request fields and types. Supply a stable Idempotency-Key containing 1–200 characters. |
| 401 | invalid_key |
The workspace API key is missing, invalid or revoked. |
| 403 | forbidden |
Check the key’s operation and resource grants. If Brigg-Act-As is supplied, the key must be authorized to delegate to that member. |
| 404 | not_found |
The requested operation or resource is not available to this credential. |
| 429 | rate_limited |
Wait for Retry-After before retrying. Reuse the original Idempotency-Key. |
Next steps
JSON schemas
Use the complete schemas for validation or client generation.
Full request JSON schema
{
"type": "object",
"properties": {
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Original filename, including its extension."
},
"content_type": {
"type": "string",
"minLength": 1,
"description": "Media type of the file, such as application/pdf. Null when no binary file exists."
},
"size_bytes": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "File size in bytes. Null for a document without a downloadable binary file."
},
"visibility": {
"type": "string",
"enum": [
"personal",
"workspace"
],
"description": "Who may read the completed file. Personal files belong to the approved acting member; workspace files use shared access."
},
"path": {
"type": "string",
"default": "",
"description": "Folder path within the selected document collection. An empty string is its root."
}
},
"required": [
"filename",
"content_type",
"size_bytes",
"visibility"
],
"additionalProperties": false,
"examples": [
{
"filename": "Agreement.pdf",
"content_type": "application/pdf",
"size_bytes": 48231,
"visibility": "workspace"
}
]
}Full response JSON schema
{
"type": "object",
"properties": {
"upload_id": {
"type": "string",
"description": "Upload ID returned by documents.CreateUpload. Only the credential that created this upload can transfer parts, complete it or cancel it. This is different from the completed file ID."
},
"state": {
"type": "string",
"enum": [
"uploading",
"ready",
"cancelled",
"expired"
],
"description": "Upload lifecycle state. Uploading bytes and completing the file are separate steps."
},
"expires_at": {
"type": "number",
"description": "Upload expiry, in Unix milliseconds. Complete the upload before this time."
},
"mode": {
"type": "string",
"enum": [
"single",
"multipart"
],
"description": "Transfer mode selected by Brigg: single upload or multipart upload. Follow the returned part count and part size."
},
"part_size": {
"type": "integer",
"description": "Bytes in each part, except the last part which contains the remaining bytes. Split the original file at these boundaries."
},
"part_count": {
"type": "integer",
"description": "Number of parts to transfer before completion. One means the entire file is sent in a single PUT request."
},
"file_id": {
"type": "string",
"description": "Stable file ID returned by documents.CompleteUpload, documents.ListDocuments or a document creation operation. Use the same ID for downloads, attachments and supported file-based workflows. Do not use a filename or storage path."
}
},
"required": [
"upload_id",
"state",
"expires_at",
"mode",
"part_size",
"part_count"
],
"additionalProperties": false,
"examples": [
{
"upload_id": "upl_example",
"state": "uploading",
"expires_at": 1794387600000,
"mode": "single",
"part_size": 48231,
"part_count": 1
}
]
}