Skip to content

API reference

Tables

A table is a schema: named, typed columns and how strictly to fill them.

The Table object

  • created_atintegerRequired

    At least 0.

  • deleted_atintegerRequirednullable

    At least 0.

  • updated_atintegerRequired

    At least 0.

  • idstringRequired

    1 to 48 characters.

  • project_idstringRequired

    1 to 48 characters.

  • namestringRequired

    1 to 128 characters.

  • slugstringRequired

    1 to 50 characters.

  • columns_jsonarray of objectsRequired

    1 to 100 items.

The Table objectjson
{  "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

  • cursorstringoptional

    Opaque cursor for forward pagination. Pass the nextCursor from the previous response with the same order. Takes precedence over page when both are sent.

  • pageintegeroptional

    1-based page number for offset pagination. Ignored when cursor is present.

    At least 1.

  • orderstringoptional

    Sort 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}$
  • filterstringoptional

    Filter expression field.op.value; , joins conditions with AND; group with or(...) and and(...). 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). like is case-sensitive and ilike ignores ASCII case; * is the wildcard. in/nin take (a,b); is takes null or notnull. At most 20 conditions, 3 nested groups, 100 in/nin values.

  • qstringoptional

    Free-text search over: name. Whitespace-separated terms must all match.

    Up to 200 characters.

  • limitintegeroptional

    Maximum number of items per page. Defaults to 20, capped by the endpoint's maxLimit.

    Default
    20

    Between 1 and 100.

Returns

200application/json

  • countintegerRequired

    At least 0.

  • hasMorebooleanRequired
  • limitintegerRequired

    At least 1.

  • nextCursorstringRequirednullable
  • pageintegerRequirednullable

    At least 1.

  • tablesarray of objectsRequired
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 objectsRequired

    1 to 100 items.

  • insert_modestringoptional
    Allowed values
    appenddedupmergereplace
  • instructionstringoptionalnullable

    Up to 512 characters.

  • merge_columns_jsonarray of stringsoptionalnullable

    At least 1 items.

  • namestringRequired

    1 to 128 characters.

  • strictnessstringoptional
    Allowed values
    strictbalancedflexible

Returns

201application/json

  • created_atintegerRequired

    At least 0.

  • deleted_atintegerRequirednullable

    At least 0.

  • updated_atintegerRequired

    At least 0.

  • idstringRequired

    1 to 48 characters.

  • project_idstringRequired

    1 to 48 characters.

  • namestringRequired

    1 to 128 characters.

  • slugstringRequired

    1 to 50 characters.

  • columns_jsonarray of objectsRequired

    1 to 100 items.

  • instructionstringRequirednullable

    Up to 512 characters.

  • strictnessstringRequired
    Allowed values
    strictbalancedflexible
  • insert_modestringRequired
    Allowed values
    appenddedupmergereplace
  • merge_columns_jsonarray of stringsRequirednullable

    At least 1 items.

  • default_sortstringRequirednullable
  • row_countintegerRequired

    At least 0.

  • usage_countintegerRequired

    At least 0.

  • data_versionintegerRequired

    At least 0.

  • fts_versionintegerRequired

    At least 0.

  • last_used_atintegerRequirednullable

    At 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_idstringRequired
  • table_idstringRequired

Returns

200application/json

  • created_atintegerRequired

    At least 0.

  • deleted_atintegerRequirednullable

    At least 0.

  • updated_atintegerRequired

    At least 0.

  • idstringRequired

    1 to 48 characters.

  • project_idstringRequired

    1 to 48 characters.

  • namestringRequired

    1 to 128 characters.

  • slugstringRequired

    1 to 50 characters.

  • columns_jsonarray of objectsRequired

    1 to 100 items.

  • instructionstringRequirednullable

    Up to 512 characters.

  • strictnessstringRequired
    Allowed values
    strictbalancedflexible
  • insert_modestringRequired
    Allowed values
    appenddedupmergereplace
  • merge_columns_jsonarray of stringsRequirednullable

    At least 1 items.

  • default_sortstringRequirednullable
  • row_countintegerRequired

    At least 0.

  • usage_countintegerRequired

    At least 0.

  • data_versionintegerRequired

    At least 0.

  • fts_versionintegerRequired

    At least 0.

  • last_used_atintegerRequirednullable

    At least 0.

Errors

  • 404not_foundtable_not_found
Errors every endpoint can return
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_idstringRequired
  • table_idstringRequired

Request body

