Frontline Agent Builder API
View and manage your AI agents across your account
View and manage your AI agents across your account
openapi: 3.0.0
info:
title: Public Account 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
example: false
splitCharacterLimit:
type: integer
example: 1
closeAfter:
type: number
nullable: true
example: 1
timeUnit:
type: string
nullable: true
enum:
- MINUTES
- HOURS
example: MINUTES
conversationClose:
type: string
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
example: NEVER
collectFeedback:
type: boolean
example: false
feedbackVisibility:
type: string
enum:
- ON_HOVER
- ALWAYS_VISIBLE
example: ON_HOVER
feedbackText:
type: string
nullable: true
example: example
collectFeedbackReason:
type: boolean
example: false
includeOtherReason:
type: boolean
example: false
openFeedbackText:
type: string
nullable: true
example: example
feedbackReasons:
type: array
nullable: true
items:
type: object
properties:
id:
type: number
example: 1
reason:
type: string
example: example
order:
type: number
example: 1
required:
- id
- reason
- order
enableDocumentProcessing:
type: boolean
example: false
enableImageProcessing:
type: boolean
example: false
enableIdle:
type: boolean
example: false
idleSettings:
type: object
nullable: true
properties:
id:
type: number
nullable: true
example: 1
after:
type: number
nullable: true
example: 1
timeUnit:
type: string
nullable: true
enum:
- MINUTES
- HOURS
example: MINUTES
resetsLimit:
type: number
nullable: true
example: 1
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
example: false
splitCharacterLimit:
type: integer
example: 1
conversationClose:
type: string
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
example: NEVER
closeAfter:
type: integer
nullable: true
example: 1
timeUnit:
type: string
nullable: true
enum:
- MINUTES
- HOURS
example: MINUTES
collectFeedback:
type: boolean
example: false
feedbackVisibility:
type: string
enum:
- ON_HOVER
- ALWAYS_VISIBLE
example: ON_HOVER
feedbackText:
type: string
nullable: true
minLength: 1
maxLength: 45
example: example
collectFeedbackReason:
type: boolean
example: false
includeOtherReason:
type: boolean
example: false
openFeedbackText:
type: string
nullable: true
maxLength: 45
example: example
feedbackReasons:
type: array
items:
type: object
properties:
id:
type: number
example: 1
reason:
type: string
minLength: 1
maxLength: 45
example: example
order:
type: integer
minimum: 0
example: 0
required:
- reason
maxItems: 5
enableDocumentProcessing:
type: boolean
example: false
enableImageProcessing:
type: boolean
example: false
enableIdle:
type: boolean
example: false
idleSettings:
type: object
nullable: true
properties:
after:
type: integer
nullable: true
example: 1
timeUnit:
type: string
nullable: true
enum:
- MINUTES
- HOURS
example: MINUTES
resetsLimit:
type: integer
nullable: true
example: 1
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
example: false
splitCharacterLimit:
type: integer
example: 1
conversationClose:
type: string
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
example: NEVER
closeAfter:
type: number
nullable: true
example: 1
timeUnit:
type: string
nullable: true
enum:
- MINUTES
- HOURS
example: MINUTES
collectFeedback:
type: boolean
example: false
feedbackVisibility:
type: string
enum:
- ON_HOVER
- ALWAYS_VISIBLE
example: ON_HOVER
feedbackText:
type: string
nullable: true
example: example
collectFeedbackReason:
type: boolean
example: false
includeOtherReason:
type: boolean
example: false
openFeedbackText:
type: string
nullable: true
example: example
feedbackReasons:
type: array
items:
type: object
properties:
id:
type: number
example: 1
reason:
type: string
example: example
order:
type: number
example: 1
required:
- id
- reason
- order
enableDocumentProcessing:
type: boolean
example: false
enableImageProcessing:
type: boolean
example: false
enableIdle:
type: boolean
example: false
idleSettings:
type: object
nullable: true
properties:
id:
type: number
nullable: true
example: 1
after:
type: number
nullable: true
example: 1
timeUnit:
type: string
nullable: true
enum:
- MINUTES
- HOURS
example: MINUTES
resetsLimit:
type: number
nullable: true
example: 1
required:
- after
- timeUnit
- resetsLimit
conversationInterruptTimeout:
type: integer
minimum: 0
example: 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
example: false
splitCharacterLimit:
type: integer
example: 1
closeAfter:
type: number
nullable: true
example: 1
timeUnit:
type: string
nullable: true
enum:
- MINUTES
- HOURS
example: MINUTES
conversationClose:
type: string
nullable: true
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
example: NEVER
enableDocumentProcessing:
type: boolean
example: false
enableImageProcessing:
type: boolean
example: false
debounce:
type: boolean
example: false
debounceTime:
type: integer
minimum: 0
example: 0
enableIdle:
type: boolean
example: false
idleSettings:
type: object
nullable: true
properties:
id:
type: number
nullable: true
example: 1
after:
type: number
nullable: true
example: 1
timeUnit:
type: string
nullable: true
enum:
- MINUTES
- HOURS
example: MINUTES
resetsLimit:
type: number
nullable: true
example: 1
required:
- after
- timeUnit
- resetsLimit
conversationInterruptTimeout:
type: integer
minimum: 0
example: 0
sendCloseMessage:
type: boolean
example: false
closeMessageType:
type: string
enum:
- STATIC
- DYNAMIC
example: STATIC
closeMessage:
type: string
nullable: true
example: example
closeInstruction:
type: string
nullable: true
example: example
autoReplyOnUninterrupt:
type: boolean
example: false
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
example: false
splitCharacterLimit:
type: integer
example: 1
conversationClose:
type: string
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
example: NEVER
closeAfter:
type: integer
nullable: true
example: 1
timeUnit:
type: string
nullable: true
enum:
- MINUTES
- HOURS
example: MINUTES
enableDocumentProcessing:
type: boolean
example: false
enableImageProcessing:
type: boolean
example: false
debounce:
type: boolean
example: false
debounceTime:
type: integer
minimum: 0
example: 0
enableIdle:
type: boolean
example: false
idleSettings:
type: object
nullable: true
properties:
after:
type: integer
nullable: true
example: 1
timeUnit:
type: string
nullable: true
enum:
- MINUTES
- HOURS
example: MINUTES
resetsLimit:
type: integer
nullable: true
example: 1
required:
- after
- timeUnit
- resetsLimit
conversationInterruptTimeout:
type: integer
minimum: 0
example: 0
sendCloseMessage:
type: boolean
example: false
closeMessageType:
type: string
enum:
- STATIC
- DYNAMIC
example: STATIC
closeMessage:
type: string
nullable: true
example: example
closeInstruction:
type: string
nullable: true
example: example
autoReplyOnUninterrupt:
type: boolean
example: false
required:
- splitMessages
- splitCharacterLimit
- conversationClose
- closeAfter
- timeUnit
responses:
'200':
description: Updated channel settings
content:
application/json:
schema:
type: object
properties:
splitMessages:
type: boolean
example: false
splitCharacterLimit:
type: integer
example: 1
conversationClose:
type: string
enum:
- NEVER
- AUTOMATICALLY
- DYNAMICALLY
example: NEVER
closeAfter:
type: integer
nullable: true
example: 1
timeUnit:
type: string
nullable: true
enum:
- MINUTES
- HOURS
example: MINUTES
enableDocumentProcessing:
type: boolean
example: false
enableImageProcessing:
type: boolean
example: false
debounce:
type: boolean
example: false
debounceTime:
type: integer
minimum: 0
example: 0
enableIdle:
type: boolean
example: false
idleSettings:
type: object
nullable: true
properties:
id:
type: number
nullable: true
example: 1
after:
type: number
nullable: true
example: 1
timeUnit:
type: string
nullable: true
enum:
- MINUTES
- HOURS
example: MINUTES
resetsLimit:
type: number
nullable: true
example: 1
required:
- after
- timeUnit
- resetsLimit
conversationInterruptTimeout:
type: integer
minimum: 0
example: 0
# --- truncated at 32 KB (96 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/frontline/refs/heads/main/openapi/frontline-agent-builder-api-openapi.yml