Skip to content

API reference

Table Templates

Reusable table schemas: browse, preview and create tables from them.

The Table Template object

  • created_atintegerRequired

    At least 0.

  • updated_atintegerRequired

    At least 0.

  • idstringRequired

    1 to 48 characters.

  • categorystringRequired

    Up to 64 characters.

  • columns_jsonarray of objectsRequired

    1 to 100 items.

  • creator_display_namestringRequirednullable

    Up to 101 characters.

  • creator_user_idstringRequirednullable

    Up to 48 characters.

  • descriptionstringRequirednullable

    Up to 512 characters.

The Table Template objectjson
{  "created_at": 1711468800000,  "updated_at": 1711468800000,  "id": "ttmpl_01h5a3g8k9m2n4p6q8r0t2v4x6",  "category": "string",  "columns_json": [    {      "currency_code": "string",      "description": "string",      "id": "string",      "instruction": "string",      "name": "string",      "options": [        "string"      ],      "required": false,      "searchable": true,      "type": "string"    }  ],  "creator_display_name": "string",  "creator_user_id": "string",  "description": "string",  "insert_mode": "append",  "instruction": "string",  "merge_columns_json": [    "string"  ],  "name": "string",  "strictness": "strict",  "usage_count": 42}

Browse table templates

GET/v1/projects/{project_id}/table-templates

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: category, created_at, name, updated_at, usage_count. Default: category.desc. Nulls sort last ascending and first descending unless stated.

    Matches
    ^(?:category|created_at|name|updated_at|usage_count)(?:\.(?:asc|desc))?(?:\.(?:nullsfirst|nullslast))?(?:,(?:category|created_at|name|updated_at|usage_count)(?:\.(?:asc|desc))?(?:\.(?:nullsfirst|nullslast))?){0,2}$
  • filterstringoptional

    Filter expression field.op.value; , joins conditions with AND; group with or(...) and and(...). Fields: category (enum: eq, ne, neq, in, nin, is); 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). 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, description, creator_display_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.

  • templatesarray 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.tableTemplate.projectList({  params: {    project_id: "{project_id}"  },})
{  "count": 0,  "hasMore": true,  "limit": 1,  "nextCursor": "string",  "page": 1,  "templates": [    {      "created_at": 1711468800000,      "updated_at": 1711468800000,      "id": "ttmpl_01h5a3g8k9m2n4p6q8r0t2v4x6",      "category": "string",      "columns_json": [        {          "currency_code": "string",          "description": "string",          "id": "string",          "instruction": "string",          "name": "string",          "options": [            "string"          ],          "required": false,          "searchable": true,          "type": "string"        }      ],      "creator_display_name": "string",      "creator_user_id": "string",      "description": "string",      "insert_mode": "append",      "instruction": "string",      "merge_columns_json": [        "string"      ],      "name": "string",      "strictness": "strict",      "usage_count": 42    }  ]}

Preview table template

GET/v1/projects/{project_id}/table-templates/{template_id}

Path parameters

  • project_idstringRequired
  • template_idstringRequired

Returns

200application/json

  • created_atintegerRequired

    At least 0.

  • updated_atintegerRequired

    At least 0.

  • idstringRequired

    1 to 48 characters.

  • categorystringRequired

    Up to 64 characters.

  • columns_jsonarray of objectsRequired

    1 to 100 items.

  • creator_display_namestringRequirednullable

    Up to 101 characters.

  • creator_user_idstringRequirednullable

    Up to 48 characters.

  • descriptionstringRequirednullable

    Up to 512 characters.

  • insert_modestringRequired
    Allowed values
    appenddedupmergereplace
  • instructionstringRequirednullable

    Up to 512 characters.

  • merge_columns_jsonarray of stringsRequirednullable

    At least 1 items.

  • namestringRequired

    Up to 128 characters.

  • strictnessstringRequired
    Allowed values
    strictbalancedflexible
  • usage_countintegerRequired

    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.tableTemplate.projectGet({  params: {    project_id: "{project_id}",    template_id: "{template_id}"  },})
{  "created_at": 1711468800000,  "updated_at": 1711468800000,  "id": "ttmpl_01h5a3g8k9m2n4p6q8r0t2v4x6",  "category": "string",  "columns_json": [    {      "currency_code": "string",      "description": "string",      "id": "string",      "instruction": "string",      "name": "string",      "options": [        "string"      ],      "required": false,      "searchable": true,      "type": "string"    }  ],  "creator_display_name": "string",  "creator_user_id": "string",  "description": "string",  "insert_mode": "append",  "instruction": "string",  "merge_columns_json": [    "string"  ],  "name": "string",  "strictness": "strict",  "usage_count": 42}

