For the complete documentation index, see llms.txt. This page is also available as Markdown.

Files

Complete a file upload

post

Confirms a completed direct upload and returns the file-type field value. Pass documentId, documentVersionId, and uploadId from the generate-upload-url step, and the etags S3 returned for each uploaded part. The returned object is the complete field value — pass it as-is when creating/updating a record.

Authorizations
AuthorizationstringRequired

Enter your Workspace API key.

API keys can be generated and managed within the Workspace Integration settings in the Ninox app.

Path parameters
workspaceIdstring · min: 12 · max: 12Required

Workspace ID

Example: 5rdco4s18swuPattern: ^[a-z0-9]+$
Body
contentTypestring · min: 1Required

MIME type of the uploaded file

documentIdstring · min: 12 · max: 12Required

documentId returned by the generate-upload-url step

Pattern: ^[a-z0-9]+$
documentVersionIdstring · min: 12 · max: 12Required

documentVersionId returned by the generate-upload-url step

Pattern: ^[a-z0-9]+$
etagsstring[] · min: 1Required

ETag returned by S3 for each uploaded part, in order

fileNamestring · min: 1Required

Original file name

fileSizeinteger · max: 9007199254740991Required

File size in bytes

uploadIdstring · min: 1Required

uploadId returned by the generate-upload-url step

Responses
201

Upload completed successfully

application/json
post/api/v1/workspace/{workspaceId}/files/complete
POST /api/v1/workspace/{workspaceId}/files/complete HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 135

{
  "contentType": "text",
  "documentId": "text",
  "documentVersionId": "text",
  "etags": [
    "text"
  ],
  "fileName": "text",
  "fileSize": 1,
  "uploadId": "text"
}
{
  "data": {
    "documentId": "text",
    "documentVersionId": "text",
    "fileName": "text",
    "fileSize": 1,
    "fileType": "text"
  }
}

Start a file upload (get presigned URLs)

post

Generates presigned URLs for uploading a file directly to storage — the first step of a file-type field upload. Upload the file bytes directly to the returned URL(s) (one per part), then call .../files/complete with the resulting ETags to finish. This never sends file bytes through this API.

Authorizations
AuthorizationstringRequired

Enter your Workspace API key.

API keys can be generated and managed within the Workspace Integration settings in the Ninox app.

Path parameters
workspaceIdstring · min: 12 · max: 12Required

Workspace ID

Example: 5rdco4s18swuPattern: ^[a-z0-9]+$
Body
contentTypestring · min: 1Required

MIME type of the file being uploaded

partsinteger · min: 1 · max: 10000Required

Number of multipart upload parts (1 for a single-part upload, max 10,000 per S3 limits)

Responses
201

Presigned upload URLs generated successfully

application/json
post/api/v1/workspace/{workspaceId}/files/upload-url
POST /api/v1/workspace/{workspaceId}/files/upload-url HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 32

{
  "contentType": "text",
  "parts": 1
}
{
  "data": {
    "documentId": "text",
    "documentVersionId": "text",
    "preSignedUrls": [
      "text"
    ],
    "uploadId": "text"
  }
}

Upload a file to a record

post

Uploads a file and attaches it to a record in a single multipart/form-data request, with the file in the file form field, like the Ninox 3 files endpoint. No presigned URL or complete step is needed. The returned object can also be stored in a file-type field (max. 50 MB).

Authorizations
AuthorizationstringRequired

Enter your Workspace API key.

API keys can be generated and managed within the Workspace Integration settings in the Ninox app.

Path parameters
moduleNamestring · min: 1Required

Module name

recordIdinteger · max: 9007199254740991Required

Record ID

Example: 1
tableNamestring · min: 1Required

Table name

workspaceIdstring · min: 12 · max: 12Required

Workspace ID

Example: 5rdco4s18swuPattern: ^[a-z0-9]+$
Body
filestring · binaryRequired
Responses
201

File uploaded and attached

application/json
post/api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/records/{recordId}/files
POST /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/records/{recordId}/files HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: multipart/form-data
Accept: */*
Content-Length: 17

{
  "file": "binary"
}
{
  "data": {
    "documentId": "text",
    "documentVersionId": "text",
    "fileName": "text",
    "fileSize": 1,
    "fileType": "text"
  }
}

Last updated

Was this helpful?