Skip to content

API reference

Create upload

documents.CreateUploadWriteAPI key

Start a file upload. Choose who may read the finished file. Workspace-only credentials create workspace files; approved member delegation can also create personal files owned by the delegated member. Obtain each transfer URL with GetUploadPart, send the bytes, then CompleteUpload.

POST/v1/operations/documents.CreateUpload
On this page

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.

Set up authentication · Choose permissions

Request fields

Send a JSON object with the following fields. Required fields must be included; omit optional fields you do not need.

filenamestringRequired

Original filename, including its extension.

At least 1 character. At most 255 characters.

content_typestringRequired

Media type of the file, such as application/pdf. Null when no binary file exists.

At least 1 character.

size_bytesintegerRequired

File size in bytes. Null for a document without a downloadable binary file.

Greater than 0.

visibilitystringRequired

Who may read the completed file. Personal files belong to the approved acting member; workspace files use shared access.

Allowed: "personal", "workspace".

pathstringOptional

Folder 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_idstringRequired

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.

statestringRequired

Upload lifecycle state. Uploading bytes and completing the file are separate steps.

Allowed: "uploading", "ready", "cancelled", "expired".

expires_atnumberRequired

Upload expiry, in Unix milliseconds. Complete the upload before this time.

modestringRequired

Transfer mode selected by Brigg: single upload or multipart upload. Follow the returned part count and part size.

Allowed: "single", "multipart".

part_sizeintegerRequired

Bytes in each part, except the last part which contains the remaining bytes. Split the original file at these boundaries.

part_countintegerRequired

Number of parts to transfer before completion. One means the entire file is sent in a single PUT request.

file_idstringOptional

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.

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

Download OpenAPI · Versioning & retirement

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
    }
  ]
}

Search by operation name or what you want to build.

Use arrow keys to browse. Enter opens a result.