Frontline Agent Builder API

View and manage your AI agents across your account

OpenAPI Specification

frontline-agent-builder-api-openapi.yml Raw ↑
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