Frontline Agent Channels API

View connected channel integrations (WhatsApp, Instagram, Messenger) and bind numbers/accounts/pages to agents

Operations 7

GET /public/v1/channels List channel integrations #
GET /public/v1/channels/whatsapp/numbers/{phoneNumberId}/business-info Get WhatsApp number business info #
PUT /public/v1/channels/whatsapp/{integrationId}/numbers/{phoneNumberId} Update WhatsApp number (profile + agent) #
POST /public/v1/channels/whatsapp/{integrationId}/numbers/{phoneNumberId}/register Register WhatsApp number #
POST /public/v1/channels/whatsapp/{integrationId}/numbers/{phoneNumberId}/disconnect Disconnect WhatsApp number #
PUT /public/v1/channels/instagram/accounts/{instagramAccountId} Assign Instagram account to agent #
PUT /public/v1/channels/messenger/pages/{messengerPageId} Assign Messenger page to agent #

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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/frontline-agent-channels-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

frontline-agent-channels-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Public Agent Channels 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 Channels
  description: View connected channel integrations (WhatsApp, Instagram, Messenger) and bind numbers/accounts/pages to agents
paths:
  /public/v1/channels:
    get:
      summary: List channel integrations
      operationId: listChannelIntegrations
      description: Returns the account's connected channel integrations (WhatsApp, Instagram, Messenger) and which agent each number/account/page is bound to. Connecting a channel requires the OAuth flow in the app and is not available via the API. Requires a USER API key.
      security:
      - userApiKey: []
      tags:
      - Agent Channels
      responses:
        '200':
          description: The account's channel integrations (null if none connected)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicChannelIntegrations'
  /public/v1/channels/whatsapp/numbers/{phoneNumberId}/business-info:
    get:
      summary: Get WhatsApp number business info
      operationId: getWhatsAppNumberBusinessInfo
      description: Returns the live WhatsApp Business profile (about, address, websites, category) for a connected number. Requires a USER API key.
      security:
      - userApiKey: []
      tags:
      - Agent Channels
      parameters:
      - schema:
          type: string
          example: '109876543210123'
        required: true
        name: phoneNumberId
        in: path
      responses:
        '200':
          description: The WhatsApp business profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicWhatsAppBusinessInfo'
  /public/v1/channels/whatsapp/{integrationId}/numbers/{phoneNumberId}:
    put:
      summary: Update WhatsApp number (profile + agent)
      operationId: updateWhatsAppNumber
      description: Updates a WhatsApp number's business profile and/or binds it to an agent. Pass `agentId` to bind, null to unbind, or omit to leave the binding unchanged. Requires a USER API key.
      security:
      - userApiKey: []
      tags:
      - Agent Channels
      parameters:
      - schema:
          type: integer
          example: 12
          exclusiveMinimum: 0
        required: true
        name: integrationId
        in: path
      - schema:
          type: string
          example: '109876543210123'
        required: true
        name: phoneNumberId
        in: path
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublicWhatsAppNumberUpdateInput'
      responses:
        '200':
          description: The updated WhatsApp number
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicWhatsAppNumber'
  /public/v1/channels/whatsapp/{integrationId}/numbers/{phoneNumberId}/register:
    post:
      summary: Register WhatsApp number
      operationId: registerWhatsAppNumber
      description: Registers a connected WhatsApp number with Meta (generates a PIN and completes registration). Requires a USER API key.
      security:
      - userApiKey: []
      tags:
      - Agent Channels
      parameters:
      - schema:
          type: integer
          example: 12
          exclusiveMinimum: 0
        required: true
        name: integrationId
        in: path
      - schema:
          type: string
          example: '109876543210123'
        required: true
        name: phoneNumberId
        in: path
      responses:
        '204':
          description: Registered
  /public/v1/channels/whatsapp/{integrationId}/numbers/{phoneNumberId}/disconnect:
    post:
      summary: Disconnect WhatsApp number
      operationId: disconnectWhatsAppNumber
      description: Disconnects a single WhatsApp number from the integration. Requires a USER API key.
      security:
      - userApiKey: []
      tags:
      - Agent Channels
      parameters:
      - schema:
          type: integer
          example: 12
          exclusiveMinimum: 0
        required: true
        name: integrationId
        in: path
      - schema:
          type: string
          example: '109876543210123'
        required: true
        name: phoneNumberId
        in: path
      responses:
        '204':
          description: Disconnected
  /public/v1/channels/instagram/accounts/{instagramAccountId}:
    put:
      summary: Assign Instagram account to agent
      operationId: assignInstagramAccount
      description: Binds (or, with null, unbinds) a connected Instagram account to an agent. Requires a USER API key.
      security:
      - userApiKey: []
      tags:
      - Agent Channels
      parameters:
      - schema:
          type: integer
          example: 5
          exclusiveMinimum: 0
        required: true
        name: instagramAccountId
        in: path
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublicChannelAssignInput'
      responses:
        '200':
          description: The updated Instagram account
  /public/v1/channels/messenger/pages/{messengerPageId}:
    put:
      summary: Assign Messenger page to agent
      operationId: assignMessengerPage
      description: Binds (or, with null, unbinds) a connected Messenger page to an agent. Requires a USER API key.
      security:
      - userApiKey: []
      tags:
      - Agent Channels
      parameters:
      - schema:
          type: integer
          example: 7
          exclusiveMinimum: 0
        required: true
        name: messengerPageId
        in: path
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublicChannelAssignInput'
      responses:
        '200':
          description: The updated Messenger page
