API reference
Tables
A table is a schema: named, typed columns and how strictly to fill them.
The Table objectLink to section
created_atintegerRequiredAt least 0.
deleted_atintegerRequirednullableAt least 0.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
project_idstringRequired1 to 48 characters.
namestringRequired1 to 128 characters.
slugstringRequired1 to 50 characters.
columns_jsonarray of objectsRequired1 to 100 items.
currency_codestringoptionalExactly 3 characters.
defaultanyoptionaldescriptionstringoptionalnullableUp to 256 characters.
idstringRequired1 to 36 characters.
instructionstringoptionalnullableUp to 512 characters.
namestringRequired- Matches
^[\w\s.-]+$
1 to 64 characters.
optionsarray of stringsoptionalUp to 500 items.
requiredbooleanRequired- Default
false
searchablebooleanoptionaltypestringRequired- Allowed values
arraybooleancurrencydateemailenummulti_selectnumberstringtexturl- Default
string
{ "created_at": 1711468800000, "deleted_at": 1711468800000, "updated_at": 1711468800000, "id": "tbl_01h5a3g8k9m2n4p6q8r0t2v4x6", "project_id": "string", "name": "string", "slug": "string", "columns_json": [ { "currency_code": "string", "description": "string", "id": "string", "instruction": "string", "name": "string", "options": [ "string" ], "required": false, "searchable": true, "type": "string" } ], "instruction": "string", "strictness": "strict", "insert_mode": "append", "merge_columns_json": [ "string" ], "default_sort": "string", "row_count": 42, "usage_count": 42, "data_version": 42, "fts_version": 42, "last_used_at": 1711468800000}List tables
GET/v1/projects/{project_id}/tables
Path parameters
project_idstringRequired
Query parameters
cursorstringoptionalOpaque cursor for forward pagination. Pass the nextCursor from the previous response with the same order. Takes precedence over page when both are sent.
pageintegeroptional1-based page number for offset pagination. Ignored when cursor is present.
At least 1.
orderstringoptionalSort keys, comma-separated, each
field[.asc|.desc][.nullsfirst|.nullslast]; at most 3. Sortable: created_at, name, row_count, last_used_at, updated_at. Default: created_at.desc. Nulls sort last ascending and first descending unless stated.- Matches
^(?:created_at|name|row_count|last_used_at|updated_at)(?:\.(?:asc|desc))?(?:\.(?:nullsfirst|nullslast))?(?:,(?:created_at|name|row_count|last_used_at|updated_at)(?:\.(?:asc|desc))?(?:\.(?:nullsfirst|nullslast))?){0,2}$
filterstringoptionalFilter expression
field.op.value;,joins conditions with AND; group withor(...)andand(...). Fields: created_at (number: eq, ne, neq, gt, gte, lt, lte, in, nin, is); id (string: eq, ne, neq, like, ilike, in, nin, is); name (string: eq, ne, neq, like, ilike, in, nin, is); row_count (number: eq, ne, neq, gt, gte, lt, lte, in, nin, is); slug (string: eq, ne, neq, like, ilike, in, nin, is).likeis case-sensitive andilikeignores ASCII case;*is the wildcard.in/nintake(a,b);istakesnullornotnull. At most 20 conditions, 3 nested groups, 100 in/nin values.qstringoptionalFree-text search over: name. Whitespace-separated terms must all match.
Up to 200 characters.
limitintegeroptionalMaximum number of items per page. Defaults to 20, capped by the endpoint's maxLimit.
- Default
20
Between 1 and 100.
Returns
200application/json
countintegerRequiredAt least 0.
hasMorebooleanRequiredlimitintegerRequiredAt least 1.
nextCursorstringRequirednullablepageintegerRequirednullableAt least 1.
tablesarray of objectsRequiredcreated_atintegerRequiredAt least 0.
deleted_atintegerRequirednullableAt least 0.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
project_idstringRequired1 to 48 characters.
namestringRequired1 to 128 characters.
slugstringRequired1 to 50 characters.
columns_jsonarray of objectsRequired1 to 100 items.
currency_codestringoptionalExactly 3 characters.
defaultanyoptionaldescriptionstringoptionalnullableUp to 256 characters.
idstringRequired1 to 36 characters.
instructionstringoptionalnullableUp to 512 characters.
namestringRequired- Matches
^[\w\s.-]+$
1 to 64 characters.
optionsarray of stringsoptionalUp to 500 items.
requiredbooleanRequired- Default
false
searchablebooleanoptionaltypestringRequired- Allowed values
arraybooleancurrencydateemailenummulti_selectnumberstringtexturl- Default
string
instructionstringRequirednullableUp to 512 characters.
strictnessstringRequired- Allowed values
strictbalancedflexible
insert_modestringRequired- Allowed values
appenddedupmergereplace
merge_columns_jsonarray of stringsRequirednullableAt least 1 items.
default_sortstringRequirednullablerow_countintegerRequiredAt least 0.
usage_countintegerRequiredAt least 0.
data_versionintegerRequiredAt least 0.
fts_versionintegerRequiredAt least 0.
last_used_atintegerRequirednullableAt least 0.
import { AnyrowSDK } from "@anyrow/sdk"const anyrow = new AnyrowSDK({ baseURL: "https://api.anyrow.ai", headers: { Authorization: `ApiKey ${process.env.ANYROW_API_KEY}` },})const { data, error } = await anyrow.table.list({ params: { project_id: "{project_id}" },}){ "count": 0, "hasMore": true, "limit": 1, "nextCursor": "string", "page": 1, "tables": [ { "created_at": 1711468800000, "deleted_at": 1711468800000, "updated_at": 1711468800000, "id": "tbl_01h5a3g8k9m2n4p6q8r0t2v4x6", "project_id": "string", "name": "string", "slug": "string", "columns_json": [ { "currency_code": "string", "description": "string", "id": "string", "instruction": "string", "name": "string", "options": [ "string" ], "required": false, "searchable": true, "type": "string" } ], "instruction": "string", "strictness": "strict", "insert_mode": "append", "merge_columns_json": [ "string" ], "default_sort": "string", "row_count": 42, "usage_count": 42, "data_version": 42, "fts_version": 42, "last_used_at": 1711468800000 } ]}Create table
POST/v1/projects/{project_id}/tables
Path parameters
project_idstringRequired
Request body
application/json
columns_jsonarray of objectsRequired1 to 100 items.
currency_codestringoptionalExactly 3 characters.
defaultanyoptionaldescriptionstringoptionalnullableUp to 256 characters.
idstringRequired1 to 36 characters.
instructionstringoptionalnullableUp to 512 characters.
namestringRequired- Matches
^[\w\s.-]+$
1 to 64 characters.
optionsarray of stringsoptionalUp to 500 items.
requiredbooleanoptional- Default
false
searchablebooleanoptionaltypestringoptional- Allowed values
arraybooleancurrencydateemailenummulti_selectnumberstringtexturl- Default
string
insert_modestringoptional- Allowed values
appenddedupmergereplace
instructionstringoptionalnullableUp to 512 characters.
merge_columns_jsonarray of stringsoptionalnullableAt least 1 items.
namestringRequired1 to 128 characters.
strictnessstringoptional- Allowed values
strictbalancedflexible
Returns
201application/json
created_atintegerRequiredAt least 0.
deleted_atintegerRequirednullableAt least 0.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
project_idstringRequired1 to 48 characters.
namestringRequired1 to 128 characters.
slugstringRequired1 to 50 characters.
columns_jsonarray of objectsRequired1 to 100 items.
currency_codestringoptionalExactly 3 characters.
defaultanyoptionaldescriptionstringoptionalnullableUp to 256 characters.
idstringRequired1 to 36 characters.
instructionstringoptionalnullableUp to 512 characters.
namestringRequired- Matches
^[\w\s.-]+$
1 to 64 characters.
optionsarray of stringsoptionalUp to 500 items.
requiredbooleanRequired- Default
false
searchablebooleanoptionaltypestringRequired- Allowed values
arraybooleancurrencydateemailenummulti_selectnumberstringtexturl- Default
string
instructionstringRequirednullableUp to 512 characters.
strictnessstringRequired- Allowed values
strictbalancedflexible
insert_modestringRequired- Allowed values
appenddedupmergereplace
merge_columns_jsonarray of stringsRequirednullableAt least 1 items.
default_sortstringRequirednullablerow_countintegerRequiredAt least 0.
usage_countintegerRequiredAt least 0.
data_versionintegerRequiredAt least 0.
fts_versionintegerRequiredAt least 0.
last_used_atintegerRequirednullableAt least 0.
import { AnyrowSDK } from "@anyrow/sdk"const anyrow = new AnyrowSDK({ baseURL: "https://api.anyrow.ai", headers: { Authorization: `ApiKey ${process.env.ANYROW_API_KEY}` },})const { data, error } = await anyrow.table.create({ params: { project_id: "{project_id}" }, json: { columns_json: [ { currency_code: "string", description: "string", id: "string", instruction: "string", name: "string", options: [ "string" ], required: false, searchable: true, type: "string" } ], insert_mode: "append", instruction: "string", merge_columns_json: [ "string" ], name: "string", strictness: "strict" },}){ "created_at": 1711468800000, "deleted_at": 1711468800000, "updated_at": 1711468800000, "id": "tbl_01h5a3g8k9m2n4p6q8r0t2v4x6", "project_id": "string", "name": "string", "slug": "string", "columns_json": [ { "currency_code": "string", "description": "string", "id": "string", "instruction": "string", "name": "string", "options": [ "string" ], "required": false, "searchable": true, "type": "string" } ], "instruction": "string", "strictness": "strict", "insert_mode": "append", "merge_columns_json": [ "string" ], "default_sort": "string", "row_count": 42, "usage_count": 42, "data_version": 42, "fts_version": 42, "last_used_at": 1711468800000}Get table
GET/v1/projects/{project_id}/tables/{table_id}
Path parameters
project_idstringRequiredtable_idstringRequired
Returns
200application/json
created_atintegerRequiredAt least 0.
deleted_atintegerRequirednullableAt least 0.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
project_idstringRequired1 to 48 characters.
namestringRequired1 to 128 characters.
slugstringRequired1 to 50 characters.
columns_jsonarray of objectsRequired1 to 100 items.
currency_codestringoptionalExactly 3 characters.
defaultanyoptionaldescriptionstringoptionalnullableUp to 256 characters.
idstringRequired1 to 36 characters.
instructionstringoptionalnullableUp to 512 characters.
namestringRequired- Matches
^[\w\s.-]+$
1 to 64 characters.
optionsarray of stringsoptionalUp to 500 items.
requiredbooleanRequired- Default
false
searchablebooleanoptionaltypestringRequired- Allowed values
arraybooleancurrencydateemailenummulti_selectnumberstringtexturl- Default
string
instructionstringRequirednullableUp to 512 characters.
strictnessstringRequired- Allowed values
strictbalancedflexible
insert_modestringRequired- Allowed values
appenddedupmergereplace
merge_columns_jsonarray of stringsRequirednullableAt least 1 items.
default_sortstringRequirednullablerow_countintegerRequiredAt least 0.
usage_countintegerRequiredAt least 0.
data_versionintegerRequiredAt least 0.
fts_versionintegerRequiredAt least 0.
last_used_atintegerRequirednullableAt least 0.
import { AnyrowSDK } from "@anyrow/sdk"const anyrow = new AnyrowSDK({ baseURL: "https://api.anyrow.ai", headers: { Authorization: `ApiKey ${process.env.ANYROW_API_KEY}` },})const { data, error } = await anyrow.table.get({ params: { project_id: "{project_id}", table_id: "{table_id}" },}){ "created_at": 1711468800000, "deleted_at": 1711468800000, "updated_at": 1711468800000, "id": "tbl_01h5a3g8k9m2n4p6q8r0t2v4x6", "project_id": "string", "name": "string", "slug": "string", "columns_json": [ { "currency_code": "string", "description": "string", "id": "string", "instruction": "string", "name": "string", "options": [ "string" ], "required": false, "searchable": true, "type": "string" } ], "instruction": "string", "strictness": "strict", "insert_mode": "append", "merge_columns_json": [ "string" ], "default_sort": "string", "row_count": 42, "usage_count": 42, "data_version": 42, "fts_version": 42, "last_used_at": 1711468800000}Update table
PATCH/v1/projects/{project_id}/tables/{table_id}
Path parameters
project_idstringRequiredtable_idstringRequired
Request body
application/json
default_sortstringoptionalnullableUp to 256 characters.
insert_modestringoptional- Allowed values
appenddedupmergereplace
instructionstringoptionalnullableUp to 512 characters.
merge_columns_jsonarray of stringsoptionalnullableAt least 1 items.
namestringoptional1 to 128 characters.
slugstringoptional1 to 50 characters.
strictnessstringoptional- Allowed values
strictbalancedflexible
Returns
200application/json
created_atintegerRequiredAt least 0.
deleted_atintegerRequirednullableAt least 0.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
project_idstringRequired1 to 48 characters.
namestringRequired1 to 128 characters.
slugstringRequired1 to 50 characters.
columns_jsonarray of objectsRequired1 to 100 items.
currency_codestringoptionalExactly 3 characters.
defaultanyoptionaldescriptionstringoptionalnullableUp to 256 characters.
idstringRequired1 to 36 characters.
instructionstringoptionalnullableUp to 512 characters.
namestringRequired- Matches
^[\w\s.-]+$
1 to 64 characters.
optionsarray of stringsoptionalUp to 500 items.
requiredbooleanRequired- Default
false
searchablebooleanoptionaltypestringRequired- Allowed values
arraybooleancurrencydateemailenummulti_selectnumberstringtexturl- Default
string
instructionstringRequirednullableUp to 512 characters.
strictnessstringRequired- Allowed values
strictbalancedflexible
insert_modestringRequired- Allowed values
appenddedupmergereplace
merge_columns_jsonarray of stringsRequirednullableAt least 1 items.
default_sortstringRequirednullablerow_countintegerRequiredAt least 0.
usage_countintegerRequiredAt least 0.
data_versionintegerRequiredAt least 0.
fts_versionintegerRequiredAt least 0.
last_used_atintegerRequirednullableAt least 0.
import { AnyrowSDK } from "@anyrow/sdk"const anyrow = new AnyrowSDK({ baseURL: "https://api.anyrow.ai", headers: { Authorization: `ApiKey ${process.env.ANYROW_API_KEY}` },})const { data, error } = await anyrow.table.update({ params: { project_id: "{project_id}", table_id: "{table_id}" }, json: { default_sort: "string", insert_mode: "append", instruction: "string", merge_columns_json: [ "string" ], name: "string", slug: "string", strictness: "strict" },}){ "created_at": 1711468800000, "deleted_at": 1711468800000, "updated_at": 1711468800000, "id": "tbl_01h5a3g8k9m2n4p6q8r0t2v4x6", "project_id": "string", "name": "string", "slug": "string", "columns_json": [ { "currency_code": "string", "description": "string", "id": "string", "instruction": "string", "name": "string", "options": [ "string" ], "required": false, "searchable": true, "type": "string" } ], "instruction": "string", "strictness": "strict", "insert_mode": "append", "merge_columns_json": [ "string" ], "default_sort": "string", "row_count": 42, "usage_count": 42, "data_version": 42, "fts_version": 42, "last_used_at": 1711468800000}Delete table (soft, 72h grace)
DELETE/v1/projects/{project_id}/tables/{table_id}
Path parameters
project_idstringRequiredtable_idstringRequired
Returns
200application/json
idstringRequired
import { AnyrowSDK } from "@anyrow/sdk"const anyrow = new AnyrowSDK({ baseURL: "https://api.anyrow.ai", headers: { Authorization: `ApiKey ${process.env.ANYROW_API_KEY}` },})const { data, error } = await anyrow.table.delete({ params: { project_id: "{project_id}", table_id: "{table_id}" },}){ "id": "string"}Duplicate table structure
POST/v1/projects/{project_id}/tables/{table_id}/duplicate
Path parameters
project_idstringRequiredtable_idstringRequired
Request body
application/json
namestringRequired1 to 128 characters.
slugstringRequired1 to 50 characters.
Returns
201application/json
created_atintegerRequiredAt least 0.
deleted_atintegerRequirednullableAt least 0.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
project_idstringRequired1 to 48 characters.
namestringRequired1 to 128 characters.
slugstringRequired1 to 50 characters.
columns_jsonarray of objectsRequired1 to 100 items.
currency_codestringoptionalExactly 3 characters.
defaultanyoptionaldescriptionstringoptionalnullableUp to 256 characters.
idstringRequired1 to 36 characters.
instructionstringoptionalnullableUp to 512 characters.
namestringRequired- Matches
^[\w\s.-]+$
1 to 64 characters.
optionsarray of stringsoptionalUp to 500 items.
requiredbooleanRequired- Default
false
searchablebooleanoptionaltypestringRequired- Allowed values
arraybooleancurrencydateemailenummulti_selectnumberstringtexturl- Default
string
instructionstringRequirednullableUp to 512 characters.
strictnessstringRequired- Allowed values
strictbalancedflexible
insert_modestringRequired- Allowed values
appenddedupmergereplace
merge_columns_jsonarray of stringsRequirednullableAt least 1 items.
default_sortstringRequirednullablerow_countintegerRequiredAt least 0.
usage_countintegerRequiredAt least 0.
data_versionintegerRequiredAt least 0.
fts_versionintegerRequiredAt least 0.
last_used_atintegerRequirednullableAt least 0.
import { AnyrowSDK } from "@anyrow/sdk"const anyrow = new AnyrowSDK({ baseURL: "https://api.anyrow.ai", headers: { Authorization: `ApiKey ${process.env.ANYROW_API_KEY}` },})const { data, error } = await anyrow.table.duplicate({ params: { project_id: "{project_id}", table_id: "{table_id}" }, json: { name: "string", slug: "string" },}){ "created_at": 1711468800000, "deleted_at": 1711468800000, "updated_at": 1711468800000, "id": "tbl_01h5a3g8k9m2n4p6q8r0t2v4x6", "project_id": "string", "name": "string", "slug": "string", "columns_json": [ { "currency_code": "string", "description": "string", "id": "string", "instruction": "string", "name": "string", "options": [ "string" ], "required": false, "searchable": true, "type": "string" } ], "instruction": "string", "strictness": "strict", "insert_mode": "append", "merge_columns_json": [ "string" ], "default_sort": "string", "row_count": 42, "usage_count": 42, "data_version": 42, "fts_version": 42, "last_used_at": 1711468800000}Restore deleted table
POST/v1/projects/{project_id}/tables/{table_id}/restore
Path parameters
project_idstringRequiredtable_idstringRequired
Request body
application/json
slugstringoptional1 to 50 characters.
Returns
200application/json
created_atintegerRequiredAt least 0.
deleted_atintegerRequirednullableAt least 0.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
project_idstringRequired1 to 48 characters.
namestringRequired1 to 128 characters.
slugstringRequired1 to 50 characters.
columns_jsonarray of objectsRequired1 to 100 items.
currency_codestringoptionalExactly 3 characters.
defaultanyoptionaldescriptionstringoptionalnullableUp to 256 characters.
idstringRequired1 to 36 characters.
instructionstringoptionalnullableUp to 512 characters.
namestringRequired- Matches
^[\w\s.-]+$
1 to 64 characters.
optionsarray of stringsoptionalUp to 500 items.
requiredbooleanRequired- Default
false
searchablebooleanoptionaltypestringRequired- Allowed values
arraybooleancurrencydateemailenummulti_selectnumberstringtexturl- Default
string
instructionstringRequirednullableUp to 512 characters.
strictnessstringRequired- Allowed values
strictbalancedflexible
insert_modestringRequired- Allowed values
appenddedupmergereplace
merge_columns_jsonarray of stringsRequirednullableAt least 1 items.
default_sortstringRequirednullablerow_countintegerRequiredAt least 0.
usage_countintegerRequiredAt least 0.
data_versionintegerRequiredAt least 0.
fts_versionintegerRequiredAt least 0.
last_used_atintegerRequirednullableAt least 0.
import { AnyrowSDK } from "@anyrow/sdk"const anyrow = new AnyrowSDK({ baseURL: "https://api.anyrow.ai", headers: { Authorization: `ApiKey ${process.env.ANYROW_API_KEY}` },})const { data, error } = await anyrow.table.restore({ params: { project_id: "{project_id}", table_id: "{table_id}" }, json: { slug: "string" },}){ "created_at": 1711468800000, "deleted_at": 1711468800000, "updated_at": 1711468800000, "id": "tbl_01h5a3g8k9m2n4p6q8r0t2v4x6", "project_id": "string", "name": "string", "slug": "string", "columns_json": [ { "currency_code": "string", "description": "string", "id": "string", "instruction": "string", "name": "string", "options": [ "string" ], "required": false, "searchable": true, "type": "string" } ], "instruction": "string", "strictness": "strict", "insert_mode": "append", "merge_columns_json": [ "string" ], "default_sort": "string", "row_count": 42, "usage_count": 42, "data_version": 42, "fts_version": 42, "last_used_at": 1711468800000}