application/json

  • default_sortstringoptionalnullable

    Up to 256 characters.

  • insert_modestringoptional
    Allowed values
    appenddedupmergereplace
  • instructionstringoptionalnullable

    Up to 512 characters.

  • merge_columns_jsonarray of stringsoptionalnullable

    At least 1 items.

  • namestringoptional

    1 to 128 characters.

  • slugstringoptional

    1 to 50 characters.

  • strictnessstringoptional
    Allowed values
    strictbalancedflexible

Returns

200application/json

  • created_atintegerRequired

    At least 0.

  • deleted_atintegerRequirednullable

    At least 0.

  • updated_atintegerRequired

    At least 0.

  • idstringRequired

    1 to 48 characters.

  • project_idstringRequired

    1 to 48 characters.

  • namestringRequired

    1 to 128 characters.

  • slugstringRequired

    1 to 50 characters.

  • columns_jsonarray of objectsRequired

    1 to 100 items.

  • instructionstringRequirednullable

    Up to 512 characters.

  • strictnessstringRequired
    Allowed values
    strictbalancedflexible
  • insert_modestringRequired
    Allowed values
    appenddedupmergereplace
  • merge_columns_jsonarray of stringsRequirednullable

    At least 1 items.

  • default_sortstringRequirednullable
  • row_countintegerRequired

    At least 0.

  • usage_countintegerRequired

    At least 0.

  • data_versionintegerRequired

    At least 0.

  • fts_versionintegerRequired

    At least 0.

  • last_used_atintegerRequirednullable

    At least 0.

Errors

  • 404not_foundtable_not_found
  • 409table_project_id_duplicate
Errors every endpoint can return
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_idstringRequired
  • table_idstringRequired

Returns

200application/json

  • idstringRequired

Errors

  • 404not_foundtable_not_found
Errors every endpoint can return
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_idstringRequired
  • table_idstringRequired

Request body

application/json

  • namestringRequired

    1 to 128 characters.

  • slugstringRequired

    1 to 50 characters.

Returns

201application/json

  • created_atintegerRequired

    At least 0.

  • deleted_atintegerRequirednullable

    At least 0.

  • updated_atintegerRequired

    At least 0.

  • idstringRequired

    1 to 48 characters.

  • project_idstringRequired

    1 to 48 characters.

  • namestringRequired

    1 to 128 characters.

  • slugstringRequired

    1 to 50 characters.

  • columns_jsonarray of objectsRequired

    1 to 100 items.

  • instructionstringRequirednullable

    Up to 512 characters.

  • strictnessstringRequired
    Allowed values
    strictbalancedflexible
  • insert_modestringRequired
    Allowed values
    appenddedupmergereplace
  • merge_columns_jsonarray of stringsRequirednullable

    At least 1 items.

  • default_sortstringRequirednullable
  • row_countintegerRequired

    At least 0.

  • usage_countintegerRequired

    At least 0.

  • data_versionintegerRequired

    At least 0.

  • fts_versionintegerRequired

    At least 0.

  • last_used_atintegerRequirednullable

    At least 0.

Errors

  • 404not_foundtable_not_found
  • 409table_project_id_duplicate
Errors every endpoint can return
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_idstringRequired
  • table_idstringRequired

Request body

application/json

  • slugstringoptional

    1 to 50 characters.

Returns

200application/json

  • created_atintegerRequired

    At least 0.

  • deleted_atintegerRequirednullable

    At least 0.

  • updated_atintegerRequired

    At least 0.

  • idstringRequired

    1 to 48 characters.

  • project_idstringRequired

    1 to 48 characters.

  • namestringRequired

    1 to 128 characters.

  • slugstringRequired

    1 to 50 characters.

  • columns_jsonarray of objectsRequired

    1 to 100 items.

  • instructionstringRequirednullable

    Up to 512 characters.

  • strictnessstringRequired
    Allowed values
    strictbalancedflexible
  • insert_modestringRequired
    Allowed values
    appenddedupmergereplace
  • merge_columns_jsonarray of stringsRequirednullable

    At least 1 items.

  • default_sortstringRequirednullable
  • row_countintegerRequired

    At least 0.

  • usage_countintegerRequired

    At least 0.

  • data_versionintegerRequired

    At least 0.

  • fts_versionintegerRequired

    At least 0.

  • last_used_atintegerRequirednullable

    At least 0.

Errors

  • 404not_foundtable_not_found
  • 409table_project_id_duplicate
Errors every endpoint can return
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}