Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/frontline-tables-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
OpenAPI Specification
openapi: 3.2.0
info:
title: Public Tables API
version: 1.0.0
description: 'Public API for accessing agents, flows, and analytics.
## Authentication
The Public API supports two API key types. Pass the key as a Bearer token:
```
Authorization: Bearer <YOUR_API_KEY>
```
### Account API key (GENERAL)
Account-level key that acts on behalf of the entire account. Required for account-level endpoints unless noted otherwise.
### User API key (USER)
User-level key tied to a specific user. Required for write operations and user-owned resources. **Also accepted on all account-level endpoints.**
Each operation documents which key type(s) it accepts in its **Security** section.'
license:
name: Proprietary
url: https://www.getfrontline.ai/terms-and-conditions
servers:
- url: https://prod-api.getfrontline.ai
tags:
- name: Tables
description: Manage spreadsheet-style tables
paths:
/public/v1/tables:
get:
summary: List tables
operationId: listTables
description: Returns every table for the authenticated account.
security:
- bearerAuth: []
tags:
- Tables
responses:
'200':
description: Tables list
content:
application/json:
schema:
type: object
properties:
ok:
type: boolean
enum:
- true
data:
type: array
items:
type: object
properties:
id:
type: number
name:
type: string
display_name:
type: string
type:
type: string
enum:
- table
- object
custom:
type: boolean
created_at:
type:
- string
- 'null'
updated_at:
type:
- string
- 'null'
description:
type: string
emoji:
type: string
icon_color:
type: string
field_count:
type: number
required:
- id
- name
- display_name
- type
- custom
- created_at
- updated_at
required:
- ok
- data
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
post:
summary: Create table
operationId: createTable
description: Creates a table. Columns can be supplied at creation or added later. Requires a USER API key.
security:
- bearerAuth: []
tags:
- Tables
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
minLength: 1
displayName:
type: string
minLength: 1
emoji:
type: string
icon_color:
type: string
columns:
type: array
items:
type: object
properties:
name:
type: string
minLength: 1
type:
anyOf:
- type: string
enum:
- string
- number
- boolean
- date
- tags
- relation
- autoIncrement
- dateOnly
- prismaRelation
- kanbanViewOrder
- file
- avatar
- permissions
- formula
- type: string
enum:
- select
metadata:
type: object
additionalProperties: {}
record_type_id:
type: integer
exclusiveMinimum: 0
recordTypeId:
type: integer
exclusiveMinimum: 0
required:
- name
- type
additionalProperties: false
required:
- name
- displayName
responses:
'201':
description: Created table
content:
application/json:
schema:
type: object
properties:
ok:
type: boolean
enum:
- true
data:
type: object
properties:
id:
type: number
name:
type: string
display_name:
type: string
type:
type: string
enum:
- table
- object
custom:
type: boolean
created_at:
type:
- string
- 'null'
updated_at:
type:
- string
- 'null'
description:
type: string
emoji:
type: string
icon_color:
type: string
field_count:
type: number
fields:
type: array
items:
type: object
properties:
id:
type: number
name:
type: string
key:
type: string
type:
type: string
editable:
type: boolean
created_at:
type:
- string
- 'null'
updated_at:
type:
- string
- 'null'
read_only:
type: boolean
required:
type: boolean
unique:
type: boolean
is_system:
type: boolean
is_predefined:
type: boolean
default_value: {}
format:
type: string
mode:
type: string
enum:
- singleSelect
- multiSelect
- single
- multi
timezone:
type: string
decimals:
type: number
currency:
type: string
min:
type:
- number
- 'null'
max:
type:
- number
- 'null'
time_format:
type: string
show_preview:
type: boolean
allowed_file_types:
type: array
items:
type: string
max_file_size:
type: number
related_table_id:
type: number
related_record_type_ids:
type:
- array
- 'null'
items:
type: number
display_field_id:
type: number
relation_mode:
type: string
include_activity:
type: boolean
metadata:
type: object
additionalProperties: {}
options:
type: array
items:
type: object
properties:
id:
type: number
name:
type: string
color:
type: string
order:
type: number
created_at:
type:
- string
- 'null'
updated_at:
type:
- string
- 'null'
required:
- id
- name
- color
- order
- created_at
- updated_at
expression: {}
output_type:
type: string
apply_if: {}
number_config: {}
date_config: {}
string_config: {}
required:
- id
- name
- key
- type
- editable
- created_at
- updated_at
views:
type: array
items:
type: object
properties:
id:
type: number
name:
type: string
type:
type: string
enum:
- TABLE
- KANBAN
- RECORD
is_default:
type: boolean
is_private:
type: boolean
record_type_id:
type:
- number
- 'null'
created_at:
type:
- string
- 'null'
updated_at:
type:
- string
- 'null'
column_order:
type: array
items:
type: string
hidden_columns:
type: array
items:
type: string
sticky_columns:
type: array
items:
type: string
grouping_field_id:
type: number
column_ordering: {}
title_field_id:
type: number
display_field_ids:
type: array
items:
type: number
required:
- id
- name
- type
- is_default
- is_private
- record_type_id
- created_at
- updated_at
record_types:
type: array
items:
type: object
properties:
id:
type: number
name:
type: string
display_name:
type: string
is_default:
type: boolean
single_noun:
type: string
emoji:
type: string
icon_color:
type: string
disable_side_effects:
type: boolean
disable_relation_logging:
type: boolean
default_view_id:
type: number
field_ids:
type: array
items:
type: number
views:
type: array
items:
type: object
properties:
id:
type: number
name:
type: string
type:
type: string
enum:
- TABLE
- KANBAN
- RECORD
is_default:
type: boolean
is_private:
type: boolean
record_type_id:
type:
- number
- 'null'
created_at:
type:
- string
- 'null'
updated_at:
type:
- string
- 'null'
column_order:
type: array
items:
type: string
hidden_columns:
type: array
items:
type: string
sticky_columns:
type: array
items:
type: string
grouping_field_id:
type: number
column_ordering: {}
title_field_id:
type: number
display_field_ids:
type: array
items:
type: number
required:
- id
- name
- type
- is_default
- is_private
- record_type_id
- created_at
- updated_at
required:
- id
- name
- display_name
- is_default
required:
- id
- name
- display_name
- type
- custom
- created_at
- updated_at
required:
- ok
- data
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/public/v1/tables/{name}:
get:
summary: Get table
operationId: getTable
description: Returns one table including fields and views.
security:
- bearerAuth: []
tags:
- Tables
parameters:
- schema:
type: string
minLength: 1
example: tasks_board
required: true
name: name
in: path
responses:
'200':
description: Table detail
content:
application/json:
schema:
type: object
properties:
ok:
type: boolean
enum:
- true
data:
type: object
properties:
id:
type: number
name:
type: string
display_name:
type: string
type:
type: string
enum:
- table
- object
custom:
type: boolean
created_at:
type:
- string
- 'null'
updated_at:
type:
- string
- 'null'
description:
type: string
emoji:
type: string
icon_color:
type: string
field_count:
type: number
fields:
type: array
items:
type: object
properties:
id:
type: number
name:
type: string
key:
type: string
type:
type: string
editable:
type: boolean
created_at:
type:
- string
- 'null'
updated_at:
type:
- string
- 'null'
read_only:
type: boolean
required:
type: boolean
unique:
type: boolean
is_system:
type: boolean
is_predefined:
type: boolean
default_value: {}
format:
type: string
mode:
type: string
enum:
- singleSelect
- multiSelect
- single
- multi
timezone:
type: string
decimals:
type: number
currency:
type: string
min:
type:
- number
- 'null'
max:
type:
- number
- 'null'
time_format:
type: string
show_preview:
type: boolean
allowed_file_types:
type: array
items:
type: string
max_file_size:
type: number
related_table_id:
type: number
related_record_type_ids:
type:
- array
- 'null'
items:
type: number
display_field_id:
type: number
relation_mode:
type: string
include_activity:
type: boolean
metadata:
type: object
additionalProperties: {}
options:
type: array
items:
type: object
properties:
id:
type: number
name:
type: string
color:
type: string
order:
type: number
created_at:
type:
- string
- 'null'
updated_at:
type:
- string
- 'null'
required:
- id
- name
- color
- order
- created_at
- updated_at
expression: {}
output_type:
type: string
apply_if: {}
number_config: {}
date_config: {}
string_config: {}
required:
- id
- name
- key
- type
- editable
- created_at
- updated_at
views:
type: array
items:
type: object
properties:
id:
type: number
name:
type: string
type:
type: string
enum:
- TABLE
- KANBAN
- RECORD
is_default:
type: boolean
is_private:
type: boolean
record_type_id:
type:
- number
- 'null'
created_at:
type:
- string
- 'null'
updated_at:
type:
- string
- 'null'
column_order:
type: array
items:
type: string
hidden_columns:
type: array
items:
type: string
sticky_columns:
type: array
items:
type: string
grouping_field_id:
type: number
column_ordering: {}
title_field_id:
type: number
display_field_ids:
type: array
items:
type: number
required:
- id
- name
- type
- is_default
- is_private
- record_type_id
- created_at
- updated_at
record_types:
type: array
items:
type: object
properties:
id:
type: number
name:
type: string
display_name:
type: string
is_default:
type: boolean
single_noun:
type: string
emoji:
type: string
icon_color:
type: string
disable_side_effects:
type: boolean
disable_relation_logging:
type: boolean
default_view_id:
type: number
field_ids:
type: array
items:
type: number
views:
type: array
items:
type: object
properties:
id:
type: number
name:
type: string
type:
type: string
enum:
- TABLE
- KANBAN
- RECORD
is_default:
type: boolean
is_private:
type: boolean
record_type_id:
type:
- number
- 'null'
created_at:
type:
- string
- 'null'
updated_at:
type:
- string
- 'null'
column_order:
type: array
items:
type: string
hidden_columns:
type: array
items:
type: string
sticky_columns:
type: array
items:
type: string
grouping_field_id:
type: number
column_ordering: {}
title_field_id:
type: number
display_field_ids:
type: array
items:
type: number
required:
- id
- name
- type
- is_default
- is_private
- record_type_id
- created_at
- updated_at
required:
- id
- name
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/frontline/refs/heads/main/openapi/frontline-tables-api-openapi.yml