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

Records

Get records from a table

get

Retrieves paginated rows from a table with optional filtering and sorting

Autorisierungen
AuthorizationstringErforderlich

Enter your Workspace API key.

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

Pfadparameter
moduleNamestring · min: 1Erforderlich

Module name

Example: crm
tableNamestring · min: 1Erforderlich

Table name

Example: contacts
workspaceIdstring · min: 12 · max: 12Erforderlich

Workspace ID

Example: 5rdco4s18swuPattern: ^[a-z0-9]+$
Abfrageparameter
fieldsstringOptional

Comma-separated list of field names to include

filterstringOptional

Filter conditions as a JSON string (e.g., {"email": "test@example.com"})

limitnumber · min: 1 · max: 100Optional

Maximum number of rows to return (1-100)

offsetnumberOptional

Number of rows to skip (starts with 0)

sortstringOptional

Field name to sort by

Antworten
200

Rows retrieved successfully

application/json
get/api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/records
GET /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/records HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "data": [
    {
      "id": "1",
      "values": {
        "category": "Audio",
        "item-name": "Aura Headphones",
        "price-usd": 199.99,
        "product-id": 101,
        "stock-level": 25
      }
    },
    {
      "id": "2",
      "values": {
        "category": "Wearables",
        "item-name": "Zenith Smartwatch",
        "price-usd": 249.5,
        "product-id": 102,
        "stock-level": 12
      }
    }
  ],
  "page_info": {
    "has_more": true,
    "limit": 2,
    "offset": 0
  }
}

Create records in a table

post

Creates new records in an existing table (max. 6MB payload size)

Autorisierungen
AuthorizationstringErforderlich

Enter your Workspace API key.

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

Pfadparameter
moduleNamestring · min: 1Erforderlich

Module name

tableNamestring · min: 1Erforderlich

Table name

workspaceIdstring · min: 12 · max: 12Erforderlich

Workspace ID

Pattern: ^[a-z0-9]+$
Body
Antworten
201

Records created successfully

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

{
  "records": [
    {
      "any_field": {
        "source": "import",
        "score": 98
      },
      "appointment_field": "[2024-02-15T09:00:00Z,2024-02-15T10:00:00Z)",
      "array_field": [
        "alpha",
        "beta",
        "gamma"
      ],
      "boolean_field": true,
      "choice_field": "Gold",
      "color_field": "#ffcc00",
      "date_field": "2024-02-15",
      "file_field": "file_123",
      "html_field": "<p>Rich text</p>",
      "icon_field": "check-circle",
      "multi_field": [
        "Gold",
        "Silver"
      ],
      "number_field": 1234.56,
      "react_field": "<Component name=\"Badge\" />",
      "reference_field": 42,
      "string_field": "Hello world",
      "styled_field": "font-weight: 600;",
      "time_field": "09:30",
      "timeinterval_field": "09:00-17:00",
      "timestamp_field": "2024-02-15T13:45:30Z",
      "unknown_field": {
        "raw": true
      },
      "user_field": "user_123"
    }
  ]
}
{
  "data": {
    "ids": [
      "101"
    ]
  }
}

Delete records from a table

delete

Deletes existing records from a table in a single transaction. If any record id is invalid, does not exist, or deletion fails, all changes are rolled back.

Autorisierungen
AuthorizationstringErforderlich

Enter your Workspace API key.

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

Pfadparameter
moduleNamestring · min: 1Erforderlich

Module name

tableNamestring · min: 1Erforderlich

Table name

workspaceIdstring · min: 12 · max: 12Erforderlich

Workspace ID

Pattern: ^[a-z0-9]+$
Body
recordsinteger[] · min: 1Erforderlich

Array of record ids to delete

Antworten
200

Records deleted successfully

application/json
delete/api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/records
DELETE /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/records HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 27

{
  "records": [
    101,
    "102",
    103
  ]
}
{
  "data": {
    "deletedIds": [
      "101",
      "102",
      "103"
    ]
  }
}

Update records in a table

patch

Updates existing records in a table (max. 6MB payload size). Each record must include an id field referencing an existing record. The update is transactional — if any record fails validation or does not exist, all changes are rolled back.

Field type rules:

  • multi — must be an array of strings (e.g. ["Gold", "Silver"]). A plain string is not accepted.

  • choice — a single string (e.g. "Gold") or an array of strings.

  • booleantrue or false only; numeric 1/0 are not accepted.

  • number — a finite number or a numeric string (e.g. "42.5").

  • date / timestamp / appointment — ISO 8601 string or Unix timestamp (ms).

  • Any field may be set to null to clear its value.

Autorisierungen
AuthorizationstringErforderlich

Enter your Workspace API key.

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

Pfadparameter
moduleNamestring · min: 1Erforderlich

Module name

tableNamestring · min: 1Erforderlich

Table name

workspaceIdstring · min: 12 · max: 12Erforderlich

Workspace ID

Pattern: ^[a-z0-9]+$
Body
Antworten
200

Records updated successfully

application/json
patch/api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/records
PATCH /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/records HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 730

