Fields
Retrieves all fields defined in a table. Each field in the response includes type-specific properties: options (array for choice/multi, expression string for dchoice/dmulti), optionName / optionIcon / optionColor for dchoice/dmulti, and expression for function fields.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Fields retrieved successfully
Unauthorized
Table not found
Internal server error
GET /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"expression": "text",
"expressionErrors": [
{
"column": 1,
"line": 1,
"message": "text"
}
],
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableId": "text",
"required": true,
"search": true,
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
]
}Creates a new field in a table.
Choice / multi fields: provide an options array with initial values. Each option receives a server-assigned stable id returned in the response.
Dynamic choice / dmulti fields: options is required and must be an expression that resolves the selectable records at runtime. optionName, optionIcon, and optionColor are optional display-value expressions. All expressions are validated after save — if any are invalid the field is still created and the response includes an expressionErrors array.
Logic (function) fields: expression is validated after save; errors are returned in expressionErrors.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Expression (for function type)
Field name
^[a-z0-9_]+$Color expression (for dchoice/dmulti types)
Icon expression (for dchoice/dmulti types)
Display name expression (for dchoice/dmulti types)
Options array (for choice/multi types) or selection expression (for dchoice/dmulti types)
Reference table name (for reference/reverse types)
nullPattern: ^[a-z0-9_]+$Field type
Field variant (for string type)
Field is indexed
Field is required
Field is searchable
Field is unique
Field created successfully. If the field contains an expression (function, dchoice, dmulti) and it has syntax errors, the response still returns 201 but includes an expressionErrors array.
Bad request — validation failure (e.g., missing required fields, field already exists, invalid field type)
Unauthorized
Workspace, module or table not found
Internal server error
POST /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 246
{
"index": true,
"labels": {
"": "Description",
"de": "Beschreibung"
},
"name": "description",
"readRoles": [
"admin",
"editor"
],
"refTableName": null,
"required": false,
"search": true,
"type": "string",
"unique": false,
"variant": "multiline-text",
"writeRoles": [
"admin"
]
}{
"data": {
"expression": "text",
"expressionErrors": [
{
"column": 1,
"line": 1,
"message": "text"
}
],
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableId": "text",
"required": true,
"search": true,
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
}Creates multiple fields in a table within a single transaction. If any field creation fails, all changes are rolled back.
The same rules as the single-create endpoint apply per field: choice/multi fields accept an initial options array; dchoice/dmulti fields require an options expression; logic fields accept an optional expression. All expressions are validated after save — invalid expressions do not prevent creation but add an expressionErrors array to the affected field in the response.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Expression (for function type)
Field name
^[a-z0-9_]+$Color expression (for dchoice/dmulti types)
Icon expression (for dchoice/dmulti types)
Display name expression (for dchoice/dmulti types)
Options array (for choice/multi types) or selection expression (for dchoice/dmulti types)
Reference table name (for reference/reverse types)
nullPattern: ^[a-z0-9_]+$Field type
Field variant (for string type)
Field is indexed
Field is required
Field is searchable
Field is unique
Fields created successfully. Fields with invalid expressions still return 201 but include an expressionErrors array.
Bad request — validation failure (e.g., duplicate field names in the batch, field already exists)
Unauthorized
Workspace, module or table not found
Internal server error
POST /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields/batch HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 196
[
{
"labels": {
"": "First Name"
},
"name": "first_name",
"type": "string"
},
{
"labels": {
"": "Last Name"
},
"name": "last_name",
"type": "string"
},
{
"labels": {
"": "Age"
},
"name": "age",
"required": true,
"type": "number"
}
]{
"data": [
{
"expression": "text",
"expressionErrors": [
{
"column": 1,
"line": 1,
"message": "text"
}
],
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableId": "text",
"required": true,
"search": true,
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
]
}Deletes multiple fields in a table within a single transaction. If any field 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
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Field name
Fields deleted successfully
Bad request (e.g., duplicates in request)
Unauthorized
Field not found
Internal server error
DELETE /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields/batch HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 55
{
"fieldNames": [
"description",
"status",
"assigned_user"
]
}{
"data": [
{
"expression": "text",
"expressionErrors": [
{
"column": 1,
"line": 1,
"message": "text"
}
],
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableId": "text",
"required": true,
"search": true,
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
]
}Updates multiple fields in a table within a single transaction. If any field update fails, all changes are rolled back. Same per-field rules as the single-update endpoint apply to each entry.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Expression (for function type)
Field name
^[a-z0-9_]+$Color expression (for dchoice/dmulti types)
Icon expression (for dchoice/dmulti types)
Display name expression (for dchoice/dmulti types)
Options array (for choice/multi types) or selection expression (for dchoice/dmulti types)
Field is indexed
Field is required
Field is searchable
Field is unique
Name of the field to update
^[a-z0-9_]+$Fields updated successfully. A field with an updated expression that has syntax errors still returns 200 but includes an expressionErrors array.
Bad request (e.g., duplicate fieldName entries in the batch, field already exists)
Unauthorized
Field not found
Internal server error
PATCH /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields/batch HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 108
[
{
"fieldName": "status",
"readRoles": [
"admin"
],
"writeRoles": [
"admin"
]
},
{
"fieldName": "notes",
"required": false
}
]{
"data": [
{
"expression": "text",
"expressionErrors": [
{
"column": 1,
"line": 1,
"message": "text"
}
],
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableId": "text",
"required": true,
"search": true,
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
]
}Retrieves detailed information about a specific field in a table. For choice/multi fields the response includes an options array with stable ids. For dchoice/dmulti fields the response includes the options expression and any configured optionName, optionIcon, optionColor formulas. For function fields the response includes the expression.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Field name
emailPattern: ^[a-z0-9_]+$Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Field details retrieved successfully
Unauthorized
Field not found
Internal server error
GET /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields/{fieldName} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": {
"expression": "text",
"expressionErrors": [
{
"column": 1,
"line": 1,
"message": "text"
}
],
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableId": "text",
"required": true,
"search": true,
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
}Deletes a field in a table
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Field name
emailTable name
contactsModule name
crmWorkspace ID
5rdco4s18swuField deleted successfully
Unauthorized
Field not found
Internal server error
DELETE /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields/{fieldName} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": {
"expression": "text",
"expressionErrors": [
{
"column": 1,
"line": 1,
"message": "text"
}
],
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableId": "text",
"required": true,
"search": true,
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
}Updates an existing field in a table.
choice / multi fields: options replaces the full option list. Include the stable id for existing options you want to keep; omit id for new options. Sending an options array to a non-choice field or an options expression to a non-dynamic-choice field returns 400.
dchoice / dmulti fields: options updates the selection expression. optionName, optionIcon, and optionColor update the corresponding display-value formulas. All expressions are validated after save — if any are invalid the field is still saved and the response includes an expressionErrors array. optionName, optionIcon, optionColor cannot be sent to non-dynamic-choice fields (returns 400).
Logic (function) fields: expression is validated after save; errors are returned in expressionErrors.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Field name
emailPattern: ^[a-z0-9_]+$Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Expression (for function type)
Field name
^[a-z0-9_]+$Color expression (for dchoice/dmulti types)
Icon expression (for dchoice/dmulti types)
Display name expression (for dchoice/dmulti types)
Options array (for choice/multi types) or selection expression (for dchoice/dmulti types)
Field is indexed
Field is required
Field is searchable
Field is unique
Field updated successfully. If the field contains an updated expression (function, dchoice, dmulti) and it has syntax errors, the response still returns 200 but includes an expressionErrors array.
Bad request (e.g., field already exists)
Unauthorized
Field not found
Internal server error
PATCH /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields/{fieldName} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 75
{
"labels": {
"": "Updated Label",
"de": "Aktualisiertes Label"
},
"required": true
}{
"data": {
"expression": "text",
"expressionErrors": [
{
"column": 1,
"line": 1,
"message": "text"
}
],
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableId": "text",
"required": true,
"search": true,
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
}Last updated
Was this helpful?