API reference
Table Templates
Reusable table schemas: browse, preview and create tables from them.
The Table Template objectLink to section
created_atintegerRequiredAt least 0.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
categorystringRequiredUp to 64 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
creator_display_namestringRequirednullableUp to 101 characters.
creator_user_idstringRequirednullableUp to 48 characters.
descriptionstringRequirednullableUp to 512 characters.
{ "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
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: 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}$
filterstringoptionalFilter expression
field.op.value;,joins conditions with AND; group withor(...)andand(...). 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).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, description, creator_display_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.
templatesarray of objectsRequiredcreated_atintegerRequiredAt least 0.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
categorystringRequiredUp to 64 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
creator_display_namestringRequirednullableUp to 101 characters.
creator_user_idstringRequirednullableUp to 48 characters.
descriptionstringRequirednullableUp to 512 characters.
insert_modestringRequired- Allowed values
appenddedupmergereplace
instructionstringRequirednullableUp to 512 characters.
merge_columns_jsonarray of stringsRequirednullableAt least 1 items.
namestringRequiredUp to 128 characters.
strictnessstringRequired- Allowed values
strictbalancedflexible
usage_countintegerRequiredAt 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.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_idstringRequiredtemplate_idstringRequired
Returns
200application/json
created_atintegerRequiredAt least 0.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
categorystringRequiredUp to 64 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
creator_display_namestringRequirednullableUp to 101 characters.
creator_user_idstringRequirednullableUp to 48 characters.
descriptionstringRequirednullableUp to 512 characters.
insert_modestringRequired- Allowed values
appenddedupmergereplace
instructionstringRequirednullableUp to 512 characters.
merge_columns_jsonarray of stringsRequirednullableAt least 1 items.
namestringRequiredUp to 128 characters.
strictnessstringRequired- Allowed values
strictbalancedflexible
usage_countintegerRequiredAt 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.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_idstringRequiredtemplate_idstringRequired
Request body
application/json
namestringRequired1 to 128 characters.
slugstringoptional1 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.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
categorystringRequired1 to 64 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.
requiredbooleanoptional- Default
false
searchablebooleanoptionaltypestringoptional- Allowed values
arraybooleancurrencydateemailenummulti_selectnumberstringtexturl- Default
string
descriptionstringoptionalnullableUp to 512 characters.
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.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
categorystringRequiredUp to 64 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
creator_display_namestringRequirednullableUp to 101 characters.
creator_user_idstringRequirednullableUp to 48 characters.
descriptionstringRequirednullableUp to 512 characters.
insert_modestringRequired- Allowed values
appenddedupmergereplace
instructionstringRequirednullableUp to 512 characters.
merge_columns_jsonarray of stringsRequirednullableAt least 1 items.
namestringRequiredUp to 128 characters.
strictnessstringRequired- Allowed values
strictbalancedflexible
usage_countintegerRequiredAt 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
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: 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}$
filterstringoptionalFilter expression
field.op.value;,joins conditions with AND; group withor(...)andand(...). 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).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, description, creator_display_name. Whitespace-separated terms must all match.
Up to 200 characters.
selectstringoptionalPostgREST-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.
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.
templatesarray of objectsRequiredcreated_atintegerRequiredAt least 0.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
categorystringRequiredUp to 64 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
creator_display_namestringRequirednullableUp to 101 characters.
creator_user_idstringRequirednullableUp to 48 characters.
descriptionstringRequirednullableUp to 512 characters.
insert_modestringRequired- Allowed values
appenddedupmergereplace
instructionstringRequirednullableUp to 512 characters.
merge_columns_jsonarray of stringsRequirednullableAt least 1 items.
namestringRequiredUp to 128 characters.
strictnessstringRequired- Allowed values
strictbalancedflexible
usage_countintegerRequiredAt 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.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
categorystringoptionalUp to 64 characters.
columns_jsonarray of objectsoptional1 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
descriptionstringoptionalnullableUp to 512 characters.
insert_modestringoptional- Allowed values
appenddedupmergereplace
instructionstringoptionalnullableUp to 512 characters.
merge_columns_jsonarray of stringsoptionalnullableAt least 1 items.
namestringoptionalUp to 128 characters.
strictnessstringoptional- Allowed values
strictbalancedflexible
Returns
200application/json
created_atintegerRequiredAt least 0.
updated_atintegerRequiredAt least 0.
idstringRequired1 to 48 characters.
categorystringRequiredUp to 64 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
creator_display_namestringRequirednullableUp to 101 characters.
creator_user_idstringRequirednullableUp to 48 characters.
descriptionstringRequirednullableUp to 512 characters.
insert_modestringRequired- Allowed values
appenddedupmergereplace
instructionstringRequirednullableUp to 512 characters.
merge_columns_jsonarray of stringsRequirednullableAt least 1 items.
namestringRequiredUp to 128 characters.
strictnessstringRequired- Allowed values
strictbalancedflexible
usage_countintegerRequiredAt least 0.
Errors
- 403
email_not_verifiedforbiddenimpersonation_forbiddenorg_suspendedtable_template_forbidden - 404
not_foundtable_template_not_found
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
- 403
email_not_verifiedforbiddenimpersonation_forbiddenorg_suspendedtable_template_forbidden - 404
not_foundtable_template_not_found
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"}