Frontline Integrations API
OAuth/API connected accounts for toolkits like Google Sheets, Gmail, and Slack
OAuth/API connected accounts for toolkits like Google Sheets, Gmail, and Slack
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-integrations-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 Integrations 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: Integrations
description: OAuth/API connected accounts for toolkits like Google Sheets, Gmail, and Slack
paths:
/public/v1/integrations:
get:
summary: List connected account integrations
operationId: listConnectedAccounts
description: Read-only list of OAuth/API connected accounts for this account (for example Google Sheets, Gmail, Slack). Use the returned id as connectedAccountId in agent settings, flows, and workflows. Requires a USER API key. Private integrations are only visible to their creator; shared integrations are visible to all account users.
security:
- userApiKey: []
tags:
- Integrations
parameters:
- schema:
type: string
enum:
- GMAIL
- GOOGLECALENDAR
- SLACK
- CALENDLY
- GOOGLEDOCS
- GOOGLESHEETS
- NOTION
- GOOGLEDRIVE
- GRANOLA_MCP
- GOOGLEMEET
- ZOOM
- GAMMA
- STRIPE
- POSTHOG
- LINKEDIN
- FACEBOOK
- GOOGLE_ANALYTICS
- GOOGLE_SEARCH_CONSOLE
- MAILCHIMP
- SEMRUSH
- GOOGLEADS
- INSTAGRAM
- ADYNTEL
- GOOGLETASKS
- LINEAR
- JIRA
- ASANA
- SHARE_POINT
- ONE_DRIVE
- EXCEL
- TIKTOK
- TWITTER
- YOUTUBE
- GOOGLE_MAPS
- METAADS
- SHOPIFY
- AIRTABLE
- MONDAY
- TRELLO
- GOOGLESLIDES
- BUILTWITH
- HUBSPOT
- PIPEDRIVE
- ATTIO
- ZENDESK
- SALESFORCE
- SALESFORCE_SERVICE_CLOUD
- INTERCOM
- WEBFLOW
- FIGMA
- APOLLO
- OUTLOOK
- FRESHDESK
- ZOHO_DESK
- ZOHO_INVOICE
- ZOHO
- BREX
required: false
name: toolkit
in: query
- schema:
type: string
minLength: 1
required: false
name: filterText
in: query
- schema:
anyOf:
- type: boolean
- type: string
required: false
name: isConnected
in: query
- schema:
type: string
enum:
- PRIVATE
- SHARED
required: false
name: visibility
in: query
responses:
'200':
description: Connected accounts for this account
content:
application/json:
schema:
$ref: '#/components/schemas/PublicIntegrationsListResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/public/v1/integrations/trigger-types:
get:
summary: List integration trigger types
operationId: listIntegrationTriggerTypes
description: 'Catalog of the third-party events that can start an automation. Use `slug` as data.triggerSlug and `toolkit` as data.triggerToolkit on a TRIGGER node with triggerType COMPOSIO_TRIGGER. `configFields` describes the triggerConfig each event accepts: `required` fields must be sent, fields with `userConfigurable: false` are managed by the platform and ignored, and a non-null `resourceType` means GET /public/v1/integrations/trigger-resources lists the valid values. The catalog is static, so an Account or User API key both work.'
security:
- accountApiKey: []
- userApiKey: []
tags:
- Integrations
parameters:
- schema:
type: string
enum:
- GMAIL
- GOOGLECALENDAR
- SLACK
- CALENDLY
- GOOGLEDOCS
- GOOGLESHEETS
- NOTION
- GOOGLEDRIVE
- GRANOLA_MCP
- GOOGLEMEET
- ZOOM
- GAMMA
- STRIPE
- POSTHOG
- LINKEDIN
- FACEBOOK
- GOOGLE_ANALYTICS
- GOOGLE_SEARCH_CONSOLE
- MAILCHIMP
- SEMRUSH
- GOOGLEADS
- INSTAGRAM
- ADYNTEL
- GOOGLETASKS
- LINEAR
- JIRA
- ASANA
- SHARE_POINT
- ONE_DRIVE
- EXCEL
- TIKTOK
- TWITTER
- YOUTUBE
- GOOGLE_MAPS
- METAADS
- SHOPIFY
- AIRTABLE
- MONDAY
- TRELLO
- GOOGLESLIDES
- BUILTWITH
- HUBSPOT
- PIPEDRIVE
- ATTIO
- ZENDESK
- SALESFORCE
- SALESFORCE_SERVICE_CLOUD
- INTERCOM
- WEBFLOW
- FIGMA
- APOLLO
- OUTLOOK
- FRESHDESK
- ZOHO_DESK
- ZOHO_INVOICE
- ZOHO
- BREX
required: false
name: toolkit
in: query
responses:
'200':
description: Supported integration trigger types
content:
application/json:
schema:
$ref: '#/components/schemas/PublicTriggerTypesListResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/public/v1/integrations/trigger-resources:
get:
summary: List values for a trigger config field
operationId: listIntegrationTriggerResources
description: 'Resolves the ids a triggerConfig needs (Drive folders, Sheets spreadsheets and tabs, Asana workspaces and projects, Salesforce sobjects and fields, Gmail labels, Outlook folders and calendars, OneDrive folders). Take `resourceType` from a trigger type''s configFields, and send each result''s `id` as the value of that config field. `parent` is required when browsing inside another resource: spreadsheetId for googlesheets_sheets, workspaceGid for asana_projects, sobjectName for salesforce_sobject_fields, and an optional folder path for onedrive_folders. The connected account must belong to your account and match the resource''s toolkit. Requires a USER API key.'
security:
- userApiKey: []
tags:
- Integrations
parameters:
- schema:
type: string
enum:
- gmail_labels
- googlesheets_spreadsheets
- googlesheets_sheets
- googledocs_documents
- googledrive_folders
- googledrive_shared_drives
- onedrive_folders
- asana_workspaces
- asana_projects
- salesforce_sobjects
- salesforce_sobject_fields
- outlook_folders
- outlook_calendars
required: true
name: resourceType
in: query
- schema:
type: integer
exclusiveMinimum: 0
required: true
name: connectedAccountId
in: query
- schema:
type: string
minLength: 1
required: false
name: parent
in: query
- schema:
type: string
minLength: 1
required: false
name: query
in: query
- schema:
type: integer
minimum: 1
maximum: 100
default: 50
required: false
name: limit
in: query
responses:
'200':
description: Values available for the requested resource type
content:
application/json:
schema:
$ref: '#/components/schemas/PublicTriggerResourcesListResponse'
'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: Connected account not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
PublicConnectedAccount:
type: object
properties:
id:
type: number
description: Connected account ID. Use as connectedAccountId in agent settings, flows, and workflows.
toolkit:
type: string
example: googlesheets
alias:
type:
- string
- 'null'
visibility:
type: string
enum:
- PRIVATE
- SHARED
isConnected:
type: boolean
isExpired:
type: boolean
connectedEmail:
type:
- string
- 'null'
connectedAt:
type:
- string
- 'null'
availableToolsCount:
type:
- number
- 'null'
enabledToolsCount:
type:
- number
- 'null'
createdAt:
type:
- string
- 'null'
updatedAt:
type:
- string
- 'null'
required:
- id
- toolkit
- visibility
- isConnected
- isExpired
- createdAt
- updatedAt
ErrorBody:
type: object
properties:
code:
type: string
enum:
- bad_request
- unauthorized
- forbidden
- not_found
- conflict
- internal_error
- cli_outdated
example: unauthorized
message:
type: string
example: Detailed error message
details:
type: object
description: 'Optional structured details. Validation errors include `{ issues: [...] }`.'
example:
issues:
- path:
- name
message: String must contain at least 1 character(s)
code: too_small
required:
- code
- message
PublicTriggerConfigField:
type: object
properties:
name:
type: string
description: Key to send inside triggerConfig on the TRIGGER node.
example: folder_id
type:
type: string
example: string
description:
type: string
required:
type: boolean
description: When true, the trigger cannot be created without this config field.
userConfigurable:
type: boolean
description: When false the value is managed by the platform and is ignored if you send it.
resourceType:
type:
- string
- 'null'
enum:
- gmail_labels
- googlesheets_spreadsheets
- googlesheets_sheets
- googledocs_documents
- googledrive_folders
- googledrive_shared_drives
- onedrive_folders
- asana_workspaces
- asana_projects
- salesforce_sobjects
- salesforce_sobject_fields
- outlook_folders
- outlook_calendars
description: Picker that lists valid values for this field. Call GET /public/v1/integrations/trigger-resources with this resourceType. Null when the value is free text.
example: googledrive_folders
required:
- name
- type
- description
- required
- userConfigurable
- resourceType
PublicTriggerType:
type: object
properties:
slug:
type: string
description: Send as data.triggerSlug on a COMPOSIO_TRIGGER node.
example: GOOGLEDRIVE_FILE_CREATED_TRIGGER
toolkit:
type: string
enum:
- GMAIL
- GOOGLECALENDAR
- SLACK
- CALENDLY
- GOOGLEDOCS
- GOOGLESHEETS
- NOTION
- GOOGLEDRIVE
- GRANOLA_MCP
- GOOGLEMEET
- ZOOM
- GAMMA
- STRIPE
- POSTHOG
- LINKEDIN
- FACEBOOK
- GOOGLE_ANALYTICS
- GOOGLE_SEARCH_CONSOLE
- MAILCHIMP
- SEMRUSH
- GOOGLEADS
- INSTAGRAM
- ADYNTEL
- GOOGLETASKS
- LINEAR
- JIRA
- ASANA
- SHARE_POINT
- ONE_DRIVE
- EXCEL
- TIKTOK
- TWITTER
- YOUTUBE
- GOOGLE_MAPS
- METAADS
- SHOPIFY
- AIRTABLE
- MONDAY
- TRELLO
- GOOGLESLIDES
- BUILTWITH
- HUBSPOT
- PIPEDRIVE
- ATTIO
- ZENDESK
- SALESFORCE
- SALESFORCE_SERVICE_CLOUD
- INTERCOM
- WEBFLOW
- FIGMA
- APOLLO
- OUTLOOK
- FRESHDESK
- ZOHO_DESK
- ZOHO_INVOICE
- ZOHO
- BREX
description: Send as data.triggerToolkit on a COMPOSIO_TRIGGER node.
example: GOOGLEDRIVE
name:
type: string
example: File Created
description:
type: string
deliveryType:
type: string
enum:
- POLL
- WEBHOOK
description: POLL triggers are checked on an interval; WEBHOOK triggers are pushed.
configFields:
type: array
items:
$ref: '#/components/schemas/PublicTriggerConfigField'
required:
- slug
- toolkit
- name
- description
- deliveryType
- configFields
PublicTriggerTypesListResponse:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/PublicTriggerType'
required:
- results
PublicIntegrationsListResponse:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/PublicConnectedAccount'
required:
- results
PublicTriggerResource:
type: object
properties:
id:
type: string
description: Value to send in triggerConfig for the matching field.
name:
type: string
required:
- id
- name
PublicTriggerResourcesListResponse:
type: object
properties:
resourceType:
type: string
enum:
- gmail_labels
- googlesheets_spreadsheets
- googlesheets_sheets
- googledocs_documents
- googledrive_folders
- googledrive_shared_drives
- onedrive_folders
- asana_workspaces
- asana_projects
- salesforce_sobjects
- salesforce_sobject_fields
- outlook_folders
- outlook_calendars
parent:
type:
- string
- 'null'
results:
type: array
items:
$ref: '#/components/schemas/PublicTriggerResource'
total:
type: number
required:
- resourceType
- parent
- results
- total
Error:
type: object
properties:
ok:
type: boolean
enum:
- false
example: false
error:
$ref: '#/components/schemas/ErrorBody'
required:
- ok
- error
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