{
  "records": [
    {
      "any_field": {
        "source": "import",
        "score": 98
      },
      "appointment_field": "[2024-02-15T09:00:00Z,2024-02-15T10:00:00Z)",
      "array_field": [
        "alpha",
        "beta",
        "gamma"
      ],
      "boolean_field": true,
      "choice_field": "Gold",
      "color_field": "#ffcc00",
      "date_field": "2024-02-15",
      "file_field": "file_123",
      "html_field": "<p>Rich text</p>",
      "icon_field": "{\"icon\":\"check-circle\",\"color\":\"#4CAF50\",\"filling\":1}",
      "id": 1,
      "multi_field": [
        "Gold",
        "Silver"
      ],
      "number_field": 1234.56,
      "react_field": "<Component name=\"Badge\" />",
      "reference_field": 42,
      "string_field": "Hello world",
      "styled_field": "font-weight: 600;",
      "time_field": "09:30",
      "timeinterval_field": "08:00:00",
      "timestamp_field": "2024-02-15T13:45:30Z",
      "unknown_field": {
        "raw": true
      },
      "user_field": "user_123"
    }
  ]
}
{
  "data": {
    "updatedIds": [
      "1",
      "2"
    ]
  }
}

Get row changes since a timestamp

get

Retrieves rows created, updated, or deleted since a given timestamp — for incremental sync. Only available for tables with history tracking enabled; returns 400 otherwise. Pass the response's meta.asOf as since on the next poll to avoid gaps or duplicates. When paging through one poll with limit/offset, also pass the first page's meta.asOf back as asOf on every subsequent page of that same poll.

Autorisierungen
AuthorizationstringErforderlich

Enter your Workspace API key.

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

Pfadparameter
moduleNamestring · min: 1Erforderlich

Module name

Example: crm
tableNamestring · min: 1Erforderlich

Table name

Example: contacts
workspaceIdstring · min: 12 · max: 12Erforderlich

Workspace ID

Example: 5rdco4s18swuPattern: ^[a-z0-9]+$
Abfrageparameter
asOfstring · date-timeOptional

Pin the poll window to this timestamp (a prior response's meta.asOf) when fetching page 2+ of the same poll; omit on the first page

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
limitnumber · min: 1 · max: 100Optional

Maximum number of changes to return (1-100)

offsetnumberOptional

Number of changes to skip (starts with 0)

sincestring · date-timeErforderlich

Return changes at or after this ISO 8601 timestamp

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Antworten
200

Row changes retrieved successfully

application/json
get/api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/records/changes
GET /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/records/changes?since=2026-01-01T00%3A00%3A00.000Z HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "data": [
    {
      "id": "1",
      "changeType": "update",
      "changedAt": "2026-09-07T10:00:00.000Z"
    }
  ],
  "meta": {
    "asOf": "2026-09-07T10:05:00.000Z"
  },
  "page_info": {
    "has_more": false,
    "limit": 50,
    "offset": 0
  }
}

Import records from CSV file

post

Import records from a CSV file into an existing table.

The endpoint accepts multipart/form-data with:

  • A CSV file (max 50 MB)

  • Optional parsing and import options

Auto-mapping: By default, CSV columns are automatically mapped to table fields by matching column header names to field names (case-insensitive).

Import Modes:

  • append: Always create new records (default)

  • update: Only update existing records (requires key field mappings)

  • upsert: Update existing records or create new ones (requires key field mappings)

Field Mappings: Optionally provide explicit mappings to control which CSV columns map to which table fields, and which fields are used as keys for update/upsert operations.

The entire import is processed within a single transaction - if any record fails to import, all changes are rolled back.

Autorisierungen
AuthorizationstringErforderlich

Enter your Workspace API key.

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

Pfadparameter
moduleNamestring · min: 1Erforderlich

Module name

tableNamestring · min: 1Erforderlich

Table name

workspaceIdstring · min: 12 · max: 12Erforderlich

Workspace ID

Pattern: ^[a-z0-9]+$
Body
filestring · binaryErforderlich

CSV file to import (max 50 MB)

hasHeaderbooleanOptional

Whether the CSV file has a header row

Default: true
delimiterstringOptional

CSV delimiter character (auto-detected if not specified)

quoteCharstringOptional

CSV quote character

Default: "
encodingstring · enumOptional

CSV file encoding

Default: utf8Mögliche Werte:
importModestring · enumOptional

Import mode: append (insert all), update (update existing only), upsert (insert or update)

Default: appendMögliche Werte:
numberFormatstring · enumOptional

Number format for parsing numeric values

Default: usMögliche Werte:
batchSizeinteger · min: 10 · max: 200Optional

Number of records to process per batch

Default: 100
mappingsstringOptional

JSON array of field mappings: [{"csvColumnName": "Name", "fieldName": "name", "updatePolicy": "key"}]

Antworten
201

CSV import completed successfully

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

{
  "file": "binary",
  "hasHeader": true,
  "delimiter": "text",
  "quoteChar": "\"",
  "encoding": "utf8",
  "importMode": "append",
  "numberFormat": "us",
  "batchSize": 100,
  "mappings": "text"
}
{
  "data": {
    "rowsImported": 100,
    "rowsSkipped": 0,
    "rowsUpdated": 0
  }
}

Zuletzt aktualisiert

War das hilfreich?