Frontline Objects API
Manage CRM objects (standard and custom)
Manage CRM objects (standard and custom)
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/frontline-objects-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Public Objects 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: Objects
description: Manage CRM objects (standard and custom)
paths:
/public/v1/objects:
get:
summary: List objects
operationId: listObjects
description: Returns every object (standard + custom) for the authenticated account.
security:
- bearerAuth: []
tags:
- Objects
responses:
'200':
description: Objects 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 object
operationId: createObject
description: Creates a custom object. At least one column is required. Requires a USER API key.
security:
- bearerAuth: []
tags:
- Objects
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
iconColor:
type: string
description:
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
minItems: 1
required:
- name
- displayName
- columns
responses:
'201':
description: Created object
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/objects/{name}:
get:
summary: Get object
operationId: getObject
description: Returns one object including fields, views, and record types.
security:
- bearerAuth: []
tags:
- Objects
parameters:
- schema:
type: string
minLength: 1
example: deals
required: true
name: name
in: path
responses:
'200':
description: Object 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
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/frontline/refs/heads/main/openapi/frontline-objects-api-openapi.yml