components:
  schemas:
    PublicWhatsAppBusinessInfo:
      type: object
      properties:
        about:
          type:
          - string
          - 'null'
        address:
          type:
          - string
          - 'null'
        description:
          type:
          - string
          - 'null'
        email:
          type:
          - string
          - 'null'
        profile_picture_url:
          type:
          - string
          - 'null'
        websites:
          type:
          - array
          - 'null'
          items:
            type: string
        vertical:
          type:
          - string
          - 'null'
          enum:
          - AUTO
          - BEAUTY
          - APPAREL
          - EDU
          - ENTERTAIN
          - EVENT_PLAN
          - FINANCE
          - GROCERY
          - GOVT
          - HOTEL
          - HEALTH
          - NONPROFIT
          - PROF_SERVICES
          - RETAIL
          - TRAVEL
          - RESTAURANT
          - OTHER
          - UNDEFINED
    PublicChannelAssignInput:
      type: object
      properties:
        agentId:
          type:
          - string
          - 'null'
          example: asst_123
      required:
      - agentId
    PublicWhatsAppNumber:
      type: object
      properties:
        id:
          type: number
        phoneNumberId:
          type: string
        assistantId:
          type:
          - string
          - 'null'
        assistant:
          type:
          - object
          - 'null'
          properties:
            id:
              type: string
            name:
              type: string
          required:
          - id
          - name
        status:
          type: string
          enum:
          - CONNECTED
          - PENDING
          - UNREGISTERED
          - ERROR
          - VERIFICATION_PENDING
          - DELETED
        wabaId:
          type: string
        name:
          type: string
        about:
          type:
          - string
          - 'null'
        description:
          type:
          - string
          - 'null'
        address:
          type:
          - string
          - 'null'
        category:
          type: string
          enum:
          - AUTO
          - BEAUTY
          - APPAREL
          - EDU
          - ENTERTAIN
          - EVENT_PLAN
          - FINANCE
          - GROCERY
          - GOVT
          - HOTEL
          - HEALTH
          - NONPROFIT
          - PROF_SERVICES
          - RETAIL
          - TRAVEL
          - RESTAURANT
          - OTHER
          - UNDEFINED
        displayPhoneNumber:
          type: string
        website:
          type:
          - string
          - 'null'
        secondaryWebsite:
          type:
          - string
          - 'null'
        verificationStatus:
          type: string
          enum:
          - VERIFIED
          - NOT_VERIFIED
        image:
          type:
          - string
          - 'null'
        email:
          type:
          - string
          - 'null'
        createdAt:
          type: string
        updatedAt:
          type: string
      required:
      - id
      - phoneNumberId
      - assistantId
      - status
      - wabaId
      - name
      - about
      - description
      - address
      - category
      - displayPhoneNumber
      - website
      - secondaryWebsite
      - verificationStatus
      - image
      - email
      - createdAt
      - updatedAt
    PublicWhatsAppNumberUpdateInput:
      type: object
      properties:
        description:
          type:
          - string
          - 'null'
          maxLength: 512
        website:
          type:
          - string
          - 'null'
          maxLength: 256
        secondaryWebsite:
          type:
          - string
          - 'null'
          maxLength: 256
        address:
          type:
          - string
          - 'null'
          maxLength: 256
        email:
          type:
          - string
          - 'null'
          maxLength: 128
          format: email
        about:
          type:
          - string
          - 'null'
          minLength: 1
          maxLength: 139
        category:
          type:
          - string
          - 'null'
          enum:
          - AUTO
          - BEAUTY
          - APPAREL
          - EDU
          - ENTERTAIN
          - EVENT_PLAN
          - FINANCE
          - GROCERY
          - GOVT
          - HOTEL
          - HEALTH
          - NONPROFIT
          - PROF_SERVICES
          - RETAIL
          - TRAVEL
          - RESTAURANT
          - OTHER
          - UNDEFINED
        agentId:
          type:
          - string
          - 'null'
          example: asst_123
    PublicChannelIntegrations:
      type:
      - object
      - 'null'
      properties:
        id:
          type: number
        accountId:
          type: number
        whatsapp:
          type:
          - object
          - 'null'
          properties:
            id:
              type: number
            integrationId:
              type: number
            status:
              type: string
              enum:
              - PENDING
              - ACTIVE
              - DELETED
            integratedById:
              type: number
            integratedBy:
              type: object
              properties:
                firstName:
                  type: string
                lastName:
                  type: string
                avatar:
                  type:
                  - string
                  - 'null'
              required:
              - firstName
              - lastName
            phoneNumbers:
              type: array
              items:
                $ref: '#/components/schemas/PublicWhatsAppNumber'
            allocationId:
              type:
              - string
              - 'null'
            expirationTime:
              type:
              - string
              - 'null'
            createdAt:
              type: string
            updatedAt:
              type: string
          required:
          - id
          - integrationId
          - status
          - integratedById
          - integratedBy
          - phoneNumbers
          - allocationId
          - createdAt
          - updatedAt
        instagram:
          type:
          - object
          - 'null'
          properties:
            id:
              type: number
            integrationId:
              type: number
            status:
              type: string
              enum:
              - PENDING
              - ACTIVE
              - EXPIRED
              - DELETED
            integratedById:
              type: number
            integratedBy:
              type: object
              properties:
                firstName:
                  type: string
                lastName:
                  type: string
                avatar:
                  type:
                  - string
                  - 'null'
              required:
              - firstName
              - lastName
            instagramAccounts:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: number
                  instagramUserId:
                    type: string
                  username:
                    type: string
                  accountType:
                    type: string
                    enum:
                    - BUSINESS
                    - CREATOR
                  profilePictureUrl:
                    type:
                    - string
                    - 'null'
                  followersCount:
                    type:
                    - number
                    - 'null'
                  mediaCount:
                    type:
                    - number
                    - 'null'
                  assistantId:
                    type:
                    - string
                    - 'null'
                  createdAt:
                    type: string
                  updatedAt:
                    type: string
                required:
                - id
                - instagramUserId
                - username
                - accountType
                - profilePictureUrl
                - followersCount
                - mediaCount
                - assistantId
                - createdAt
                - updatedAt
            tokenExpiresAt:
              type:
              - string
              - 'null'
            createdAt:
              type: string
            updatedAt:
              type: string
          required:
          - id
          - integrationId
          - status
          - integratedById
          - integratedBy
          - instagramAccounts
          - tokenExpiresAt
          - createdAt
          - updatedAt
        messenger:
          type:
          - object
          - 'null'
          properties:
            id:
              type: number
            integrationId:
              type: number
            status:
              type: string
              enum:
              - PENDING
              - ACTIVE
              - EXPIRED
              - DELETED
            integratedById:
              type: number
            integratedBy:
              type: object
              properties:
                firstName:
                  type: string
                lastName:
                  type: string
                avatar:
                  type:
                  - string
                  - 'null'
              required:
              - firstName
              - lastName
            messengerPages:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: number
                  messengerPageId:
                    type: string
                  businessAccountId:
                    type:
                    - string
                    - 'null'
                  pageName:
                    type: string
                  pageType:
                    type: string
                    enum:
                    - business
                  pagePictureUrl:
                    type:
                    - string
                    - 'null'
                  followersCount:
                    type:
                    - number
                    - 'null'
                  likesCount:
                    type:
                    - number
                    - 'null'
                  assistantId:
                    type:
                    - string
                    - 'null'
                  createdAt:
                    type: string
                  updatedAt:
                    type: string
                required:
                - id
                - messengerPageId
                - businessAccountId
                - pageName
                - pageType
                - pagePictureUrl
                - followersCount
                - likesCount
                - assistantId
                - createdAt
                - updatedAt
            createdAt:
              type: string
            updatedAt:
              type: string
          required:
          - id
          - integrationId
          - status
          - integratedById
          - integratedBy
          - messengerPages
          - createdAt
          - updatedAt
      required:
      - id
      - accountId
      - whatsapp
      - instagram
      - messenger
  securitySchemes:
    accountApiKey:
      type: http
      scheme: bearer
      bearerFormat: Account API Key
      description: Account-level API key (GENERAL). Authenticates on behalf of the entire account. Use for read-only and analytics endpoints marked as account-level in this documentation.
    userApiKey:
      type: http
      scheme: bearer
      bearerFormat: User API Key
      description: User-level API key (USER). Authenticates on behalf of a specific user. Required for write operations and user-owned resources. Also accepted on all account-level endpoints.
x-tagGroups:
- name: Agent Builder
  tags:
  - Agent Builder
  - Flows
  - Flow Variables
  - Intents
  - Agents
  - Agent Playbooks
- name: Workflows
  tags:
  - Workflows
  - Workflow Variables
- name: Objects
  tags:
  - Objects
  - Object fields
  - Object options
  - Object record types
  - Object views
  - Object relations
  - Object rows
  - Object aggregations
  - Object activities
  - Object tasks
  - Object files
  - Object export
- name: Tables
  tags:
  - Tables
  - Table fields
  - Table options
  - Table rows
  - Table aggregations
  - Table activities
  - Table tasks
  - Table files
  - Table export
- name: Channels
  tags:
  - Channels
- name: Integrations
  tags:
  - Custom Tools
  - Incoming Webhooks
  - Account Integrations
  - Agent Channels
  - Integration Resources
- name: Knowledge
  tags:
  - Knowledge Bases
- name: Core
  tags:
  - Account
  - AI Models
  - Billing
  - Users
  - User Tasks
  - Guidance