# Public API

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.

Version: 1.0.0
License: Proprietary

## Servers

```
https://prod-api.getfrontline.ai
```

## Security

### accountApiKey

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.

Type: http
Scheme: bearer
Bearer Format: Account API Key

### userApiKey

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.

Type: http
Scheme: bearer
Bearer Format: User API Key

## Download OpenAPI description

 - [Public API](https://docs.getfrontline.ai/_bundle/reference/openapi.yaml)

## Agent Builder

 - [GET /public/v1/agents](https://docs.getfrontline.ai/reference/openapi/agent-builder/listagents.md): Returns a list of agents associated with the account.
 - [POST /public/v1/agents](https://docs.getfrontline.ai/reference/openapi/agent-builder/createagent.md): Creates an assistant with the internal defaults for theme, channels, settings, flow, and billing checks. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}](https://docs.getfrontline.ai/reference/openapi/agent-builder/getagent.md): Returns a safe agent detail without secret key or HMAC fields.
 - [PUT /public/v1/agents/{agentId}](https://docs.getfrontline.ai/reference/openapi/agent-builder/updateagent.md): Updates basic agent metadata. Requires a USER API key.
 - [DELETE /public/v1/agents/{agentId}](https://docs.getfrontline.ai/reference/openapi/agent-builder/deleteagent.md): Soft deletes an agent using the assistant manager. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/agent-setting](https://docs.getfrontline.ai/reference/openapi/agent-builder/getagentsetting.md): Returns safe agent model, instruction, tool, playbook, and connected-account settings.
 - [PUT /public/v1/agents/{agentId}/agent-setting](https://docs.getfrontline.ai/reference/openapi/agent-builder/updateagentsetting.md): Updates instructions, model, tools, playbooks, connected accounts, and system tool settings. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/theme](https://docs.getfrontline.ai/reference/openapi/agent-builder/getagenttheme.md): Returns textual and color theme settings. Image uploads are not exposed in the public builder.
 - [PUT /public/v1/agents/{agentId}/theme](https://docs.getfrontline.ai/reference/openapi/agent-builder/updateagenttheme.md): Updates textual and color theme settings. Requires a USER API key.
 - [PUT /public/v1/agents/{agentId}/deployment-status](https://docs.getfrontline.ai/reference/openapi/agent-builder/updateagentdeploymentstatus.md): Publishes or pauses an agent by changing isOffline. Requires a USER API key and runs billing checks.
 - [GET /public/v1/agents/{agentId}/settings](https://docs.getfrontline.ai/reference/openapi/agent-builder/getagentchannelsettings.md): Returns livechat, WhatsApp, Instagram, and Messenger channel settings.
 - [GET /public/v1/agents/{agentId}/settings/livechat](https://docs.getfrontline.ai/reference/openapi/agent-builder/getagentlivechatsettings.md): Returns livechat channel settings for an agent.
 - [PUT /public/v1/agents/{agentId}/settings/livechat](https://docs.getfrontline.ai/reference/openapi/agent-builder/updateagentlivechatsettings.md): Updates livechat channel settings. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/settings/whatsapp](https://docs.getfrontline.ai/reference/openapi/agent-builder/getagentwhatsappsettings.md): Returns whatsapp channel settings for an agent.
 - [PUT /public/v1/agents/{agentId}/settings/whatsapp](https://docs.getfrontline.ai/reference/openapi/agent-builder/updateagentwhatsappsettings.md): Updates whatsapp channel settings. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/settings/instagram](https://docs.getfrontline.ai/reference/openapi/agent-builder/getagentinstagramsettings.md): Returns instagram channel settings for an agent.
 - [PUT /public/v1/agents/{agentId}/settings/instagram](https://docs.getfrontline.ai/reference/openapi/agent-builder/updateagentinstagramsettings.md): Updates instagram channel settings. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/settings/messenger](https://docs.getfrontline.ai/reference/openapi/agent-builder/getagentmessengersettings.md): Returns messenger channel settings for an agent.
 - [PUT /public/v1/agents/{agentId}/settings/messenger](https://docs.getfrontline.ai/reference/openapi/agent-builder/updateagentmessengersettings.md): Updates messenger channel settings. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/analytics](https://docs.getfrontline.ai/reference/openapi/agent-builder/getagentanalytics.md): Returns credit usage, conversation counts, and conversations breakdown by channel for a specific agent.
## Flows

 - [GET /public/v1/agents/{agentId}/flows](https://docs.getfrontline.ai/reference/openapi/flows/listagentflows.md): Returns a list of flows associated with a specific agent. Nodes and logic are excluded.
 - [POST /public/v1/agents/{agentId}/flows](https://docs.getfrontline.ai/reference/openapi/flows/createagentflow.md): Creates a flow and an empty graph snapshot for a specific agent.
 - [GET /public/v1/agents/{agentId}/flows/{flowId}](https://docs.getfrontline.ai/reference/openapi/flows/getagentflow.md): Returns flow metadata. Pass includeNodes=true to include graph nodes.
 - [PUT /public/v1/agents/{agentId}/flows/{flowId}](https://docs.getfrontline.ai/reference/openapi/flows/updateagentflow.md): Updates flow metadata or status.
 - [DELETE /public/v1/agents/{agentId}/flows/{flowId}](https://docs.getfrontline.ai/reference/openapi/flows/deleteagentflow.md): Soft deletes a flow.
 - [GET /public/v1/agents/{agentId}/flows/{flowId}/graph](https://docs.getfrontline.ai/reference/openapi/flows/getagentflowgraph.md): Returns the flow snapshot with nodes and edges.
 - [POST /public/v1/agents/{agentId}/flows/{flowId}/nodes](https://docs.getfrontline.ai/reference/openapi/flows/createagentflownode.md): Creates a node in a flow graph. The server assigns `nodeId` and `alias`; use the 201 response when adding edges or updates.
 - [PUT /public/v1/agents/{agentId}/flows/{flowId}/nodes/{nodeId}](https://docs.getfrontline.ai/reference/openapi/flows/updateagentflownode.md): Updates a flow node and returns the updated graph.
 - [DELETE /public/v1/agents/{agentId}/flows/{flowId}/nodes/{nodeId}](https://docs.getfrontline.ai/reference/openapi/flows/deleteagentflownode.md): Deletes a node and removes incoming and outgoing edges.
 - [POST /public/v1/agents/{agentId}/flows/{flowId}/edges](https://docs.getfrontline.ai/reference/openapi/flows/createagentflowedge.md): Adds or replaces an edge by handle in the flow graph.
 - [DELETE /public/v1/agents/{agentId}/flows/{flowId}/edges](https://docs.getfrontline.ai/reference/openapi/flows/deleteagentflowedge.md): Removes an edge from the flow graph.
## Flow Variables

 - [GET /public/v1/agents/{agentId}/variables](https://docs.getfrontline.ai/reference/openapi/flow-variables/listagentvariables.md): Lists variables for an agent. Requires a USER API key.
 - [POST /public/v1/agents/{agentId}/variables](https://docs.getfrontline.ai/reference/openapi/flow-variables/createagentvariable.md): Creates a variable for an agent. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/variables/all](https://docs.getfrontline.ai/reference/openapi/flow-variables/listallagentvariables.md): Lists all agent variables including defaults. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/variables/check-name](https://docs.getfrontline.ai/reference/openapi/flow-variables/checkagentvariablename.md): Checks whether a variable name exists for an agent. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/variables/{variableId}](https://docs.getfrontline.ai/reference/openapi/flow-variables/getagentvariable.md): Manages a single agent variable. Requires a USER API key.
 - [PUT /public/v1/agents/{agentId}/variables/{variableId}](https://docs.getfrontline.ai/reference/openapi/flow-variables/updateagentvariable.md): Manages a single agent variable. Requires a USER API key.
 - [DELETE /public/v1/agents/{agentId}/variables/{variableId}](https://docs.getfrontline.ai/reference/openapi/flow-variables/deleteagentvariable.md): Manages a single agent variable. Requires a USER API key.
## Intents

 - [GET /public/v1/agents/{agentId}/intents](https://docs.getfrontline.ai/reference/openapi/intents/listintents.md): Lists agent intents. Requires a USER API key.
 - [POST /public/v1/agents/{agentId}/intents](https://docs.getfrontline.ai/reference/openapi/intents/createintent.md): Creates an agent intent. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/intents/all](https://docs.getfrontline.ai/reference/openapi/intents/listallintents.md): Lists all agent intents. Requires a USER API key.
 - [POST /public/v1/agents/{agentId}/intents/generate-phrases](https://docs.getfrontline.ai/reference/openapi/intents/generateintentphrases.md): Generates suggested phrases for an intent. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/intents/{intentId}](https://docs.getfrontline.ai/reference/openapi/intents/getintent.md): Manages a single intent. Requires a USER API key.
 - [PUT /public/v1/agents/{agentId}/intents/{intentId}](https://docs.getfrontline.ai/reference/openapi/intents/updateintent.md): Manages a single intent. Requires a USER API key.
 - [DELETE /public/v1/agents/{agentId}/intents/{intentId}](https://docs.getfrontline.ai/reference/openapi/intents/deleteintent.md): Manages a single intent. Requires a USER API key.
## Agents

 - [POST /public/v1/agents/{agentId}/messages](https://docs.getfrontline.ai/reference/openapi/agents/runagent.md): Sends a message to an agent and returns its reply — the same way the in-app Overview/Playground tests an agent and its flow (runs over the OVERVIEW channel, against the active OR draft flow). Omit `me
 - [POST /public/v1/agents/{agentId}/conversations/{conversationId}/close](https://docs.getfrontline.ai/reference/openapi/agents/closeagentconversation.md): Closes a conversation (e.g. one started via the run endpoint). Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/conversations](https://docs.getfrontline.ai/reference/openapi/agents/listagentconversations.md): Lists conversations for an agent, including the latest rolling summary and linked CRM contact. Supports full-text search (`search`), channel and feedback filters, and date ranges. Requires a USER API
 - [GET /public/v1/agents/{agentId}/conversations/{conversationId}](https://docs.getfrontline.ai/reference/openapi/agents/getagentconversation.md): Returns a conversation with its message transcript, latest summary, and linked CRM contact. By default the transcript is clean (user-facing messages only); pass `include_events=true` for a debug view
 - [GET /public/v1/agents/{agentId}/conversations/{conversationId}/messages/{messageId}/trace](https://docs.getfrontline.ai/reference/openapi/agents/getagentmessagetrace.md): Returns the full LLM/tool execution trace (audit log) for a single message. Look up audit_log_id from the conversation transcript. Requires a USER API key.
## Agent Playbooks

 - [GET /public/v1/playbooks](https://docs.getfrontline.ai/reference/openapi/agent-playbooks/listagentplaybooks.md): Lists reusable agent playbooks (instruction sets) visible to the caller. Requires a USER API key.
 - [POST /public/v1/playbooks](https://docs.getfrontline.ai/reference/openapi/agent-playbooks/createagentplaybook.md): Creates a reusable agent playbook. Requires a USER API key.
 - [GET /public/v1/playbooks/{playbookId}](https://docs.getfrontline.ai/reference/openapi/agent-playbooks/getagentplaybook.md): Returns an agent playbook by ID. Requires a USER API key.
 - [PUT /public/v1/playbooks/{playbookId}](https://docs.getfrontline.ai/reference/openapi/agent-playbooks/updateagentplaybook.md): Updates an agent playbook. Only the creator (or an OWNER/ADMIN) can update it. Requires a USER API key.
 - [DELETE /public/v1/playbooks/{playbookId}](https://docs.getfrontline.ai/reference/openapi/agent-playbooks/deleteagentplaybook.md): Deletes an agent playbook. Only the creator can delete it. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/playbooks](https://docs.getfrontline.ai/reference/openapi/agent-playbooks/listassignedagentplaybooks.md): Lists playbooks assigned to a specific agent. Requires a USER API key.
 - [PUT /public/v1/agents/{agentId}/playbooks](https://docs.getfrontline.ai/reference/openapi/agent-playbooks/assignagentplaybooks.md): Sets the full list of playbooks assigned to an agent (replaces existing assignments). Requires a USER API key.
## Workflows

 - [GET /public/v1/workflows](https://docs.getfrontline.ai/reference/openapi/workflows/listworkflows.md): Returns a list of workflows associated with the account. Nodes and logic are excluded.
 - [POST /public/v1/workflows](https://docs.getfrontline.ai/reference/openapi/workflows/createworkflow.md): Creates an automation workflow and an empty graph snapshot.
 - [GET /public/v1/workflows/{workflowId}](https://docs.getfrontline.ai/reference/openapi/workflows/getworkflow.md): Returns a workflow automation. Pass includeNodes=true to include graph nodes.
 - [PUT /public/v1/workflows/{workflowId}](https://docs.getfrontline.ai/reference/openapi/workflows/updateworkflow.md): Updates workflow metadata or status.
 - [DELETE /public/v1/workflows/{workflowId}](https://docs.getfrontline.ai/reference/openapi/workflows/deleteworkflow.md): Soft deletes a workflow automation and cleans up trigger side effects.
 - [GET /public/v1/workflows/{workflowId}/graph](https://docs.getfrontline.ai/reference/openapi/workflows/getworkflowgraph.md): Returns the workflow snapshot with nodes and edges.
 - [POST /public/v1/workflows/{workflowId}/run](https://docs.getfrontline.ai/reference/openapi/workflows/runworkflow.md): Manually triggers a scheduled (SCHEDULED_TRIGGER) workflow automation by enqueueing an execution. Only available for ACTIVE scheduled workflows; event-triggered workflows run from their trigger.
 - [POST /public/v1/workflows/{workflowId}/nodes](https://docs.getfrontline.ai/reference/openapi/workflows/createworkflownode.md): Creates a node in an automation workflow graph. The server assigns `nodeId` and `alias`; use the 201 response when adding edges or updates.
 - [PUT /public/v1/workflows/{workflowId}/nodes/{nodeId}](https://docs.getfrontline.ai/reference/openapi/workflows/updateworkflownode.md): Updates a node and returns the updated workflow graph.
 - [DELETE /public/v1/workflows/{workflowId}/nodes/{nodeId}](https://docs.getfrontline.ai/reference/openapi/workflows/deleteworkflownode.md): Deletes a node and removes all incoming and outgoing edges.
 - [POST /public/v1/workflows/{workflowId}/edges](https://docs.getfrontline.ai/reference/openapi/workflows/createworkflowedge.md): Adds or replaces the outgoing edge for a node.
 - [DELETE /public/v1/workflows/{workflowId}/edges](https://docs.getfrontline.ai/reference/openapi/workflows/deleteworkflowedge.md): Removes an edge from the workflow graph.
 - [GET /public/v1/workflows/{workflowId}/analytics](https://docs.getfrontline.ai/reference/openapi/workflows/getworkflowanalytics.md): Returns analytics for a specific workflow, including runs by date and summary.
 - [GET /public/v1/workflows/{workflowId}/logs](https://docs.getfrontline.ai/reference/openapi/workflows/listworkflowlogs.md): Lists the run history (executions) of a workflow. Requires a USER API key.
 - [GET /public/v1/workflows/{workflowId}/logs/{logId}](https://docs.getfrontline.ai/reference/openapi/workflows/getworkflowlog.md): Returns one run with its per-node results. Requires a USER API key.
 - [GET /public/v1/workflows/{workflowId}/logs/{logId}/nodes/{nodeResultId}/trace](https://docs.getfrontline.ai/reference/openapi/workflows/getworkflownodetrace.md): Returns the full execution trace (audit log) for a single node within a run. Look up the node-result id and audit_log_id from the run log. Requires a USER API key.
## Workflow Variables

 - [GET /public/v1/workflows/{workflowId}/variables](https://docs.getfrontline.ai/reference/openapi/workflow-variables/listworkflowvariables.md): Lists variables for an automation workflow. Requires a USER API key.
 - [POST /public/v1/workflows/{workflowId}/variables](https://docs.getfrontline.ai/reference/openapi/workflow-variables/createworkflowvariable.md): Creates a variable for an automation workflow. Requires a USER API key.
 - [GET /public/v1/workflows/{workflowId}/variables/all](https://docs.getfrontline.ai/reference/openapi/workflow-variables/listallworkflowvariables.md): Lists all workflow variables including defaults. Requires a USER API key.
 - [GET /public/v1/workflows/{workflowId}/variables/check-name](https://docs.getfrontline.ai/reference/openapi/workflow-variables/checkworkflowvariablename.md): Checks whether a variable name exists for a workflow. Requires a USER API key.
 - [GET /public/v1/workflows/{workflowId}/variables/{variableId}](https://docs.getfrontline.ai/reference/openapi/workflow-variables/getworkflowvariable.md): Manages a single workflow variable. Requires a USER API key.
 - [PUT /public/v1/workflows/{workflowId}/variables/{variableId}](https://docs.getfrontline.ai/reference/openapi/workflow-variables/updateworkflowvariable.md): Manages a single workflow variable. Requires a USER API key.
 - [DELETE /public/v1/workflows/{workflowId}/variables/{variableId}](https://docs.getfrontline.ai/reference/openapi/workflow-variables/deleteworkflowvariable.md): Manages a single workflow variable. Requires a USER API key.
## Campaigns

 - [GET /public/v1/campaigns](https://docs.getfrontline.ai/reference/openapi/campaigns/listcampaigns.md)
 - [POST /public/v1/campaigns](https://docs.getfrontline.ai/reference/openapi/campaigns/createcampaign.md)
 - [GET /public/v1/campaigns/overview](https://docs.getfrontline.ai/reference/openapi/campaigns/getcampaignoverview.md)
 - [POST /public/v1/campaigns/preflight](https://docs.getfrontline.ai/reference/openapi/campaigns/preflighttransientcampaign.md)
 - [POST /public/v1/campaigns/preview](https://docs.getfrontline.ai/reference/openapi/campaigns/previewcampaigncontent.md)
 - [GET /public/v1/campaigns/{campaignId}](https://docs.getfrontline.ai/reference/openapi/campaigns/getcampaign.md)
 - [PATCH /public/v1/campaigns/{campaignId}](https://docs.getfrontline.ai/reference/openapi/campaigns/updatecampaign.md)
 - [POST /public/v1/campaigns/{campaignId}/preflight](https://docs.getfrontline.ai/reference/openapi/campaigns/preflightcampaign.md)
 - [POST /public/v1/campaigns/{campaignId}/test](https://docs.getfrontline.ai/reference/openapi/campaigns/testcampaign.md)
 - [POST /public/v1/campaigns/{campaignId}/submit](https://docs.getfrontline.ai/reference/openapi/campaigns/submitcampaign.md)
 - [GET /public/v1/campaigns/{campaignId}/preparations/{preparationRunId}](https://docs.getfrontline.ai/reference/openapi/campaigns/getcampaignpreparation.md)
 - [POST /public/v1/campaigns/{campaignId}/pause](https://docs.getfrontline.ai/reference/openapi/campaigns/pausecampaign.md)
 - [POST /public/v1/campaigns/{campaignId}/resume](https://docs.getfrontline.ai/reference/openapi/campaigns/resumecampaign.md)
 - [POST /public/v1/campaigns/{campaignId}/cancel](https://docs.getfrontline.ai/reference/openapi/campaigns/cancelcampaign.md)
 - [GET /public/v1/campaigns/{campaignId}/stats](https://docs.getfrontline.ai/reference/openapi/campaigns/getcampaignstats.md)
 - [GET /public/v1/campaigns/{campaignId}/recipients](https://docs.getfrontline.ai/reference/openapi/campaigns/listcampaignrecipients.md)
 - [GET /public/v1/campaigns/{campaignId}/events](https://docs.getfrontline.ai/reference/openapi/campaigns/listcampaignevents.md)
 - [GET /public/v1/campaigns/{campaignId}/links](https://docs.getfrontline.ai/reference/openapi/campaigns/listcampaignlinks.md)
 - [GET /public/v1/campaigns/{campaignId}/export](https://docs.getfrontline.ai/reference/openapi/campaigns/exportcampaignrecipients.md)
 - [GET /public/v1/campaigns/email-domains](https://docs.getfrontline.ai/reference/openapi/campaigns/listcampaignemaildomains.md)
 - [GET /public/v1/campaigns/whatsapp-senders](https://docs.getfrontline.ai/reference/openapi/campaigns/listcampaignwhatsappsenders.md)
 - [GET /public/v1/campaigns/whatsapp-templates](https://docs.getfrontline.ai/reference/openapi/campaigns/listcampaignwhatsapptemplates.md)
## Audiences

 - [GET /public/v1/audience-drafts](https://docs.getfrontline.ai/reference/openapi/audiences/listaudiencedrafts.md)
 - [POST /public/v1/audience-drafts](https://docs.getfrontline.ai/reference/openapi/audiences/createaudiencedraft.md)
 - [GET /public/v1/audience-drafts/{audienceId}](https://docs.getfrontline.ai/reference/openapi/audiences/getaudiencedraft.md)
 - [PATCH /public/v1/audience-drafts/{audienceId}](https://docs.getfrontline.ai/reference/openapi/audiences/updateaudiencedraft.md)
 - [DELETE /public/v1/audience-drafts/{audienceId}](https://docs.getfrontline.ai/reference/openapi/audiences/discardaudiencedraft.md)
 - [POST /public/v1/audience-drafts/{audienceId}/import-batches](https://docs.getfrontline.ai/reference/openapi/audiences/createaudiencedraftimportbatch.md)
 - [GET /public/v1/audiences/{audienceId}/imports/{importId}/errors](https://docs.getfrontline.ai/reference/openapi/audiences/downloadaudienceimporterrors.md)
 - [PUT /public/v1/audience-drafts/{audienceId}/import-batches/{batchId}/imports/{importId}/file](https://docs.getfrontline.ai/reference/openapi/audiences/uploadaudiencedraftimportfile.md)
 - [POST /public/v1/audience-drafts/{audienceId}/import-batches/{batchId}/confirm](https://docs.getfrontline.ai/reference/openapi/audiences/confirmaudiencedraftimportuploadbatch.md)
 - [GET /public/v1/audience-drafts/{audienceId}/import-batches/{batchId}](https://docs.getfrontline.ai/reference/openapi/audiences/getaudiencedraftimportbatch.md)
 - [DELETE /public/v1/audience-drafts/{audienceId}/import-batches/{batchId}](https://docs.getfrontline.ai/reference/openapi/audiences/deleteaudiencedraftimportbatch.md)
 - [POST /public/v1/audience-drafts/{audienceId}/import-batches/{batchId}/retry](https://docs.getfrontline.ai/reference/openapi/audiences/retryaudiencedraftimportbatch.md)
 - [POST /public/v1/audience-drafts/{audienceId}/publish](https://docs.getfrontline.ai/reference/openapi/audiences/publishaudiencedraft.md)
 - [GET /public/v1/audiences](https://docs.getfrontline.ai/reference/openapi/audiences/listaudiences.md)
 - [POST /public/v1/audiences](https://docs.getfrontline.ai/reference/openapi/audiences/createaudience.md)
 - [GET /public/v1/audiences/{audienceId}](https://docs.getfrontline.ai/reference/openapi/audiences/getaudience.md)
 - [PATCH /public/v1/audiences/{audienceId}](https://docs.getfrontline.ai/reference/openapi/audiences/updateaudience.md)
 - [DELETE /public/v1/audiences/{audienceId}](https://docs.getfrontline.ai/reference/openapi/audiences/archiveaudience.md)
 - [GET /public/v1/audiences/{audienceId}/preview](https://docs.getfrontline.ai/reference/openapi/audiences/previewaudience.md)
 - [GET /public/v1/audiences/{audienceId}/history](https://docs.getfrontline.ai/reference/openapi/audiences/listaudiencehistory.md)
 - [POST /public/v1/audiences/{audienceId}/import](https://docs.getfrontline.ai/reference/openapi/audiences/importaudience.md)
 - [GET /public/v1/audiences/{audienceId}/imports/{importId}](https://docs.getfrontline.ai/reference/openapi/audiences/getaudienceimport.md)
 - [POST /public/v1/audiences/{audienceId}/exports](https://docs.getfrontline.ai/reference/openapi/audiences/createaudienceexport.md): Streams the audience's resolved members as CSV. Returns 409 with the resolution status while the audience is still resolving; poll `GET /audiences/{audienceId}/preview` until `resolution.status` is `C
## Sequences

 - [GET /public/v1/sequences](https://docs.getfrontline.ai/reference/openapi/sequences/listsequences.md): Returns a paginated list of sequences for the authenticated account.
 - [POST /public/v1/sequences](https://docs.getfrontline.ai/reference/openapi/sequences/createsequence.md): Creates a DRAFT sequence with a server-owned Start node. Idempotency-Key may be supplied to safely replay the request.
 - [GET /public/v1/sequences/{sequenceId}](https://docs.getfrontline.ai/reference/openapi/sequences/getsequence.md)
 - [PUT /public/v1/sequences/{sequenceId}](https://docs.getfrontline.ai/reference/openapi/sequences/updatesequence.md): Updates sequence metadata/settings. Publishing is a separate operation; status may only transition to DRAFT here.
 - [DELETE /public/v1/sequences/{sequenceId}](https://docs.getfrontline.ai/reference/openapi/sequences/deletesequence.md): Soft deletes the sequence.
 - [POST /public/v1/sequences/{sequenceId}/publish](https://docs.getfrontline.ai/reference/openapi/sequences/publishsequence.md): Validates the current graph and moves the sequence to LIVE.
 - [GET /public/v1/sequences/{sequenceId}/graph](https://docs.getfrontline.ai/reference/openapi/sequences/getsequencegraph.md): Returns the current Sequence workflow snapshot.
 - [GET /public/v1/sequences/{sequenceId}/variable-catalog](https://docs.getfrontline.ai/reference/openapi/sequences/getsequencevariablecatalog.md): Lists every path a SEQUENCE_CONDITION node's conditionGroup may reference for the given consumerNodeId (the condition node itself): `[Person].[<Field>]` (always available, the enrolled Person's record
 - [POST /public/v1/sequences/{sequenceId}/nodes](https://docs.getfrontline.ai/reference/openapi/sequences/createsequencenode.md): Creates a node from the current Sequence allowlist. nodeId and alias are assigned by the server.
 - [PUT /public/v1/sequences/{sequenceId}/nodes/{nodeId}](https://docs.getfrontline.ai/reference/openapi/sequences/updatesequencenode.md): Updates node data or position. A node type cannot be changed.
 - [PATCH /public/v1/sequences/{sequenceId}/nodes/{nodeId}](https://docs.getfrontline.ai/reference/openapi/sequences/patchsequencenode.md): Updates node data or position. A node type cannot be changed.
 - [DELETE /public/v1/sequences/{sequenceId}/nodes/{nodeId}](https://docs.getfrontline.ai/reference/openapi/sequences/deletesequencenode.md)
 - [POST /public/v1/sequences/{sequenceId}/edges](https://docs.getfrontline.ai/reference/openapi/sequences/createsequenceedge.md): Connects two existing Sequence nodes after validating handles and DAG constraints.
 - [DELETE /public/v1/sequences/{sequenceId}/edges](https://docs.getfrontline.ai/reference/openapi/sequences/deletesequenceedge.md)
 - [GET /public/v1/sequences/{sequenceId}/recipients/{instanceId}/logs](https://docs.getfrontline.ai/reference/openapi/sequences/getsequencerecipientlogs.md): Returns the executed path, attempts and state with provider payloads, secrets and internal diagnostics removed.
 - [POST /public/v1/sequences/{sequenceId}/recipients/{instanceId}/retry](https://docs.getfrontline.ai/reference/openapi/sequences/retrysequencerecipientstep.md): Requires Full Access or Operator (CAN_ENROLL) sharing level on the sequence. Requires Idempotency-Key and explicit confirmation when the retry may resend a message.
 - [POST /public/v1/sequences/{sequenceId}/enrollments](https://docs.getfrontline.ai/reference/openapi/sequences/enrollpersoninsequence.md): Enrolls a People record in a live sequence. Requires a USER API key. Returns the created instance. `enrollerUserId` optionally enrolls on behalf of a different user of the same account, who becomes `e
 - [POST /public/v1/sequences/{sequenceId}/enrollments/bulk](https://docs.getfrontline.ai/reference/openapi/sequences/bulkenrollpeopleinsequence.md): Enrolls up to 500 people. Partial success is allowed. Requires a USER API key. `enrollerUserId` applies to every Person in the batch — see the single-enroll endpoint for the on-behalf-of semantics and
 - [POST /public/v1/sequences/{sequenceId}/enrollments/eligibility](https://docs.getfrontline.ai/reference/openapi/sequences/getbulkenrollmenteligibility.md): Preview-only check of up to 500 People against this Sequence's enrollment policy (already-enrolled, active-sequence conflicts, concurrent-enrollment limit), backed by the People enrollment read projec
 - [GET /public/v1/sequences/instances/person-status](https://docs.getfrontline.ai/reference/openapi/sequences/getsequencepersonstatus.md): Permission-safe summary of the Sequences a Person is currently enrolled in, including active count and the account's concurrent-enrollment limit. Requires a USER API key. Instances in a Sequence the c
 - [GET /public/v1/sequences/{sequenceId}/recipients](https://docs.getfrontline.ai/reference/openapi/sequences/listsequencerecipients.md): Lists enrolled people for a sequence. Requires a USER API key.
 - [GET /public/v1/sequences/{sequenceId}/recipients/insights](https://docs.getfrontline.ai/reference/openapi/sequences/getsequencerecipientinsights.md): Aggregate counts for recipients tab footer. Requires a USER API key. `active` excludes paused instances (see `paused`). `completed` covers every successful closure — natural completion plus early exit
 - [GET /public/v1/sequences/{sequenceId}/analytics/summary](https://docs.getfrontline.ai/reference/openapi/sequences/getsequenceanalyticssummary.md): Returns aggregate lifecycle and engagement metrics for a sequence.
 - [GET /public/v1/sequences/{sequenceId}/analytics/funnel/steps](https://docs.getfrontline.ai/reference/openapi/sequences/getsequenceanalyticsfunnel.md): Returns metrics for every reachable step in stable topological order, including all branches.
 - [GET /public/v1/sequences/{sequenceId}/analytics/timeseries](https://docs.getfrontline.ai/reference/openapi/sequences/getsequenceanalyticstimeseries.md): Returns sequence engagement metrics grouped by day or week.
 - [GET /public/v1/sequences/{sequenceId}/recipients/{instanceId}](https://docs.getfrontline.ai/reference/openapi/sequences/getsequencerecipientdetail.md): Returns instance state and event timeline. Requires a USER API key.
 - [POST /public/v1/sequences/{sequenceId}/recipients/{instanceId}/pause](https://docs.getfrontline.ai/reference/openapi/sequences/pausesequenceinstance.md): Pauses execution for one enrolled person. Requires a USER API key.
 - [POST /public/v1/sequences/{sequenceId}/recipients/{instanceId}/resume](https://docs.getfrontline.ai/reference/openapi/sequences/resumesequenceinstance.md): Resumes a paused instance. Requires a USER API key.
 - [POST /public/v1/sequences/{sequenceId}/recipients/{instanceId}/exit](https://docs.getfrontline.ai/reference/openapi/sequences/exitsequenceinstance.md): Marks a sequence instance as manually completed (status `COMPLETED`, exit reason `MANUAL`). This is a successful closure, same bucket as a reply or a booked meeting — it is not the same as `remove`, w
 - [POST /public/v1/sequences/{sequenceId}/recipients/{instanceId}/remove](https://docs.getfrontline.ai/reference/openapi/sequences/removesequenceinstance.md): Stops the sequence for one enrolled person and leaves the instance in status `REMOVED`. Requires a USER API key. `note` is an optional free-text comment persisted alongside the removal and surfaced in
## Email Templates

 - [GET /public/v1/email-templates](https://docs.getfrontline.ai/reference/openapi/email-templates/listemailtemplates.md): Returns a paginated list of account-scoped email templates. Archived templates are excluded unless requested.
 - [POST /public/v1/email-templates](https://docs.getfrontline.ai/reference/openapi/email-templates/createemailtemplate.md): Creates an email template from a TipTap document. Requires a USER API key. Only Person and User variables are allowed.
 - [GET /public/v1/email-templates/variables](https://docs.getfrontline.ai/reference/openapi/email-templates/listemailtemplatevariables.md): Returns the Person and User variables an email template may reference.
 - [GET /public/v1/email-templates/{templateId}](https://docs.getfrontline.ai/reference/openapi/email-templates/getemailtemplate.md)
 - [PUT /public/v1/email-templates/{templateId}](https://docs.getfrontline.ai/reference/openapi/email-templates/updateemailtemplate.md): Replaces the template content. `expectedVersion` is required; a mismatch returns 409 with the current version and document.
 - [POST /public/v1/email-templates/{templateId}/patch](https://docs.getfrontline.ai/reference/openapi/email-templates/patchemailtemplate.md): Applies a focused list of operations. `expectedVersion` is required; a mismatch returns 409 with the current version and document.
 - [POST /public/v1/email-templates/{templateId}/patch-preview](https://docs.getfrontline.ai/reference/openapi/email-templates/previewemailtemplatepatch.md): Returns the block-level before/after result of a patch without persisting it.
 - [POST /public/v1/email-templates/{templateId}/duplicate](https://docs.getfrontline.ai/reference/openapi/email-templates/duplicateemailtemplate.md)
 - [POST /public/v1/email-templates/{templateId}/status](https://docs.getfrontline.ai/reference/openapi/email-templates/setemailtemplatestatus.md): Moves a template between ACTIVE and ARCHIVED. Archiving a template referenced by a Send Email node makes that node fail at send time until it is reassigned.
 - [POST /public/v1/email-templates/{templateId}/preview](https://docs.getfrontline.ai/reference/openapi/email-templates/previewemailtemplate.md): Renders the template with the same renderer the runtime uses. Supplying a personRowId interpolates that Person's values.
 - [GET /public/v1/email-templates/{templateId}/revisions](https://docs.getfrontline.ai/reference/openapi/email-templates/listemailtemplaterevisions.md)
## Objects

 - [GET /public/v1/objects](https://docs.getfrontline.ai/reference/openapi/objects/listobjects.md): Returns every object (standard + custom) for the authenticated account.
 - [POST /public/v1/objects](https://docs.getfrontline.ai/reference/openapi/objects/createobject.md): Creates a custom object. At least one column is required. Requires a USER API key.
 - [GET /public/v1/objects/{name}](https://docs.getfrontline.ai/reference/openapi/objects/getobject.md): Returns one object including fields, views, and record types.
 - [PATCH /public/v1/objects/{name}](https://docs.getfrontline.ai/reference/openapi/objects/updateobject.md): Updates an object's display name, emoji, color, or description. Requires a USER API key with ADMIN or OWNER role.
 - [DELETE /public/v1/objects/{name}](https://docs.getfrontline.ai/reference/openapi/objects/deleteobject.md): Deletes a custom object. System objects cannot be deleted. Requires a USER API key with ADMIN or OWNER role.
 - [GET /public/v1/objects/{name}/schema](https://docs.getfrontline.ai/reference/openapi/objects/getobjectschema.md): Returns only the schema (fields, types, formats) for an object.
## Object fields

 - [GET /public/v1/objects/{name}/fields](https://docs.getfrontline.ai/reference/openapi/object-fields/listobjectfields.md): Returns the columns defined on an object.
 - [POST /public/v1/objects/{name}/fields](https://docs.getfrontline.ai/reference/openapi/object-fields/createobjectfield.md): Creates a column on an object. Requires a USER API key with ADMIN or OWNER role.
 - [PATCH /public/v1/objects/{name}/fields/{fieldId}](https://docs.getfrontline.ai/reference/openapi/object-fields/updateobjectfield.md): Updates a field's metadata, defaults, or ordering. Requires a USER API key with ADMIN or OWNER role.
 - [DELETE /public/v1/objects/{name}/fields/{fieldId}](https://docs.getfrontline.ai/reference/openapi/object-fields/deleteobjectfield.md): Deletes a column from an object. Requires a USER API key with ADMIN or OWNER role.
 - [GET /public/v1/objects/{name}/fields/{fieldId}/formula-dependencies](https://docs.getfrontline.ai/reference/openapi/object-fields/getobjectfieldformuladependencies.md): Returns the formula dependencies for a specific field. Requires a USER API key with ADMIN or OWNER role.
 - [POST /public/v1/objects/{name}/fields/preview-formula](https://docs.getfrontline.ai/reference/openapi/object-fields/previewobjectformula.md): Previews formula evaluation on existing data. Requires a USER API key with ADMIN or OWNER role.
## Object options

 - [GET /public/v1/objects/{name}/fields/{fieldId}/options](https://docs.getfrontline.ai/reference/openapi/object-options/listobjectfieldoptions.md): Returns the options (tags) defined on a select/tags field.
 - [POST /public/v1/objects/{name}/fields/{fieldId}/options](https://docs.getfrontline.ai/reference/openapi/object-options/createobjectfieldoption.md): Adds an option (tag) to a select/tags field. Requires a USER API key with ADMIN or OWNER role.
 - [PATCH /public/v1/objects/{name}/options/{tagId}](https://docs.getfrontline.ai/reference/openapi/object-options/updateobjectfieldoption.md): Updates an option's name, color, or order. Requires a USER API key with ADMIN or OWNER role.
 - [DELETE /public/v1/objects/{name}/options/{tagId}](https://docs.getfrontline.ai/reference/openapi/object-options/deleteobjectfieldoption.md): Deletes an option from a select/tags field. Requires a USER API key with ADMIN or OWNER role.
## Object record types

 - [GET /public/v1/objects/{name}/record-types](https://docs.getfrontline.ai/reference/openapi/object-record-types/listobjectrecordtypes.md): Returns the record types defined on an object.
 - [POST /public/v1/objects/{name}/record-types](https://docs.getfrontline.ai/reference/openapi/object-record-types/createobjectrecordtype.md): Creates a record type on an object. Record types are an object-only feature; tables always keep the single implicit record type they are created with. Requires a USER API key with ADMIN or OWNER role.
 - [PATCH /public/v1/objects/{name}/record-types/{recordTypeId}](https://docs.getfrontline.ai/reference/openapi/object-record-types/updateobjectrecordtype.md): Updates a record type. The default record type's name cannot be changed. Requires a USER API key with ADMIN or OWNER role.
 - [DELETE /public/v1/objects/{name}/record-types/{recordTypeId}](https://docs.getfrontline.ai/reference/openapi/object-record-types/deleteobjectrecordtype.md): Deletes a record type. The default record type cannot be deleted. Requires a USER API key with ADMIN or OWNER role.
 - [GET /public/v1/objects/{name}/record-types/{recordTypeId}/security](https://docs.getfrontline.ai/reference/openapi/object-record-types/getobjectrecordtypesecurity.md): Returns the record-level security (RLS) configuration for a record type, including the workspace default for new records. If no config has been saved yet, returns in-memory defaults (enabled: false, a
 - [PATCH /public/v1/objects/{name}/record-types/{recordTypeId}/security](https://docs.getfrontline.ai/reference/openapi/object-record-types/updateobjectrecordtypesecurity.md): Updates record-level security (RLS) for a record type. virtual_owner_column_ids must reference User-relation fields assigned to the record type. workspace sets the default access for new records (FULL
## Object views

 - [GET /public/v1/objects/{name}/views](https://docs.getfrontline.ai/reference/openapi/object-views/listobjectviews.md): Returns the saved views configured on an object. Optionally filter by record_type_id and shared (shared=true returns only shared/system views).
 - [POST /public/v1/objects/{name}/views](https://docs.getfrontline.ai/reference/openapi/object-views/createobjectview.md): Creates a saved view on an object. Requires a USER API key.
 - [PATCH /public/v1/objects/{name}/views/{viewId}](https://docs.getfrontline.ai/reference/openapi/object-views/updateobjectview.md): Updates a saved view. Requires a USER API key.
 - [DELETE /public/v1/objects/{name}/views/{viewId}](https://docs.getfrontline.ai/reference/openapi/object-views/deleteobjectview.md): Deletes a saved view. Requires a USER API key.
## Object relations

 - [GET /public/v1/objects/{name}/rows/{id}/relations/{relation}](https://docs.getfrontline.ai/reference/openapi/object-relations/listobjectrelations.md): Returns rows linked to this row via the given relation field.
 - [GET /public/v1/objects/{name}/relations/{relation}/target/{targetId}](https://docs.getfrontline.ai/reference/openapi/object-relations/findobjectbyrelation.md): Returns rows on the source object linked to the target id via the relation.
 - [POST /public/v1/objects/{name}/rows/{id}/relations/{relation}/link](https://docs.getfrontline.ai/reference/openapi/object-relations/linkobjectrelation.md): Links the target row to this row via the relation. Requires a USER API key.
 - [POST /public/v1/objects/{name}/rows/{id}/relations/{relation}/unlink](https://docs.getfrontline.ai/reference/openapi/object-relations/unlinkobjectrelation.md): Unlinks the target row from this row's relation. Requires a USER API key.
## Object rows

 - [POST /public/v1/objects/{name}/rows/list](https://docs.getfrontline.ai/reference/openapi/object-rows/listobjectrows.md): Returns a paginated, filterable list of rows.
 - [POST /public/v1/objects/{name}/rows](https://docs.getfrontline.ai/reference/openapi/object-rows/createobjectrow.md): Creates a single row. Requires a USER API key.
 - [POST /public/v1/objects/{name}/rows/bulk](https://docs.getfrontline.ai/reference/openapi/object-rows/createobjectrowsbulk.md): Creates multiple rows in a single call. Requires a USER API key.
 - [GET /public/v1/objects/{name}/rows/{id}](https://docs.getfrontline.ai/reference/openapi/object-rows/getobjectrow.md): Returns a single row by id.
 - [PATCH /public/v1/objects/{name}/rows/{id}](https://docs.getfrontline.ai/reference/openapi/object-rows/updateobjectrow.md): Updates a row's fields. Pass field values flat in the body or nested under `data`. Requires a USER API key.
 - [DELETE /public/v1/objects/{name}/rows/{id}](https://docs.getfrontline.ai/reference/openapi/object-rows/deleteobjectrow.md): Deletes a row. Requires a USER API key.
 - [POST /public/v1/objects/{name}/rows/count](https://docs.getfrontline.ai/reference/openapi/object-rows/countobjectrows.md): Returns the number of rows matching the optional query and record type filter.
## Object aggregations

 - [GET /public/v1/objects/{name}/views/{viewId}/aggregations](https://docs.getfrontline.ai/reference/openapi/object-aggregations/listobjectaggregations.md): Returns aggregations configured for a view.
 - [POST /public/v1/objects/{name}/views/{viewId}/aggregations](https://docs.getfrontline.ai/reference/openapi/object-aggregations/createobjectaggregation.md): Creates an aggregation on a column for the given view. Requires a USER API key.
 - [PATCH /public/v1/objects/{name}/views/{viewId}/aggregations/{aggId}](https://docs.getfrontline.ai/reference/openapi/object-aggregations/updateobjectaggregation.md): Changes the operation of an aggregation. Requires a USER API key.
 - [DELETE /public/v1/objects/{name}/views/{viewId}/aggregations/{aggId}](https://docs.getfrontline.ai/reference/openapi/object-aggregations/deleteobjectaggregation.md): Removes an aggregation from a view. Requires a USER API key.
 - [POST /public/v1/objects/{name}/views/{viewId}/aggregations/compute](https://docs.getfrontline.ai/reference/openapi/object-aggregations/computeobjectaggregations.md): Computes the configured aggregations for the rows matching the query.
## Object activities

 - [GET /public/v1/objects/{name}/rows/{rowId}/activities](https://docs.getfrontline.ai/reference/openapi/object-activities/listobjectactivities.md): Returns manually-created activities attached to a row. Activities log interactions like notes, calls, meetings, and emails.
 - [POST /public/v1/objects/{name}/rows/{rowId}/activities](https://docs.getfrontline.ai/reference/openapi/object-activities/createobjectactivity.md): Attaches a manual activity to a row. Use `type` to categorize it (NOTE, PHONE_CALL, MEETING, EMAIL, WHATSAPP). Requires a USER API key.
 - [GET /public/v1/objects/{name}/activities/{id}](https://docs.getfrontline.ai/reference/openapi/object-activities/getobjectactivity.md): Returns an activity by id.
 - [PATCH /public/v1/objects/{name}/activities/{id}](https://docs.getfrontline.ai/reference/openapi/object-activities/updateobjectactivity.md): Updates an activity. Requires a USER API key.
 - [DELETE /public/v1/objects/{name}/activities/{id}](https://docs.getfrontline.ai/reference/openapi/object-activities/deleteobjectactivity.md): Deletes a manually-created activity. Only the owner or an account admin can delete. Auto-generated activities (email sync, conversation audit, etc.) cannot be deleted. Requires a USER API key.
## Object tasks

 - [GET /public/v1/objects/{name}/rows/{rowId}/tasks](https://docs.getfrontline.ai/reference/openapi/object-tasks/listobjecttasks.md): Returns tasks attached to a row.
 - [POST /public/v1/objects/{name}/rows/{rowId}/tasks](https://docs.getfrontline.ai/reference/openapi/object-tasks/createobjecttask.md): Attaches a task to a row. Requires a USER API key.
 - [GET /public/v1/objects/{name}/tasks/{id}](https://docs.getfrontline.ai/reference/openapi/object-tasks/getobjecttask.md): Returns a task by id.
 - [PATCH /public/v1/objects/{name}/tasks/{id}](https://docs.getfrontline.ai/reference/openapi/object-tasks/updateobjecttask.md): Updates a task's content, due date, or assignees. Requires a USER API key.
 - [DELETE /public/v1/objects/{name}/tasks/{id}](https://docs.getfrontline.ai/reference/openapi/object-tasks/deleteobjecttask.md): Deletes a task. Requires a USER API key.
 - [POST /public/v1/objects/{name}/tasks/{id}/complete](https://docs.getfrontline.ai/reference/openapi/object-tasks/completeobjecttask.md): Marks a task as completed. Requires a USER API key.
 - [POST /public/v1/objects/{name}/tasks/{id}/uncomplete](https://docs.getfrontline.ai/reference/openapi/object-tasks/uncompleteobjecttask.md): Marks a previously completed task as open again. Requires a USER API key.
## Object files

 - [GET /public/v1/objects/{name}/rows/{rowId}/files](https://docs.getfrontline.ai/reference/openapi/object-files/listobjectfiles.md): Returns the files attached to a row.
 - [POST /public/v1/objects/{name}/rows/{rowId}/files](https://docs.getfrontline.ai/reference/openapi/object-files/uploadobjectfiles.md): Uploads one or more files to a row as multipart/form-data under the `files` field. Requires a USER API key.
 - [GET /public/v1/objects/{name}/files/{id}](https://docs.getfrontline.ai/reference/openapi/object-files/getobjectfile.md): Returns file metadata.
 - [DELETE /public/v1/objects/{name}/files/{id}](https://docs.getfrontline.ai/reference/openapi/object-files/deleteobjectfile.md): Deletes a file from a row. Requires a USER API key.
 - [GET /public/v1/objects/{name}/files/{id}/download](https://docs.getfrontline.ai/reference/openapi/object-files/downloadobjectfile.md): Streams the file content. Returns the file binary; not a JSON envelope.
## Object export

 - [POST /public/v1/objects/{name}/export/xlsx](https://docs.getfrontline.ai/reference/openapi/object-export/exportobjectxlsx.md): Exports rows matching the query as an XLSX file.
 - [POST /public/v1/objects/{name}/export/csv](https://docs.getfrontline.ai/reference/openapi/object-export/exportobjectcsv.md): Exports rows matching the query as CSV.
## Tables

 - [GET /public/v1/tables](https://docs.getfrontline.ai/reference/openapi/tables/listtables.md): Returns every table for the authenticated account.
 - [POST /public/v1/tables](https://docs.getfrontline.ai/reference/openapi/tables/createtable.md): Creates a table. Columns can be supplied at creation or added later. Requires a USER API key.
 - [GET /public/v1/tables/{name}](https://docs.getfrontline.ai/reference/openapi/tables/gettable.md): Returns one table including fields and views.
 - [PATCH /public/v1/tables/{name}](https://docs.getfrontline.ai/reference/openapi/tables/updatetable.md): Updates display name, emoji, color, or description. Requires a USER API key with edit access to the table (admins/owners, the table's creator, or FULL_ACCESS sharing).
 - [DELETE /public/v1/tables/{name}](https://docs.getfrontline.ai/reference/openapi/tables/deletetable.md): Deletes a table. Requires a USER API key with delete access to the table (admins/owners, the table's creator, or FULL_ACCESS sharing).
 - [GET /public/v1/tables/{name}/schema](https://docs.getfrontline.ai/reference/openapi/tables/gettableschema.md): Returns only the schema (fields, types, formats) for a table.
## Table fields

 - [GET /public/v1/tables/{name}/fields](https://docs.getfrontline.ai/reference/openapi/table-fields/listtablefields.md): Returns the columns defined on a table.
 - [POST /public/v1/tables/{name}/fields](https://docs.getfrontline.ai/reference/openapi/table-fields/createtablefield.md): Creates a column on a table. Requires a USER API key with edit access to the table (FULL_ACCESS sharing); read-only access is not enough.
 - [PATCH /public/v1/tables/{name}/fields/{fieldId}](https://docs.getfrontline.ai/reference/openapi/table-fields/updatetablefield.md): Updates a field's metadata, defaults, or ordering. Requires a USER API key with edit access to the table (FULL_ACCESS sharing); read-only access is not enough.
 - [DELETE /public/v1/tables/{name}/fields/{fieldId}](https://docs.getfrontline.ai/reference/openapi/table-fields/deletetablefield.md): Deletes a column from a table. Requires a USER API key with edit access to the table (FULL_ACCESS sharing); read-only access is not enough.
 - [GET /public/v1/tables/{name}/fields/{fieldId}/formula-dependencies](https://docs.getfrontline.ai/reference/openapi/table-fields/gettablefieldformuladependencies.md): Returns the formula dependencies for a specific field. Requires a USER API key with edit access to the table.
 - [POST /public/v1/tables/{name}/fields/preview-formula](https://docs.getfrontline.ai/reference/openapi/table-fields/previewtableformula.md): Previews formula evaluation on existing data. Requires a USER API key with edit access to the table.
## Table options

 - [GET /public/v1/tables/{name}/fields/{fieldId}/tags](https://docs.getfrontline.ai/reference/openapi/table-options/listtablefieldoptions.md): Returns the options (tags) defined on a select/tags field.
 - [POST /public/v1/tables/{name}/fields/{fieldId}/tags](https://docs.getfrontline.ai/reference/openapi/table-options/createtablefieldoption.md): Adds an option (tag) to a select/tags field. Requires a USER API key with edit access to the table.
 - [PATCH /public/v1/tables/{name}/tags/{tagId}](https://docs.getfrontline.ai/reference/openapi/table-options/updatetablefieldoption.md): Updates an option's name, color, or order. Requires a USER API key with edit access to the table.
 - [DELETE /public/v1/tables/{name}/tags/{tagId}](https://docs.getfrontline.ai/reference/openapi/table-options/deletetablefieldoption.md): Deletes an option from a select/tags field. Requires a USER API key with edit access to the table.
## Table rows

 - [POST /public/v1/tables/{name}/rows/list](https://docs.getfrontline.ai/reference/openapi/table-rows/listtablerows.md): Returns a paginated, filterable list of rows.
 - [POST /public/v1/tables/{name}/rows](https://docs.getfrontline.ai/reference/openapi/table-rows/createtablerow.md): Creates a single row. Requires a USER API key.
 - [POST /public/v1/tables/{name}/rows/bulk](https://docs.getfrontline.ai/reference/openapi/table-rows/createtablerowsbulk.md): Creates multiple rows in a single call. Requires a USER API key.
 - [GET /public/v1/tables/{name}/rows/{id}](https://docs.getfrontline.ai/reference/openapi/table-rows/gettablerow.md): Returns a single row by id.
 - [PATCH /public/v1/tables/{name}/rows/{id}](https://docs.getfrontline.ai/reference/openapi/table-rows/updatetablerow.md): Updates a row's fields. Pass field values flat in the body or nested under `data`. Requires a USER API key.
 - [DELETE /public/v1/tables/{name}/rows/{id}](https://docs.getfrontline.ai/reference/openapi/table-rows/deletetablerow.md): Deletes a row. Requires a USER API key.
 - [POST /public/v1/tables/{name}/rows/count](https://docs.getfrontline.ai/reference/openapi/table-rows/counttablerows.md): Returns the number of rows matching the optional query.
## Table aggregations

 - [GET /public/v1/tables/{name}/views/{viewId}/aggregations](https://docs.getfrontline.ai/reference/openapi/table-aggregations/listtableaggregations.md): Returns aggregations configured for a view.
 - [POST /public/v1/tables/{name}/views/{viewId}/aggregations](https://docs.getfrontline.ai/reference/openapi/table-aggregations/createtableaggregation.md): Creates an aggregation on a column for the given view. Requires a USER API key.
 - [PATCH /public/v1/tables/{name}/views/{viewId}/aggregations/{aggId}](https://docs.getfrontline.ai/reference/openapi/table-aggregations/updatetableaggregation.md): Changes the operation of an aggregation. Requires a USER API key.
 - [DELETE /public/v1/tables/{name}/views/{viewId}/aggregations/{aggId}](https://docs.getfrontline.ai/reference/openapi/table-aggregations/deletetableaggregation.md): Removes an aggregation from a view. Requires a USER API key.
 - [POST /public/v1/tables/{name}/views/{viewId}/aggregations/compute](https://docs.getfrontline.ai/reference/openapi/table-aggregations/computetableaggregations.md): Computes the configured aggregations for the rows matching the query.
## Table activities

 - [GET /public/v1/tables/{name}/rows/{rowId}/activities](https://docs.getfrontline.ai/reference/openapi/table-activities/listtableactivities.md): Returns manually-created activities attached to a row. Activities log interactions like notes, calls, meetings, and emails.
 - [POST /public/v1/tables/{name}/rows/{rowId}/activities](https://docs.getfrontline.ai/reference/openapi/table-activities/createtableactivity.md): Attaches a manual activity to a row. Use `type` to categorize it (NOTE, PHONE_CALL, MEETING, EMAIL, WHATSAPP). Requires a USER API key.
 - [GET /public/v1/tables/{name}/activities/{id}](https://docs.getfrontline.ai/reference/openapi/table-activities/gettableactivity.md): Returns an activity by id.
 - [PATCH /public/v1/tables/{name}/activities/{id}](https://docs.getfrontline.ai/reference/openapi/table-activities/updatetableactivity.md): Updates an activity. Requires a USER API key.
 - [DELETE /public/v1/tables/{name}/activities/{id}](https://docs.getfrontline.ai/reference/openapi/table-activities/deletetableactivity.md): Deletes a manually-created activity. Only the owner or an account admin can delete. Auto-generated activities cannot be deleted. Requires a USER API key.
## Table tasks

 - [GET /public/v1/tables/{name}/rows/{rowId}/tasks](https://docs.getfrontline.ai/reference/openapi/table-tasks/listtabletasks.md): Returns tasks attached to a row.
 - [POST /public/v1/tables/{name}/rows/{rowId}/tasks](https://docs.getfrontline.ai/reference/openapi/table-tasks/createtabletask.md): Attaches a task to a row. Requires a USER API key.
 - [GET /public/v1/tables/{name}/tasks/{id}](https://docs.getfrontline.ai/reference/openapi/table-tasks/gettabletask.md): Returns a task by id.
 - [PATCH /public/v1/tables/{name}/tasks/{id}](https://docs.getfrontline.ai/reference/openapi/table-tasks/updatetabletask.md): Updates a task's content, due date, or assignees. Requires a USER API key.
 - [DELETE /public/v1/tables/{name}/tasks/{id}](https://docs.getfrontline.ai/reference/openapi/table-tasks/deletetabletask.md): Deletes a task. Requires a USER API key.
 - [POST /public/v1/tables/{name}/tasks/{id}/complete](https://docs.getfrontline.ai/reference/openapi/table-tasks/completetabletask.md): Marks a task as completed. Requires a USER API key.
 - [POST /public/v1/tables/{name}/tasks/{id}/uncomplete](https://docs.getfrontline.ai/reference/openapi/table-tasks/uncompletetabletask.md): Marks a previously completed task as open again. Requires a USER API key.
## Table files

 - [GET /public/v1/tables/{name}/rows/{rowId}/files](https://docs.getfrontline.ai/reference/openapi/table-files/listtablefiles.md): Returns the files attached to a row.
 - [POST /public/v1/tables/{name}/rows/{rowId}/files](https://docs.getfrontline.ai/reference/openapi/table-files/uploadtablefiles.md): Uploads one or more files to a row as multipart/form-data under the `files` field. Requires a USER API key.
 - [GET /public/v1/tables/{name}/files/{id}](https://docs.getfrontline.ai/reference/openapi/table-files/gettablefile.md): Returns file metadata.
 - [DELETE /public/v1/tables/{name}/files/{id}](https://docs.getfrontline.ai/reference/openapi/table-files/deletetablefile.md): Deletes a file from a row. Requires a USER API key.
 - [GET /public/v1/tables/{name}/files/{id}/download](https://docs.getfrontline.ai/reference/openapi/table-files/downloadtablefile.md): Streams the file content. Returns the file binary; not a JSON envelope.
## Table export

 - [POST /public/v1/tables/{name}/export/xlsx](https://docs.getfrontline.ai/reference/openapi/table-export/exporttablexlsx.md): Exports rows matching the query as an XLSX file.
 - [POST /public/v1/tables/{name}/export/csv](https://docs.getfrontline.ai/reference/openapi/table-export/exporttablecsv.md): Exports rows matching the query as CSV.
## Custom Tools

 - [GET /public/v1/tools](https://docs.getfrontline.ai/reference/openapi/custom-tools/listtools.md): Returns the account's custom tools (API call tools created by the account). WhatsApp template tools are not exposed in this public surface.
 - [POST /public/v1/tools](https://docs.getfrontline.ai/reference/openapi/custom-tools/createtool.md): Creates a custom tool (an API call tool). Requires a USER API key. WhatsApp template tools are not supported in the public API.
 - [GET /public/v1/tools/{toolId}](https://docs.getfrontline.ai/reference/openapi/custom-tools/gettool.md): Returns a custom tool (API call tool) by ID.
 - [PUT /public/v1/tools/{toolId}](https://docs.getfrontline.ai/reference/openapi/custom-tools/updatetool.md): Updates a custom tool (API call tool). Requires a USER API key. The tool type cannot be changed.
 - [DELETE /public/v1/tools/{toolId}](https://docs.getfrontline.ai/reference/openapi/custom-tools/deletetool.md): Soft deletes a custom tool (API call tool). Requires a USER API key.
 - [POST /public/v1/tools/{toolId}/test](https://docs.getfrontline.ai/reference/openapi/custom-tools/testtool.md): Executes a persisted API call tool with the provided argument values and returns the HTTP response. Requires a USER API key.
## Incoming Webhooks

 - [GET /public/v1/incoming-webhooks](https://docs.getfrontline.ai/reference/openapi/incoming-webhooks/listincomingwebhooks.md): Lists incoming webhooks for the authenticated account. Filter by search text and active status. Requires a USER API key.
 - [POST /public/v1/incoming-webhooks](https://docs.getfrontline.ai/reference/openapi/incoming-webhooks/createincomingwebhook.md): Creates an incoming webhook for the authenticated account. Requires a USER API key and returns the access token needed to call the webhook.
 - [GET /public/v1/incoming-webhooks/{webhookId}](https://docs.getfrontline.ai/reference/openapi/incoming-webhooks/getincomingwebhook.md): Returns an incoming webhook by ID. Requires a USER API key.
 - [PUT /public/v1/incoming-webhooks/{webhookId}](https://docs.getfrontline.ai/reference/openapi/incoming-webhooks/updateincomingwebhook.md): Updates an incoming webhook's name, description, active state, or authentication toggle. Requires a USER API key.
 - [DELETE /public/v1/incoming-webhooks/{webhookId}](https://docs.getfrontline.ai/reference/openapi/incoming-webhooks/deleteincomingwebhook.md): Deletes an incoming webhook. Requires a USER API key.
 - [POST /public/v1/incoming-webhooks/{webhookId}/regenerate-access-token](https://docs.getfrontline.ai/reference/openapi/incoming-webhooks/regenerateincomingwebhookaccesstoken.md): Generates a new bearer access token for the webhook, invalidating the previous one. The new token is returned in the response. Requires a USER API key.
 - [GET /public/v1/incoming-webhooks/{webhookId}/events](https://docs.getfrontline.ai/reference/openapi/incoming-webhooks/listincomingwebhookevents.md): Lists received events (deliveries) for an incoming webhook. Filter by date range, status, and search. Requires a USER API key.
 - [GET /public/v1/incoming-webhooks/{webhookId}/events/{eventId}](https://docs.getfrontline.ai/reference/openapi/incoming-webhooks/getincomingwebhookevent.md): Returns a single webhook event, including the automations it triggered. Requires a USER API key.
## Workspace Connectors

 - [GET /public/v1/integrations](https://docs.getfrontline.ai/reference/openapi/workspace-connectors/listaccountintegrations.md): Lists the account's connected integrations (MCP toolkits such as Gmail, Slack, Salesforce). Each entry exposes the integration `id` used as `connectedAccountId` when configuring workflow/flow triggers
 - [GET /public/v1/integrations/toolkits](https://docs.getfrontline.ai/reference/openapi/workspace-connectors/listintegrationtoolkits.md): Lists the catalog of toolkits that can be connected, with each toolkit's auth scheme and the tool slugs it supports. Use this to discover valid toolkit values and to interpret the enabled-tools list o
 - [GET /public/v1/integrations/{integrationId}](https://docs.getfrontline.ai/reference/openapi/workspace-connectors/getaccountintegration.md): Returns a single account integration by ID. Read-only. Connecting, renaming, visibility, and which tools a connector exposes are changed in the app only — not via an API key. Requires a USER API key.
 - [GET /public/v1/integrations/{integrationId}/tools](https://docs.getfrontline.ai/reference/openapi/workspace-connectors/getaccountintegrationtools.md): Returns the integration's tools split into enabled and available, including whether the connected account holds the OAuth scopes each tool requires. Changing which tools are enabled is done in the app
## Agent Channels

 - [GET /public/v1/channels](https://docs.getfrontline.ai/reference/openapi/agent-channels/listchannels.md): Read-only list of WhatsApp Business numbers, Instagram accounts, and Messenger pages connected to this account, and which agent each one is bound to. For Send WhatsApp Message nodes, use a WhatsApp nu
 - [GET /public/v1/channels/whatsapp/flows/{flowId}/definition](https://docs.getfrontline.ai/reference/openapi/agent-channels/getchannelwhatsappflowdefinition.md): Downloads flow.json from Meta using this account's WhatsApp integration. Use definition.screens[].data to build flowActionData. When Meta does not grant Flow asset access, available is false and calle
 - [GET /public/v1/channels/whatsapp/templates](https://docs.getfrontline.ai/reference/openapi/agent-channels/listchannelwhatsapptemplates.md): Read-only list of APPROVED WhatsApp message templates from Meta for this account's WhatsApp Business channel. Use template.name in SEND_WHATSAPP_MESSAGE nodes and map parameters into templateVariables
 - [GET /public/v1/channels/whatsapp/numbers/{phoneNumberId}/business-info](https://docs.getfrontline.ai/reference/openapi/agent-channels/getwhatsappnumberbusinessinfo.md): Returns the live WhatsApp Business profile (about, address, websites, category) for a connected number. Requires a USER API key.
 - [PUT /public/v1/channels/whatsapp/{integrationId}/numbers/{phoneNumberId}](https://docs.getfrontline.ai/reference/openapi/agent-channels/updatewhatsappnumber.md): 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.
 - [POST /public/v1/channels/whatsapp/{integrationId}/numbers/{phoneNumberId}/register](https://docs.getfrontline.ai/reference/openapi/agent-channels/registerwhatsappnumber.md): Registers a connected WhatsApp number with Meta (generates a PIN and completes registration). Requires a USER API key.
 - [POST /public/v1/channels/whatsapp/{integrationId}/numbers/{phoneNumberId}/disconnect](https://docs.getfrontline.ai/reference/openapi/agent-channels/disconnectwhatsappnumber.md): Disconnects a single WhatsApp number from the integration. Requires a USER API key.
 - [PUT /public/v1/channels/instagram/accounts/{instagramAccountId}](https://docs.getfrontline.ai/reference/openapi/agent-channels/assigninstagramaccount.md): Binds (or, with null, unbinds) a connected Instagram account to an agent. Requires a USER API key.
 - [PUT /public/v1/channels/messenger/pages/{messengerPageId}](https://docs.getfrontline.ai/reference/openapi/agent-channels/assignmessengerpage.md): Binds (or, with null, unbinds) a connected Messenger page to an agent. Requires a USER API key.
## Integration Resources

 - [GET /public/v1/integrations/resources/gmail/labels](https://docs.getfrontline.ai/reference/openapi/integration-resources/listgmaillabelresources.md): Lists Gmail labels for the connected account, to resolve label IDs used in Gmail trigger configs. Requires a USER API key.
 - [GET /public/v1/integrations/resources/googlesheets/spreadsheets](https://docs.getfrontline.ai/reference/openapi/integration-resources/listgooglespreadsheetresources.md): Lists Google spreadsheets for the connected account, to resolve a spreadsheet_id for Google Sheets trigger configs. Requires a USER API key.
 - [GET /public/v1/integrations/resources/googlesheets/spreadsheets/{spreadsheetId}/sheets](https://docs.getfrontline.ai/reference/openapi/integration-resources/listgooglespreadsheetsheetresources.md): Lists the sheets (tabs) within a spreadsheet, to resolve a sheet_name for Google Sheets trigger configs. Requires a USER API key.
 - [GET /public/v1/integrations/resources/googledocs/documents](https://docs.getfrontline.ai/reference/openapi/integration-resources/listgoogledocumentresources.md): Lists Google Docs documents for the connected account, to resolve a document_id for Google Docs trigger configs. Requires a USER API key.
 - [GET /public/v1/integrations/resources/googledrive/shared-drives](https://docs.getfrontline.ai/reference/openapi/integration-resources/listgoogleshareddriveresources.md): Lists Google Drive shared drives for the connected account, to resolve a drive_id for Google Drive trigger configs. Requires a USER API key.
 - [GET /public/v1/integrations/resources/googledrive/folders](https://docs.getfrontline.ai/reference/openapi/integration-resources/listgoogledrivefolderresources.md): Lists Google Drive folders for the connected account, to resolve a folder_id for Google Drive trigger configs. Requires a USER API key.
 - [GET /public/v1/integrations/resources/asana/workspaces](https://docs.getfrontline.ai/reference/openapi/integration-resources/listasanaworkspaceresources.md): Lists Asana workspaces for the connected account, to resolve a workspace_gid for Asana trigger configs. Requires a USER API key.
 - [GET /public/v1/integrations/resources/asana/workspaces/{workspaceGid}/projects](https://docs.getfrontline.ai/reference/openapi/integration-resources/listasanaprojectresources.md): Lists Asana projects within a workspace, to resolve a project_gid for Asana trigger configs. Requires a USER API key.
 - [GET /public/v1/integrations/resources/salesforce/sobjects](https://docs.getfrontline.ai/reference/openapi/integration-resources/listsalesforcesobjectresources.md): Lists Salesforce SObjects for the connected account, to resolve an sobject_name for Salesforce trigger configs. Requires a USER API key.
 - [GET /public/v1/integrations/resources/salesforce/sobjects/{sobjectName}/fields](https://docs.getfrontline.ai/reference/openapi/integration-resources/listsalesforcesobjectfieldresources.md): Lists the fields of a Salesforce SObject, to resolve field names for Salesforce trigger configs. Requires a USER API key.
 - [GET /public/v1/integrations/resources/outlook/folders](https://docs.getfrontline.ai/reference/openapi/integration-resources/listoutlookfolderresources.md): Lists Outlook mail folders for the connected account, to resolve a folderId for Outlook message trigger configs. Requires a USER API key.
 - [GET /public/v1/integrations/resources/outlook/calendars](https://docs.getfrontline.ai/reference/openapi/integration-resources/listoutlookcalendarresources.md): Lists Outlook calendars for the connected account, to resolve a calendarId for Outlook event trigger configs. Requires a USER API key.
 - [GET /public/v1/integrations/trigger-types](https://docs.getfrontline.ai/reference/openapi/integration-resources/listintegrationtriggertypes.md): 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`
 - [GET /public/v1/integrations/trigger-resources](https://docs.getfrontline.ai/reference/openapi/integration-resources/listintegrationtriggerresources.md): 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, OneDriv
## Knowledge Bases

 - [GET /public/v1/knowledge-bases](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/listknowledgebases.md): Lists knowledge bases for the account. Filter by shared/private and search text. Requires a USER API key.
 - [POST /public/v1/knowledge-bases](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/createknowledgebase.md): Creates a knowledge base. Requires a USER API key.
 - [GET /public/v1/knowledge-bases/{knowledgeBaseId}](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/getknowledgebase.md): Returns a knowledge base by ID. Requires a USER API key.
 - [PUT /public/v1/knowledge-bases/{knowledgeBaseId}](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/updateknowledgebase.md): Updates a knowledge base's name or description. Requires a USER API key.
 - [DELETE /public/v1/knowledge-bases/{knowledgeBaseId}](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/deleteknowledgebase.md): Deletes a knowledge base and all of its sources. Default knowledge bases cannot be deleted. Requires a USER API key.
 - [POST /public/v1/knowledge-bases/{knowledgeBaseId}/search](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/searchknowledgebase.md): Semantic search over a knowledge base's indexed content. Returns matching chunks with similarity scores. Requires a USER API key.
 - [GET /public/v1/knowledge-bases/{knowledgeBaseId}/sources](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/listknowledgesources.md): Lists all sources (files, URLs, web pages) in a knowledge base. Requires a USER API key.
 - [DELETE /public/v1/knowledge-bases/{knowledgeBaseId}/sources](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/removeknowledgesources.md): Removes the given sources from a knowledge base. Requires a USER API key.
 - [GET /public/v1/knowledge-bases/{knowledgeBaseId}/sources/{sourceId}](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/getknowledgesource.md): Returns a single knowledge source by ID. Requires a USER API key.
 - [POST /public/v1/knowledge-bases/{knowledgeBaseId}/sources/urls](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/addknowledgeurlsource.md): Adds one or more URL sources to a knowledge base. The URLs are fetched and indexed asynchronously. Requires a USER API key.
 - [POST /public/v1/knowledge-bases/{knowledgeBaseId}/website-crawls](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/addknowledgewebsitecrawl.md): Starts a website crawl that discovers and indexes pages under the given URL. Requires a USER API key.
 - [POST /public/v1/knowledge-bases/{knowledgeBaseId}/sources/resync](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/resyncknowledgesources.md): Re-fetches and re-indexes the given URL/web-page sources. Requires a USER API key.
 - [POST /public/v1/knowledge-bases/{knowledgeBaseId}/website-crawls/{websiteSourceId}/resync](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/resyncknowledgewebsitecrawl.md): Re-crawls a website source, optionally overriding crawl configuration. Requires a USER API key.
 - [GET /public/v1/knowledge-bases/{knowledgeBaseId}/website-crawls/{websiteSourceId}/sync-history](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/getknowledgewebsitesynchistory.md): Lists sync summaries (crawl runs) for a website source. Requires a USER API key.
 - [GET /public/v1/agents/{agentId}/knowledge-bases](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/listassignedknowledgebases.md): Lists knowledge bases assigned to a specific agent. Requires a USER API key.
 - [PUT /public/v1/agents/{agentId}/knowledge-bases](https://docs.getfrontline.ai/reference/openapi/knowledge-bases/assignknowledgebases.md): Sets the full list of shared knowledge bases assigned to an agent (replaces existing assignments). Requires a USER API key.
## Max Conversations

 - [GET /public/v1/max/conversations](https://docs.getfrontline.ai/reference/openapi/max-conversations/listmaxconversations.md): Returns the calling user's chat threads with Max, newest activity first, each with a short preview instead of the full message history. Requires a USER API key.
 - [POST /public/v1/max/conversations/message](https://docs.getfrontline.ai/reference/openapi/max-conversations/sendmaxmessage.md): Sends a message to Max and returns the conversation once Max has replied. Omit `conversationId` to start a new thread. Max may take a while to answer, since it can call tools and read your data before
 - [GET /public/v1/max/conversations/{conversationId}](https://docs.getfrontline.ai/reference/openapi/max-conversations/getmaxconversation.md): Returns one conversation with its full message history, the plan Max is currently working through, and any questions it is waiting on you to answer. Requires a USER API key.
## Max Meetings

 - [GET /public/v1/max/meetings](https://docs.getfrontline.ai/reference/openapi/max-meetings/listmaxmeetings.md): Returns the caller's meetings, newest first, filterable by status, platform, folder, date range, and a title substring. This is a literal filter — to find a meeting by what was discussed, use `GET /ma
 - [POST /public/v1/max/meetings](https://docs.getfrontline.ai/reference/openapi/max-meetings/createmaxmeeting.md): Creates a manually-tracked meeting. Meetings normally arrive from the connected calendar, so use this for calls that are not on a calendar. Supplying `meetingUrl` lets the notetaker join at the schedu
 - [GET /public/v1/max/meetings/search](https://docs.getfrontline.ai/reference/openapi/max-meetings/searchmaxmeetings.md): Semantic search across the AI summaries of the caller's completed meetings, ranked by relevance. Ask in natural language ('pricing objections from the Acme call') rather than by keyword. Optionally na
 - [GET /public/v1/max/meetings/analytics](https://docs.getfrontline.ai/reference/openapi/max-meetings/getmymeetinganalytics.md): Returns the caller's own meeting volume and duration, broken down by day, platform and source, plus the raw meeting list so you can bucket by hour or weekday yourself. Scoped to the caller alone — for
 - [GET /public/v1/max/meetings/upcoming](https://docs.getfrontline.ai/reference/openapi/max-meetings/listupcomingmaxmeetings.md): Returns the caller's scheduled meetings that have not started yet, soonest first, including whether the notetaker is set to join each one. Narrow by meeting platform, or by a title substring with `sea
 - [GET /public/v1/max/meetings/past](https://docs.getfrontline.ai/reference/openapi/max-meetings/listpastmaxmeetings.md): Returns the caller's finished meetings, most recent first. Recordings, transcripts, and AI notes appear once processing completes, so a meeting that just ended may still be empty. Omitting `status` re
 - [POST /public/v1/max/meetings/quick-start](https://docs.getfrontline.ai/reference/openapi/max-meetings/quickstartmaxmeeting.md): Sends the notetaker into a call that is happening right now. Pass the meeting link and a meeting record is created for it on the spot. This dispatches a real bot that joins and records, so it consumes
 - [GET /public/v1/max/meetings/{meetingId}](https://docs.getfrontline.ai/reference/openapi/max-meetings/getmaxmeeting.md): Returns one meeting with its participants, folder, notetaker state, recording availability, and note summary. Requires a USER API key; the caller must own the meeting or have been granted access to it
 - [PATCH /public/v1/max/meetings/{meetingId}](https://docs.getfrontline.ai/reference/openapi/max-meetings/updatemaxmeeting.md): Updates a meeting's editable fields — title, schedule, meeting link, note template, and whether the notetaker should join or the call should never be recorded. Requires a USER API key with edit access
 - [DELETE /public/v1/max/meetings/{meetingId}](https://docs.getfrontline.ai/reference/openapi/max-meetings/deletemaxmeeting.md): Permanently deletes a meeting along with its notes, transcript, action items, and recording. This cannot be undone. Requires a USER API key with edit access to the meeting.
 - [POST /public/v1/max/meetings/{meetingId}/dispatch](https://docs.getfrontline.ai/reference/openapi/max-meetings/dispatchmaxmeetingbot.md): Asks the notetaker to join this meeting. If the meeting is still in the future the bot is scheduled to join at start time; if it is already running the bot joins immediately. The meeting must have a j
 - [POST /public/v1/max/meetings/{meetingId}/cancel-bot](https://docs.getfrontline.ai/reference/openapi/max-meetings/cancelmaxmeetingbot.md): Stops the notetaker for this meeting: cancels the scheduled join if the call has not started, or removes the bot from the call if it is already in the room. Requires a USER API key with edit access to
 - [POST /public/v1/max/meetings/{meetingId}/move-to-folder](https://docs.getfrontline.ai/reference/openapi/max-meetings/movemaxmeetingtofolder.md): Files a meeting under a different folder, which also changes who can see it, since folders carry the sharing rules. Pass a null folder to move it back to the default folder. Requires a USER API key wi
 - [GET /public/v1/max/meetings/{meetingId}/notes](https://docs.getfrontline.ai/reference/openapi/max-meetings/getmaxmeetingnotes.md): Returns the meeting's notes: the AI-generated summary and structured sections, any manual edits, and the action items extracted from the conversation. Returns null while the meeting is still being pro
 - [PATCH /public/v1/max/meetings/{meetingId}/notes](https://docs.getfrontline.ai/reference/openapi/max-meetings/updatemaxmeetingnotes.md): Edits the meeting notes by hand. Manual edits are preserved and are not overwritten by later AI processing. Requires a USER API key with edit access to the meeting.
 - [POST /public/v1/max/meetings/{meetingId}/notes/enhance](https://docs.getfrontline.ai/reference/openapi/max-meetings/enhancemaxmeetingnotes.md): Re-runs note generation over the transcript, optionally against a different note template or output language. Use this after switching templates, or when the first pass missed something. The meeting m
 - [GET /public/v1/max/meetings/{meetingId}/transcript](https://docs.getfrontline.ai/reference/openapi/max-meetings/getmaxmeetingtranscript.md): Returns the verbatim transcript as time-ordered segments with speaker attribution. Available once the notetaker has finished processing the recording. Requires a USER API key.
 - [GET /public/v1/max/meetings/action-items](https://docs.getfrontline.ai/reference/openapi/max-meetings/listmaxmeetingactionitems.md): Returns the open action items from all of the caller's meetings in one feed, each carrying the meeting it came from. Filter by folder, date range, or text. Items promoted to to-dos leave this feed. Re
 - [POST /public/v1/max/meetings/{meetingId}/notes/action-items](https://docs.getfrontline.ai/reference/openapi/max-meetings/createmaxmeetingactionitem.md): Adds an action item to a meeting's notes, alongside the ones the AI extracted. Requires a USER API key with edit access to the meeting.
 - [PATCH /public/v1/max/meetings/{meetingId}/notes/action-items/{itemId}](https://docs.getfrontline.ai/reference/openapi/max-meetings/updatemaxmeetingactionitem.md): Rewrites an action item's text or moves it in the list. Requires a USER API key with edit access to the meeting.
 - [DELETE /public/v1/max/meetings/{meetingId}/notes/action-items/{itemId}](https://docs.getfrontline.ai/reference/openapi/max-meetings/deletemaxmeetingactionitem.md): Removes an action item from the meeting's notes. Requires a USER API key with edit access to the meeting.
 - [POST /public/v1/max/meetings/{meetingId}/notes/action-items/{itemId}/promote](https://docs.getfrontline.ai/reference/openapi/max-meetings/promotemaxmeetingactionitem.md): Turns an action item into a real to-do with an owner and a due date, optionally linked to a CRM record. The action item is consumed in the process and disappears from the meeting's list. Requires a US
 - [GET /public/v1/max/meetings/{meetingId}/recording/{mediaType}](https://docs.getfrontline.ai/reference/openapi/max-meetings/getmaxmeetingrecordingurl.md): Returns a short-lived signed URL for the meeting's video or audio recording. The link expires, so fetch it when you are about to play or download, not ahead of time. Requires a USER API key.
 - [GET /public/v1/max/meetings/folders](https://docs.getfrontline.ai/reference/openapi/max-meetings/listmaxmeetingfolders.md): Returns the folders the caller can see, including the system folders every user gets. Folders both organise meetings and decide who else can see them. Requires a USER API key.
 - [POST /public/v1/max/meetings/folders](https://docs.getfrontline.ai/reference/openapi/max-meetings/createmaxmeetingfolder.md): Creates a folder. A fixed folder only receives meetings you file into it; an AI-routed folder also collects new meetings that match its routing description automatically. Requires a USER API key.
 - [PATCH /public/v1/max/meetings/folders/{folderId}](https://docs.getfrontline.ai/reference/openapi/max-meetings/updatemaxmeetingfolder.md): Updates a folder's name, appearance, routing behaviour, default note template, or who it is shared with. Requires a USER API key with edit access to the folder.
 - [GET /public/v1/max/meetings/folders/{folderId}/meetings](https://docs.getfrontline.ai/reference/openapi/max-meetings/listmaxmeetingfoldermeetings.md): Returns the meetings filed in a folder. When the folder is shared with the members-see-all setting, this includes meetings owned by other members. Filter with status, platform, search, and the from/to
 - [GET /public/v1/max/meetings/templates](https://docs.getfrontline.ai/reference/openapi/max-meetings/listmaxmeetingtemplates.md): Returns the note templates available to the caller: the built-in system templates plus any custom ones. Pass type=custom or type=system to return only one set. A template defines the sections the AI w
 - [POST /public/v1/max/meetings/templates](https://docs.getfrontline.ai/reference/openapi/max-meetings/createmaxmeetingtemplate.md): Creates a custom note template from a list of sections. Each section's description tells the AI what to look for in the transcript, so be specific. Requires a USER API key.
 - [POST /public/v1/max/meetings/templates/{templateId}/duplicate](https://docs.getfrontline.ai/reference/openapi/max-meetings/duplicatemaxmeetingtemplate.md): Copies a template into a new editable one. This is how you customise a system template, since system templates themselves are read-only. Requires a USER API key.
 - [PATCH /public/v1/max/meetings/templates/{templateId}](https://docs.getfrontline.ai/reference/openapi/max-meetings/updatemaxmeetingtemplate.md): Updates a custom template's name or sections. System templates cannot be edited — duplicate one first. Requires a USER API key.
 - [DELETE /public/v1/max/meetings/templates/{templateId}](https://docs.getfrontline.ai/reference/openapi/max-meetings/deletemaxmeetingtemplate.md): Deletes a custom note template. Meetings and folders using it fall back to the default template. System templates cannot be deleted. Requires a USER API key.
 - [GET /public/v1/max/meetings/settings](https://docs.getfrontline.ai/reference/openapi/max-meetings/getmaxmeetingsettings.md): Returns the caller's notetaker preferences: which meetings the bot joins automatically, transcription and note languages, the default note template, and pre-meeting reminders. Read-only — changing the
## Max Tasks

 - [GET /public/v1/max/periodic-tasks](https://docs.getfrontline.ai/reference/openapi/max-tasks/listmaxperiodictasks.md): Returns the calling user's Max automations: scheduled tasks that run on a cron expression, and event tasks that fire when something happens in a connected integration. Requires a USER API key.
 - [POST /public/v1/max/periodic-tasks](https://docs.getfrontline.ai/reference/openapi/max-tasks/createmaxperiodictask.md): Creates a Max automation. A scheduled task needs a cron expression; an event task needs a trigger from `GET /max/periodic-tasks/triggers`, and often a resource id identifying which mailbox, calendar,
 - [GET /public/v1/max/periodic-tasks/triggers](https://docs.getfrontline.ai/reference/openapi/max-tasks/listmaxperiodictasktriggers.md): Returns the event triggers the caller can build automations on, based on which integrations they have connected. Use this before creating an event task, since the available triggers differ per user. R
 - [GET /public/v1/max/periodic-tasks/{id}](https://docs.getfrontline.ai/reference/openapi/max-tasks/getmaxperiodictask.md): Returns one automation with its schedule or trigger, prompt, and enabled state. Requires a USER API key.
 - [PUT /public/v1/max/periodic-tasks/{id}](https://docs.getfrontline.ai/reference/openapi/max-tasks/updatemaxperiodictask.md): Replaces an automation's configuration. Send the whole task, not a patch — this is also how a task is enabled or disabled. Requires a USER API key.
 - [DELETE /public/v1/max/periodic-tasks/{id}](https://docs.getfrontline.ai/reference/openapi/max-tasks/deletemaxperiodictask.md): Permanently deletes a Max automation. Requires a USER API key.
 - [POST /public/v1/max/periodic-tasks/{id}/execute](https://docs.getfrontline.ai/reference/openapi/max-tasks/runmaxperiodictask.md): Runs a scheduled task immediately without waiting for its next cron slot, which is the fastest way to check that a new automation does what you expect. Event tasks cannot be run this way. Requires a U
## Max Playbooks

 - [GET /public/v1/max/playbooks](https://docs.getfrontline.ai/reference/openapi/max-playbooks/listmaxplaybooks.md): Returns the calling user's Max playbooks — reusable instruction sets that steer how Max handles a recurring task — along with the account's playbook quota. Requires a USER API key.
 - [POST /public/v1/max/playbooks](https://docs.getfrontline.ai/reference/openapi/max-playbooks/createmaxplaybook.md): Creates a playbook. Chat playbooks describe a workflow Max should follow when asked; auto-drafting playbooks shape the email replies Max writes for you. Requires a USER API key.
 - [GET /public/v1/max/playbooks/{playbookId}](https://docs.getfrontline.ai/reference/openapi/max-playbooks/getmaxplaybook.md): Returns one playbook with its full instructions and assignment state. Requires a USER API key.
 - [PATCH /public/v1/max/playbooks/{playbookId}](https://docs.getfrontline.ai/reference/openapi/max-playbooks/updatemaxplaybook.md): Updates a playbook's name, instructions, or enabled state. Only the fields you send are changed. Requires a USER API key.
 - [DELETE /public/v1/max/playbooks/{playbookId}](https://docs.getfrontline.ai/reference/openapi/max-playbooks/deletemaxplaybook.md): Permanently deletes a playbook. Requires a USER API key.
 - [POST /public/v1/max/playbooks/{playbookId}/assignment](https://docs.getfrontline.ai/reference/openapi/max-playbooks/togglemaxplaybookassignment.md): Attaches a playbook to the caller's Max, or detaches it. An unassigned playbook still exists but has no effect on how Max behaves. Requires a USER API key.
## Max Settings

 - [GET /public/v1/max/settings/overview](https://docs.getfrontline.ai/reference/openapi/max-settings/getmaxoverviewsettings.md): Returns the assistant's headline state for the calling user: whether Max is enabled, the WhatsApp and Slack connections, and a summary of connected accounts. This is the best first call for understand
 - [PUT /public/v1/max/settings/overview](https://docs.getfrontline.ai/reference/openapi/max-settings/updatemaxoverviewsettings.md): Turns the calling user's Max assistant on or off, and updates the phone number used for WhatsApp. Only the fields you send are changed. Requires a USER API key.
 - [GET /public/v1/max/settings/advanced](https://docs.getfrontline.ai/reference/openapi/max-settings/getmaxadvancedsettings.md): Returns how Max behaves and speaks for the calling user: language, personality, timezone, and the free-form custom instructions it follows. Requires a USER API key.
 - [PUT /public/v1/max/settings/advanced](https://docs.getfrontline.ai/reference/openapi/max-settings/updatemaxadvancedsettings.md): Changes Max's language, personality, timezone, or custom instructions for the calling user. Custom instructions are the main lever for steering tone and defaults across every conversation. Requires a
 - [GET /public/v1/max/settings/scheduling](https://docs.getfrontline.ai/reference/openapi/max-settings/getmaxschedulingsettings.md): Returns the meeting-booking preferences Max uses when it schedules on the caller's behalf: default duration and buffers, working hours, and the scheduling links it can share. Requires a USER API key.
 - [PUT /public/v1/max/settings/scheduling](https://docs.getfrontline.ai/reference/openapi/max-settings/updatemaxschedulingsettings.md): Updates the calling user's meeting-booking preferences and scheduling instructions. Only the fields you send are changed. Requires a USER API key.
 - [GET /public/v1/max/settings/knowledge-base](https://docs.getfrontline.ai/reference/openapi/max-settings/getmaxknowledgebasesettings.md): Returns whether Max may consult the caller's personal knowledge base when answering. Requires a USER API key.
 - [PUT /public/v1/max/settings/knowledge-base](https://docs.getfrontline.ai/reference/openapi/max-settings/updatemaxknowledgebasesettings.md): Enables or disables Max's use of the caller's personal knowledge base. Requires a USER API key.
 - [GET /public/v1/max/settings/email/{connectedAccountId}](https://docs.getfrontline.ai/reference/openapi/max-settings/getmaxemailsettings.md): Returns the per-mailbox email configuration: auto-drafting and its sensitivity, the labels Max applies, signature handling, and whether contacts are created automatically from correspondents. The `con
 - [PUT /public/v1/max/settings/email/{connectedAccountId}](https://docs.getfrontline.ai/reference/openapi/max-settings/updatemaxemailsettings.md): Updates one connected mailbox's email behaviour — auto-drafting, labels, signature, and contact auto-creation. Settings are per mailbox, so a user with several mailboxes configures each one separately
## Max Proactive

 - [GET /public/v1/max/settings/proactive](https://docs.getfrontline.ai/reference/openapi/max-proactive/getmaxproactivesettings.md): Returns whether Max may reach out unprompted, and under what conditions: the channel it uses, how often it may interrupt, the hours it is allowed to write in, whether weekends are fair game, which eve
## Max Connectors

 - [GET /public/v1/max/integrations](https://docs.getfrontline.ai/reference/openapi/max-connectors/listmaxintegrations.md): Returns the calling user's personal connected accounts — the mailboxes, calendars, and other services Max can act on for them. Users often call these 'my connectors'. These are distinct from the accou
 - [GET /public/v1/max/integrations/{integrationId}](https://docs.getfrontline.ai/reference/openapi/max-connectors/getmaxintegration.md): Returns one personal connected account with its connection health and which of its tools are enabled for Max. An expired integration needs to be reconnected in the app before Max can use it again. Rea
## Account

 - [GET /public/v1/me](https://docs.getfrontline.ai/reference/openapi/account/getme.md): Returns the account and (for USER keys) user attached to the API key. Use this to validate a key and inspect the calling identity.
 - [GET /public/v1/account/sequence-settings](https://docs.getfrontline.ai/reference/openapi/account/getaccountsequencesettings.md): Returns the account-level Sequence settings: allowMultipleActiveSequences, maxConcurrentActiveSequences, the account's defaultDeliveryWindow override (null if never set), accountTimezone, effectiveDel
## Users

 - [GET /public/v1/users](https://docs.getfrontline.ai/reference/openapi/users/listusers.md): Lists the users in your account. Use to resolve user IDs for user-relation fields and task assignment. Requires a USER API key.
## Billing

 - [GET /public/v1/billing](https://docs.getfrontline.ai/reference/openapi/billing/getbillingplan.md): Returns billing plan information including plan name, credits per month, credits used, and subscription renewal date.
 - [GET /public/v1/billing/usage](https://docs.getfrontline.ai/reference/openapi/billing/getstudiousage.md): Returns Studio (account-level) usage: credits used vs limit, counts of agents, workflows, flows, users and knowledge bases, current plan, subscription details, and upcoming plan changes. Requires a US
 - [GET /public/v1/billing/credits/history](https://docs.getfrontline.ai/reference/openapi/billing/getcredithistory.md): Returns daily credit consumption broken down by AI model. Optionally filter with start_date and end_date (ISO dates).
 - [GET /public/v1/billing/max/usage](https://docs.getfrontline.ai/reference/openapi/billing/getmaxusage.md): Returns the account's Max subscription state: the current plan and its features, renewal and status, seat and add-on license pools with how many of each are assigned, pricing, feature limits, and any
 - [GET /public/v1/billing/max/plans](https://docs.getfrontline.ai/reference/openapi/billing/getmaxplans.md): Returns the Max plans that can be bought, with their prices. Requires a USER API key belonging to an OWNER or ADMIN.
 - [GET /public/v1/billing/max/catalog](https://docs.getfrontline.ai/reference/openapi/billing/getmaxcatalog.md): Returns everything Max sells: plans, capability add-ons and additional credit bags, with their prices. Requires a USER API key belonging to an OWNER or ADMIN.
 - [GET /public/v1/billing/max/seats/matrix](https://docs.getfrontline.ai/reference/openapi/billing/getmaxseatmatrix.md): Returns one row per account user showing whether they hold a Max seat and which capability licenses they hold — `MAX_MEETINGS` for the notetaker and `MAX_EMAIL_AGENT` for inbox labeling, drafting and
 - [PUT /public/v1/billing/max/assignments](https://docs.getfrontline.ai/reference/openapi/billing/setmaxassignments.md): Declaratively saves who holds a Max seat and who holds each capability license. `seatUserIds` is the complete set of seat holders, so any user left out loses their seat. Inside `licenses`, an omitted
## Data & Sync

 - [GET /public/v1/settings/email](https://docs.getfrontline.ai/reference/openapi/data-and-sync/getaccountemailsettings.md): Returns the account-wide email defaults every user inherits: whether contacts seen in mail are created automatically and under what conditions, whether those contacts are linked to People records, who
 - [GET /public/v1/settings/whatsapp](https://docs.getfrontline.ai/reference/openapi/data-and-sync/getaccountwhatsappsettings.md): Returns the account-wide defaults for personal WhatsApp sync: whether contacts are created automatically, which chats are in scope, and whether muted, archived, or group chats are excluded. These gove
 - [GET /public/v1/settings/calendar](https://docs.getfrontline.ai/reference/openapi/data-and-sync/getaccountcalendarsettings.md): Returns the account-wide calendar defaults every user inherits: whether attendees on calendar events become contacts, whether internal colleagues are skipped in favour of external participants only, a
 - [GET /public/v1/settings/meetings](https://docs.getfrontline.ai/reference/openapi/data-and-sync/getaccountmeetingsettings.md): Returns the account-wide notetaker defaults every user inherits: the bot's display name and avatar, the recording region, how long recordings and transcripts are kept, custom vocabulary the transcribe
## Meeting Analytics

 - [GET /public/v1/meetings/analytics](https://docs.getfrontline.ai/reference/openapi/meeting-analytics/getaccountmeetinganalytics.md): Returns meeting volume and duration across the whole account, broken down by day, platform, source, and user, plus the raw meeting list so you can bucket by hour or weekday yourself. Narrow the scope
## AI Models

 - [GET /public/v1/ai-models](https://docs.getfrontline.ai/reference/openapi/ai-models/listaimodels.md): Returns available AI models. Use these IDs when configuring an agent setting.
 - [GET /public/v1/ai-models/default](https://docs.getfrontline.ai/reference/openapi/ai-models/getdefaultaimodel.md): Returns the default AI model for the requested model type.
 - [GET /public/v1/ai-models/{aiModelId}](https://docs.getfrontline.ai/reference/openapi/ai-models/getaimodel.md): Returns one AI model by ID.
## User Tasks

 - [GET /public/v1/tasks](https://docs.getfrontline.ai/reference/openapi/user-tasks/listtasks.md): Lists user tasks — the account 'To-dos' inbox. Filter by `assigned_to_me`, `completed`, `object_name` (tasks linked to an object), or `people_ids`/`team_ids`. Each task includes assignees and the link
 - [POST /public/v1/tasks](https://docs.getfrontline.ai/reference/openapi/user-tasks/createtask.md): Creates a user task (to-do). Optionally link it to an object record by passing `object_name` + `row_id` together. `assignee_ids` are user IDs (see GET /users). Requires a USER API key.
 - [GET /public/v1/tasks/{taskId}](https://docs.getfrontline.ai/reference/openapi/user-tasks/gettask.md): Returns a single user task by ID. Requires a USER API key.
 - [PATCH /public/v1/tasks/{taskId}](https://docs.getfrontline.ai/reference/openapi/user-tasks/updatetask.md): Updates a task. Send only the fields to change. Pass `due_date: null` to clear the due date, or `object_name: null` + `row_id: null` to unlink the related object record. Requires a USER API key.
 - [DELETE /public/v1/tasks/{taskId}](https://docs.getfrontline.ai/reference/openapi/user-tasks/deletetask.md): Permanently deletes a user task. Requires a USER API key.
 - [POST /public/v1/tasks/{taskId}/complete](https://docs.getfrontline.ai/reference/openapi/user-tasks/completetask.md): Marks a task as completed. Only a user assigned to the task can complete it. Requires a USER API key.
 - [POST /public/v1/tasks/{taskId}/uncomplete](https://docs.getfrontline.ai/reference/openapi/user-tasks/uncompletetask.md): Clears the completed state of a task. Requires a USER API key.
## Guidance

 - [GET /public/v1/guidance/visual-options](https://docs.getfrontline.ai/reference/openapi/guidance/getvisualoptions.md): Returns the allowlists used when creating objects, tables, fields, and select options: valid icon keys, icon colors, option colors, and tag/relation modes. Sourced live from backend constants, so valu
 - [GET /public/v1/guidance/fields](https://docs.getfrontline.ai/reference/openapi/guidance/getfieldguidance.md): Returns a markdown reference for every field/column type (string, number, boolean, date, dateOnly, select, relation), its metadata shape (formats, currency, decimals, modes), and best practices. Gener
 - [GET /public/v1/guidance/nodes](https://docs.getfrontline.ai/reference/openapi/guidance/listnodetypes.md): Returns every node type with flags for where it is valid (agent flow vs automation workflow) and whether it may have multiple outgoing edges. Use this to pick valid node types before building a flow o
 - [GET /public/v1/guidance/nodes/{nodeType}](https://docs.getfrontline.ai/reference/openapi/guidance/getnodeguidance.md): Returns markdown guidance for configuring a single node type (e.g. TOOLS_AI, API, CONDITIONAL_ROUTING). Content is published per node type and editable without a deploy; returns empty guidance when no