Create table from template

POST/v1/projects/{project_id}/table-templates/{template_id}/use

Path parameters

  • project_idstringRequired
  • template_idstringRequired

Request body

application/json

  • namestringRequired

    1 to 128 characters.

  • slugstringoptional

    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.tableTemplate.use({  params: {    project_id: "{project_id}",    template_id: "{template_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}

Create table template

POST/v1/table-templates

Request body

application/json

  • categorystringRequired

    1 to 64 characters.

  • columns_jsonarray of objectsRequired

    1 to 100 items.

  • descriptionstringoptionalnullable

    Up to 512 characters.

  • 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.

  • updated_atintegerRequired

    At least 0.

  • idstringRequired

    1 to 48 characters.

  • categorystringRequired

    Up to 64 characters.

  • columns_jsonarray of objectsRequired

    1 to 100 items.

  • creator_display_namestringRequirednullable

    Up to 101 characters.

  • creator_user_idstringRequirednullable

    Up to 48 characters.

  • descriptionstringRequirednullable

    Up to 512 characters.

  • insert_modestringRequired
    Allowed values
    appenddedupmergereplace
  • instructionstringRequirednullable

    Up to 512 characters.

  • merge_columns_jsonarray of stringsRequirednullable

    At least 1 items.

  • namestringRequired

    Up to 128 characters.

  • strictnessstringRequired
    Allowed values
    strictbalancedflexible
  • usage_countintegerRequired

    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.tableTemplate.create({  json: {    category: "string",    columns_json: [      {        currency_code: "string",        description: "string",        id: "string",        instruction: "string",        name: "string",        options: [          "string"        ],        required: false,        searchable: true,        type: "string"      }    ],    description: "string",    insert_mode: "append",    instruction: "string",    merge_columns_json: [      "string"    ],    name: "string",    strictness: "strict"  },})
{  "created_at": 1711468800000,  "updated_at": 1711468800000,  "id": "ttmpl_01h5a3g8k9m2n4p6q8r0t2v4x6",  "category": "string",  "columns_json": [    {      "currency_code": "string",      "description": "string",      "id": "string",      "instruction": "string",      "name": "string",      "options": [        "string"      ],      "required": false,      "searchable": true,      "type": "string"    }  ],  "creator_display_name": "string",  "creator_user_id": "string",  "description": "string",  "insert_mode": "append",  "instruction": "string",  "merge_columns_json": [    "string"  ],  "name": "string",  "strictness": "strict",  "usage_count": 42}

List my table templates

GET/v1/table-templates/mine

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: category, created_at, name, updated_at, usage_count. Default: category.desc. Nulls sort last ascending and first descending unless stated.

    Matches
    ^(?:category|created_at|name|updated_at|usage_count)(?:\.(?:asc|desc))?(?:\.(?:nullsfirst|nullslast))?(?:,(?:category|created_at|name|updated_at|usage_count)(?:\.(?:asc|desc))?(?:\.(?:nullsfirst|nullslast))?){0,2}$
  • filterstringoptional

    Filter expression field.op.value; , joins conditions with AND; group with or(...) and and(...). Fields: category (enum: eq, ne, neq, in, nin, is); 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). 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, description, creator_display_name. Whitespace-separated terms must all match.

    Up to 200 characters.

  • selectstringoptional

    PostgREST-style sparse fieldset. Scalars comma-separated; relations embedded as name(fields); wildcard * selects all scalars. Docs: https://docs.postgrest.org/en/stable/references/api/resource_embedding.html (opens in a new tab)

    Up to 500 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.

  • templatesarray 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.tableTemplate.listMine({})
{  "count": 0,  "hasMore": true,  "limit": 1,  "nextCursor": "string",  "page": 1,  "templates": [    {      "created_at": 1711468800000,      "updated_at": 1711468800000,      "id": "ttmpl_01h5a3g8k9m2n4p6q8r0t2v4x6",      "category": "string",      "columns_json": [        {          "currency_code": "string",          "description": "string",          "id": "string",          "instruction": "string",          "name": "string",          "options": [            "string"          ],          "required": false,          "searchable": true,          "type": "string"        }      ],      "creator_display_name": "string",      "creator_user_id": "string",      "description": "string",      "insert_mode": "append",      "instruction": "string",      "merge_columns_json": [        "string"      ],      "name": "string",      "strictness": "strict",      "usage_count": 42    }  ]}

Update table template

PATCH/v1/table-templates/{template_id}

Path parameters

  • template_idstringRequired

Request body

application/json

  • categorystringoptional

    Up to 64 characters.

  • columns_jsonarray of objectsoptional

    1 to 100 items.

  • descriptionstringoptionalnullable

    Up to 512 characters.

  • insert_modestringoptional
    Allowed values
    appenddedupmergereplace
  • instructionstringoptionalnullable

    Up to 512 characters.

  • merge_columns_jsonarray of stringsoptionalnullable

    At least 1 items.

  • namestringoptional

    Up to 128 characters.

  • strictnessstringoptional
    Allowed values
    strictbalancedflexible

Returns

200application/json

  • created_atintegerRequired

    At least 0.

  • updated_atintegerRequired

    At least 0.

  • idstringRequired

    1 to 48 characters.

  • categorystringRequired

    Up to 64 characters.

  • columns_jsonarray of objectsRequired

    1 to 100 items.

  • creator_display_namestringRequirednullable

    Up to 101 characters.

  • creator_user_idstringRequirednullable

    Up to 48 characters.

  • descriptionstringRequirednullable

    Up to 512 characters.

  • insert_modestringRequired
    Allowed values
    appenddedupmergereplace
  • instructionstringRequirednullable

    Up to 512 characters.

  • merge_columns_jsonarray of stringsRequirednullable

    At least 1 items.

  • namestringRequired

    Up to 128 characters.

  • strictnessstringRequired
    Allowed values
    strictbalancedflexible
  • usage_countintegerRequired

    At least 0.

Errors

  • 403email_not_verifiedforbiddenimpersonation_forbiddenorg_suspendedtable_template_forbidden
  • 404not_foundtable_template_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.tableTemplate.update({  params: {    template_id: "{template_id}"  },  json: {    category: "string",    columns_json: [      {        currency_code: "string",        description: "string",        id: "string",        instruction: "string",        name: "string",        options: [          "string"        ],        required: false,        searchable: true,        type: "string"      }    ],    description: "string",    insert_mode: "append",    instruction: "string",    merge_columns_json: [      "string"    ],    name: "string",    strictness: "strict"  },})
{  "created_at": 1711468800000,  "updated_at": 1711468800000,  "id": "ttmpl_01h5a3g8k9m2n4p6q8r0t2v4x6",  "category": "string",  "columns_json": [    {      "currency_code": "string",      "description": "string",      "id": "string",      "instruction": "string",      "name": "string",      "options": [        "string"      ],      "required": false,      "searchable": true,      "type": "string"    }  ],  "creator_display_name": "string",  "creator_user_id": "string",  "description": "string",  "insert_mode": "append",  "instruction": "string",  "merge_columns_json": [    "string"  ],  "name": "string",  "strictness": "strict",  "usage_count": 42}

Delete table template

DELETE/v1/table-templates/{template_id}

Path parameters

  • template_idstringRequired

Returns

200application/json

  • idstringRequired

Errors

  • 403email_not_verifiedforbiddenimpersonation_forbiddenorg_suspendedtable_template_forbidden
  • 404not_foundtable_template_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.tableTemplate.delete({  params: {    template_id: "{template_id}"  },})
{  "id": "string"}