Frontline Agent Builder API
View and manage your AI agents across your account
View and manage your AI agents across your account
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-agent-builder-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 Agent Builder 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: Agent Builder
description: View and manage your AI agents across your account
paths:
/public/v1/agents:
get:
summary: List all agents
operationId: listAgents
description: Returns a list of agents associated with the account.
security:
- accountApiKey: []
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
enum:
- NONE
- ACTIVE
- INACTIVE
- TRAINING
- TRAIN_ERROR
example: ACTIVE
required: false
name: status
in: query
responses:
'200':
description: A list of agents
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/Agent'
required:
- results
description: Standard list response
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
post:
summary: Create an agent
operationId: createAgent
description: Creates an assistant with the internal defaults for theme, channels, settings, flow, and billing checks. Requires a USER API key.
security:
- userApiKey: []
tags:
- Agent Builder
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PublicAgentCreateInput'
responses:
'201':
description: Created agent
content:
application/json:
schema:
$ref: '#/components/schemas/AgentDetail'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/public/v1/agents/{agentId}:
get:
summary: Get agent details
operationId: getAgent
description: Returns a safe agent detail without secret key or HMAC fields.
security:
- accountApiKey: []
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
responses:
'200':
description: Agent details
content:
application/json:
schema:
$ref: '#/components/schemas/AgentDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
put:
summary: Update an agent
operationId: updateAgent
description: Updates basic agent metadata. Requires a USER API key.
security:
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PublicAgentUpdateInput'
responses:
'200':
description: Updated agent
content:
application/json:
schema:
$ref: '#/components/schemas/AgentDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
delete:
summary: Delete an agent
operationId: deleteAgent
description: Soft deletes an agent using the assistant manager. Requires a USER API key.
security:
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
responses:
'204':
description: Agent deleted
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/public/v1/agents/{agentId}/agent-setting:
get:
summary: Get agent setting
operationId: getAgentSetting
description: Returns safe agent model, instruction, tool, playbook, and connected-account settings.
security:
- accountApiKey: []
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
responses:
'200':
description: Agent setting
content:
application/json:
schema:
$ref: '#/components/schemas/AgentSetting'
put:
summary: Update agent setting
operationId: updateAgentSetting
description: Updates instructions, model, tools, playbooks, connected accounts, and system tool settings. Requires a USER API key.
security:
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PublicAgentSettingUpdateInput'
responses:
'200':
description: Updated agent setting
content:
application/json:
schema:
$ref: '#/components/schemas/AgentSetting'
/public/v1/agents/{agentId}/theme:
get:
summary: Get agent theme
operationId: getAgentTheme
description: Returns textual and color theme settings. Image uploads are not exposed in the public builder.
security:
- accountApiKey: []
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
responses:
'200':
description: Agent theme
content:
application/json:
schema:
$ref: '#/components/schemas/AgentTheme'
put:
summary: Update agent theme
operationId: updateAgentTheme
description: Updates textual and color theme settings. Requires a USER API key.
security:
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PublicAgentThemeUpdateInput'
responses:
'200':
description: Updated agent theme
content:
application/json:
schema:
$ref: '#/components/schemas/PublicAgentThemeUpdateOutput'
/public/v1/agents/{agentId}/deployment-status:
put:
summary: Update agent deployment status
operationId: updateAgentDeploymentStatus
description: Publishes or pauses an agent by changing isOffline. Requires a USER API key and runs billing checks.
security:
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PublicAgentDeploymentStatusInput'
responses:
'200':
description: Updated agent
content:
application/json:
schema:
$ref: '#/components/schemas/AgentDetail'
/public/v1/agents/{agentId}/settings:
get:
summary: Get all agent channel settings
operationId: getAgentChannelSettings
description: Returns livechat, WhatsApp, Instagram, and Messenger channel settings.
security:
- accountApiKey: []
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
responses:
'200':
description: Channel settings
content:
application/json:
schema:
$ref: '#/components/schemas/AgentChannelSettings'
/public/v1/agents/{agentId}/settings/livechat:
get:
summary: Get livechat settings
operationId: getAgentlivechatSettings
description: Returns livechat channel settings for an agent.
security:
- accountApiKey: []
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
responses:
'200':
description: Channel settings
content:
application/json:
schema:
type: object
properties:
splitMessages:
type: boolean
splitCharacterLimit:
type: integer
closeAfter:
type:
- number
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
conversationClose:
type: string
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
collectFeedback:
type: boolean
feedbackVisibility:
type: string
enum:
- ON_HOVER
- ALWAYS_VISIBLE
feedbackText:
type:
- string
- 'null'
collectFeedbackReason:
type: boolean
includeOtherReason:
type: boolean
openFeedbackText:
type:
- string
- 'null'
feedbackReasons:
type:
- array
- 'null'
items:
type: object
properties:
id:
type: number
reason:
type: string
order:
type: number
required:
- id
- reason
- order
enableDocumentProcessing:
type: boolean
enableImageProcessing:
type: boolean
enableIdle:
type: boolean
idleSettings:
type:
- object
- 'null'
properties:
id:
type:
- number
- 'null'
after:
type:
- number
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
resetsLimit:
type:
- number
- 'null'
required:
- after
- timeUnit
- resetsLimit
required:
- splitMessages
- splitCharacterLimit
- closeAfter
- timeUnit
- conversationClose
- collectFeedback
- feedbackVisibility
- feedbackText
- collectFeedbackReason
- includeOtherReason
- openFeedbackText
- enableIdle
put:
summary: Update livechat settings
operationId: updateAgentlivechatSettings
description: Updates livechat channel settings. Requires a USER API key.
security:
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
splitMessages:
type: boolean
splitCharacterLimit:
type: integer
conversationClose:
type: string
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
closeAfter:
type:
- integer
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
collectFeedback:
type: boolean
feedbackVisibility:
type: string
enum:
- ON_HOVER
- ALWAYS_VISIBLE
feedbackText:
type:
- string
- 'null'
minLength: 1
maxLength: 45
collectFeedbackReason:
type: boolean
includeOtherReason:
type: boolean
openFeedbackText:
type:
- string
- 'null'
maxLength: 45
feedbackReasons:
type: array
items:
type: object
properties:
id:
type: number
reason:
type: string
minLength: 1
maxLength: 45
order:
type: integer
minimum: 0
required:
- reason
maxItems: 5
enableDocumentProcessing:
type: boolean
enableImageProcessing:
type: boolean
enableIdle:
type: boolean
idleSettings:
type:
- object
- 'null'
properties:
after:
type:
- integer
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
resetsLimit:
type:
- integer
- 'null'
required:
- after
- timeUnit
- resetsLimit
required:
- splitMessages
- splitCharacterLimit
- conversationClose
- closeAfter
- timeUnit
- collectFeedback
- feedbackText
- collectFeedbackReason
- includeOtherReason
- feedbackReasons
responses:
'200':
description: Updated channel settings
content:
application/json:
schema:
type: object
properties:
splitMessages:
type: boolean
splitCharacterLimit:
type: integer
conversationClose:
type: string
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
closeAfter:
type:
- number
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
collectFeedback:
type: boolean
feedbackVisibility:
type: string
enum:
- ON_HOVER
- ALWAYS_VISIBLE
feedbackText:
type:
- string
- 'null'
collectFeedbackReason:
type: boolean
includeOtherReason:
type: boolean
openFeedbackText:
type:
- string
- 'null'
feedbackReasons:
type: array
items:
type: object
properties:
id:
type: number
reason:
type: string
order:
type: number
required:
- id
- reason
- order
enableDocumentProcessing:
type: boolean
enableImageProcessing:
type: boolean
enableIdle:
type: boolean
idleSettings:
type:
- object
- 'null'
properties:
id:
type:
- number
- 'null'
after:
type:
- number
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
resetsLimit:
type:
- number
- 'null'
required:
- after
- timeUnit
- resetsLimit
conversationInterruptTimeout:
type: integer
minimum: 0
required:
- splitMessages
- splitCharacterLimit
- conversationClose
- closeAfter
- timeUnit
- collectFeedback
- feedbackVisibility
- feedbackText
- collectFeedbackReason
- includeOtherReason
- openFeedbackText
- enableIdle
/public/v1/agents/{agentId}/settings/whatsapp:
get:
summary: Get whatsapp settings
operationId: getAgentwhatsappSettings
description: Returns whatsapp channel settings for an agent.
security:
- accountApiKey: []
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
responses:
'200':
description: Channel settings
content:
application/json:
schema:
type: object
properties:
splitMessages:
type: boolean
splitCharacterLimit:
type: integer
closeAfter:
type:
- number
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
conversationClose:
type:
- string
- 'null'
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
enableDocumentProcessing:
type: boolean
enableImageProcessing:
type: boolean
debounce:
type: boolean
debounceTime:
type: integer
minimum: 0
enableIdle:
type: boolean
idleSettings:
type:
- object
- 'null'
properties:
id:
type:
- number
- 'null'
after:
type:
- number
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
resetsLimit:
type:
- number
- 'null'
required:
- after
- timeUnit
- resetsLimit
conversationInterruptTimeout:
type: integer
minimum: 0
conversationInterruptTimeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
sendCloseMessage:
type: boolean
closeMessageType:
type: string
enum:
- STATIC
- DYNAMIC
closeMessage:
type:
- string
- 'null'
closeInstruction:
type:
- string
- 'null'
autoReplyOnUninterrupt:
type: boolean
required:
- splitMessages
- splitCharacterLimit
- enableIdle
- sendCloseMessage
- closeMessageType
put:
summary: Update whatsapp settings
operationId: updateAgentwhatsappSettings
description: Updates whatsapp channel settings. Requires a USER API key.
security:
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
splitMessages:
type: boolean
splitCharacterLimit:
type: integer
conversationClose:
type: string
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
closeAfter:
type:
- integer
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
enableDocumentProcessing:
type: boolean
enableImageProcessing:
type: boolean
debounce:
type: boolean
debounceTime:
type: integer
minimum: 0
enableIdle:
type: boolean
idleSettings:
type:
- object
- 'null'
properties:
after:
type:
- integer
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
resetsLimit:
type:
- integer
- 'null'
required:
- after
- timeUnit
- resetsLimit
conversationInterruptTimeout:
type: integer
minimum: 0
conversationInterruptTimeUnit:
type: string
enum:
- MINUTES
- HOURS
sendCloseMessage:
type: boolean
closeMessageType:
type: string
enum:
- STATIC
- DYNAMIC
closeMessage:
type:
- string
- 'null'
closeInstruction:
type:
- string
- 'null'
autoReplyOnUninterrupt:
type: boolean
required:
- splitMessages
- splitCharacterLimit
- conversationClose
- closeAfter
- timeUnit
responses:
'200':
description: Updated channel settings
content:
application/json:
schema:
type: object
properties:
splitMessages:
type: boolean
splitCharacterLimit:
type: integer
conversationClose:
type: string
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
closeAfter:
type:
- integer
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
enableDocumentProcessing:
type: boolean
enableImageProcessing:
type: boolean
debounce:
type: boolean
debounceTime:
type: integer
minimum: 0
enableIdle:
type: boolean
idleSettings:
type:
- object
- 'null'
properties:
id:
type:
- number
- 'null'
after:
type:
- number
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
resetsLimit:
type:
- number
- 'null'
required:
- after
- timeUnit
- resetsLimit
conversationInterruptTimeout:
type: integer
minimum: 0
conversationInterruptTimeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
sendCloseMessage:
type: boolean
closeMessageType:
type: string
enum:
- STATIC
- DYNAMIC
closeMessage:
type:
- string
- 'null'
closeInstruction:
type:
- string
- 'null'
autoReplyOnUninterrupt:
type: boolean
required:
- splitMessages
- splitCharacterLimit
- conversationClose
- closeAfter
- timeUnit
- enableIdle
- sendCloseMessage
- closeMessageType
/public/v1/agents/{agentId}/settings/instagram:
get:
summary: Get instagram settings
operationId: getAgentinstagramSettings
description: Returns instagram channel settings for an agent.
security:
- accountApiKey: []
- userApiKey: []
tags:
- Agent Builder
parameters:
- schema:
type: string
example: uuid-xxxx-xxxx
required: true
name: agentId
in: path
responses:
'200':
description: Channel settings
content:
application/json:
schema:
type: object
properties:
splitMessages:
type: boolean
splitCharacterLimit:
type: integer
closeAfter:
type:
- number
- 'null'
timeUnit:
type:
- string
- 'null'
enum:
- MINUTES
- HOURS
conversationClose:
type:
- string
- 'null'
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
enableImageProcessing:
type: boolean
enableIdle:
type: boolean
idleSettings:
type:
- object
- 'null'
properties:
id:
type:
- number
- 'null'
# --- truncated at 32 KB (88 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/frontline/refs/heads/main/openapi/frontline-agent-builder-api-openapi.yml