Records
Retrieves paginated rows from a table with optional filtering and sorting
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
crmTable name
contactsWorkspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Comma-separated list of field names to include
Filter conditions as a JSON string (e.g., {"email": "test@example.com"})
Maximum number of rows to return (1-100)
Number of rows to skip (starts with 0)
Field name to sort by
Rows retrieved successfully
Unauthorized
Table not found
Internal server error
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
}
}Creates new records in an existing table (max. 6MB payload size)
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
Table name
Workspace ID
^[a-z0-9]+$Records created successfully
Bad request
Unauthorized
Not found
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"
]
}
}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.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
Table name
Workspace ID
^[a-z0-9]+$Array of record ids to delete
Records deleted successfully
Bad request
Unauthorized
Not found (workspace, module, table, or record)
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"
]
}
}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.boolean—trueorfalseonly; numeric1/0are 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
nullto clear its value.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
Table name
Workspace ID
^[a-z0-9]+$Records updated successfully
Bad request
Unauthorized
Not found (workspace, module, table, or record)
Payload too large (max 6 MB)
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"
]
}
}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.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
Table name
Workspace ID
^[a-z0-9]+$CSV file to import (max 50 MB)
Whether the CSV file has a header row
trueCSV delimiter character (auto-detected if not specified)
CSV quote character
"CSV file encoding
utf8Possible values: Import mode: append (insert all), update (update existing only), upsert (insert or update)
appendPossible values: Number format for parsing numeric values
usPossible values: Number of records to process per batch
100JSON array of field mappings: [{"csvColumnName": "Name", "fieldName": "name", "updatePolicy": "key"}]
CSV import completed successfully
Bad request (invalid CSV, missing file, etc.)
Unauthorized
Table not found
File too large (max 50 MB)
Internal server error
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
}
}Last updated
Was this helpful?