Lelemon
  • Get started
  • Use cases
  • Guides
  • API basics
  • Webhooks
  • SDK, CLI and MCP
  • API reference
  • Changelog
  • v1 (legacy)
Information
Me
    Retrieve the current keyget
API keys
    List scopesget
Agents
    List agentsgetCreate an agentpostRetrieve an agentgetDelete an agentdeleteUpdate an agentpatchActivate an agentpostPause an agentpostList versionsgetRetrieve a versiongetRestore a versionpostList the fixed facts of an agentgetSave a fixed fact of an agentputForget a fixed fact of an agentdelete
Models and templates
    List agent templatesgetList modelsget
Subaccounts
    List subaccountsgetCreate a subaccountpostRetrieve a subaccountgetDelete a subaccountdeleteUpdate a subaccountpatchGive a subaccount its own keypost
WhatsApp
    List WhatsApp connectionsgetCreate a WhatsApp connection linkpostRetrieve a WhatsApp connectiongetRevoke a pending WhatsApp connectiondeleteList WhatsApp phone numbersgetRetrieve a WhatsApp phone numbergetDisconnect a WhatsApp phone numberdeleteChange the agent, label or state of a numberpatchRead the cart and catalog settings of a numbergetTurn the cart button or the catalog icon of a number on or offpatch
Actions
    List actionsgetCreate an actionpostRead the current authorization textgetRotate the signing secret of your actionspostRetrieve the signing secret of an actiongetRetrieve an actiongetDelete an actiondeleteUpdate an actionpatchTest an actionpostRead the approval floor of a shared actiongetSet the approval floor of a shared actionput
MCP servers
    List MCP serversgetConnect an MCP serverpostRetrieve an MCP servergetDisconnect an MCP serverdeleteUpdate an MCP serverpatchList the tools of an MCP servergetDiscover toolspostRead the run identity of an MCP servergetTurn on or rotate the run identity of an MCP serverpostTurn off the run identity of an MCP serverdelete
Data connectors
    Get the lelemon-connector/v1 formatgetValidate a connector documentpostList data connectorsgetRegister a data connectorpostRetrieve a data connectorgetDelete a data connectordeleteUpdate a data connectorpatchRetrieve the signing secret of a data connectorgetRotate the signing secret of a data connectorpostCheck a data connectorpostRetrieve the manifest of a data connectorgetSearch accounts by emailgetRead the card of an account livegetReveal one masked value of an accountpostGet the link of an account actionpostRead a view livegetList who looked at what through a connectorget
Skills
    List skillsgetCreate a skillpostRetrieve a skillgetDelete a skilldeleteUpdate a skillpatch
Agent tools
    List an agent's toolsgetGrant a toolputRemove a tooldelete
Approvals
    List approvalsgetRetrieve an approvalgetApprove an actionpostReject an actionpostAsk for a human review of a decisionpost
Automated decisions
    List automated decisionsgetRetrieve an automated decisiongetAsk for a human review of an automated decisionpost
Team questions
    List team questionsgetRetrieve a team questiongetRead a team question with its contextgetAnswer a team questionpost
Runs
    Give an agent a jobpostList runsgetRetrieve a rungetCancel a runpostAnswer a run that asked somethingpost
Schedules
    Schedule a job for an agentpostList scheduled tasksgetRetrieve a scheduled taskgetDelete a scheduled taskdeleteChange a scheduled taskpatchFire a scheduled task nowpost
Pipelines
    List pipelinesgetCreate a pipelinepostRetrieve a pipelinegetDelete a pipelinedeleteUpdate a pipelinepatchClone a pipelinepostReorder the stages of a pipelinepost
Stages
    List the stages of a pipelinegetCreate a stagepostRetrieve a stagegetDelete a stagedeleteUpdate a stagepatchMake a stage the entry stagepost
Fields
    List the fields of a pipelinegetCreate a fieldpostRetrieve a fieldgetDelete a fielddeleteUpdate a fieldpatch
Routing rules
    List the routing rules of a pipelinegetCreate a routing rulepostRetrieve a routing rulegetDelete a routing ruledeleteUpdate a routing rulepatch
Knowledge
    List collectionsgetCreate a collectionpostSearch the knowledgepostRetrieve a collectiongetDelete a collectiondeleteUpdate a collectionpatchList documentsgetAdd a documentpostRetrieve a documentgetDelete a documentdeleteUpdate a documentpatchLet an agent search a collectionputStop an agent from searching a collectiondelete
Contacts
    List contactsgetCreate a contactpostCreate or update a contact by your own idputRetrieve a contactgetErase a contactdeleteUpdate a contactpatch
Contact fields
    List the contact fieldsgetCreate a contact fieldpostRetrieve a contact fieldgetDelete a contact fielddeleteUpdate a contact fieldpatch
Companies
    List companiesgetCreate a companypostRetrieve a companygetDelete a companydeleteUpdate a companypatch
Lead forms
    List lead formsgetCreate a lead formpostRetrieve a lead formgetDelete a lead formdeleteUpdate a lead formpatch
Suppressions
    Retrieve a suppressionget
Cases
    List casesgetOpen a casepostRetrieve a casegetDelete a casedeleteUpdate a casepatchMove a case to a stagepostAssign a case to a memberpostClose a casepostReopen a casepostTake control of a casepostHand a case back to the agentpostMark a case as readpostMove several cases to a stagepostArchive a casepostBring an archived case backpostMute the contact of a casepostUnmute the contact of a casepostHand a case to a personpostReveal a sensitive field of a casepostEscalate a case to the technical teampostList the escalations of a caseget
Case queue
    Read the attention queue of a memberget
Contact events
    List the events of a contactgetReport a contact eventpostRetrieve a contact eventget
Case reminders
    List the reminders of a casegetAdd a reminder to a casepost
Reminders
    Retrieve a remindergetDelete a reminderdeleteEdit a reminderpatchComplete a reminderpostDismiss a reminderpost
Presence
    Report who is online in your apppostRead the presence settinggetTurn presence on or offput
Organization
    Get the organizationgetRename the organizationpatchGet the organization settingsgetChange the organization settingspatchGet the company profilegetChange the company profilepatch
Case notes
    List the notes of a casegetAdd a note to a casepostRetrieve a notegetDelete a notedeleteEdit a notepatch
Case attachments
    List the files of a casegetUpload a file to a casepostRetrieve a file of a casegetDelete a file of a casedeleteGet the download link of a fileget
Files
    List filesgetUpload a filepostRetrieve a filegetDelete a filedelete
Case messages
    List the messages of a casegetAdd a message to a casepostRedact a messagepost
Case turns
    List the turns the agent took in a caseget
Usage
    Get the usage of your agentsget
Case metrics
    List the times of the cases that changed in a rangeget
Budgets
    List the budgetsgetCreate a monthly budgetpostGet a budgetgetDelete a budgetdeleteChange a budgetpatch
Members
    List the active members of the organizationgetList who invited, changed the role of or removed membersgetRead whether a team member is availablegetMark a team member available or awayputChange the role of a memberpatchChange which cases a member seespatchRemove a member from the organizationdelete
Invitations
    List the invitations of the organizationgetInvite a person to the organizationpostResend an invitationpostCancel an invitationpost
Scheduling
    List the agendasgetCreate an agendapostRetrieve an agendagetUpdate an agendapatchList the team of an agendagetAdd a person to the team of an agendapostRemove a person from the team of an agendadeleteUpdate a person in the team of an agendapatchRead the free slots of an agendagetList meetingsgetBook a meetingpostRetrieve a meetinggetCancel a meetingpostMove a meeting to another slotpost
Webhook endpoints
    List webhook endpointsgetCreate a webhook endpointpostRetrieve a webhook endpointgetDelete a webhook endpointdeleteUpdate a webhook endpointpatchRotate the signing secretpostSend a test eventpostList the deliveries of an endpointget
Events
    Resend an eventpostList the event typesget
Recipient allowlist
    Get the recipient allowlistgetReplace the recipient allowlistput
WhatsApp templates
    List templatesgetCreate a templatepostSync template statusespostRetrieve a templategetDelete a templatedeleteUpdate a templatepatchRender a templatepostSend a test messagepost
WhatsApp messages
    Send a templatepostRetrieve a template messagegetCancel a scheduled messagepost
Triggers
    List triggersgetCreate a triggerpostRetrieve a triggergetDelete a triggerdeleteUpdate a triggerpatchList the runs of a triggerget
Opt-outs
    List opt-outsgetOpt a contact outputClear an opt-outdelete
Campaigns
    List campaignsgetCreate a campaignpostRetrieve a campaigngetDelete a campaigndeleteUpdate a campaignpatchPreview a campaignpostLaunch a campaignpostPause a campaignpostResume a campaignpostCancel a campaignpostList recipientsget
Email domains
    List the sender domainsgetAdd a sender domainpostGet a sender domain with its status and DNS recordsgetRemove a sender domaindeleteChange the default sender or the inbound agent of a domainpatchCheck the DNS records nowpost
Email messages
    Write first by emailpostRetrieve an email messageget
Teams
    List the teamsgetCreate a teampostRetrieve a teamgetDelete a teamdeleteUpdate a teampatchMerge another team into this onepostMove a pipeline into a teamputAdd a member to a team or change their role in itputRemove a member from a teamdelete
Linear
    Get the Linear connectiongetConnect LinearputDisconnect LineardeleteUpdate the Linear connectionpatch
Schemas
powered by Zudoku
Lelemon API
Lelemon API

Schemas


UpdateSettings

UpdateBasicInfo

UpdateCompanyProfile

UpsertAgentFact

AgendaTimeRange

start
​string · pattern: ^([01]\d|2[0-3]):([0… · required
end
​string · pattern: ^([01]\d|2[0-3]):([0… · required

AvailableHours

​AgendaTimeRange[]
​AgendaTimeRange[]
​AgendaTimeRange[]
​AgendaTimeRange[]
​AgendaTimeRange[]
​AgendaTimeRange[]
​AgendaTimeRange[]

CreateWebhookEndpoint

url
​string · maxLength: 2048 · required

Public http(s) address that receives the events.

enabledEvents
​string[] · minItems: 1 · maxItems: 50 · unique · required

Event types to receive, or "*" for all. See GET /v2/event-types.

description
​string · maxLength: 500
apiVersion
​string · enum
Enum values:
2026-10-29
Default: 2026-10-29
scope
​string · enum

self receives the events of this organization. customers receives the events of its subaccounts.

Enum values:
self
customers
Default: self

UpdateWebhookEndpoint

url
​string · maxLength: 2048
enabledEvents
​string[] · minItems: 1 · maxItems: 50 · unique
description
​string | null · maxLength: 500
apiVersion
​string · enum
Enum values:
2026-10-29
scope
​string · enum
Enum values:
self
customers
status
​string · enum

Set enabled to turn on an endpoint that was disabled.

Enum values:
enabled
disabled

ErrorFix

summary
​string · required

What to do, in one sentence a model can follow.

action
​string · enum · required

set a parameter, remove one, retry the same request, call another endpoint first, or stop because only a person can fix it.

Enum values:
set
remove
retry
call
stop
docUrl
​string · required
param
​string

The header, query parameter or body field the fix is about. For invalid_request and required_fields_missing it is the field of the problem itself.

value
​object

The value to put in param, when the fix is the same for everyone.

endpoint
​string

The call to make first, as METHOD /v2/path.

BudgetExceededDetails

id
​string · required
scope
​string · enum · required
Enum values:
organization
subaccount
agent
contact
subjectId
​string | null · required

The sub_, agt_ or ctc_ id the budget covers. null for the organization.

limitConversations
​integer · required

Monthly limit in conversations.

usedConversations
​integer · required

Conversations used this month.

resetsAt
​string · date-time · required

When the month ends and the used conversations go back to zero. Retry-After counts the seconds to this moment.

Problem

type
​string · required
title
​string · required
status
​integer · required
code
​string · enum · required
Enum values:
invalid_request
unknown_field
invalid_cursor
api_key_invalid
unauthorized
scope_missing
agent_not_exposed
forbidden
detail
​string · required
docUrl
​string · required
requestId
​string · required
param
​string
​object

The next step for this error code. It comes from the error catalog and never repeats what you sent.

​object

Only with budget_exceeded: which budget stopped the agent, its limit, what was spent and when the month resets.

MeOrganization

id
​string · required
name
​string · required
kind
​string · enum · required

subaccount when the key belongs to a subaccount or acts on one with Lelemon-Subaccount.

Enum values:
organization
subaccount
platformId
​string

The platform that owns this subaccount.

MeKey

id
​string · required
name
​string · required
prefix
​string · required

Me

object
​string · enum · required
Enum values:
me
​MeOrganization · required
​MeKey · required
scopes
​string[] · required

Scope

object
​string · enum · required
Enum values:
scope
id
​string · required
description
​string · required

ScopeList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Scope[] · required

AgentModelInput

model
​string · minLength: 1 · maxLength: 200 · required

Public model id from GET /v2/models. Responses return the same id.

temperature
​number · min: 0 · max: 2
maxOutputTokens
​integer · min: 1 · max: 200000

Most tokens the model may write in one answer.

effort
​string · enum
Enum values:
low
medium
high
xhigh
max
thinking
​string · enum

off is not available on every model; the answer is 422 when it is not.

Enum values:
adaptive
off
alwaysLoadedTools
​string[] · maxItems: 50

ModelConfigInput

model
​string · minLength: 1 · maxLength: 200 · required

Public model id from GET /v2/models. Responses return the same id.

temperature
​number · min: 0 · max: 2
maxOutputTokens
​integer · min: 1 · max: 200000

Most tokens the model may write in one answer.

effort
​string · enum
Enum values:
low
medium
high
xhigh
max
thinking
​string · enum

off is not available on every model; the answer is 422 when it is not.

Enum values:
adaptive
off
alwaysLoadedTools
​string[] · maxItems: 50
​object

Answers when the main model fails.

BehaviorInput

greeting
​string · maxLength: 2000
personality
​string · maxLength: 2000
tone
​string · maxLength: 500
displayName
​string · maxLength: 100

The name the agent uses to introduce itself.

CreateAgent

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: fromTemplate
type = object · requires: name, instructions, llmConfig
Properties for Variant 1:
fromTemplate
​string · maxLength: 60 · required

A template from GET /v2/agent-templates.

audience
​string · enum

customers: the agent talks to your customers. internal: a copilot that answers your team and can use the tools of your data connector (dct_) to read your back office. Creating an internal one needs the scope agents:internal (403 scope_missing otherwise) and it cannot be made from a template. It cannot be changed later.

Enum values:
customers
internal
Default: customers
name
​string · minLength: 1 · maxLength: 255

Required unless fromTemplate is set.

description
​string · maxLength: 1000
instructions
​string · minLength: 1 · maxLength: 200000

How the agent behaves. Required unless fromTemplate is set. May hold {{name}} placeholders.

​object

Values for the {{name}} placeholders in the instructions, and any fact the agent should know. Replaces the whole map. Every placeholder needs a value or the answer is 422 template_variable_missing.

​object

Required unless fromTemplate is set.

maxTokens
​integer · min: 1000 · max: 5000000
maxIterations
​integer · min: 1 · max: 50
channels
​string[]

Where the agent answers. An empty list means every channel.

Enum values:
whatsapp
api
web
email
​BehaviorInput
avatar
​string · minLength: 1 · maxLength: 50

AgentModel

model
​string · required
temperature
​number
maxOutputTokens
​integer
effort
​string · enum
Enum values:
low
medium
high
xhigh
max
thinking
​string · enum
Enum values:
adaptive
off
alwaysLoadedTools
​string[]

ModelConfig

model
​string · required
temperature
​number
maxOutputTokens
​integer
effort
​string · enum
Enum values:
low
medium
high
xhigh
max
thinking
​string · enum
Enum values:
adaptive
off
alwaysLoadedTools
​string[]
​AgentModel

Agent

object
​string · enum · required
Enum values:
agent
id
​string · required
name
​string · required
audience
​string · enum · required

customers: talks to your customers. internal: a copilot for your team created with the scope agents:internal.

Enum values:
customers
internal
description
​string | null · required
status
​string · enum · required
Enum values:
draft
active
paused
archived
version
​integer · required

Goes up on every change. Send it back as expectedVersion.

instructions
​string · required

As you wrote them, with the {{name}} placeholders still in place.

​object | null · required
​ModelConfig · required
maxTokens
​integer · required
maxIterations
​integer · required
channels
​string[] · required
Enum values:
whatsapp
api
web
email
​object · required
avatar
​string | null · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

AgentList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Agent[] · required

UpdateAgent

name
​string · minLength: 1 · maxLength: 255
description
​string · maxLength: 1000
instructions
​string · minLength: 1 · maxLength: 200000

Creates a version. May hold {{name}} placeholders; they are filled with variables.

​object

Values for the {{name}} placeholders in the instructions, and any fact the agent should know. Replaces the whole map. Every placeholder needs a value or the answer is 422 template_variable_missing. Creates a version.

​ModelConfigInput
maxTokens
​integer · min: 1000 · max: 5000000
maxIterations
​integer · min: 1 · max: 50
channels
​string[]

Where the agent answers. An empty list means every channel.

Enum values:
whatsapp
api
web
email
​object

Merged into the current behaviors, key by key.

avatar
​string | null · minLength: 1 · maxLength: 50
expectedVersion
​integer · min: 1

The version you read. If someone saved first the answer is 409 agent_version_conflict and nothing is written.

ReadinessGap

code
​string · enum · required
Enum values:
no_stage
not_entry_stage
no_api_channel
message
​string · required

Readiness

ready
​boolean · required

True when nothing keeps people from reaching the agent.

​ReadinessGap[] · required

AgentWithReadiness

object
​string · enum · required
Enum values:
agent
id
​string · required
name
​string · required
audience
​string · enum · required

customers: talks to your customers. internal: a copilot for your team created with the scope agents:internal.

Enum values:
customers
internal
description
​string | null · required
status
​string · enum · required
Enum values:
draft
active
paused
archived
version
​integer · required

Goes up on every change. Send it back as expectedVersion.

instructions
​string · required

As you wrote them, with the {{name}} placeholders still in place.

​object | null · required
​ModelConfig · required
maxTokens
​integer · required
maxIterations
​integer · required
channels
​string[] · required
Enum values:
whatsapp
api
web
email
​object · required
avatar
​string | null · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required
​Readiness · required

VersionAuthor

type
​string · enum · required
Enum values:
user
api_key
unknown
id
​string | null · required

AgentVersion

object
​string · enum · required
Enum values:
agent_version
id
​string · required
agentId
​string · required
version
​integer · required

The agent version this one left in place.

​VersionAuthor · required
chars
​integer · required

Length of the instructions.

createdAt
​string · date-time · required

AgentVersionList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​AgentVersion[] · required

AgentVersionWithText

object
​string · enum · required
Enum values:
agent_version
id
​string · required
agentId
​string · required
version
​integer · required

The agent version this one left in place.

​VersionAuthor · required
chars
​integer · required

Length of the instructions.

createdAt
​string · date-time · required
instructions
​string · required

The instructions as written, with placeholders in place.

​object | null · required

AgentFact

object
​string · enum · required
Enum values:
agent_fact
key
​string · required
value
​string · required
source
​string · enum · required

manual when someone wrote it through the API or the dashboard, auto when the agent saved it on its own.

Enum values:
manual
auto
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

AgentFactList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​AgentFact[] · required

AgentTemplate

object
​string · enum · required
Enum values:
agent_template
id
​string · required
name
​string · required
description
​string | null · required
category
​string · required
variables
​string[] · required

The variables its instructions ask for. Send a value for each in variables.

createdAt
​string · date-time · required

AgentTemplateList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​AgentTemplate[] · required

ModelCapabilities

thinkingCanBeOff
​boolean · required

Whether thinking: off is accepted. When false, send effort low instead.

contextWindow
​integer · required

CatalogModel

object
​string · enum · required
Enum values:
model
id
​string · required

The value to send as llmConfig.model.

name
​string · required
​ModelCapabilities · required
deprecated
​string | null · required

Date (YYYY-MM-DD) from which the model is no longer accepted, or null.

ModelList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​CatalogModel[] · required

SubaccountTemplates

agents
​string[] · maxItems: 20

Ids of the agent templates that GET /v2/agent-templates returns: Lelemon's and the ones your platform saved from the dashboard. Each one becomes a draft agent in the subaccount. A list that comes back empty means there is no template yet: leave this field out.

pipelines
​string[] · maxItems: 10

Pipelines of the platform. Each one is copied as a draft: stages and fields, never its agents, numbers, secrets or cases.

CreateSubaccount

externalRef
​string · minLength: 1 · maxLength: 255 · required

Your own id for it. Unique among your subaccounts.

name
​string · minLength: 1 · maxLength: 255 · required
​SubaccountTemplates

SubaccountCreatedResources

agents
​string[] · required
pipelines
​string[] · required

Subaccount

object
​string · enum · required
Enum values:
subaccount
id
​string · required
externalRef
​string · required
name
​string · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required
​object

Only on create: what fromTemplates made.

SubaccountList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Subaccount[] · required

UpdateSubaccount

name
​string · minLength: 1 · maxLength: 255
externalRef
​string · minLength: 1 · maxLength: 255

CreateSubaccountKey

name
​string · minLength: 1 · maxLength: 120 · required
scopes
​string[] · maxItems: 40 · required

Scopes for the key. They cannot go beyond the ones your own key has, and never include subaccounts:* scopes.

authorName
​string · maxLength: 100

Accepted with cases:send, and required with conversations:send. Not allowed otherwise.

allowedActionOrigins
​string[] · maxItems: 10

Sites the key may create HTTP actions for. Only with actions:write. Up to 10, each one inside the sites of your own key. Omit it to give the key the same sites as yours.

expiresInDays
​number · enum
Enum values:
30
90
365

SubaccountKey

object
​string · enum · required
Enum values:
api_key
id
​string · required
name
​string · required
prefix
​string · required
scopes
​string[] · required
allowedActionOrigins
​string[] · required

The sites this key may create HTTP actions for. Empty without actions:write.

createdAt
​string · date-time · required
expiresAt
​string | null · date-time · required
secret
​string · required

The API key itself. It is shown once and never again.

ConnectionRedirects

success
​string · maxLength: 2048
failure
​string · maxLength: 2048

CreateWhatsappConnection

phone
​string · pattern: ^\+[1-9]\d{6,14}$ · required

The number the subaccount will link, in E.164. If they link another one, the connection fails and nothing is attached.

agentId
​string · minLength: 1 · maxLength: 64 · required

The agent that will answer on this number.

connectionType
​string · enum · required

coexistence keeps the WhatsApp Business app working next to the API; dedicated is API only.

Enum values:
coexistence
dedicated
​ConnectionRedirects
language
​string · enum
Enum values:
es
en
pt
Default: es

ConnectionFailure

code
​string · enum · required
Enum values:
phone_number_mismatch
phone_number_unverifiable
phone_number_in_use
message
​string · required

WhatsappConnection

object
​string · enum · required
Enum values:
whatsapp_connection
id
​string · required
phone
​string · required
agentId
​string | null · required
connectionType
​string · enum · required
Enum values:
coexistence
dedicated
status
​string · enum · required
Enum values:
pending
connected
failed
revoked
expired
disconnected
setupUrl
​string | null · required

Send the subaccount here. Only while status is pending.

expiresAt
​string | null · date-time · required
phoneNumberId
​string | null · required

The phone number it created, once connected.

​required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

WhatsappConnectionList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​WhatsappConnection[] · required

PhoneNumber

object
​string · enum · required
Enum values:
phone_number
id
​string · required
phone
​string | null · required
verifiedName
​string | null · required
label
​string | null · required

Your own name for the number, such as the branch it serves.

catalogId
​string | null · required

The id of the Meta catalog connected to this number. The product, product_list and catalog messages and the catalog templates only send with this catalog. null when none is set.

agentId
​string | null · required
active
​boolean · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

PhoneNumberList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​PhoneNumber[] · required

UpdatePhoneNumber

agentId
​string · minLength: 1 · maxLength: 64

The agent that answers on this number from now on.

active
​boolean

false stops the agent from answering; true turns it back on.

label
​string | null · minLength: 1 · maxLength: 100

Your own name for the number, such as the branch it serves. Send null to clear it.

catalogId
​string | null · maxLength: 100 · pattern: ^[0-9]{5,100}$

The id of the catalog you connected to this number in Meta Commerce Manager and WhatsApp Manager. Send null to clear it. The platform cannot ask Meta whether it exists: a wrong id shows up as a failed message with its error.

CommerceSettings

object
​string · enum · required
Enum values:
commerce_settings
phoneNumberId
​string · required
isCartEnabled
​boolean · required

Whether the cart button shows on the product and catalog messages. WhatsApp turns it on by default.

isCatalogVisible
​boolean · required

Whether the catalog icon shows in the chat with the number. WhatsApp turns it off by default.

catalogId
​string | null · required

The catalog set on the number, if any.

UpdateCommerceSettings

isCartEnabled
​boolean

true shows the cart button; false hides it.

isCatalogVisible
​boolean

true shows the catalog icon in the chat; false hides it.

ActionRequestInput

method
​string · enum · required
Enum values:
GET
POST
PUT
PATCH
DELETE
url
​string · minLength: 1 · maxLength: 2000 · required

A public http or https URL, called exactly as written: a placeholder such as {id} is rejected with 400. It never comes back in a response, only its origin. Its site must be allowed for the API key.

​object

Header name to value. This is where your credential goes: it is stored encrypted and never comes back in a response, only the names do.

timeoutMs
​integer · min: 1 · max: 60000

Milliseconds to wait for your endpoint.

ActionVariableInput

name
​string · pattern: ^[a-zA-Z0-9_-]{1,64}… · required

The name your endpoint receives: letters without accents, digits, "_" or "-", up to 64. It cannot repeat or match a property of input, ignoring case.

source
​string · enum · required

lelemon: a fact Lelemon knows, named by variable. case_field: a field of the case, named by field.

Enum values:
lelemon
case_field
variable
​string · enum

Required when source is lelemon, absent otherwise. See Variables of Lelemon in the actions guide for what each one sends. contact.phone and contact.whatsapp_id also need the destination authorization of the action.

Enum values:
case.id
case.channel
contact.phone
contact.whatsapp_id
contact.id
contact.external_ref
subaccount.id
actor.id
field
​string · minLength: 1 · maxLength: 200

Required when source is case_field: the key of a field the pipeline declares. If the case has no value for it, the action does not run, unless optional is true.

optional
​boolean

Only with case_field. When true and the case has no value, the field is left out of the request instead of blocking the action.

Default: false

ActionAuthorizationInput

purpose
​string · minLength: 1 · maxLength: 500 · required

What the data sent to your system is used for. Article 15 bis of Law 21.719 asks the engagement to state its purpose.

destinationCountry
​string · enum · required

Where your system is hosted, declared by you. unknown counts as outside Chile.

Enum values:
chile
outside_chile
unknown
version
​string · minLength: 1 · required

The version of the authorization text you accept, from GET /v2/actions/authorization.

confirmsTransferOutsideChile
​boolean

Required when destinationCountry is outside_chile or unknown: confirms apart that the data leaves the country (international transfer).

CreateAction

name
​string · pattern: ^[a-z][a-z0-9_]{0,63… · required

What the agent calls it: lowercase letters, digits and underscores, starting with a letter. It cannot change later.

description
​string · minLength: 1 · maxLength: 2000 · required

When to use it. The agent reads this to decide.

​ActionRequestInput · required
​object · required

JSON Schema of what the agent must send: type "object" with properties. The agent fills it in; for GET it goes in the query, otherwise in the body.

audience
​string · enum

Which agents may be granted it: all, or customers (only agents that talk to the public).

Enum values:
all
customers
Default: all
noPersist
​boolean

When true, what this action returns lives only in the turn that called it. It is not kept in the tool memory between turns, in the execution trace, in approval requests or in run steps. The agent still uses it to answer. Consequences: the action cannot be replayed from a stored result, and a run interrupted in the middle of a round that called it fails instead of resuming. The provider (Bedrock) still receives the content as part of the prompt of that turn.

Default: false
sharedWithSubaccounts
​boolean

Platforms only. When true, every subaccount of yours can grant this action to its own agents. The action keeps living in your organization: calls to it are signed with your signing secret and carry the Lelemon-Subaccount-Id of the subaccount that made the call. Subaccounts cannot read, change or delete it. Turning it off, or deleting the action, removes it from the agents of your subaccounts. Its name cannot match an action that one of your subaccounts already has.

Default: false
​ActionVariableInput[] · maxItems: 20

Fields Lelemon fills when it makes the call, not the agent: the agent does not see them and cannot invent them. They go in the query for GET and in the body otherwise. If Lelemon does not have the value, the field is left out.

​object

The authorization to send personal data to your system (article 15 bis of Law 21.719): purpose, where it is hosted and the accepted text version. Optional as a block, but if you send it, send all of it. Without it the action is saved anyway, and it can be added later with PATCH.

ActionRequest

method
​string · enum · required
Enum values:
GET
POST
PUT
PATCH
DELETE
origin
​string · required

Only the origin. The path and query may hold a secret.

headerNames
​string[] · required

Names only, never the values.

timeoutMs
​integer

ActionVariable

name
​string · required
source
​string · enum · required
Enum values:
lelemon
case_field
variable
​string

With source lelemon. A key the catalog no longer has is ignored when the action runs.

field
​string
optional
​boolean

With case_field.

ActionAuthorizationRecord

purpose
​string · required

What the data sent to your system is used for, as it was accepted.

destinationCountry
​string · enum · required
Enum values:
chile
outside_chile
unknown
version
​string · required

The version of the authorization text that was accepted.

acceptedAt
​string · date-time · required
confirmedTransferOutsideChile
​boolean · required

True when the transfer outside Chile was confirmed apart. False when the system is in Chile.

dataSent
​string[] · required

The names of the input fields that leave for your system, never their values.

Action

object
​string · enum · required
Enum values:
action
id
​string · required
name
​string · required
description
​string · required
​ActionRequest · required
​object · required
audience
​string · enum · required
Enum values:
all
customers
internal
noPersist
​boolean · required

When true, what this action returns lives only in the turn that called it. It is not kept in the tool memory between turns, in the execution trace, in approval requests or in run steps. The agent still uses it to answer. Consequences: the action cannot be replayed from a stored result, and a run interrupted in the middle of a round that called it fails instead of resuming. The provider (Bedrock) still receives the content as part of the prompt of that turn.

sharedWithSubaccounts
​boolean · required

Platforms only. When true, every subaccount of yours can grant this action to its own agents. The action keeps living in your organization: calls to it are signed with your signing secret and carry the Lelemon-Subaccount-Id of the subaccount that made the call. Subaccounts cannot read, change or delete it. Turning it off, or deleting the action, removes it from the agents of your subaccounts. Its name cannot match an action that one of your subaccounts already has.

​ActionVariable[] · required

The fields Lelemon fills on every call. Empty when there are none.

​required

The authorization in force for the destination of this action: what you accepted when you created it or last changed its destination. null when there is none, for example after the destination changed and was not authorized again, and always null on an action shared by your platform.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required

AuthorizationText

version
​string · required
text
​string · required

The text you accept.

ActionAuthorization

object
​string · enum · required
Enum values:
action_authorization
version
​string · required

The version to send as authorization.version.

text
​string · required

The authorization to deliver data to your system (article 15 bis of Law 21.719), which you accept every time.

detail
​string · required

What the text means in practice.

​object · required

The extra confirmation for a system outside Chile. Accept it with authorization.confirmsTransferOutsideChile.

countries
​string[] · required
Enum values:
chile
outside_chile
unknown

ActionList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Action[] · required

ActionSigningSecretRotation

object
​string · enum · required
Enum values:
action_signing_secret_rotation
rotatedAt
​string · date-time · required
previousValidUntil
​string · date-time · required

Until when calls signed with the previous secret still verify. Read the new secret of each action with GET /v2/actions/{id}/signing-secret.

ActionSigningSecret

object
​string · enum · required
Enum values:
action_signing_secret
actionId
​string · required
secrets
​string[] · required

The secrets that sign the calls of this action, newest first. After a rotation the previous one is still listed for 24 hours: pass the whole list to verifyRequest. Each action has its own secret, derived from the one of your organization, so share it only with the system that serves that action.

previousValidUntil
​string · date-time

When the previous secret stops being listed. Absent when there is no previous secret.

ActionRequestChange

method
​string · enum
Enum values:
GET
POST
PUT
PATCH
DELETE
url
​string · minLength: 1 · maxLength: 2000

Changing the site checks it against the API key again.

​object | null

Header name to value. This is where your credential goes: it is stored encrypted and never comes back in a response, only the names do. Omit to keep the current ones, send null to remove them.

timeoutMs
​integer · min: 1 · max: 60000

UpdateAction

description
​string · minLength: 1 · maxLength: 2000
​object

Merged into the current request, field by field.

​object

Replaces the whole input schema.

noPersist
​boolean

When true, what this action returns lives only in the turn that called it. It is not kept in the tool memory between turns, in the execution trace, in approval requests or in run steps. The agent still uses it to answer. Consequences: the action cannot be replayed from a stored result, and a run interrupted in the middle of a round that called it fails instead of resuming. The provider (Bedrock) still receives the content as part of the prompt of that turn.

sharedWithSubaccounts
​boolean

Platforms only. When true, every subaccount of yours can grant this action to its own agents. The action keeps living in your organization: calls to it are signed with your signing secret and carry the Lelemon-Subaccount-Id of the subaccount that made the call. Subaccounts cannot read, change or delete it. Turning it off, or deleting the action, removes it from the agents of your subaccounts. Its name cannot match an action that one of your subaccounts already has.

​ActionVariableInput[] · maxItems: 20

Replaces the whole list; omit it to keep the current one and send [] to remove them. Fields Lelemon fills when it makes the call, not the agent: the agent does not see them and cannot invent them. They go in the query for GET and in the body otherwise. If Lelemon does not have the value, the field is left out.

​object

Registers or renews the authorization to send data to your system. Needed again when you change the destination site or where it is hosted.

TestAction

​object

Sample input, as the agent would send it. For GET it goes in the query, otherwise in the body.

ActionTest

object
​string · enum · required
Enum values:
action_test
ok
​boolean · required

True when your endpoint answered with a 2xx status.

durationMs
​integer · required
body
​string · required

What your endpoint answered, cut at 4000 characters, with your credential hidden.

truncated
​boolean · required
status
​integer

Absent when your endpoint did not answer.

failure
​string · enum
Enum values:
timeout
unreachable

McpAuthInput

type
​string · enum · required

none: the server is open. bearer: sends Authorization: Bearer . api_key: sends your key in a header.

Enum values:
none
bearer
api_key
token
​string · minLength: 1 · maxLength: 4000

Required for bearer. Stored encrypted and never returned.

apiKey
​string · minLength: 1 · maxLength: 4000

Required for api_key. Stored encrypted and never returned.

headerName
​string · maxLength: 100

For api_key: the header that carries the key.

ConnectMcpServer

name
​string · minLength: 1 · maxLength: 128 · required

How you see it. Its lowercase form prefixes every tool name the agent sees, so it cannot repeat or start like another server.

url
​string · minLength: 1 · maxLength: 2048 · required

A public http or https URL of a Streamable HTTP MCP server. It never comes back in a response, only its origin. Redirects are not followed.

​object

Defaults to none. OAuth servers are connected from the dashboard.

noPersist
​boolean

When true, what this action returns lives only in the turn that called it. It is not kept in the tool memory between turns, in the execution trace, in approval requests or in run steps. The agent still uses it to answer. Consequences: the action cannot be replayed from a stored result, and a run interrupted in the middle of a round that called it fails instead of resuming. The provider (Bedrock) still receives the content as part of the prompt of that turn.

Default: false
sharedWithSubaccounts
​boolean

Platforms only. When true, your subaccounts can grant the tools of this server to their agents but cannot change it. Turning it off, or deleting the server, removes the tools from their agents.

Default: false

McpTool

object
​string · enum · required
Enum values:
mcp_tool
id
​string · required

The toolId to use in PUT /v2/agents/{id}/tools/{toolId}.

name
​string · required
description
​string · required
​object · required
readOnly
​boolean

True when the server says the tool does not change anything. Absent when it does not say.

McpServerWithTools

object
​string · enum · required
Enum values:
mcp_server
id
​string · required
name
​string · required
origin
​string · required

Only the origin. The path and query may hold a secret.

status
​string · enum · required

connected: the last discovery worked, the last tool call was answered and its tools can be granted. error: the last discovery or the last tool call failed; lastError says which. inactive: not connected.

Enum values:
connected
error
inactive
authType
​string · enum · required
Enum values:
none
bearer
api_key
oauth2
toolCount
​integer · required
noPersist
​boolean · required

When true, what this action returns lives only in the turn that called it. It is not kept in the tool memory between turns, in the execution trace, in approval requests or in run steps. The agent still uses it to answer. Consequences: the action cannot be replayed from a stored result, and a run interrupted in the middle of a round that called it fails instead of resuming. The provider (Bedrock) still receives the content as part of the prompt of that turn.

sharedWithSubaccounts
​boolean · required

Platforms only. When true, your subaccounts can grant the tools of this server to their agents but cannot change it. Turning it off, or deleting the server, removes the tools from their agents.

lastError
​string | null · required
lastDiscoveryAt
​string | null · date-time · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required
​McpTool[] · required

What the last discovery found.

sharedByPlatform
​boolean

True when your platform shares this server with you: you can grant its tools, not change it. Absent on your own servers.

McpServer

object
​string · enum · required
Enum values:
mcp_server
id
​string · required
name
​string · required
origin
​string · required

Only the origin. The path and query may hold a secret.

status
​string · enum · required

connected: the last discovery worked, the last tool call was answered and its tools can be granted. error: the last discovery or the last tool call failed; lastError says which. inactive: not connected.

Enum values:
connected
error
inactive
authType
​string · enum · required
Enum values:
none
bearer
api_key
oauth2
toolCount
​integer · required
noPersist
​boolean · required

When true, what this action returns lives only in the turn that called it. It is not kept in the tool memory between turns, in the execution trace, in approval requests or in run steps. The agent still uses it to answer. Consequences: the action cannot be replayed from a stored result, and a run interrupted in the middle of a round that called it fails instead of resuming. The provider (Bedrock) still receives the content as part of the prompt of that turn.

sharedWithSubaccounts
​boolean · required

Platforms only. When true, your subaccounts can grant the tools of this server to their agents but cannot change it. Turning it off, or deleting the server, removes the tools from their agents.

lastError
​string | null · required
lastDiscoveryAt
​string | null · date-time · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required
sharedByPlatform
​boolean

True when your platform shares this server with you: you can grant its tools, not change it. Absent on your own servers.

McpServerList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​McpServer[] · required

McpToolList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​McpTool[] · required

UpdateMcpServer

name
​string · minLength: 1 · maxLength: 128
url
​string · minLength: 1 · maxLength: 2048

Changing it discovers the tools again.

​object

Replaces the credentials and discovers the tools again.

noPersist
​boolean

When true, what this action returns lives only in the turn that called it. It is not kept in the tool memory between turns, in the execution trace, in approval requests or in run steps. The agent still uses it to answer. Consequences: the action cannot be replayed from a stored result, and a run interrupted in the middle of a round that called it fails instead of resuming. The provider (Bedrock) still receives the content as part of the prompt of that turn.

sharedWithSubaccounts
​boolean

Platforms only. When true, your subaccounts can grant the tools of this server to their agents but cannot change it. Turning it off, or deleting the server, removes the tools from their agents.

McpRunIdentity

object
​string · enum · required
Enum values:
mcp_run_identity
serverId
​string · required
enabled
​boolean · required

True when Lelemon signs every call it makes to this server. False means calls go unsigned and the server gets no verified context.

header
​string · required
audience
​string · required
kid
​string | null · required

The kid of the secret that signs now. The JWT header carries it, so your server picks the right secret during a rotation.

secretCreatedAt
​string | null · date-time · required

ActivateMcpRunIdentity

header
​string · pattern: ^[a-z][a-z0-9-]{2,63…

Header that carries the signed JWT. Lowercase letters, digits and hyphens, 3 to 64 characters, not one the server already uses for its own auth. Default x-agente-corrida.

audience
​string · maxLength: 200 · pattern: ^\S+$

The aud claim: an https URL or an identifier without spaces, up to 200 characters. Default the URL of the server without query or fragment.

McpRunIdentityWithSecret

object
​string · enum · required
Enum values:
mcp_run_identity
serverId
​string · required
enabled
​boolean · required

True when Lelemon signs every call it makes to this server. False means calls go unsigned and the server gets no verified context.

header
​string · required
audience
​string · required
kid
​string | null · required

The kid of the secret that signs now. The JWT header carries it, so your server picks the right secret during a rotation.

secretCreatedAt
​string | null · date-time · required
secret
​string

HS256 secret. Shown only in the answer that creates it, never again, and absent in a dryRun. Store it now.

rotated
​boolean

Only in the answer to POST: true when the identity was already on and this call replaced the signing secret. The previous secret keeps verifying until the next rotation, so your server accepts both for a while.

DataConnectorFormat

object
​string · enum · required
Enum values:
data_connector_format
format
​string · enum · required
Enum values:
lelemon-connector/v1
​object · required
​object · required

JSON Schemas of the manifest, the account card, the account search and the view page.

ValidateConnectorDocument

type
​string · enum · required

Which document you are checking: manifest, account (the card), accounts_search (the answer to GET {base}/accounts?email=) or view_page (a page of a view).

Enum values:
manifest
account
accounts_search
view_page
​object · required

The JSON document exactly as your connector serves it. It is checked and thrown away: nothing is stored and nothing is sent to your system.

baseUrl
​string · maxLength: 2048

For account: the base URL of your connector. The hosts of an action link must be this host or one of allowedOrigins.

allowedOrigins
​string[] · maxItems: 10

For account: more https origins an action link may use.

FormatProblem

path
​string · required
message
​string · required

DataConnectorFormatValidation

object
​string · enum · required
Enum values:
data_connector_format_validation
type
​string · enum · required
Enum values:
manifest
account
accounts_search
view_page
ok
​boolean · required

True when the document follows the format.

​FormatProblem[] · required

Every place that does not follow the format, up to 50, with its path. Values are never repeated.

CreateDataConnector

name
​string · minLength: 1 · maxLength: 100 · required

How you see it. Its lowercase form (up to 16 characters) prefixes the tools the copilot gets from this connector, so it cannot repeat another connector.

baseUrl
​string · minLength: 1 · maxLength: 2048 · required

The https base URL of your connector. Lelemon calls {baseUrl}/manifest, {baseUrl}/accounts and {baseUrl}/views/{viewId}. It must be public and its site must be allowed for this key, the same list actions use. Redirects are not followed.

allowedOrigins
​string[] · maxItems: 5

Extra sites that an action link of your account cards may point to, besides the host of baseUrl. Each one must be allowed for this key.

DataConnector

object
​string · enum · required
Enum values:
data_connector
id
​string · required
name
​string · required
slug
​string · required

The prefix of the copilot tools of this connector, for example backoffice_account.

origin
​string · required

Only the origin of the base URL. The full URL never comes back.

allowedOrigins
​string[] · required
format
​string · enum · required
Enum values:
lelemon-connector/v1
status
​string · enum · required

pending: created, never checked. active: the last check passed. error: the last check or the manifest failed, see lastError.

Enum values:
pending
active
error
lastError
​string | null · enum · required
Enum values:
unavailable
invalid_response
not_found
bad_request
viewCount
​integer · required

Views in the stored manifest.

manifestFetchedAt
​string | null · date-time · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

DataConnectorList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​DataConnector[] · required

UpdateDataConnector

name
​string · minLength: 1 · maxLength: 100
baseUrl
​string · minLength: 1 · maxLength: 2048

Changing it puts the connector back to pending until you call the check endpoint.

allowedOrigins
​string[] · maxItems: 5

DataConnectorSigningSecret

object
​string · enum · required
Enum values:
data_connector_signing_secret
connectorId
​string · required
secrets
​string[] · required

The secrets that sign the calls to this connector, newest first. After a rotation the previous one is listed for 24 hours. Pass the whole list to verifyRequest of the SDK with domain connector.

previousValidUntil
​string · date-time

DataConnectorSigningSecretRotation

object
​string · enum · required
Enum values:
data_connector_signing_secret_rotation
rotatedAt
​string · date-time · required
previousValidUntil
​string · date-time · required

DataConnectorCheck

object
​string · enum · required
Enum values:
data_connector_check
ok
​boolean · required
​FormatProblem[] · required
​DataConnector · required

DataConnectorView

id
​string · required
name
​string · required
description
​string · required
​object · required

JSON Schema of the filters the view accepts, as filter[name]=value.

DataConnectorManifest

object
​string · enum · required
Enum values:
data_connector_manifest
format
​string · enum · required
Enum values:
lelemon-connector/v1
name
​string · required
​object · required
​DataConnectorView[] · required

AccountSummary

object
​string · enum · required
Enum values:
account_summary
id
​string · required
title
​string · required
subtitle
​string

AccountSummaryList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​AccountSummary[] · required

AccountSection

title
​string · required
​object[] · required

Components of type field (value, masked, maskReason, revealable), table, badge or action (an https link opened by the person, never run by Lelemon). A masked field has value null.

AccountCard

object
​string · enum · required
Enum values:
account
id
​string · required

The stable id your connector gives the account.

title
​string · required
​AccountSection[] · required
subtitle
​string

RevealField

fieldKey
​string · pattern: ^[a-z][a-z0-9_]{0,39… · required

The key of a field of the account card.

RevealedField

object
​string · enum · required
Enum values:
revealed_field
key
​string · required
valueType
​string · required
​required
currency
​string

ActionLink

object
​string · enum · required
Enum values:
action_link
url
​string · required

An https link inside the sites of the connector. Open it in a new tab with rel=noopener noreferrer. Lelemon never calls it.

ViewPage

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​object[] · required

Columns of the view: key, label, valueType and sensitive.

​object[] · required

Rows with id, optional accountId and cells. Each cell is { value, masked, maskReason? }.

DataConnectorAccess

object
​string · enum · required
Enum values:
data_connector_access
id
​string · required
connectorId
​string · required
kind
​string · required
actorType
​string · enum · required
Enum values:
api_key
member
actorId
​string · required
onBehalfOf
​string | null · required
accountHmac
​string | null · required

A keyed hash of the account id. It never holds the id or any value.

viewId
​string | null · required
fieldKey
​string | null · required
integrity
​string · enum · required

tampered means the row no longer matches its signature.

Enum values:
intact
tampered
createdAt
​string · date-time · required

DataConnectorAccessList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​DataConnectorAccess[] · required

CreateSkill

name
​string · maxLength: 255 · pattern: \S · required

How you see it.

description
​string · maxLength: 500 · pattern: \S · required

One line that says WHEN to load it. It is the only part of the skill that travels in the prompt, in every message, so keep it short.

content
​string · maxLength: 20000 · pattern: \S · required

The full instructions, in Markdown. The agent loads them when it is about to do that task.

slug
​string · maxLength: 100 · pattern: ^[a-z0-9]+(-[a-z0-9]…

The identifier the agent uses to load it. It cannot change. Defaults to the name in lowercase with hyphens. Creating again with the same slug and the same content returns the same skill; with different content it is a 409.

requires
​string[] · maxItems: 5 · unique

Slugs of other skills of the same agent that the agent receives first, in full, every time it loads this one. One level only: a required skill cannot require another. Up to 5.

SkillWithContent

object
​string · enum · required
Enum values:
skill
id
​string · required
slug
​string · required
name
​string · required
description
​string · required
requires
​string[] · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required
content
​string · required

Markdown.

Skill

object
​string · enum · required
Enum values:
skill
id
​string · required
slug
​string · required
name
​string · required
description
​string · required
requires
​string[] · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

SkillList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Skill[] · required

UpdateSkill

name
​string · minLength: 1 · maxLength: 255 · pattern: \S
description
​string · maxLength: 500 · pattern: \S
content
​string · maxLength: 20000 · pattern: \S
requires
​string[] · maxItems: 5 · unique

Slugs of other skills of the same agent that the agent receives first, in full, every time it loads this one. One level only: a required skill cannot require another. Up to 5.

BusinessHours

timezone
​string · maxLength: 64 · required

IANA time zone the hours are read in.

startHour
​integer · min: 0 · max: 23 · required
endHour
​integer · min: 1 · max: 24 · required

First hour that is already outside. Must be after startHour.

activeSaturday
​boolean · required
activeSunday
​boolean · required

HandoffFarewell

duringBusinessHours
​string · maxLength: 500

What the contact reads when the hand-off happens inside business hours.

outsideBusinessHours
​string · maxLength: 500

What the contact reads when the hand-off happens outside business hours.

SystemToolConfig

stageId
​string · pattern: ^stg_[0-9A-Za-z]{22}…

transfer_to_human only. The stage the case moves to when the agent hands it over. It wins over the pipeline setting. Ignored for a case in another pipeline, which falls back to the pipeline setting.

​object

transfer_to_human only. Picks which goodbye the contact reads. Without it the goodbye is always the one for business hours.

​object

transfer_to_human only. The goodbye the tool writes. Without it the tool uses a neutral Spanish text.

fields
​string[] · minItems: 1 · maxItems: 100

save_case_data only. The keys of the fields the agent may write. Each one must be a field with source agent that is not sensitive. Without it the agent may write every field with source agent.

Approver

type
​string · enum · required

role: everyone with that role in the organization. team: members of a team. member: one person. key: one API key, which then decides through POST /v2/approvals/{id}/approve. requester: the member whose conversation asked for it, only when no one else is named.

Enum values:
role
team
member
key
requester
value
​string · maxLength: 64

A member role such as owner, admin or member for a role. A tem_, mbr_ or key_ id for the others. Leave it out for requester.

ApprovalRule

effect
​string · enum · required

allow: the agent runs the action, no one is asked. require_approval: a person decides first. reject: the action never runs and no one is asked; the agent tells the person it cannot be done.

Enum values:
allow
require_approval
reject
​ApprovalCondition

When the rule applies: the same comparison or group as condition. Leave it out for a rule that applies to every call; it has to be the last one. A call whose argument is missing or has another type does not pass this rule silently: it goes to a person.

​Approver[] · maxItems: 20

Only for effect require_approval. Who may decide a call that lands on this rule. Without it the approvers of the policy.

expiresInMinutes
​integer · min: 1 · max: 43200

Only for effect require_approval. Minutes to decide a call that lands on this rule. Without it the one of the policy.

escalateAfterMinutes
​integer · min: 1 · max: 43200

Only for effect require_approval. Minutes after which a request that landed on this rule escalates. Less than its expiresInMinutes.

customerMessage
​string · maxLength: 500

What the agent tells the person when a call lands on this rule, for require_approval and reject. Without it the one of the policy, or a neutral Spanish text.

AccumulatedLimit

param
​string · maxLength: 200 · required

The argument of the action that holds the amount, as a number. If a call carries no valid number there, it needs approval.

period
​string · enum · required

A rolling window: the last 24 hours, 7 days or 30 days, counted per contact.

Enum values:
day
week
month
limit
​number · min: 0 · required

The most the agent may run without approval, adding up everything it already ran in the window for the same contact and action. A call that would pass it needs approval. This is what stops a split into many small orders.

ApprovalPolicy

mode
​string · enum · required

never: the agent runs the action without approval. always: every call waits for a person. when: only the calls that meet condition, or that pass accumulated, wait. rules: the ordered list in rules decides each call; the first rule that applies wins.

Enum values:
never
always
when
rules
​ApprovalCondition

Only for mode when. A comparison {param, op, value} with op eq, ne, gt, gte, lt, lte, in (value is a list) or exists (no value), or a group {all: [...]} or {any: [...]}. Up to 3 levels and 10 comparisons. If the argument is missing or has another type the call needs approval. param is a path into the arguments of the action, like amount or order.total.

​ApprovalRule[] · maxItems: 20

Only for mode rules. Evaluated in order for every call: the first rule whose when applies decides, and the rest are not read. A rule without when applies to every call and has to be last. If no rule applies the call runs, so end with a rule that has no when to choose the default. Use it for a hard cap ("above X, reject"), or for steps by amount ("up to X a supervisor decides, above X the management"). A platform floor and accumulated still apply on top: a rule can never run an action the floor sends to a person.

​AccumulatedLimit
​Approver[] · maxItems: 20

Who may decide. Without it: owners and admins. A role includes the roles above it: admin also lets owners decide. An API key decides only if it is named here.

expiresInMinutes
​integer · min: 1 · max: 43200

Minutes to decide. Past it the request expires, the action never runs and the agent tells the person.

Default: 1440
escalateAfterMinutes
​integer · min: 1 · max: 43200

Minutes after which a pending request escalates: approval.escalated fires once. Less than expiresInMinutes.

customerMessage
​string · maxLength: 500

What the agent tells the person while it waits. Without it a neutral Spanish text is used.

automatedDecision
​boolean

True when the action makes an automated decision about a person (Ley 21.719, art. 8 bis). It works with any mode. Every call leaves a record with the data it used and a reasonCode: an approval when a person decides, an automated decision (GET /v2/automated-decisions) when no one was asked or a rule rejected it. The person can ask for a human review of either.

AgentTool

object
​string · enum · required
Enum values:
agent_tool
id
​string · required

act_ for an action, mtl_ for an MCP tool, dct_ for a data connector tool, the tool name itself for a system tool. Use it in the path of PUT and DELETE.

kind
​string · enum · required
Enum values:
action
mcp_tool
data_connector_tool
system
name
​string · required
description
​string · required
granted
​boolean · required

True when this agent may use it now.

serverId
​string

For an MCP tool, the server it comes from.

sharedByPlatform
​boolean

For an action or an MCP tool: true when it belongs to your platform and is shared with your subaccounts. Absent for system tools and your own.

connectorId
​string

For a data connector tool (dct_), the data connector it reads. Only internal agents, such as a support copilot, can be granted them.

​

For a granted system tool, its configuration. Null when it has none. Absent for actions and MCP tools.

​object

The approval policy of an action or MCP tool for this agent. mode never when it runs without approval. Absent for system tools.

​object

The minimum approval your platform set for this shared action (PUT /v2/actions/{id}/approval-floor). It applies on top of approval: the stricter one wins, and approval cannot be mode never. Absent when there is none.

AgentToolList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​AgentTool[] · required

GrantTool

​object

Only for the system tools transfer_to_human and save_case_data. It replaces the stored configuration: leaving it out clears it. Actions and MCP tools take no configuration.

​object

Only for actions and MCP tools. Puts the tool behind a person: the agent proposes, a person or a named API key decides, and only an approval runs the action. Leaving it out keeps the policy the tool already has, so granting again never lifts it. To lift it, send mode never.

ApprovalDecision

decidedAt
​string · date-time · required
by
​object · required

Who decided. A member of the organization (mbr_) or an API key (key_). When a key decides, actor is what your system declared: Lelemon stores it as declared by the key, not verified.

reason
​string | null · required

Approval

object
​string · enum · required
Enum values:
approval
id
​string · required
status
​string · enum · required

pending waits for a decision. approved, executing, executed and failed follow an approval: the action runs only after it. rejected, expired and canceled never run it. preview only appears in the answer of approve with dryRun=true: the approval as it is now, with the decision that would be recorded; nothing was decided or run.

Enum values:
pending
approved
rejected
expired
canceled
executing
executed
failed
agentId
​string · required
caseId
​string | null · required
tool
​string · required

The name of the action or tool the agent wants to run.

​object | null · required

The exact arguments the action will run with if approved. Null when the tool is noPersist: those are kept encrypted and shown to nobody.

summary
​string · required

A line for a person to read. For a noPersist tool it is only the name.

reasonCode
​string | null · enum · required

Why it needed approval: policy_always, policy_condition (the condition on its arguments held), policy_accumulated (the sum for this contact in the period passed the limit) or policy_rule (a rule of the policy asked for it: see ruleIndex).

Enum values:
policy_always
policy_condition
policy_accumulated
policy_rule
policy_not_required
ruleIndex
​integer | null · required

The position (from 0) of the rule of the policy that decided this, when reasonCode is policy_rule. Null otherwise.

automatedDecision
​boolean · required

True when the policy marks this as an automated decision about a person (Ley 21.719, art. 8 bis). The person may ask for a review.

dataSeen
​string[] · required

The names of the argument fields the approver was shown. Never their values.

​Approver[] · required
requestedByKeyId
​string | null · required

The API key whose turn proposed the action, if any. It can never decide this request.

​required
result
​string | null · required

What the action returned once it ran. Truncated.

executedAt
​string | null · date-time · required
expiresAt
​string · date-time · required
escalatedAt
​string | null · date-time · required
reviewRequestedAt
​string | null · date-time · required
reviewReason
​string | null · required

What the person said when they asked for the review: their point of view on the decision. Null if they gave none or no review was asked.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required

ApprovalList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Approval[] · required

Actor

id
​string · minLength: 1 · maxLength: 128 · pattern: ^[^\r\n]*$ · required

The id of the person in your system. Lelemon does not verify it: it is stored as declared by your key.

role
​string · enum · required

The role of the person in your system, from lowest to highest. A key of a subaccount cannot declare a role above staff.

Enum values:
end_user
staff
admin
name
​string · minLength: 1 · maxLength: 200 · pattern: ^[^\r\n]*$

DecideApproval

reason
​string · minLength: 1 · maxLength: 1000 · pattern: ^[^\u0000]*$ · required

Why you decide this. Required for approving and for rejecting. It is stored with the decision and read by the auditor.

​object

The person in your system who decided. Lelemon records it as declared by this key, not verified. A key cannot declare a role above its own.

RequestApprovalReview

reason
​string · maxLength: 1000

The point of view of the person on the decision, in their words. It is stored with the record, shown in reviewReason and sent in the review_requested event. Do not put anything the person did not say.

AutomatedDecision

object
​string · enum · required
Enum values:
automated_decision
id
​string · required
agentId
​string · required
caseId
​string | null · required
tool
​string · required

The name of the action the agent decided about.

outcome
​string · enum · required

allowed: the agent ran the action and no person was asked. rejected: a rule of the policy refused it and the action never ran.

Enum values:
allowed
rejected
reasonCode
​string · enum · required

Why: policy_rule (a rule of the policy decided: see ruleIndex) or policy_not_required (the policy did not ask for a person for this call).

Enum values:
policy_always
policy_condition
policy_accumulated
policy_rule
policy_not_required
ruleIndex
​integer | null · required

The position (from 0) of the rule that decided this, when reasonCode is policy_rule.

dataSeen
​string[] · required

The names of the argument fields the decision used. Never their values. Empty for a noPersist action.

reviewRequestedAt
​string | null · date-time · required
reviewReason
​string | null · required

The point of view the person gave when they asked for the review.

createdAt
​string · date-time · required

AutomatedDecisionList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​AutomatedDecision[] · required

TeamQuestion

object
​string · enum · required
Enum values:
team_question
id
​string · required
status
​string · enum · required

open waits for an answer. answered has the answer and the agent has not told the person yet. delivered: the agent told the person. discarded: it was closed without telling the person, for example because a human took the case.

Enum values:
open
answered
delivered
discarded
caseId
​string · required
question
​string · required

What the agent needs to know, written for a person who did not see the conversation.

context
​string | null · required

What the agent is trying to do and why it asks.

answer
​string | null · required
answerTitle
​string | null · required
answeredBy
​object | null · required

Who answered: a member (mbr_ is not exposed here) or an API key (key_).

answeredAt
​string | null · date-time · required
deliveredAt
​string | null · date-time · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

TeamQuestionList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​TeamQuestion[] · required

TeamQuestionMessage

from
​string · enum · required

Who wrote it: the customer, the agent, or someone on your team.

Enum values:
customer
agent
team
text
​string · required

The text, shortened. A message that is not text (a voice note, an image) shows its type in brackets.

at
​string · date-time · required

TeamQuestionCaseField

label
​string · required
value
​string · required

TeamQuestionContext

object
​string · enum · required
Enum values:
team_question_context
id
​string · required
status
​string · enum · required
Enum values:
open
answered
delivered
discarded
caseId
​string · required
contactName
​string | null · required
pipelineName
​string | null · required
question
​string · required

The question, with every sensitive value covered.

context
​string | null · required
answer
​string | null · required
createdAt
​string · date-time · required
​TeamQuestionMessage[] · required

The last lines of the conversation with the customer, oldest first. Internal notes are left out.

​TeamQuestionCaseField[] · required

The data of the case that is not sensitive, with the name of each field.

hiddenFields
​string[] · required

Names of the fields that hold sensitive values. Their values never appear here.

AnswerTeamQuestion

answer
​string · minLength: 1 · maxLength: 4000 · required

The answer, written as a colleague would say it. The agent does not forward it: it tells the person in its own words, in the context of the conversation.

title
​string · maxLength: 255

A title for the answer. Optional. Saving the answer as knowledge is a separate step: this does not create a knowledge document.

RunLimitsInput

maxRounds
​integer · min: 1

How many rounds the agent may take. Above 60 it is cut to 60.

Default: 30
maxMinutes
​integer · min: 1

How many minutes it may last once it starts. Above 120 it is cut to 120.

Default: 30

CreateRun

goal
​string · minLength: 1 · maxLength: 8000 · required

What the agent has to achieve. It is treated as text from a user.

​object

The person in your system the agent works for. It travels signed by Lelemon to every action and MCP server of the run as the actor, marked as declared by your key and not verified. Without it the run works as your key. A key cannot declare a role above its own.

​object

Caps for this run. The server cuts them to its own maximums; what you leave out takes the default.

RunLimits

maxRounds
​integer · required

How many rounds the agent may take.

maxMinutes
​integer · required

How many minutes it may last once it starts.

RunResult

summary
​string

What the agent declared when it finished. It is a declaration: nobody has checked it yet.

checks
​string[]

What to look at to confirm the job is done, according to the agent.

partial
​string

The last thing the agent wrote. It comes also when the run stopped or failed. With stopReason no_conclusion it is the answer the agent gave in plain text instead of finishing.

error
​string

Why it failed. Only with status failed.

errorCode
​string

The API error code behind the failure, the same one the request would have returned (for example budget_exceeded when the run found the budget used up). Only with status failed, and only when the failure has one.

RunActor

id
​string · required
role
​string · enum · required
Enum values:
end_user
staff
admin
declaredBy
​string · required

The API key that declared this person. Lelemon does not verify the person: the key vouches for them.

name
​string

The name your key declared for this person, when it declared one.

Run

object
​string · enum · required
Enum values:
run
id
​string · required
agentId
​string · required
status
​string · enum · required

running: working, or in the queue. waiting_for_answer: paused to ask; question has it, answer it with POST /v2/runs/{id}/answer. completed_unverified: the agent says it finished and nobody has checked it, so do not read it as done. completed: a verifier checked it (it does not happen yet). stopped: the run was cut before the agent declared the job done, by a limit (rounds, time or the spending limit Lelemon sets for every run) or because the agent never concluded (no_conclusion) or repeated itself (loop); stopReason says which and result.partial keeps the last thing the agent wrote. failed: an error; result.error says what, or stopReason abandoned if nobody answered the pause in 30 days. canceled: you canceled it.

Enum values:
running
waiting_for_answer
completed_unverified
stopped
failed
canceled
stopReason
​string | null · enum · required

Why the run ended without finishing. Set with status stopped, and with status failed for abandoned. rounds: the run used all the rounds allowed by limits.maxRounds. cost: the run reached the spending limit Lelemon sets for every run. time: the run lasted all the minutes allowed by limits.maxMinutes. no_conclusion: the agent answered four times in a row without calling its finish action, so it never declared the job done. Its last answer is in result.partial. loop: the agent kept repeating the same action, so the run was cut. abandoned: with status failed: the agent asked a question and nobody answered it in 30 days.

Enum values:
rounds
cost
time
no_conclusion
loop
abandoned
question
​string | null · required

With status waiting_for_answer, what the agent asked. Answer it with POST /v2/runs/{id}/answer.

rounds
​integer · required

Rounds taken so far.

​RunLimits · required
​required
cancelRequested
​boolean · required

true if a cancel was asked. While a worker runs it, the run stops at the start of its next round.

schedule
​string | null · required

The scheduled task that started this run. null for a run you created with POST /v2/agents/{id}/runs.

​required

The person the run works for, as declared by the key that created it. null when the run works as the key itself.

createdAt
​string · date-time · required
startedAt
​string | null · date-time · required
finishedAt
​string | null · date-time · required
updatedAt
​string · date-time · required

RunList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Run[] · required

AnswerRun

answer
​string · minLength: 1 · maxLength: 4000 · required

The answer to what the agent asked.

​object

The person in your system who answered. Lelemon records it as declared by this key, not verified, and the agent sees who answered. Without it the answer comes from your key.

ScheduledTaskContact

contactId
​string · maxLength: 40

The contact the agent writes to. Send this or externalRef, exactly one. The contact needs an email address.

externalRef
​string · maxLength: 200

The externalRef you gave the contact. Send this or contactId, exactly one. An email address is not accepted here.

ScheduledTaskOnReply

instructions
​string · minLength: 1 · maxLength: 4000 · required

What the agent knows if the contact answers the email. The same agent keeps the conversation by email.

CreateScheduledTask

name
​string · minLength: 1 · maxLength: 200 · required
cron
​string · minLength: 1 · maxLength: 120 · required

Five fields: minute hour day-of-month month day-of-week. It is read in the timezone below. 422 invalid_cron if it cannot be read.

goal
​string · minLength: 1 · maxLength: 8000 · required

The job the agent gets on each date, as in a run. The agent runs it unattended: it never stops to ask.

​ScheduledTaskContact · required
channel
​string · enum · required

How the agent reaches the contact. Only email today. The agent needs the email channel.

Enum values:
email
timezone
​string · maxLength: 64

An IANA timezone. 422 invalid_timezone if it is not one.

Default: America/Santiago
from
​string · maxLength: 320

The sender. Its domain must be verified (POST /v2/email/domains). Without it the first verified domain is used.

​ScheduledTaskOnReply
​RunLimitsInput
enabled
​boolean
Default: true

ScheduledTask

object
​string · enum · required
Enum values:
schedule
id
​string · required
agentId
​string · required
contactId
​string · required
name
​string · required
cron
​string · required
timezone
​string · required
goal
​string · required

What the agent is asked to do on each date.

channel
​string · enum · required
Enum values:
email
from
​string | null · required
​required
​object · required

The limits each run gets, after the server maximums.

enabled
​boolean · required
pausedReason
​string | null · enum · required

Why the platform paused the task. consecutive_failures: three runs in a row failed or were cut.

Enum values:
consecutive_failures
nextRunAt
​string · date-time · required

When it fires next. A date missed while it was off is not replayed.

lastRunAt
​string | null · date-time · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

ScheduledTaskList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​ScheduledTask[] · required

UpdateScheduledTask

name
​string · minLength: 1 · maxLength: 200
cron
​string · minLength: 1 · maxLength: 120
timezone
​string · maxLength: 64
goal
​string · minLength: 1 · maxLength: 8000
​ScheduledTaskContact
​RunLimitsInput
enabled
​boolean

false pauses the task. true turns it on again from now, clears a platform pause and does not replay missed dates.

ScheduledTaskFire

object
​string · enum · required
Enum values:
schedule_fire
status
​string · enum · required
Enum values:
fired
skipped
skipReason
​string | null · required

Why no run started. Set with status skipped.

​required

InitialStage

name
​string · minLength: 1 · maxLength: 255 · required
entry
​boolean

Marks the stage where new cases start. The first stage is the entry when none says so.

agentId
​string

The agent that works cases in this stage.

QuickReply

shortcut
​string · required

1 to 30 lowercase letters, numbers, hyphens or underscores. Unique in the pipeline.

text
​string · minLength: 1 · maxLength: 4096 · required

Up to 4096 characters.

AutoClose

enabled
​boolean · required

Turns the automatic close on or off.

inactivityMinutes
​integer · min: 5 · max: 525600 · required

Minutes of silence before the case closes, from 5 to 525600. Counted inside the business hours when the pipeline has them.

message
​string | null · maxLength: 1000

Farewell sent when the case closes, up to 1000 characters. It needs inactivityMinutes under 1440, because after 24 hours the WhatsApp window is closed.

closeStageId
​string | null

The stage where the case is left when it closes. A stage of this pipeline.

includeTaken
​boolean

Also close the chats a person has taken over.

reopenWindowHours
​integer · min: 0 · max: 720

Hours after the close when a new message reopens the case, from 0 to 720. 24 when omitted.

TimeRange

from
​string · pattern: ^([01]\d|2[0-3]):[0-… · required

HH:MM, 00:00 to 23:59.

to
​string · pattern: ^(([01]\d|2[0-3]):[0… · required

HH:MM, after from. 24:00 is the end of the day.

PipelineBusinessDays

​TimeRange[] · maxItems: 10

Ranges on Monday. An empty list closes the day.

​TimeRange[] · maxItems: 10

Ranges on Tuesday.

​TimeRange[] · maxItems: 10

Ranges on Wednesday.

​TimeRange[] · maxItems: 10

Ranges on Thursday.

​TimeRange[] · maxItems: 10

Ranges on Friday.

​TimeRange[] · maxItems: 10

Ranges on Saturday.

​TimeRange[] · maxItems: 10

Ranges on Sunday.

Holiday

date
​string · pattern: ^\d{4}-\d{2}-\d{2}$ · required

YYYY-MM-DD.

​TimeRange[] · maxItems: 10

Ranges that replace the ones of that weekday. Without ranges the day is closed.

PipelineBusinessHours

timezone
​string · maxLength: 64

IANA time zone. Santiago when omitted.

​object

Ranges per weekday. A day that is not here is closed. Without days the pipeline attends 24/7.

​Holiday[] · maxItems: 400

WaitThresholds

yellowMinutes
​number · min: 1

Minutes without an answer before the wait turns yellow.

redMinutes
​number · min: 1

Minutes without an answer before the wait turns red. Greater than yellowMinutes.

PipelineSettings

timezone
​string | null · maxLength: 64

IANA time zone for the scheduled work of the pipeline.

askFor
​string | null · enum

How the agent asks for the fields it fills: one_at_a_time as the conversation goes, or in_order following the order of the fields. null goes back to one_at_a_time.

Enum values:
one_at_a_time
in_order
​

Closes the cases that go silent. Replaces the whole block; null removes it.

​

When the pipeline attends. The wait colors, the auto close and the warning before it count only inside these hours. Replaces the whole block; null goes back to counting the clock all day.

​

When the wait of a case turns yellow and red. Replaces the whole block; null goes back to 10 and 30 minutes.

stageOnTakeControl
​string | null

The stage a case moves to when a person takes control. A stage of this pipeline; it cannot be set on creation. null leaves cases where they are.

stageOnHandoff
​string | null

The stage a case moves to when the agent hands it to a person. A stage of this pipeline; it cannot be set on creation. null leaves cases where they are.

CreatePipeline

name
​string · minLength: 1 · maxLength: 255 · required
description
​string | null · maxLength: 2000
​InitialStage[] · maxItems: 50

Create stages in the same call, in order.

​QuickReply[] · maxItems: 50
​object

Settings of the pipeline. A stage cannot be named here because the pipeline has none yet: set stageOnTakeControl, stageOnHandoff and autoClose.closeStageId with PATCH.

PipelineSettingsResponse

timezone
​string | null · required
askFor
​string · enum · required
Enum values:
one_at_a_time
in_order
​required
​required
​required
stageOnTakeControl
​string | null · required
stageOnHandoff
​string | null · required

Pipeline

object
​string · enum · required
Enum values:
pipeline
id
​string · required
name
​string · required
description
​string | null · required
status
​string · enum · required
Enum values:
draft
active
paused
archived
stages
​string[] · required

The ids of its stages, in order.

​QuickReply[] · required
​PipelineSettingsResponse · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

PipelineList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Pipeline[] · required

ClonePipeline

name
​string · required

ReorderStages

stages
​string[] · maxItems: 200 · required

Every stage of the pipeline, once each, in the order they should have: the first one takes position 0. A stage that is missing, repeated or from another pipeline is a 400 with param stages and nothing changes.

UpdatePipeline

name
​string · minLength: 1 · maxLength: 255
description
​string | null · maxLength: 2000
status
​string · enum
Enum values:
draft
active
paused
archived
​QuickReply[] · maxItems: 50

Replaces the whole list. An empty list removes them all.

​object

Only the settings you send change. Each block (autoClose, businessHours, waitThresholds) replaces the whole block, and null removes a setting.

Condition

field
​string · maxLength: 255 · required

Path of the value.

operator
​string · enum · required
Enum values:
eq
neq
gt
gte
lt
lte
contains
exists
​

What to compare with: a text, a number, a boolean, or a list for in. exists does not need one.

Transition

targetStageId
​string · required

A stage of the same pipeline.

priority
​integer · min: 0 · max: 1000 · required

Lower numbers are tried first.

​Condition[] · maxItems: 50 · required

All of them must hold. Empty always holds.

FollowUp

enabled
​boolean · required

Turns the follow-ups of this stage on or off.

delays
​integer[] · maxItems: 20 · required

Minutes of silence before each follow-up. A negative number counts before an event, as in a meeting reminder.

maxAttempts
​integer · min: 1 · max: 20 · required

Follow-ups to send before the last one.

templateSequence
​string[] · maxItems: 20 · required

What each follow-up says, in order.

Enum values:
reengagement
reminder
last_chance
breakup
demo_reminder
no_show
allowTemplates
​boolean

Send WhatsApp templates once the 24-hour window is closed. They cost money. false when omitted.

maxTemplates
​integer · min: 1 · max: 5

Most templates to send. 1 when omitted.

NoProgress

minutes
​integer · min: 1 · max: 525600 · required

Minutes a case can stay in the stage before the team gets a task. They count only inside the business hours of the pipeline, when it has them.

title
​string · maxLength: 255 · pattern: \S · required

Title of the task. It is a reminder of type call.

description
​string · maxLength: 2000

Description of the task.

fallbackAssigneeId
​string

Member who gets the task when the case has no assignee. An active member of the organization. Without it, a case with no assignee gets no task.

tag
​string · maxLength: 50 · pattern: \S

Tag added to the contact of the case when the task is created.

StageConfig

agentMode
​string | null · enum

When the agent of the stage answers: always, never (paused) or only outside the business hours of the organization. null goes back to always.

Enum values:
always
paused
outside_business_hours
attentionRole
​string | null · enum

The part the stage plays in the attention queue. escalation: cases here wait for the technical team and show as waiting for a reply to whoever escalated them. answer: cases here came back with an answer and the customer still needs a reply; the owner is notified when a case enters. null removes the role.

Enum values:
escalation
answer
​

Messages the stage sends to a person who went silent. Replaces the whole block; null removes it.

maxDurationSeconds
​integer | null · min: 1 · max: 86400

Longest duration, in seconds.

minDurationSeconds
​integer | null · min: 1 · max: 86400

Shortest duration, in seconds, for a valid completion.

delayMinutes
​integer | null · min: 1 · max: 525600

Minutes a case waits in the stage before it moves on.

​

Creates a task for the team when a case stays in the stage too long. One task per pass of the case through the stage; it closes by itself when the case moves on or closes. Replaces the whole block; null removes it.

CreateStage

name
​string · minLength: 1 · maxLength: 255 · required
closes
​boolean

true makes arriving at this stage end the conversation: the next message from the person starts a new case. A stage with statusType done ends it too.

closingOutcome
​string | null · maxLength: 50

Why the case closed, written in the case when it arrives here, up to 50 characters. It only counts in a stage that closes. null removes it.

statusType
​string | null · enum

What the stage means in the pipeline: todo, in_progress or done. null leaves it without a type.

Enum values:
todo
in_progress
done
nextStageId
​string | null

The stage that follows when no transition holds. A stage of the same pipeline; null removes it.

​Transition[] · maxItems: 50

Where a case goes from this stage, with their conditions. Replaces the whole list; an empty list removes them all.

​object

Settings of the stage. Only the keys you send change, and null removes one.

position
​integer · min: 0 · max: 1000

Where it goes among the stages, from 0. At the end when omitted.

entry
​boolean

Makes it the stage where new cases start. The first stage of a pipeline is the entry when none says so.

agentId
​string | null

The agent that works cases in this stage.

requiredFields
​string[] · maxItems: 100

Keys of fields a case needs before it can enter this stage.

StageConfigResponse

agentMode
​string | null · enum · required
Enum values:
always
paused
outside_business_hours
attentionRole
​string | null · enum · required
Enum values:
escalation
answer
​required
maxDurationSeconds
​integer | null · required
minDurationSeconds
​integer | null · required
delayMinutes
​integer | null · required
​required

Stage

object
​string · enum · required
Enum values:
stage
id
​string · required
pipelineId
​string · required
name
​string · required
position
​integer · required
entry
​boolean · required
agentId
​string | null · required
requiredFields
​string[] · required
closes
​boolean · required
closingOutcome
​string | null · required
statusType
​string | null · enum · required
Enum values:
todo
in_progress
done
nextStageId
​string | null · required
​Transition[] · required
​StageConfigResponse · required
whatsappPhoneNumberId
​string | null · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

StageList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Stage[] · required

UpdateStage

closes
​boolean

true makes arriving at this stage end the conversation: the next message from the person starts a new case. A stage with statusType done ends it too.

closingOutcome
​string | null · maxLength: 50

Why the case closed, written in the case when it arrives here, up to 50 characters. It only counts in a stage that closes. null removes it.

statusType
​string | null · enum

What the stage means in the pipeline: todo, in_progress or done. null leaves it without a type.

Enum values:
todo
in_progress
done
nextStageId
​string | null

The stage that follows when no transition holds. A stage of the same pipeline; null removes it.

​Transition[] · maxItems: 50

Where a case goes from this stage, with their conditions. Replaces the whole list; an empty list removes them all.

​object

Settings of the stage. Only the keys you send change, and null removes one.

name
​string · minLength: 1 · maxLength: 255
position
​integer · min: 0 · max: 1000
entry
​boolean

true makes it the entry and unmarks the previous one. false is refused: make another stage the entry instead.

agentId
​string | null

null unlinks the agent.

requiredFields
​string[] · maxItems: 100

Replaces the list.

whatsappPhoneNumberId
​string | null

A WhatsApp number of the organization. Messages that arrive at it start their cases in this stage. A number can feed one pipeline only. null releases it.

FieldOption

value
​string · minLength: 1 · maxLength: 80 · required
label
​string · maxLength: 80

What people see. Defaults to the value.

whenParent
​string[] · maxItems: 200

Only on a field with dependsOn: the values of the parent field that offer this option. Omitted means always.

CreateField

key
​string · pattern: ^[A-Za-z][A-Za-z0-9_… · required

Letters, numbers and underscores, starting with a letter. Unique in the pipeline and fixed once created.

type
​string · enum · required
Enum values:
text
email
phone
url
textarea
file
select
label
​string · minLength: 1 · maxLength: 255

Defaults to the key.

required
​boolean
Default: false
​FieldOption[] · maxItems: 2000

Only for type select.

dependsOn
​string | null

The key of a select field this one depends on. One level only.

source
​string · enum

Who fills it: the team, the channel, your system or the agent.

Enum values:
team
channel
system
agent
Default: team
instruction
​string | null · maxLength: 1000

What the agent should ask or look for.

sensitive
​boolean

Hides its value from the agent and from webhooks.

Default: false

Field

object
​string · enum · required
Enum values:
field
id
​string · required
pipelineId
​string · required
key
​string · required
label
​string · required
type
​string · enum · required
Enum values:
text
email
phone
url
textarea
file
select
required
​boolean · required
​FieldOption[] · required
dependsOn
​string | null · required
source
​string · enum · required
Enum values:
team
channel
system
agent
instruction
​string | null · required
sensitive
​boolean · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

FieldList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Field[] · required

UpdateField

label
​string · minLength: 1 · maxLength: 255
required
​boolean
​FieldOption[] · maxItems: 2000

Replaces the options. Cases keep the values they have.

dependsOn
​string | null
source
​string · enum
Enum values:
team
channel
system
agent
instruction
​string | null · maxLength: 1000
sensitive
​boolean

CreateRoutingRule

fromStageId
​string · required

The stage of this pipeline that triggers the rule.

toPipelineId
​string · required

The pipeline the case goes to.

toStageId
​string | null

A stage of the destination. Its entry stage when omitted.

mode
​string · enum

create opens a new case in the destination and keeps this one. move takes the case there.

Enum values:
create
move
Default: create
enabled
​boolean
Default: true

RoutingRule

object
​string · enum · required
Enum values:
routing_rule
id
​string · required
pipelineId
​string · required
fromStageId
​string · required
toPipelineId
​string · required
toStageId
​string | null · required
mode
​string · enum · required
Enum values:
create
move
enabled
​boolean · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

RoutingRuleList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​RoutingRule[] · required

UpdateRoutingRule

toStageId
​string | null
mode
​string · enum
Enum values:
create
move
enabled
​boolean

CreateKnowledgeCollection

name
​string · minLength: 1 · maxLength: 255 · pattern: \S · required
description
​string | null · maxLength: 2000

KnowledgeCollection

object
​string · enum · required
Enum values:
knowledge_collection
id
​string · required
name
​string · required
description
​string | null · required
documentCount
​integer · required

Documents in any status.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required

SearchKnowledge

query
​string · minLength: 1 · maxLength: 1000 · required

What you are looking for, in your own words. It searches by meaning and by exact words (a product code, a name).

collectionIds
​string[] · maxItems: 20

Search only these collections. Leave it out to search all of them.

limit
​integer · min: 1 · max: 10

How many passages to return, best first.

Default: 5

KnowledgePassage

object
​string · enum · required
Enum values:
knowledge_passage
collectionId
​string · required
collectionName
​string · required
documentId
​string · required
documentName
​string · required
sourceUrl
​string | null · required

Where the document came from, when it has an address.

text
​string · required

The passage of the document.

score
​number | null · min: 0 · max: 1 · required

How close the passage is in meaning, from 0 to 1. It is null when the passage was found only by its exact words.

KnowledgeSearch

object
​string · enum · required
Enum values:
knowledge_search
​KnowledgePassage[] · required

Best first. An empty list means nothing in the knowledge answers it.

KnowledgeCollectionList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​KnowledgeCollection[] · required

UpdateKnowledgeCollection

name
​string · minLength: 1 · maxLength: 255 · pattern: \S
description
​string | null · maxLength: 2000

null clears it.

CreateKnowledgeDocument

name
​string · maxLength: 500 · pattern: \S

Required with text. With a file it defaults to the file name. The same name in a collection replaces the document.

text
​string · pattern: \S

The content as text. Send either text or a file, not both.

file
​string · binary

Multipart only. PDF, DOCX, TXT or MD, up to 15 MB. Send either a file or text.

KnowledgeDocumentError

code
​string · enum · required
Enum values:
text_extraction_failed
no_text_found
embedding_failed
processing_failed
enqueue_failed
message
​string · required

KnowledgeDocument

object
​string · enum · required
Enum values:
knowledge_document
id
​string · required
collectionId
​string · required
name
​string · required
mimeType
​string · required
sizeBytes
​integer · required
status
​string · enum · required
Enum values:
processing
ready
failed
chunkCount
​integer · required

Searchable passages.

​required

Set when status is failed.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required

KnowledgeDocumentList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​KnowledgeDocument[] · required

KnowledgeDocumentWithContent

object
​string · enum · required
Enum values:
knowledge_document
id
​string · required
collectionId
​string · required
name
​string · required
mimeType
​string · required
sizeBytes
​integer · required
status
​string · enum · required
Enum values:
processing
ready
failed
chunkCount
​integer · required

Searchable passages.

​required

Set when status is failed.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required
content
​string | null · required

The text the agent searches. null until status is ready.

UpdateKnowledgeDocument

name
​string · maxLength: 500 · pattern: \S
text
​string · pattern: \S

Replaces the content and processes the document again: status goes back to processing.

AgentKnowledgeCollection

object
​string · enum · required
Enum values:
agent_knowledge_collection
agentId
​string · required
collectionId
​string · required
granted
​boolean · required

CreateContact

name
​string · minLength: 1 · maxLength: 255 · required
email
​string · email · maxLength: 255 · pattern: ^[A-Za-z0-9!#$%&'*+/…
phone
​string · minLength: 1 · maxLength: 50
externalRef
​string · minLength: 1 · maxLength: 255

Your own id for this person. Unique in the organization: sending it again is a 409.

companyId
​string

The company this person works in, created with POST /v2/companies. A company that does not exist in the organization is a 400 with param companyId.

tags
​string[] · maxItems: 20
​object

Values for the contact fields you created with POST /v2/contact-fields, by key. Each value is checked against the type of its field. Nothing is saved if one key or value is not accepted.

Presence

online
​boolean · required

true when the last active signal is less than 120 seconds old and no offline signal came after.

lastSeenAt
​string | null · date-time · required

The last time a signal arrived. While online it is exact; once offline it can be up to 5 minutes behind. null when no signal ever arrived for this contact.

Contact

object
​string · enum · required
Enum values:
contact
id
​string · required
name
​string · required
email
​string | null · required
phone
​string | null · required
externalRef
​string | null · required
companyId
​string | null · required

The company of this contact, or null when it has none.

tags
​string[] · required
​object · required

The values of the contact fields this contact has, by key. Empty when it has none.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required
​object

Whether the contact is online. Present only when the organization setting presenceEnabled is on, at least one presence signal has arrived, and the key has the contacts:presence-read scope.

match
​object | null

Only when you search with q: the field of the contact that matched and its value, or null when the match was the name, email, phone or externalRef. Fields marked sensitive are never searched or shown.

caseCount
​integer

Only when you search, filter by pipeline or open cases, or sort: how many cases the contact has.

openCaseCount
​integer

Same as caseCount, only the open ones.

lastActivityAt
​string · date-time

Same as caseCount: the latest message of its cases, or its creation date.

ContactList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Contact[] · required

UpsertContact

name
​string · minLength: 1 · maxLength: 255

Required to create. When the contact exists and you omit it, the name stays. A new contact with no name is named after the externalRef.

email
​string · email · maxLength: 255 · pattern: ^[A-Za-z0-9!#$%&'*+/…
phone
​string · minLength: 1 · maxLength: 50
companyId
​string | null

Links the contact to a company. When you omit it the company stays; null unlinks it. A company that does not exist in the organization is a 400 with param companyId.

tags
​string[] · maxItems: 20
​object

Values for the contact fields you created with POST /v2/contact-fields, by key. The keys you omit stay as they were; null removes the value. Each value is checked against the type of its field. Nothing is saved if one key or value is not accepted.

UpdateContact

name
​string · minLength: 1 · maxLength: 255
email
​string | null · email · maxLength: 255 · pattern: ^[A-Za-z0-9!#$%&'*+/…

null removes it.

phone
​string | null · minLength: 1 · maxLength: 50

null removes it.

externalRef
​string | null · minLength: 1 · maxLength: 255

null removes it.

companyId
​string | null

Links the contact to a company, or to another one. null unlinks it. A company that does not exist in the organization is a 400 with param companyId.

tags
​string[] · maxItems: 20

Replaces the whole list.

​object

Values for the contact fields you created with POST /v2/contact-fields, by key. The keys you omit stay as they were; null removes the value. Each value is checked against the type of its field. Nothing is saved if one key or value is not accepted.

ContactFieldOption

value
​string · minLength: 1 · maxLength: 80 · required
label
​string · maxLength: 80

What people see. Defaults to the value.

CreateContactField

key
​string · pattern: ^[A-Za-z][A-Za-z0-9_… · required

Letters, numbers and underscores, starting with a letter. Unique in the organization and fixed once created.

type
​string · enum · required

The kind of value it holds. Values are checked against it: email, phone, url, number, date (YYYY-MM-DD), boolean, select (one of the options) or free text.

Enum values:
text
textarea
email
phone
url
number
date
boolean
label
​string · minLength: 1 · maxLength: 255

Defaults to the key.

​ContactFieldOption[] · maxItems: 500

Required for type select and not allowed for the others.

ContactFieldOptionOut

value
​string · required
label
​string · required

ContactField

object
​string · enum · required
Enum values:
contact_field
id
​string · required
key
​string · required
label
​string · required
type
​string · enum · required
Enum values:
text
textarea
email
phone
url
number
date
boolean
​ContactFieldOptionOut[] · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

ContactFieldList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​ContactField[] · required

UpdateContactField

label
​string · minLength: 1 · maxLength: 255
​ContactFieldOption[] · maxItems: 500

Replaces the options of a select field. Contacts keep the values they already have.

CreateCompany

name
​string · minLength: 1 · maxLength: 255 · required
rut
​string · minLength: 1 · maxLength: 20

Unique among the live companies of the organization.

type
​string · enum
Enum values:
prospect
client
partner
vendor
Default: prospect
status
​string · enum
Enum values:
lead
active
paused
lost
Default: lead
website
​string · maxLength: 255
industry
​string · minLength: 1 · maxLength: 120
source
​string · minLength: 1 · maxLength: 50
notes
​string · maxLength: 2000

CompanyDetail

object
​string · enum · required
Enum values:
company
id
​string · required
name
​string · required
rut
​string | null · required
type
​string · enum · required

What the company is for the organization.

Enum values:
prospect
client
partner
vendor
status
​string · enum · required

How the relationship is today.

Enum values:
lead
active
paused
lost
website
​string | null · required
industry
​string | null · required
source
​string | null · required
notes
​string | null · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required
contactIds
​string[] · required

The people of this company, as contact ids.

Company

object
​string · enum · required
Enum values:
company
id
​string · required
name
​string · required
rut
​string | null · required
type
​string · enum · required

What the company is for the organization.

Enum values:
prospect
client
partner
vendor
status
​string · enum · required

How the relationship is today.

Enum values:
lead
active
paused
lost
website
​string | null · required
industry
​string | null · required
source
​string | null · required
notes
​string | null · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

CompanyList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Company[] · required

UpdateCompany

name
​string · minLength: 1 · maxLength: 255
rut
​string | null · minLength: 1 · maxLength: 20

null removes it.

type
​string · enum
Enum values:
prospect
client
partner
vendor
status
​string · enum
Enum values:
lead
active
paused
lost
website
​string | null · maxLength: 255

null removes it.

industry
​string | null · minLength: 1 · maxLength: 120

null removes it.

source
​string | null · minLength: 1 · maxLength: 50

null removes it.

notes
​string | null · maxLength: 2000

null removes it.

CreateLeadForm

name
​string · minLength: 1 · maxLength: 255 · required

Form name

pipelineId
​string · required

The pipeline where the leads of this form start. A pipeline that does not exist in the organization is a 400 with param pipelineId.

tags
​string[]

Tags auto-applied to leads

source
​string · maxLength: 100 · pattern: ^[a-z0-9_-]+$

Source label for the entity

LeadFormWithSecret

object
​string · enum · required
Enum values:
lead_form
id
​string · required
name
​string · required
pipelineId
​string · required

The pipeline where the leads of this form start.

tags
​string[] · required
source
​string · required
status
​string · enum · required

An inactive form does not accept leads.

Enum values:
active
inactive
keyPrefix
​string · required

The first characters of the key, to tell which key a website has. It is not the key.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required
secret
​string · required

The key the website sends with each lead. It is shown only here; keep it.

LeadForm

object
​string · enum · required
Enum values:
lead_form
id
​string · required
name
​string · required
pipelineId
​string · required

The pipeline where the leads of this form start.

tags
​string[] · required
source
​string · required
status
​string · enum · required

An inactive form does not accept leads.

Enum values:
active
inactive
keyPrefix
​string · required

The first characters of the key, to tell which key a website has. It is not the key.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required

LeadFormList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​LeadForm[] · required

UpdateLeadForm

name
​string · minLength: 1 · maxLength: 255

Form name

tags
​string[]

Tags auto-applied to leads

source
​string · maxLength: 100 · pattern: ^[a-z0-9_-]+$

Source label

status
​string · enum
Enum values:
active
inactive
pipelineId
​string

Moves the form to another pipeline. A pipeline that does not exist in the organization is a 400 with param pipelineId.

SuppressionInventoryStore

id
​string · required
store
​string · enum · required
Enum values:
table
object-store
rows
​number · required

SuppressionInventory

cases
​number · required
openCases
​number · required

Open cases. While there are any, the real call needs closeOpenCases=true.

files
​number · required
​SuppressionInventoryStore[] · required

Suppression

object
​string · enum · required
Enum values:
suppression
id
​string | null · required

null on a dryRun: nothing was created.

contactId
​string · required
status
​string · enum · required
Enum values:
queued
running
done
failed
held
preview
phase
​string | null · enum · required
Enum values:
inventory
rows
objects
rest
done
reason
​string · enum · required
Enum values:
data_subject_request
controller_instruction
legalHold
​boolean · required
closedOpenCases
​number · required
​object · required

Rows erased or anonymized per store. Numbers only.

errorCode
​string | null · required
​required

Only on dryRun: what would be erased, by store, without content.

createdAt
​string | null · required
completedAt
​string | null · required
dryRun
​boolean

Present and true only on a dry run: nothing was erased and the inventory shows what would be.

InlineContact

name
​string · minLength: 1 · maxLength: 255

Required to create. When the contact exists and you omit it, the name stays. A new contact with no name is named after the externalRef.

email
​string · email · maxLength: 255 · pattern: ^[A-Za-z0-9!#$%&'*+/…
phone
​string · minLength: 1 · maxLength: 50
tags
​string[] · maxItems: 20
companyId
​string

The company of the person, used only when the contact is created here. A company that does not exist in the organization is a 400 with param contact.companyId.

externalRef
​string · minLength: 1 · maxLength: 255

Your own id for this person. The contact with this externalRef is used; if there is none it is created.

CreateCase

oneOf
Exactly one variant must match.

Decision Table

VariantMatching Criteria
type = object · requires: contactId
type = object · requires: contact
Properties for contactId:
contactId
​string · required

The contact of the case. Send this or contact, never both (400 on contact).

agentId
​string

The agent that attends the case. It needs the api channel (422 agent_channel_disabled otherwise). Alone, the case opens in the pipeline where this agent attends the entry stage; if it attends the entry of more than one pipeline that is 422 on pipelineId, so send pipelineId or stageId too. A copilot (an agent with audience internal) attends no stage: send its pipelineId or stageId, the case answers with the copilot whatever agent the stage has, and email cases are refused.

pipelineId
​string

The case enters by the entry stage of this pipeline.

stageId
​string

The stage where the case starts.

channel
​string · enum

email opens a case you write to by email. The contact needs an email address and the organization a verified sender domain (422 contact_without_email, 422 sender_domain_not_verified). The agent needs the email channel.

Enum values:
api
email
Default: api
from
​string · maxLength: 320

With channel email, the sender address. It must belong to a verified domain. Defaults to the first verified domain.

LastMessage

author
​string · enum · required
Enum values:
contact
agent
team
type
​string · required
text
​string | null · required

The first 140 characters. null when the message is a file.

CaseContact

id
​string · required
​Presence · required

Case

object
​string · enum · required
Enum values:
case
id
​string · required
contactId
​string · required
pipelineId
​string · required
stageId
​string | null · required
agentId
​string | null · required

The agent that answers the case: the copilot of a copilot case, otherwise the agent of the current stage.

status
​string · enum · required
Enum values:
open
closed
assigneeId
​string | null · required
channel
​string | null · enum · required

Where the contact talks: whatsapp, email, api (your own system) or in_app. null when the case has no channel to write back.

Enum values:
whatsapp
api
in_app
email
phoneNumberId
​string | null · required

The WhatsApp number the contact wrote to, when it is a WhatsApp case.

control
​string · enum · required

Who answers the contact. human also covers a case the agent escalated and nobody took yet: see agentState.

Enum values:
agent
human
agentState
​string · enum · required

What the agent is doing, to drive a typing indicator: thinking and replying mean it is working; waiting_for_contact means it answered; escalated means it asked for a person; idle is everything else.

Enum values:
idle
thinking
replying
waiting_for_contact
escalated
unread
​integer · required

Messages of the contact since the last POST /v2/cases/{id}/read.

lastMessageAt
​string | null · date-time · required
​required

A preview of the last public message.

outcome
​string | null · required
closedAt
​string | null · date-time · required
​object · required

The values of the fields the pipeline declares, by key. Sensitive fields are not included.

tags
​string[] · required

The tags of the contact of the case.

archivedAt
​string | null · date-time · required

When the case was archived: out of the board, state untouched. null when it is on the board.

muted
​boolean · required

true while the contact is muted: the agent does not answer them and their open cases are closed. Muting belongs to the person, so every case of the contact shows it.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required
​object

The contact with its presence. Present only on GET /v2/cases and GET /v2/cases/{id}, when the organization setting presenceEnabled is on, at least one presence signal has arrived, and the key has the contacts:presence-read scope.

CaseList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Case[] · required

UpdateCase

​object

Values for fields the pipeline declares, by key, whoever fills them (team, channel, system or agent). A field marked sensitive is written but never returned: read it with POST /v2/cases/{id}/fields/{key}/reveal. Nothing is saved if one key is not accepted.

tags
​string[] · maxItems: 20

Replaces the tags of the case. Tags belong to the contact: the contact shows the same list, and so does every other case of the person.

MoveCase

stageId
​string

The stage to move to. A stage of another pipeline moves the case to that pipeline and needs the cases:reorganize scope. Send this or pipelineId, never both.

pipelineId
​string

Moves the case to the entry stage of this pipeline and needs the cases:reorganize scope. Send this or stageId, never both.

AssignCase

assigneeId
​string | null · required

An active member who can attend cases. null unassigns.

CloseCase

outcome
​string · minLength: 1 · maxLength: 50

Why it closed. Up to 50 characters.

QueuedCase

id
​string · required
contactName
​string | null · required
pipelineId
​string · required
pipelineName
​string · required
stageId
​string | null · required
stageName
​string | null · required
assigneeId
​string | null · required
since
​string · date-time · required

When the wait started.

waitMinutes
​integer · required

Minutes of attention waited: only the time inside the business hours of the pipeline counts.

waitColor
​string | null · enum

Green, yellow or red by the wait thresholds of the pipeline. Only the cases waiting for a person carry it.

Enum values:
green
yellow
red

CaseQueue

object
​string · required
memberId
​string · required
​QueuedCase[] · required

Cases the agent handed to a person and nobody took: assigned to the member or without an owner. A case leaves when someone takes it, answers it or it closes.

​QueuedCase[] · required

Cases the member escalated, sitting in a stage with attentionRole escalation, still without an answer.

​QueuedCase[] · required

Cases back in a stage with attentionRole answer whose customer has not been answered yet.

MoveCasesBatch

caseIds
​string[] · minItems: 1 · maxItems: 100 · required

Up to 100 cases of one pipeline.

stageId
​string · required

The stage they move to. The cases have to be in the pipeline of this stage: to change pipeline use POST /v2/cases/{id}/move.

NotMovedCase

caseId
​string · required
reason
​string · enum · required

not_found: no such case. not_in_pipeline: the case is in another pipeline. archived or closed: it cannot move. already_in_stage: nothing to do. required_fields_missing: the stage requires fields the case lacks, named in missingFields.

Enum values:
not_found
not_in_pipeline
archived
closed
already_in_stage
required_fields_missing
missingFields
​string[]

With required_fields_missing, the keys of the fields.

CaseBatchMove

object
​string · enum · required
Enum values:
case_batch_move
moved
​integer · required

Cases that changed stage.

​NotMovedCase[] · required

MuteCase

reason
​string · minLength: 1 · maxLength: 200

Why. It is saved with the contact.

EscalateCase

reason
​string · minLength: 1 · maxLength: 500 · required

Why the case needs a person. Your team sees it.

RevealedCaseField

object
​string · enum · required
Enum values:
revealed_case_field
caseId
​string · required
key
​string · required
value
​string | null · required

The value as saved. null when the field has no value yet.

ContactEventSent

triggerId
​string · required
whatsappMessageId
​string | null · required
emailMessageId
​string | null · required

ContactEventCaseAction

triggerId
​string · required
action
​string · enum · required
Enum values:
opened
moved
unchanged
none
caseId
​string | null · required

ContactEvent

object
​string · enum · required
Enum values:
contact_event
id
​string · required
type
​string · required
contactId
​string · required
result
​string · enum · required
Enum values:
sent
skipped
​ContactEventSent[] · required
​ContactEventCaseAction[] · required

What each matching trigger with onEvent did to the case of the contact: opened a new case, moved the open one, left it where it was (unchanged), or found no open case to move (none). Empty when no trigger has onEvent.

reason
​string | null · required

Why nothing was sent: null when the matching triggers only act on the case and have no message, no_trigger, opted_out, no_phone, template_not_approved, human_in_control, cooldown, no_whatsapp_number, not_allowed or missing_variable. Cadence triggers add cadence_active (the contact is already in this cadence) and outside_window (the first attempt waits for the next window). Email triggers add no_email, recipient_not_allowed, no_verified_domain and open_case_elsewhere.

createdAt
​string · date-time · required

ContactEventList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​ContactEvent[] · required

CreateReminder

title
​string · minLength: 1 · maxLength: 255 · required
dueAt
​string · date-time · required

When it is due, with the time zone.

assigneeId
​string · required

The member who has to do it. They see it in their tasks and get the notice when it is due.

description
​string · maxLength: 2000
type
​string · enum
Enum values:
call
email
meeting
follow_up
task
other
Default: task
priority
​string · enum
Enum values:
low
medium
high
urgent
Default: medium

Reminder

object
​string · enum · required
Enum values:
reminder
id
​string · required
caseId
​string · required
title
​string · required
description
​string | null · required
type
​string · enum · required
Enum values:
call
email
meeting
follow_up
task
other
priority
​string · enum · required
Enum values:
low
medium
high
urgent
status
​string · enum · required

pending until someone completes or dismisses it. overdue when its time passed and nobody did.

Enum values:
pending
in_progress
overdue
completed
dismissed
dueAt
​string · date-time · required
assigneeId
​string · required
completedAt
​string | null · date-time · required
completionNote
​string | null · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

ReminderList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Reminder[] · required

UpdateReminder

title
​string · minLength: 1 · maxLength: 255
description
​string · maxLength: 2000
type
​string · enum
Enum values:
call
email
meeting
follow_up
task
other
priority
​string · enum
Enum values:
low
medium
high
urgent
dueAt
​string · date-time
assigneeId
​string

Reassigns it. A reminder tied to a meeting made in the dashboard cannot be reassigned: 400 on assigneeId.

CompleteReminder

completionNote
​string · maxLength: 2000

What happened. It is saved with the reminder.

PresenceSignal

externalRef
​string · minLength: 1 · maxLength: 255 · required

The externalRef you set on the contact. A reference that matches no contact of this organization is ignored.

state
​string · enum · required

active: the person is in your app right now, send it about every 60 seconds while they are. offline: they left; they stop showing as online at once.

Enum values:
active
offline

ReportPresenceSignals

​PresenceSignal[] · minItems: 1 · maxItems: 100 · required

PresenceSignalsResult

object
​string · enum · required
Enum values:
presence_signals_result
accepted
​number · required

How many signals matched a contact of this organization. It does not say which ones did not.

PresenceSettings

object
​string · enum · required
Enum values:
presence_settings
enabled
​boolean · required

The organization setting presenceEnabled. Presence shows only when it is true and hasSignals is true.

hasSignals
​boolean · required

True once at least one signal arrived through POST /v2/presence-signals.

UpdatePresenceSettings

enabled
​boolean · required

true shows online and last seen in contacts and cases and allows presence=online. false hides them. Signals keep being stored while it is off.

Organization

object
​string · enum · required
Enum values:
organization
id
​string · required
name
​string · required
slug
​string · required

OrganizationBusinessHours

timezone
​string · required
startHour
​number · min: 0 · max: 23 · required
endHour
​number · min: 0 · max: 23 · required
activeSaturday
​boolean · required
activeSunday
​boolean · required

OrganizationSettings

object
​string · enum · required
Enum values:
organization_settings
​required

When the human team attends. Null until it is set. An agent in a stage set to answer outside business hours answers only outside this window.

cerrarTrasDiasSinActividad
​number | null · required

Days of silence after which a conversation closes by itself. Null means it never closes by inactivity. Until it is set, the house default applies.

presenceEnabled
​boolean · required

Whether presence shows. Same setting as /v2/presence/settings.

noPersistTraces
​boolean · required

While true, the traces of the agent turns are not stored.

​object | null · required

Public branding of the organization: logo, color and links.

CompanyProfile

object
​string · enum · required
Enum values:
company_profile
businessName
​string
businessDescription
​string
address
​string
phone
​string
email
​string
website
​string
schedule
​string
​object[]
​object[]
customInstructions
​string

CreateNote

content
​string · minLength: 1 · maxLength: 10000 · required
authorName
​string · minLength: 1 · maxLength: 120

The person who writes the note, shown as its author. Omit it to sign with the name of the API key.

Note

object
​string · enum · required
Enum values:
note
id
​string · required
caseId
​string · required
content
​string · required
author
​string | null · required

Who wrote it: authorName, a member, or the name of the API key.

pinned
​boolean · required

true for the pinned note of the case, shown first.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required

NoteList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Note[] · required

UpdateNote

content
​string · minLength: 1 · maxLength: 10000
pinned
​boolean

true pins the note and unpins the one that was pinned: a case has one pinned note. false unpins it. Send content, pinned or both.

Attachment

object
​string · enum · required
Enum values:
attachment
id
​string · required
caseId
​string · required
filename
​string · required
mimeType
​string · required
sizeBytes
​integer · required
source
​string · enum · required

manual is uploaded by API or by the team.

Enum values:
manual
whatsapp
note
createdAt
​string · date-time · required

AttachmentList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Attachment[] · required

AttachmentDownload

object
​string · enum · required
Enum values:
attachment_download
url
​string · required

A signed link. Open it before expiresAt.

expiresAt
​string · date-time · required

File

object
​string · enum · required
Enum values:
file
id
​string · required

Use it as fileId in a message, a campaign or a template header.

purpose
​string · enum · required

What the file is for. message_media: the image, video or document of one WhatsApp message. campaign_media: the same, for a campaign. template_header: the sample file WhatsApp reviews in a template header. The purpose sets which types and sizes are accepted, and a file only works where its purpose says.

Enum values:
message_media
template_header
campaign_media
filename
​string · required
mimeType
​string · required

The type found in the content, not the one the client sent.

sizeBytes
​integer · required
sha256
​string · required

SHA-256 of the content, in hex.

contactId
​string | null · required

The contact the file is about, or null.

createdAt
​string · date-time · required

FileList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​File[] · required

MessageAttachment

type
​string · required
mimeType
​string · required
url
​string · required

A signed link. Open it before expiresAt.

expiresAt
​string · date-time · required

InteractiveButton

id
​string · maxLength: 256 · required

Comes back as reply.id when the person taps it. Unique within the message.

title
​string · maxLength: 20 · required

InteractiveRow

id
​string · maxLength: 200 · required
title
​string · maxLength: 24 · required
description
​string · maxLength: 72

InteractiveSection

​InteractiveRow[] · required
title
​string · maxLength: 24

Required when the list has more than one section.

InteractiveList

button
​string · maxLength: 24 · required

The label of the button that opens the list.

​InteractiveSection[] · required

Up to 10 sections and 10 rows in total.

InteractiveProduct

catalogId
​string · required

The id of the catalog connected to the WhatsApp number.

productId
​string · required

The product id in the catalog (content_id / retailer id), not a Lelemon id.

InteractiveProductSection

title
​string · maxLength: 24 · required
productIds
​string[] · required

InteractiveProducts

catalogId
​string · required
​InteractiveProductSection[] · required

Up to 10 sections and 30 products in total.

InteractiveCatalog

thumbnailProductId
​string

The product whose image heads the catalog message.

InteractiveMediaHeader

type
​string · enum · required
Enum values:
image
video
document
url
​string · required

A public https link WhatsApp can download.

InteractiveCta

displayText
​string · maxLength: 20 · required

The label of the button that opens the link.

url
​string · required

A public https link. It opens in the browser of the person.

InteractiveFlow

flowId
​string · required

The id of a published WhatsApp Flow of the account.

cta
​string · maxLength: 20 · required

The label of the button that opens the Flow.

action
​string · enum

navigate opens the screen you name in screen (the default). data_exchange asks your Flow endpoint for the first screen.

Enum values:
navigate
data_exchange
screen
​string

The id of the first screen. Required when you send data.

​object

The values the first screen starts with.

token
​string

Your own correlation id. WhatsApp returns it with the Flow answer. Without it, the platform uses the flowId.

InteractiveCall

displayText
​string · maxLength: 20

The label of the call button. WhatsApp uses "Call Now".

ttlMinutes
​integer · min: 1 · max: 43200

Minutes the button stays active. WhatsApp uses 10080 (7 days).

payload
​string · maxLength: 512

Comes back with the call, to know which message it came from.

InteractiveCardHeader

type
​string · enum · required
Enum values:
image
video
url
​string · required

InteractiveCard

​InteractiveCardHeader · required
body
​string · maxLength: 160

Up to 160 characters and 2 line breaks.

​object

A link button. Send cta or buttons, never both. All cards use the same kind.

​InteractiveButton[]

Quick replies. Every card has the same number of buttons and the ids are unique in the message.

InteractiveCarousel

​InteractiveCard[] · required

Between 2 and 10 cards, in the order the person swipes them.

Interactive

oneOf
Exactly one variant must match.

Decision Table

VariantMatching Criteria
type = object · type="buttons" · requires: body, buttons
type = object · type="list" · requires: body, list
type = object · type="product" · requires: product
type = object · type="product_list" · requires: body, header, products
type = object · type="catalog"
type = object · type="cta_url" · requires: body, cta
type = object · type="flow" · requires: body, flow
type = object · type="location_request" · requires: body
type = object · type="contact_request" · requires: body
type = object · type="call" · requires: body
type = object · type="carousel" · requires: body, carousel
Properties for Variant 1:
InteractiveButtonsMessage
type
​string · const · required
Const value: buttons
body
​string · maxLength: 1024 · required

The text of the message. Required for buttons, list and product_list.

​InteractiveButton[] · required

Only for type buttons: 1 to 3 buttons.

header
​string · maxLength: 60

Text above the body. Required for product_list.

footer
​string · maxLength: 60
​object

An image, video or document above the body. Only for buttons and cta_url. Do not send it together with header.

MessageReply

id
​string · required
title
​string · required

MessageOrderItem

productId
​string · required
quantity
​number · required
price
​number · required

Unit price, as the catalog has it.

currency
​string · required

MessageOrder

catalogId
​string · required
​MessageOrderItem[] · required

MessageLocation

latitude
​number · required
longitude
​number · required
name
​string
address
​string

MessageFlowResponse

​object · required

The fields the person filled in the last screen of the Flow.

token
​string

The token you sent with the Flow, if any.

MessageSharedPhone

phone
​string · required
waId
​string

MessageContact

​MessageSharedPhone[] · required

MessageError

code
​number | null · required

The WhatsApp error code when WhatsApp rejected the message. null when the platform stopped it before sending.

message
​string · required

Why the message failed.

Message

object
​string · enum · required
Enum values:
message
id
​string · required
caseId
​string · required
author
​string · enum · required
Enum values:
contact
agent
team
authorName
​string | null · required
visibility
​string · enum · required
Enum values:
public
internal
text
​string · required
contentType
​string · required
​MessageAttachment[] · required
status
​string · enum · required

Delivery to the channel of the case.

Enum values:
pending
sent
delivered
read
failed
createdAt
​string · date-time · required
​

The buttons, list, product or catalog the message carried. null on any other message.

​

Set when the person tapped a button or a list row: the id and title they tapped. null otherwise.

​

Set when the person sent a cart from the WhatsApp catalog. text carries their note. null otherwise.

​

Set when the person shared a location (answering a location_request or on their own). text carries it as a sentence the agent reads. null otherwise.

​

Set when the person finished a WhatsApp Flow: the fields they filled in. null otherwise.

​

Set when the person shared their phone answering a contact_request. A contact card the person forwards on their own is not kept. null otherwise.

​

Set when status is failed: why. null on any other status. Read it to know whether to retry, send a template (outside the 24-hour window) or stop.

MessageList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Message[] · required

CreateMessage

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: author, text
type = object · requires: author, text
type = object · requires: author, interactive
type = object · requires: author, attachmentIds
Properties for Variant 1:
CreateContactMessage
author
​string · const · required
Const value: contact
text
​string · minLength: 1 · maxLength: 4096 · required
​object

Who is speaking, for an embedded copilot. Only with author contact. It travels signed to every action and MCP server of this turn as the actor, marked as declared by your key and not verified by Lelemon. It is kept for this turn only.

TurnTokens

input
​integer · required
output
​integer · required

TurnStep

tool
​string · required

Name of the tool the agent called. A Lelemon system tool shows its public name (transfer_to_human, save_case_data, send_buttons...), the same one GET /v2/agents/{id}/tools lists. For a tool from an MCP server it is the server slug and the tool name.

status
​string · enum · required
Enum values:
ok
error
durationMs
​integer · required

Milliseconds the tool took.

input
​object

What the agent sent to the tool, with emails, RUTs, phones, cards and secrets masked by shape. Absent when the tool is marked noPersist: those tools leave only status and duration.

output
​string

What the tool answered, masked the same way and cut at 4000 characters. Absent when the tool is marked noPersist.

Turn

object
​string · enum · required
Enum values:
turn
id
​string · required
caseId
​string · required
agentId
​string | null · required
model
​string | null · required

The model that answered the last call of the turn.

status
​string · enum · required

completed: the agent finished by itself. incomplete: it stopped early and delivered a partial answer. failed: it gave no answer.

Enum values:
completed
incomplete
failed
stopReason
​string | null · required
iterations
​integer · required

Calls to the model in the turn.

​TurnTokens · required
durationMs
​integer · required
​TurnStep[] · required
omittedSteps
​integer · required

Tool calls that did not fit in steps (up to 50 steps and 64 KB are kept).

createdAt
​string · date-time · required

TurnList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Turn[] · required

UsageTotals

turns
​integer · required

Turns the agent took.

messages
​integer · required

Replies the agent wrote.

inputTokens
​integer · required
outputTokens
​integer · required
conversations
​integer · required

Conversations opened in the range, the unit that is billed. A conversation is a window per case of up to 10 agent turns or 24 hours, whichever comes first; the next turn opens another one.

cases
​integer · required

Cases (conversations) in which the agent wrote at least one reply in the range. A case counts once however many replies it has.

UsageGroup

turns
​integer · required

Turns the agent took.

messages
​integer · required

Replies the agent wrote.

inputTokens
​integer · required
outputTokens
​integer · required
conversations
​integer

Conversations opened in this group. Absent with groupBy=model: a conversation is not split by model.

cases
​integer

Cases in which the agent wrote a reply in this group. A case with replies on two days counts in both, so the groups can add up to more than totals.cases. Absent with groupBy=model: a case is not split by model.

day
​string
agentId
​string
model
​string
subaccountId
​string | null

With groupBy=subaccount. null is the usage of the platform itself, which is not in any subaccount.

Usage

object
​string · enum · required
Enum values:
usage
from
​string · required
to
​string · required
timezone
​string · required
​UsageTotals · required
​UsageGroup[] · required

CaseMetrics

object
​string · enum · required
Enum values:
case_metrics
caseId
​string · required
pipelineId
​string · required
status
​string · enum · required
Enum values:
open
closed
control
​string · enum · required

Who has the case now. human also covers a case the agent handed off and nobody took yet.

Enum values:
agent
human
createdAt
​string · date-time · required
escalatedAt
​string | null · date-time · required

The first time the agent handed the case to a person.

takenAt
​string | null · date-time · required

The first time a person took the case.

takenBy
​string | null · required

The member who took it first. null when nobody did, or when it was taken from the phone.

closedAt
​string | null · date-time · required

When it was closed. null while it is open.

closedBy
​string | null · enum · required

Who closed it: the agent, a person, or the system (inactivity, follow-ups exhausted). null while it is open.

Enum values:
agent
human
system
resolvedByAgent
​boolean · required

True when the agent closed it without handing it off and without anyone taking it.

waitSeconds
​integer | null · required

Seconds between the last handoff and the first time a person took the case. null when it was never handed off and taken.

agentSeconds
​integer · required

Seconds the agent attended the case.

humanSeconds
​integer · required

Seconds a person attended the case.

updatedAt
​string · date-time · required

The last change. It is the field the range filters by.

CaseMetricsList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​CaseMetrics[] · required

CreateBudget

scope
​string · enum · required
Enum values:
organization
subaccount
agent
contact
monthlyLimitConversations
​integer · min: 1 · max: 10000000 · required

Monthly limit in conversations. A conversation is a window per case of up to 10 agent turns or 24 hours, whichever comes first.

subjectId
​string · maxLength: 64

Required for subaccount (sub_), agent (agt_) and contact (ctc_). Not allowed for organization. A subaccount budget needs the platform key without Lelemon-Subaccount; the key of the subaccount cannot see or raise it.

alertPercent
​integer · min: 1 · max: 100
Default: 80
enforcement
​string · enum
Enum values:
stop
notify
Default: stop

BudgetPeriod

start
​string · required

First day of the month.

resetsAt
​string · date-time · required

When the month ends and the spent amount goes back to zero.

Budget

object
​string · enum · required
Enum values:
budget
id
​string · required
scope
​string · enum · required

What the budget covers: the whole organization, one subaccount, one agent or one contact.

Enum values:
organization
subaccount
agent
contact
subjectId
​string | null · required

The sub_, agt_ or ctc_ id the budget covers. null for the organization.

monthlyLimitConversations
​integer · required

Monthly limit in conversations.

alertPercent
​integer · required

Percent of the limit that fires budget.threshold_reached.

enforcement
​string · enum · required

stop: at the limit the agent stops and the API answers 402 budget_exceeded. notify: the agent keeps working and only the events fire.

Enum values:
stop
notify
usedConversations
​integer · required

Conversations used this month.

state
​string · enum · required

ok: under the alert percent. alert: past it. limit_reached: the used conversations reached the limit.

Enum values:
ok
alert
limit_reached
​BudgetPeriod · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

BudgetList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Budget[] · required

UpdateBudget

monthlyLimitConversations
​integer · min: 1 · max: 10000000

New monthly limit in conversations. Raising it makes a stopped agent answer again at once and re-arms the alert.

alertPercent
​integer · min: 1 · max: 100
enforcement
​string · enum
Enum values:
stop
notify

Member

object
​string · enum · required
Enum values:
member
id
​string · required

The id that POST /v2/cases/{id}/assign takes as assigneeId.

name
​string | null · required
email
​string · required
role
​string · required

The role of the member. A viewer cannot be assigned cases.

availability
​string · enum · required

Whether the member is receiving new cases right now.

Enum values:
available
away
caseScope
​string | null · enum · required

Which cases the member sees, when set for them: all (every case of their pipelines), unassigned_and_own (the unassigned ones and theirs) or assigned (only theirs). null means they follow the default of the organization.

Enum values:
all
unassigned_and_own
assigned
effectiveCaseScope
​string · enum · required

What the member sees now: caseScope, or the default of the organization when that is null. The owner and admins always see all. The MCP connector of Lelemon only works for people who see all.

Enum values:
all
unassigned_and_own
assigned
createdAt
​string · date-time · required

MemberList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Member[] · required

MemberAuditActor

memberId
​string | null · required

The member who did it, the same id members.list returns.

apiKeyId
​string | null · required

The API key used. null when it was done from the panel.

MemberAuditTarget

memberId
​string | null · required

The member it was done to. null while the person is only invited and has not joined.

invitationId
​string | null · required

The invitation it was done to, if the person was invited.

email
​string | null · required

MemberAuditEntry

object
​string · enum · required
Enum values:
member_audit_entry
id
​string · required
action
​string · enum · required
Enum values:
invitation.created
invitation.resent
invitation.cancelled
member.role_changed
member.scope_changed
member.removed
​MemberAuditActor · required
​MemberAuditTarget · required
roleBefore
​string | null · enum · required
Enum values:
owner
admin
member
viewer
roleAfter
​string | null · enum · required
Enum values:
owner
admin
member
viewer
scopeBefore
​string | null · enum · required

Only in member.scope_changed: the case scope before. null means the default of the organization (and, in other actions, that it does not apply).

Enum values:
all
unassigned_and_own
assigned
scopeAfter
​string | null · enum · required

Only in member.scope_changed: the case scope after.

Enum values:
all
unassigned_and_own
assigned
createdAt
​string · date-time · required

MemberAuditList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​MemberAuditEntry[] · required

MemberAvailability

object
​string · enum · required
Enum values:
member_availability
memberId
​string · required
email
​string · required
status
​string · enum · required

What was marked, by the person or by the API. It does not consider the opening hours of the organization: that is availableForAssignment.

Enum values:
available
away
availableForAssignment
​boolean · required

Whether the assignment would give this person a new case right now. false if away, and also if available but the organization has opening hours and they are closed: the automatic away by schedule wins, unless the person asked to keep going a while longer (extendedUntil in the future).

changedAt
​string | null · date-time · required

When the status last changed. null if it never did.

extendedUntil
​string | null · date-time · required

Until when the person asked to keep receiving cases after the opening hours. null if there is no extension.

SetMemberAvailability

status
​string · enum · required

available: can receive new cases. away: the assignment skips them and any extension they asked for is dropped.

Enum values:
available
away

UpdateMemberRole

role
​string · enum · required

The new role. It cannot be above the current role of whoever issued the key, and nobody is named owner by API.

Enum values:
admin
member
viewer

UpdateMemberCaseScope

caseScope
​string | null · enum · required

all: sees every case of their pipelines. unassigned_and_own: the unassigned ones and theirs. assigned: only theirs. null: goes back to the default of the organization.

Enum values:
all
unassigned_and_own
assigned

Invitation

object
​string · enum · required
Enum values:
invitation
id
​string · required
email
​string · required
role
​string · enum · required
Enum values:
admin
member
viewer
status
​string · enum · required

pending can still be accepted. expired passed its 7 days: resend it to renew it. accepted already joined. cancelled can no longer be accepted.

Enum values:
pending
accepted
expired
cancelled
invitedBy
​string | null · required

The member who invited, the same id members.list returns.

invitedAt
​string · date-time · required

When it was sent. Resending renews it.

expiresAt
​string · date-time · required

InvitationList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Invitation[] · required

CreateInvitation

email
​string · email · pattern: ^[A-Za-z0-9!#$%&'*+/… · required
role
​string · enum · required

The owner invites up to admin. An admin invites member or viewer. Nobody invites as owner.

Enum values:
admin
member
viewer

InvitationDelivery

object
​string · enum · required
Enum values:
invitation
id
​string · required
email
​string · required
role
​string · enum · required
Enum values:
admin
member
viewer
status
​string · enum · required

pending can still be accepted. expired passed its 7 days: resend it to renew it. accepted already joined. cancelled can no longer be accepted.

Enum values:
pending
accepted
expired
cancelled
invitedBy
​string | null · required

The member who invited, the same id members.list returns.

invitedAt
​string · date-time · required

When it was sent. Resending renews it.

expiresAt
​string · date-time · required
emailSent
​boolean · required

false when the email could not be sent. The invitation is created anyway: resend it with invitations.resend or ask the person to check the address. The acceptance link is never returned by the API.

Agenda

object
​string · enum · required
Enum values:
agenda
id
​string · required
slug
​string · required

The short name your team gave the agenda. A filter-friendly label: routes take the id, never the slug.

name
​string · required
timezone
​string · required

The time zone the opening hours of the agenda are read in.

slotDurationMinutes
​number · required

Length of every meeting.

minNoticeHours
​number · required

How many hours ahead a slot must start to be offered. Earlier slots are not listed.

maxDaysAhead
​number · required

How many days ahead the agenda accepts bookings. It caps daysAhead.

bufferBeforeMinutes
​number · required

Free minutes kept before every meeting.

bufferAfterMinutes
​number · required

Free minutes kept after every meeting.

assignmentStrategy
​string · enum · required

How a booking picks the team member who takes it.

Enum values:
round_robin
first_available
least_busy
specific_member
​object · required

Opening hours by day of the week, in the time zone of the agenda. A day with no ranges is closed.

defaultTitle
​string · required
defaultDescription
​string | null · required
generateMeetLink
​boolean · required

Whether each meeting gets a video call link.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required

AgendaList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Agenda[] · required

CreateAgenda

name
​string · required
slug
​string · required

Short name of the agenda, unique in the organization: lowercase letters, numbers and hyphens. Routes take the id, never the slug.

assignmentStrategy
​string · enum

How a booking picks the team member who takes it.

Enum values:
round_robin
first_available
least_busy
specific_member
Default: round_robin
timezone
​string

The time zone the opening hours are read in.

Default: America/Santiago
slotDurationMinutes
​number

Length of every meeting.

Default: 30
bufferBeforeMinutes
​number

Free minutes kept before every meeting.

Default: 0
bufferAfterMinutes
​number

Free minutes kept after every meeting.

Default: 5
minNoticeHours
​number

How many hours ahead a slot must start to be offered.

Default: 24
maxDaysAhead
​number

How many days ahead the agenda accepts bookings.

Default: 14
​object

Opening hours by day of the week, in the time zone of the agenda. A day with no ranges is closed.

defaultTitle
​string
Default: Reunión
defaultDescription
​string
generateMeetLink
​boolean
Default: true

UpdateAgenda

name
​string
slug
​string

Short name of the agenda, unique in the organization: lowercase letters, numbers and hyphens. Routes take the id, never the slug.

assignmentStrategy
​string · enum

How a booking picks the team member who takes it.

Enum values:
round_robin
first_available
least_busy
specific_member
Default: round_robin
timezone
​string

The time zone the opening hours are read in.

Default: America/Santiago
slotDurationMinutes
​number

Length of every meeting.

Default: 30
bufferBeforeMinutes
​number

Free minutes kept before every meeting.

Default: 0
bufferAfterMinutes
​number

Free minutes kept after every meeting.

Default: 5
minNoticeHours
​number

How many hours ahead a slot must start to be offered.

Default: 24
maxDaysAhead
​number

How many days ahead the agenda accepts bookings.

Default: 14
​object

Opening hours by day of the week, in the time zone of the agenda. A day with no ranges is closed.

defaultTitle
​string
Default: Reunión
defaultDescription
​string
generateMeetLink
​boolean
Default: true

AgendaMember

object
​string · enum · required
Enum values:
agenda_member
id
​string · required

The same id that GET /v2/members lists.

name
​string | null · required
calendarConnected
​boolean · required

Whether the person has a connected calendar the agenda can read. Without one the person adds no free slots.

active
​boolean · required

Whether the person takes bookings from this agenda. false keeps them in the agenda without offering their slots.

priority
​integer · required

Weight when the agenda assigns by priority: higher takes more bookings.

AgendaMemberList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​AgendaMember[] · required

AddAgendaMember

memberId
​string · pattern: ^mbr_[0-9A-Za-z]{22}… · required

An active member of the organization. List them with GET /v2/members.

priority
​integer · min: 1 · max: 1000
Default: 1

UpdateAgendaMember

priority
​integer · min: 1 · max: 1000
active
​boolean

Slot

start
​string · date-time · required

When the slot starts. Send it as start to book it.

end
​string · date-time · required

Availability

object
​string · enum · required
Enum values:
availability
agendaId
​string · required
timezone
​string · required
​Slot[] · required

The free slots, nearest first. An empty list means there are none in the window asked.

CreateMeeting

agendaId
​string · pattern: ^agd_[0-9A-Za-z]{22}… · required

The agenda to book in. The one you asked availability for.

start
​string · date-time · pattern: (Z|[+-]\d{2}:\d{2})$ · required

When it starts, ISO 8601 with a time zone. It must be the start of a slot from the availability of the agenda.

attendeeEmail
​string · email · maxLength: 255 · pattern: ^[A-Za-z0-9!#$%&'*+/… · required

Who is booked. The invitation goes to this address.

attendeeName
​string · minLength: 1 · maxLength: 120 · required
attendeePhone
​string · maxLength: 40
companyName
​string · maxLength: 200

Goes into the description of the calendar event.

context
​string · maxLength: 1000

What the meeting is for. Goes into the description of the calendar event so whoever attends arrives knowing.

Meeting

object
​string · enum · required
Enum values:
meeting
id
​string · required
agendaId
​string · required
status
​string · enum · required

scheduled is a booked meeting. canceled is closed and frees the slot.

Enum values:
scheduled
confirmed
completed
canceled
no_show
rescheduled
start
​string · date-time · required
end
​string · date-time · required
durationMinutes
​number · required
timezone
​string · required
attendeeEmail
​string · required
attendeeName
​string · required
attendeePhone
​string | null · required
companyName
​string | null · required
context
​string | null · required
meetLink
​string | null · required

The video call link the attendee got in the invitation.

canceledAt
​string | null · date-time · required

When the meeting was canceled. null if it was not.

cancelReason
​string | null · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

MeetingList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Meeting[] · required

CancelMeeting

reason
​string · maxLength: 500

Why it is canceled. Stored with the meeting.

RescheduleMeeting

start
​string · date-time · pattern: (Z|[+-]\d{2}:\d{2})$ · required

The new start, ISO 8601 with a time zone. It must be a free slot of the agenda and the person assigned must be free then.

WebhookEndpointWithSecret

object
​string · enum · required
Enum values:
webhook_endpoint
id
​string · required
url
​string · required
description
​string | null · required
enabledEvents
​string[] · required
apiVersion
​string · required
scope
​string · enum · required
Enum values:
self
customers
status
​string · enum · required
Enum values:
enabled
disabled
disabledReason
​string | null · required

Why the system turned the endpoint off, when it did.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required
secret
​string · required

Signing secret. It is shown only here; keep it. Verify with Lelemon-Signature.

previousSecretExpiresAt
​string | null · date-time

After a rotation, until when the previous secret still signs. Both signatures go in the header.

WebhookEndpoint

object
​string · enum · required
Enum values:
webhook_endpoint
id
​string · required
url
​string · required
description
​string | null · required
enabledEvents
​string[] · required
apiVersion
​string · required
scope
​string · enum · required
Enum values:
self
customers
status
​string · enum · required
Enum values:
enabled
disabled
disabledReason
​string | null · required

Why the system turned the endpoint off, when it did.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required

WebhookEndpointList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​WebhookEndpoint[] · required

WebhookEndpointRotation

object
​string · enum · required
Enum values:
webhook_endpoint
id
​string · required
url
​string · required
description
​string | null · required
enabledEvents
​string[] · required
apiVersion
​string · required
scope
​string · enum · required
Enum values:
self
customers
status
​string · enum · required
Enum values:
enabled
disabled
disabledReason
​string | null · required

Why the system turned the endpoint off, when it did.

createdAt
​string · date-time · required
updatedAt
​string · date-time · required
previousSecretExpiresAt
​string · date-time · required

Until when the previous secret still signs. Both signatures go in the header.

secret
​string

The new signing secret. It is shown only here; keep it. Verify with Lelemon-Signature. Absent in a dryRun, which rotates nothing.

Event

object
​string · enum · required
Enum values:
event
id
​string · required
type
​string · required

The event type, such as case.escalated. See GET /v2/event-types.

createdAt
​string · date-time · required
organizationId
​string · required
​object · required

The shape depends on type. See GET /v2/event-types.

customerId
​string

The subaccount the event belongs to, when there is one.

WebhookDelivery

object
​string · enum · required
Enum values:
webhook_delivery
id
​string · required

Same value the endpoint received in Lelemon-Delivery-Id.

endpointId
​string · required
eventId
​string · required
eventType
​string · required
attempt
​integer · min: 1 · required
status
​string · enum · required

failed will be retried. exhausted is the last attempt: it is not retried again.

Enum values:
succeeded
failed
exhausted
httpStatus
​integer | null · required
error
​string | null · required
durationMs
​integer | null · required
createdAt
​string · date-time · required

WebhookDeliveryList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​WebhookDelivery[] · required

ResendEvent

endpointId
​string · maxLength: 64

Send only to this endpoint. Without it, to every enabled endpoint subscribed to the event.

EventType

object
​string · enum · required
Enum values:
event_type
type
​string · enum · required
Enum values:
case.escalated
case.closed
case.stage_entered
message.created
case.control_changed
message.received
message.human_sent
message.agent_sent
description
​string · required
​object · required

JSON Schema of the data of this event.

EventTypeList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​EventType[] · required

RecipientAllowlist

object
​string · enum · required
Enum values:
recipient_allowlist
enabled
​boolean · required

While true, nothing is sent to anyone who is not in entries. While false, the list is kept but ignored.

entries
​string[] · required

Phones in E.164, emails, or whole domains written as @domain. A domain does not include its subdomains.

updatedAt
​string | null · date-time · required
dryRun
​boolean

Present and true only on a dry run: the list shown is what would be saved, and nothing was saved.

ReplaceRecipientAllowlist

enabled
​boolean · required
entries
​string[] · maxItems: 1000 · required

Replaces the whole list. Phones in E.164 (+56912345678), emails (ana@empresa.cl) or domains (@empresa.cl).

TemplateHeaderInput

type
​string · enum · required

The media above the body. document: send it with the document field of each message. image and video: send it with components.headerImage or components.headerVideo.

Enum values:
document
image
video
exampleFileId
​string

A file you uploaded with POST /v2/files and purpose template_header. WhatsApp reviews it as the sample of the header, and its type must match the header (image, video or document). Send exampleFileId or exampleUrl, one of them. Preferred over a URL.

exampleUrl
​string · maxLength: 2048

A public https file Meta reviews as the sample of the header. Lelemon downloads it and uploads it to WhatsApp, so it must stay reachable while the template is created.

TemplateButtonInput

type
​string · enum · required

quick_reply sends a reply back when tapped (it arrives as a message with reply {id, title}). url opens a link. catalog opens the catalog of the number (no extra fields). mpm opens a selection of products you choose when you send (components.mpm). flow opens a WhatsApp Flow (flowId).

Enum values:
quick_reply
url
catalog
mpm
flow
text
​string · maxLength: 25 · required
payload
​string · maxLength: 256

Only for quick_reply. It comes back as reply.id when the person taps the button. Without it, reply.id is the button text.

url
​string

Only for url, and then required. A public https link. It can end with one variable written like {{order_id}}, for example https://shop.example.com/orders/{{order_id}}: you give its value in variables when you send, and its sample in examples.

flowId
​string

Only for flow, and then required: the id of a published Flow.

flowAction
​string · enum

Only for flow. navigate opens the screen (the default).

Enum values:
navigate
data_exchange
screen
​string

Only for flow with navigate: the id of the first screen.

TemplateCardHeader

type
​string · enum · required
Enum values:
image
video
exampleFileId
​string

A file you uploaded with POST /v2/files and purpose template_header, an image or a video that matches type. Send exampleFileId or exampleUrl, one of them.

exampleUrl
​string · maxLength: 2048

A public https sample WhatsApp reviews for the card.

TemplateCardButton

type
​string · enum · required
Enum values:
quick_reply
url
text
​string · maxLength: 25 · required
payload
​string

Only for quick_reply.

url
​string

Only for url, and then required: https, no variables.

TemplateCard

​TemplateCardHeader · required
​TemplateCardButton[] · required

One or two buttons. Every card has the same buttons in the same order.

body
​string · maxLength: 160

In every card or in none.

TemplateCarousel

type
​string · enum · required

media: 2 to 10 cards with an image or video, fixed when the template is created. product: cards that show products of the catalog; the template is created with two and you send 2 to 10 cards.

Enum values:
media
product
​TemplateCard[]

Only for media.

buttonText
​string · maxLength: 25

Only for product, and then required: the text of the button of each card.

CreateTemplate

name
​string · pattern: ^[a-z][a-z0-9_]{0,51… · required

lowercase_with_underscores.

language
​string · minLength: 2 · maxLength: 20 · required
category
​string · enum · required
Enum values:
marketing
utility
authentication
body
​string · minLength: 1 · maxLength: 1024 · required

With named variables: {{name}}.

​object · required

A sample value for each variable.

​required
footer
​string · maxLength: 60
​TemplateHeaderInput
​TemplateButtonInput[]

Up to 10 buttons, at most 2 of type url. Marketing templates also get the opt-out button, which counts toward the 10: in the language of the template, or your own text if you send a quick_reply with payload lelemon_stop_messages. Quick replies are kept together before the links.

​object

Swipeable cards under the body, with media or with catalog products. WhatsApp checks the combination with the other parts when it reviews the template.

TemplateHeader

type
​string · enum · required
Enum values:
document
image
video

TemplateButton

type
​string · enum · required
Enum values:
quick_reply
url
catalog
mpm
flow
text
​string · required
payload
​string
url
​string
flowId
​string
flowAction
​string · enum
Enum values:
navigate
data_exchange
screen
​string

Template

object
​string · enum · required
Enum values:
template
id
​string · required
name
​string · required
language
​string · required
category
​string · enum · required
Enum values:
marketing
utility
authentication
status
​string · enum · required
Enum values:
in_review
approved
rejected
paused
rejectionReason
​string | null · required
body
​string · required
footer
​string | null · required
​required
buttons
​string[] · required

Texts of the buttons.

​TemplateButton[] · required

The buttons with their type, payload or link.

​required
variables
​string[] · required

The variables of the body and of the links of the buttons.

​object · required
​required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

TemplateSync

object
​string · enum · required
Enum values:
template_sync
checked
​number · required

Templates checked against WhatsApp.

updated
​number · required

Templates whose status changed.

imported
​number · required

Templates found on WhatsApp that were not here.

TemplateList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Template[] · required

UpdateTemplate

​

RenderTemplate

​object · required

TemplateRender

object
​string · enum · required
Enum values:
template_render
text
​string · required
buttons
​string[] · required

HeaderDocument

fileId
​string

A file you uploaded with POST /v2/files. In a single message it needs purpose message_media; in a campaign, campaign_media. Preferred over a URL.

attachmentId
​string

A file you uploaded to a case. Use fileId for a file uploaded with POST /v2/files.

url
​string · maxLength: 2048

A public https URL that WhatsApp can download.

filename
​string · maxLength: 255

HeaderMedia

fileId
​string

A file you uploaded with POST /v2/files. In a single message it needs purpose message_media; in a campaign, campaign_media. Preferred over a URL: WhatsApp gets the bytes from Lelemon, not from your server.

attachmentId
​string

A file you uploaded to a case. Use fileId for a file uploaded with POST /v2/files.

url
​string · maxLength: 2048

A public https URL that WhatsApp can download.

SendCatalog

thumbnailProductId
​string · maxLength: 200

The product whose image heads the message. Without it WhatsApp uses the first product of the catalog.

SendProductSection

title
​string · maxLength: 24 · required
productIds
​string[] · maxItems: 30 · required

SendMpm

thumbnailProductId
​string · maxLength: 200 · required
​SendProductSection[] · maxItems: 10 · required

Up to 10 sections and 30 products in total.

SendFlow

token
​string · maxLength: 200

Your own correlation id. WhatsApp returns it with the Flow answer.

​object

The values the first screen of the Flow starts with.

CardMedia

fileId
​string

A file you uploaded with POST /v2/files, with purpose message_media in a single message or campaign_media in a campaign. Send fileId or url, one of them.

url
​string · maxLength: 2048

A public https URL that WhatsApp can download.

SendCard

​object

The image of the card. Media carousels with image cards.

​object

The video of the card. Media carousels with video cards.

productId
​string · maxLength: 200

The product of the card (retailer id in the catalog). Product carousels.

SendComponents

​object

The image of the header, for templates with an image header.

​object

The video of the header, for templates with a video header.

​object

For templates with a catalog button. Optional.

​object

For templates with a multi-product button. Required then.

​object

For templates with a flow button. Optional.

catalogId
​string · maxLength: 100

The catalog of the products of a product carousel. It must be the one connected to the number that sends.

​SendCard[] · maxItems: 10

For templates with a carousel. Media carousel: as many cards as the template has, each with its image or video. Product carousel: 2 to 10 cards, each with a productId.

TestTemplate

to
​string · maxLength: 50 · required
​object

By default, the sample values the template was created with.

​HeaderDocument
​object

What the template needs besides its variables: image or video header, products, Flow data, cards.

MessageFailure

code
​string · required
message
​string · required

WhatsappMessage

object
​string · enum · required
Enum values:
whatsapp_message
id
​string · required
status
​string · enum · required
Enum values:
queued
scheduled
sent
delivered
read
failed
skipped
canceled
templateId
​string | null · required
contactId
​string | null · required
caseId
​string | null · required
sendAt
​string | null · date-time · required
skipReason
​string | null · required

Why it was skipped: opted_out, no_phone, template_not_approved, human_in_control, cooldown, not_allowed or canceled.

​required
createdAt
​string · date-time · required

Recipient

oneOf
Exactly one variant must match.

Decision Table

VariantMatching Criteria
type = object · requires: contactId
type = object · requires: externalRef
type = object · requires: phone
Properties for contactId:
contactId
​string · required

OnReply

agentId
​string

The agent that continues if they answer.

stageId
​string

The stage where the case continues if they answer.

instructions
​string · maxLength: 4000

The context the agent gets if they answer. For this send, it replaces the fixed instructions of the trigger.

CreateWhatsappMessage

​required

Exactly one of contactId, externalRef or phone.

templateId
​string · required
​object · required
​object

The document of the header, for templates that have one.

​object

What the template needs besides its variables: image or video header, products, Flow data, cards.

sendAt
​string · date-time

Schedule it. Without it the message goes out now.

from
​string

The number to send from. By default the one that fits the template and the agent.

​OnReply

EventContact

externalRef
​string · minLength: 1 · maxLength: 255 · required

Your own id for this person. The contact is created if it is new.

name
​string · minLength: 1 · maxLength: 255
phone
​string · minLength: 1 · maxLength: 50
email
​string · email · maxLength: 255 · pattern: ^[A-Za-z0-9!#$%&'*+/…
companyId
​string

Links the contact to a company. When you omit it the company stays. A company that does not exist in the organization is a 400 with param contact.companyId.

CreateContactEvent

type
​string · minLength: 1 · maxLength: 100 · required

Your own name for the fact.

​EventContact · required
​object

Values the triggers can map to template variables.

​object

For this event only. onReply.instructions replaces the fixed instructions of the trigger.

TriggerEmail

subject
​string · minLength: 1 · maxLength: 998 · pattern: ^[^\r\n]*$ · required

Subject. {{variable}} placeholders are filled from variables.

text
​string · minLength: 1 · maxLength: 50000 · required

Text of the first email, with {{variable}} placeholders.

from
​string · maxLength: 320

The sender. It must belong to a verified domain. Defaults to the first verified domain.

TriggerOnReplyInput

agentId
​string
stageId
​string

TriggerOpenCase

pipelineId
​string · required
stageId
​string · required

TriggerMoveCase

stageId
​string · required

TriggerOnEventInput

​object

Opens a case for the contact in this pipeline and stage when the event arrives. If the contact already has an open case in the pipeline, it is left where it is.

​object

Moves the open case of the contact in the pipeline of this stage to the stage when the event arrives. If the contact has no open case there, nothing happens.

DailyWindow

from
​string · pattern: ^([01]\d|2[0-3]):([0… · required
to
​string · pattern: ^([01]\d|2[0-3]):([0… · required
timezone
​string · maxLength: 60
Default: America/Santiago

TriggerCadenceInput

attempts
​integer · min: 1 · max: 5 · required

How many times the template is sent at most, the first one included. The first goes out when the event arrives.

intervalHours
​integer · min: 1 · max: 336 · required

Hours between one attempt and the next.

​object

Attempts only go out between from and to in this time zone. An attempt that falls outside waits for the next from.

stopOn
​string[] · unique

What ends the cadence, checked right before each attempt: reply (the contact wrote back), opt_out, stage_changed (the case left the stage it was in) and closed (the case was closed). opt_out always applies, even if you leave it out.

Enum values:
reply
opt_out
stage_changed
closed
Default: ["reply","opt_out","stage_changed","closed"]

CreateTrigger

contactEvent
​string · minLength: 1 · maxLength: 100 · required

Your own name for the fact, as you send it in POST /v2/contact-events.

channel
​string · enum

whatsapp sends the template. email sends the text in email and opens a case the agent continues.

Enum values:
whatsapp
email
Default: whatsapp
templateId
​string

The template to send. A whatsapp trigger needs either templateId or onEvent. Without templateId it sends no message and only acts on the case, so variables, onReply, instructions, cooldownDays and cadence do not apply.

​object

Required for email.

​object

Template (or email placeholder) variable to a path in the event: data.x or contact.name, contact.phone, contact.email, contact.externalRef. Any other text is used as is. Required when the trigger has a template or an email; leave it out when it has neither.

​TriggerOnReplyInput
instructions
​string · maxLength: 4000

Context the agent gets if they answer. An event can replace it with onReply.instructions.

cooldownDays
​integer · min: 1 · max: 3650

Don't send twice to the same contact within this many days.

​object

What happens to the contact case the moment the event arrives, without waiting for a reply. Send exactly one of openCase or moveCase. WhatsApp triggers only. With no templateId it is the whole trigger: the case is opened or moved and no message goes out.

​object

Repeat the template up to attempts times, every intervalHours, until the contact replies, opts out, or the case changes stage or closes. WhatsApp triggers only. cooldownDays applies to the first attempt only.

TriggerOnReply

agentId
​string | null · required
stageId
​string | null · required

TriggerOnEvent

​required
​required

TriggerCadence

attempts
​integer · required
intervalHours
​integer · required
​required
stopOn
​string[] · required
Enum values:
reply
opt_out
stage_changed
closed

Trigger

object
​string · enum · required
Enum values:
trigger
id
​string · required
contactEvent
​string · required
channel
​string · enum · required
Enum values:
whatsapp
email
templateId
​string | null · required
​required
​object · required
​required
instructions
​string | null · required
cooldownDays
​integer | null · required
​required
​required
status
​string · enum · required
Enum values:
active
paused
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

TriggerList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Trigger[] · required

CadenceRun

object
​string · enum · required
Enum values:
cadence_run
id
​string · required
contact
​object · required

The contact the cadence is running for.

status
​string · enum · required
Enum values:
active
completed
stopped
stopReason
​string | null · required

Why the cadence stopped. Null while it is active.

attemptsMade
​number · required
maxAttempts
​number · required
intervalHours
​number · required
nextAt
​string | null · date-time · required

When the next attempt goes out. Null unless it is active.

startedAt
​string · date-time · required
updatedAt
​string · date-time · required

CadenceRunList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​CadenceRun[] · required

UpdateTrigger

contactEvent
​string · minLength: 1 · maxLength: 100
templateId
​string
​object

Email triggers only.

​object
​
instructions
​string | null · maxLength: 4000
cooldownDays
​integer | null · min: 1 · max: 3650
​
​
status
​string · enum
Enum values:
active
paused

OptOut

object
​string · enum · required
Enum values:
opt_out
contactId
​string · required
channel
​string · enum · required
Enum values:
whatsapp
email
voice
source
​string · enum · required

contact: they asked for it. organization: you set it through the API.

Enum values:
contact
organization
createdAt
​string · date-time · required

OptOutList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​OptOut[] · required

ContactFilter

tags
​string[] · maxItems: 20
lastCaseAfter
​string · date

Contacts with a case opened after this date.

createdAfter
​string · date

Contacts created after this date.

Audience

​ContactFilter
externalRefs
​string[] · maxItems: 10000

Up to 10000 externalRefs.

Schedule

at
​string · required

When the campaign starts after you launch it: a date-time, or "now" to start as soon as you launch it. "now" is saved as the moment you created the campaign, so reading it back gives a date-time. A date in the past also starts at once.

​DailyWindow
batchSize
​integer · min: 1 · max: 1000
Default: 100
batchEveryMinutes
​integer · min: 1 · max: 1440
Default: 15

CreateCampaign

name
​string · minLength: 1 · maxLength: 255 · required
templateId
​string · required
​object · required

contactFilter or externalRefs.

​Schedule · required
​object

Template variable to contact.name, contact.phone, contact.email or contact.externalRef. Any other text is used as is.

​HeaderDocument
​object

What the template needs besides its variables: image or video header, products, Flow data, cards.

​OnReply

CampaignOnReply

agentId
​string | null · required
stageId
​string | null · required
instructions
​string | null · required

CampaignCounts

recipients
​number · required
pending
​number · required
queued
​number · required
sent
​number · required
delivered
​number · required
read
​number · required
replied
​number · required

Recipients whose contact wrote back after receiving the message, counted once each. It is not a status: a recipient can be read and replied at once.

failed
​number · required
skipped
​number · required

Campaign

object
​string · enum · required
Enum values:
campaign
id
​string · required
name
​string · required
status
​string · enum · required
Enum values:
draft
scheduled
sending
paused
completed
canceled
templateId
​string · required
​Audience · required
​object · required
​required

The components saved on the campaign (media headers by fileId or url, cards, products), as you sent them. null when it has none.

​required

The document header saved on the campaign, as you sent it. null when it has none.

​required

Who continues the conversation if the contact answers, as you sent it. null when it was not set.

​Schedule · required
pauseReason
​string | null · required

Why it paused by itself, if it did.

​CampaignCounts · required
launchedAt
​string | null · date-time · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

CampaignList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Campaign[] · required

UpdateCampaign

name
​string · minLength: 1 · maxLength: 255
templateId
​string
​Audience
​object
​

Send null to remove the saved document header.

​

What the template needs besides its variables: image or video header, products, Flow data, cards. Send null to remove the saved components.

​Schedule
​

Send null to remove who continues if they answer.

CampaignCost

amount
​number · required
currency
​string · required
effectiveFrom
​string · date · required

Date from which the Meta rate card used for the estimate applies.

CampaignPreview

object
​string · enum · required
Enum values:
campaign_preview
recipients
​number · required

Contacts that would get the message.

​object · required
sample
​string | null · required
​object · required

List price of the messages that would be sent: the rate of the template category in the market of each phone number, from the WhatsApp Business Platform rate card published by Meta (https://developers.facebook.com/docs/whatsapp/pricing). It is the list rate before the volume tiers of utility and authentication messages, so the real charge can be lower; it is zero when nobody would receive the message.

CampaignRecipient

object
​string · enum · required
Enum values:
campaign_recipient
contactId
​string · required
status
​string · enum · required
Enum values:
pending
queued
sent
delivered
read
failed
skipped
skipReason
​string | null · required
whatsappMessageId
​string | null · required

CampaignRecipientList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​CampaignRecipient[] · required

CreateEmailDomain

name
​string · minLength: 3 · maxLength: 253 · required

The domain emails go out from.

defaultFromLocal
​string

The part before the @ of the default sender address.

Default: hello
inboundAgentId
​string

The agent that opens a case when a stranger writes to an address of this domain. Without it, mail from people with no thread is ignored.

DnsRecord

record
​string · required

DKIM signs your emails; MX routes the replies to Lelemon.

type
​string · enum · required
Enum values:
CNAME
MX
TXT
name
​string · required
value
​string · required
priority
​integer | null · required
status
​string · required

EmailDomain

object
​string · enum · required
Enum values:
email_domain
id
​string · required
name
​string · required
status
​string · enum · required

Only a verified domain can send. Add the records; verification completes on its own once DNS answers, and POST /v2/email/domains/{id}/verify checks it right away.

Enum values:
pending
verified
failed
​DnsRecord[] · required
defaultFrom
​string · required
inboundAgentId
​string | null · required
verifiedAt
​string | null · date-time · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

EmailDomainList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​EmailDomain[] · required

UpdateEmailDomain

defaultFromLocal
​string
inboundAgentId
​string | null

EmailRecipient

oneOf
Exactly one variant must match.

Decision Table

VariantMatching Criteria
type = object · requires: contactId
type = object · requires: externalRef
type = object · requires: email
Properties for contactId:
contactId
​string · required

CreateEmailMessage

​required

Exactly one of contactId, externalRef or email.

subject
​string · minLength: 1 · maxLength: 998 · pattern: ^[^\r\n]*$ · required
text
​string · minLength: 1 · maxLength: 50000 · required
from
​string · maxLength: 320

The sender. It must belong to a verified domain. Defaults to the first verified domain.

​object

Who continues if they answer. The agent needs the email channel. Without agentId or stageId the case reuses the open email case of the contact.

EmailMessage

object
​string · enum · required
Enum values:
email_message
id
​string · required
direction
​string · enum · required
Enum values:
outbound
inbound
status
​string · enum · required
Enum values:
queued
sent
delivered
bounced
failed
skipped
received
rejected
caseId
​string | null · required
contactId
​string | null · required
subject
​string | null · required
from
​string | null · required
to
​string | null · required
skipReason
​string | null · required

Why it was skipped: opted_out, recipient_not_allowed, no_email, human_in_control, cooldown, no_verified_domain or open_case_elsewhere.

​required
createdAt
​string · date-time · required

TeamPipeline

id
​string · required
name
​string · required

TeamMember

id
​string · required

The same id that GET /v2/members lists.

name
​string | null · required
email
​string | null · required
role
​string · required
isLeader
​boolean · required

Whether the member leads the team.

receivesCases
​boolean · required

Whether the assignment gives this member new cases.

Team

object
​string · enum · required
Enum values:
team
id
​string · required
name
​string · required
maxChatsPerPerson
​integer | null · required

How many open chats a member can hold at once. null means no limit.

​TeamPipeline[] · required
​TeamMember[] · required

TeamList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Team[] · required

TeamDetailMember

id
​string · required

The same id that GET /v2/members lists.

name
​string | null · required
email
​string | null · required
role
​string · required
isLeader
​boolean · required

Whether the member leads the team.

receivesCases
​boolean · required

Whether the assignment gives this member new cases.

available
​boolean · required

Whether the member is marked available.

activeChats
​integer · required

Chats the member holds now.

TeamQueue

count
​integer · required
oldestSince
​string | null · date-time · required

Since when the oldest waiting case has been in the queue.

TeamDetail

object
​string · enum · required
Enum values:
team
id
​string · required
name
​string · required
maxChatsPerPerson
​integer | null · required

How many open chats a member can hold at once. null means no limit.

​TeamPipeline[] · required
​TeamDetailMember[] · required
​object · required

Cases of the team pipelines waiting for someone to take them.

CreateTeam

name
​string · minLength: 1 · maxLength: 120 · required
pipelineIds
​string[] · maxItems: 200

Pipelines to move into the new team. A pipeline belongs to exactly one team, so it leaves the one it had.

UpdateTeam

name
​string · minLength: 1 · maxLength: 120
maxChatsPerPerson
​integer | null · min: 1 · max: 500

Open chats a member can hold at once. null removes the limit.

MergeTeam

sourceTeamId
​string · required

The team that goes into this one. Its pipelines and members move over and it is deleted.

SetTeamMember

isLeader
​boolean

Makes the member a leader, or stops them being one. A viewer cannot lead.

receivesCases
​boolean

Whether the assignment gives this member new cases.

LinearWebhook

url
​string · required

Paste it as the URL of a webhook in Linear (Settings, API, Webhooks) with the Issues resource and the team of this integration.

secretConfigured
​boolean · required

false until you save the signing secret Linear shows for that webhook. Without it every notification is rejected.

LinearIntegration

object
​string · enum · required
Enum values:
linear_integration
id
​string · required
teamId
​string · required
teamKey
​string · required
teamName
​string · required
projectId
​string | null · required
​LinearWebhook · required
createdAt
​string · date-time · required
updatedAt
​string · date-time · required

ConnectLinear

apiKey
​string · minLength: 8 · maxLength: 255 · pattern: ^\S+$ · required

A Linear personal API key. Create it in Linear, Settings, Account, Security and access. Use the key of a service user that can see the team. It is stored encrypted and never returned.

team
​string · minLength: 1 · maxLength: 64 · pattern: ^\S+$ · required

The key or the id of the Linear team that receives the issues.

project
​string | null · maxLength: 64 · pattern: ^\S+$

The id of a project of that team. Without it the issues have no project.

UpdateLinear

apiKey
​string · minLength: 8 · maxLength: 255 · pattern: ^\S+$

Replaces the API key.

team
​string · minLength: 1 · maxLength: 64 · pattern: ^\S+$

Another team key or id.

project
​string | null · maxLength: 64 · pattern: ^\S+$

Another project id. null removes it.

webhookSecret
​string · minLength: 8 · maxLength: 255 · pattern: ^\S+$

The signing secret Linear shows when you create the webhook. It is stored encrypted and never returned.

EscalateToTeam

answerStageId
​string

The stage of the same pipeline where the case goes when the team completes the issue. Without it, the stage of the pipeline with config.attentionRole answer; if the pipeline has none, the case stays where it is and only gets the answer as a note.

TeamEscalationIssue

identifier
​string · required
url
​string · required

TeamEscalation

object
​string · enum · required
Enum values:
team_escalation
id
​string · required
caseId
​string · required
status
​string · enum · required

pending: the issue is not created yet and Lelemon keeps trying. created: the team has it. completed: the team completed it and the answer reached the case. canceled: the team canceled the issue, so there is no answer and the case stays where it was. failed: Lelemon gave up; saving the Linear connection again tries again.

Enum values:
pending
created
completed
failed
canceled
origin
​string · enum · required

stage: the case entered a stage marked to escalate. manual: someone asked for it.

Enum values:
stage
manual
​required
answerStageId
​string | null · required
answer
​string | null · required

The last comment of the team on the issue, once it is completed.

lastError
​string | null · required

Why the last attempt to create the issue failed.

completedAt
​string | null · date-time · required
createdAt
​string · date-time · required

TeamEscalationList

object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​TeamEscalation[] · required

DryRun

What a dryRun answer adds to the normal one: nothing was saved, sent or charged, and an id in it is not saved.
dryRun
​boolean · const

Present and true when the request had dryRun=true.

Const value:

CreateContactMessage

author
​string · const · required
Const value: contact
text
​string · minLength: 1 · maxLength: 4096 · required
​object

Who is speaking, for an embedded copilot. Only with author contact. It travels signed to every action and MCP server of this turn as the actor, marked as declared by your key and not verified by Lelemon. It is kept for this turn only.

CreateTeamTextMessage

author
​string · const · required
Const value: team
text
​string · minLength: 1 · maxLength: 4096 · required
authorName
​string · minLength: 1 · maxLength: 255

Who signs a team message. Defaults to the author name of the key.

visibility
​string · enum

internal is a note only your team sees: it never reaches the person or the agent, and it needs neither cases:send nor control of the case.

Enum values:
public
internal
Default: public
subject
​string · minLength: 1 · maxLength: 998 · pattern: ^[^\r\n]*$

Email cases only. The subject of the thread. Required on the first message of the case and ignored after that.

attachmentIds
​string[] · maxItems: 10

Files already uploaded with POST /v2/cases/{id}/attachments, sent by the channel of the case. Each file goes as its own message, and the text is the caption of the first. The response is the first message. Team messages only.

CreateTeamInteractiveMessage

author
​string · const · required
Const value: team
​required

A WhatsApp message with buttons, a list, a product, a product list or the catalog, instead of text. Team messages on WhatsApp cases only, inside the 24 hours window (422 interactive_unsupported_channel on other channels, 422 channel_window_closed after the window). Do not send text or attachmentIds with it: interactive.body is the text. The tap of the person arrives as a message with reply {id, title}.

authorName
​string · minLength: 1 · maxLength: 255

Who signs a team message. Defaults to the author name of the key.

CreateTeamFilesMessage

author
​string · const · required
Const value: team
attachmentIds
​string[] · maxItems: 10 · required

Files already uploaded with POST /v2/cases/{id}/attachments, sent by the channel of the case. Each file goes as its own message, and the text is the caption of the first. The response is the first message. Team messages only.

text
​string · minLength: 1 · maxLength: 4096
authorName
​string · minLength: 1 · maxLength: 255

Who signs a team message. Defaults to the author name of the key.

subject
​string · minLength: 1 · maxLength: 998 · pattern: ^[^\r\n]*$

Email cases only. The subject of the thread. Required on the first message of the case and ignored after that.

InteractiveButtonsMessage

type
​string · const · required
Const value: buttons
body
​string · maxLength: 1024 · required

The text of the message. Required for buttons, list and product_list.

​InteractiveButton[] · required

Only for type buttons: 1 to 3 buttons.

header
​string · maxLength: 60

Text above the body. Required for product_list.

footer
​string · maxLength: 60
​object

An image, video or document above the body. Only for buttons and cta_url. Do not send it together with header.

InteractiveListMessage

type
​string · const · required
Const value: list
body
​string · maxLength: 1024 · required

The text of the message. Required for buttons, list and product_list.

​object · required

Only for type list.

header
​string · maxLength: 60

Text above the body. Required for product_list.

footer
​string · maxLength: 60

InteractiveProductMessage

type
​string · const · required
Const value: product
​object · required

Only for type product.

body
​string · maxLength: 1024

The text of the message. Required for buttons, list and product_list.

header
​string · maxLength: 60

Text above the body. Required for product_list.

footer
​string · maxLength: 60

InteractiveProductListMessage

type
​string · const · required
Const value: product_list
body
​string · maxLength: 1024 · required

The text of the message. Required for buttons, list and product_list.

header
​string · maxLength: 60 · required

Text above the body. Required for product_list.

​object · required

Only for type product_list.

footer
​string · maxLength: 60

InteractiveCatalogMessage

type
​string · const · required
Const value: catalog
body
​string · maxLength: 1024

The text of the message. Required for buttons, list and product_list.

header
​string · maxLength: 60

Text above the body. Required for product_list.

footer
​string · maxLength: 60
​object

Only for type catalog.

InteractiveCtaUrlMessage

type
​string · const · required
Const value: cta_url
body
​string · maxLength: 1024 · required

The text of the message. Required for buttons, list and product_list.

​object · required

Only for type cta_url.

header
​string · maxLength: 60

Text above the body. Required for product_list.

footer
​string · maxLength: 60
​object

An image, video or document above the body. Only for buttons and cta_url. Do not send it together with header.

InteractiveFlowMessage

type
​string · const · required
Const value: flow
body
​string · maxLength: 1024 · required

The text of the message. Required for buttons, list and product_list.

​object · required

Only for type flow.

header
​string · maxLength: 60

Text above the body. Required for product_list.

footer
​string · maxLength: 60

InteractiveLocationRequestMessage

type
​string · const · required
Const value: location_request
body
​string · maxLength: 1024 · required

The text of the message. Required for buttons, list and product_list.

InteractiveContactRequestMessage

type
​string · const · required
Const value: contact_request
body
​string · maxLength: 1024 · required

The text of the message. Required for buttons, list and product_list.

InteractiveCallMessage

type
​string · const · required
Const value: call
body
​string · maxLength: 1024 · required

The text of the message. Required for buttons, list and product_list.

​object

Only for type call. Optional: WhatsApp has defaults.

InteractiveCarouselMessage

type
​string · const · required
Const value: carousel
body
​string · maxLength: 1024 · required

The text of the message. Required for buttons, list and product_list.

​object · required

Only for type carousel.

ApprovalCondition

oneOf
Exactly one variant must match.

Decision Table

VariantMatching Criteria
type = object · requires: param, op
type = object · requires: all
type = object · requires: any
Properties for Variant 1:
ApprovalComparison
param
​string · required

A path into the arguments of the action, like amount or order.total.

op
​string · enum · required
Enum values:
eq
ne
gt
gte
lt
lte
in
exists
value
​

What to compare with. A list for in; leave it out for exists.

ApprovalComparison

param
​string · required

A path into the arguments of the action, like amount or order.total.

op
​string · enum · required
Enum values:
eq
ne
gt
gte
lt
lte
in
exists
value
​

What to compare with. A list for in; leave it out for exists.

ApprovalAllOf

​ApprovalCondition[] · minItems: 1 · required

Every condition must hold.

ApprovalAnyOf

​ApprovalCondition[] · minItems: 1 · required

At least one condition must hold.

ConnectorManifest

format
​const · required
Const value: lelemon-connector/v1
name
​string · minLength: 1 · maxLength: 2000 · required
​object[] · maxItems: 50 · required
​object

ConnectorAccountSearch

object
​const · required
Const value: list
​object[] · maxItems: 50 · required
hasMore
​boolean · required
​required

ConnectorAccount

object
​const · required
Const value: account
id
​string · pattern: ^(?!\.{1,2}$)[A-Za-z… · required
title
​string · minLength: 1 · maxLength: 2000 · required
​object[] · maxItems: 20 · required
subtitle
​string · minLength: 1 · maxLength: 2000

ConnectorView

object
​const · required
Const value: list
​object[] · minItems: 1 · maxItems: 30 · required
​object[] · maxItems: 200 · required
hasMore
​boolean · required
​required
On this page
  • UpdateSettings
  • UpdateBasicInfo
  • UpdateCompanyProfile
  • UpsertAgentFact
  • AgendaTimeRange
  • AvailableHours
  • CreateWebhookEndpoint
  • UpdateWebhookEndpoint
  • ErrorFix
  • BudgetExceededDetails
  • Problem
  • MeOrganization
  • MeKey
  • Me
  • Scope
  • ScopeList
  • AgentModelInput
  • ModelConfigInput
  • BehaviorInput
  • CreateAgent
  • AgentModel
  • ModelConfig
  • Agent
  • AgentList
  • UpdateAgent
  • ReadinessGap
  • Readiness
  • AgentWithReadiness
  • VersionAuthor
  • AgentVersion
  • AgentVersionList
  • AgentVersionWithText
  • AgentFact
  • AgentFactList
  • AgentTemplate
  • AgentTemplateList
  • ModelCapabilities
  • CatalogModel
  • ModelList
  • SubaccountTemplates
  • CreateSubaccount
  • SubaccountCreatedResources
  • Subaccount
  • SubaccountList
  • UpdateSubaccount
  • CreateSubaccountKey
  • SubaccountKey
  • ConnectionRedirects
  • CreateWhatsappConnection
  • ConnectionFailure
  • WhatsappConnection
  • WhatsappConnectionList
  • PhoneNumber
  • PhoneNumberList
  • UpdatePhoneNumber
  • CommerceSettings
  • UpdateCommerceSettings
  • ActionRequestInput
  • ActionVariableInput
  • ActionAuthorizationInput
  • CreateAction
  • ActionRequest
  • ActionVariable
  • ActionAuthorizationRecord
  • Action
  • AuthorizationText
  • ActionAuthorization
  • ActionList
  • ActionSigningSecretRotation
  • ActionSigningSecret
  • ActionRequestChange
  • UpdateAction
  • TestAction
  • ActionTest
  • McpAuthInput
  • ConnectMcpServer
  • McpTool
  • McpServerWithTools
  • McpServer
  • McpServerList
  • McpToolList
  • UpdateMcpServer
  • McpRunIdentity
  • ActivateMcpRunIdentity
  • McpRunIdentityWithSecret
  • DataConnectorFormat
  • ValidateConnectorDocument
  • FormatProblem
  • DataConnectorFormatValidation
  • CreateDataConnector
  • DataConnector
  • DataConnectorList
  • UpdateDataConnector
  • DataConnectorSigningSecret
  • DataConnectorSigningSecretRotation
  • DataConnectorCheck
  • DataConnectorView
  • DataConnectorManifest
  • AccountSummary
  • AccountSummaryList
  • AccountSection
  • AccountCard
  • RevealField
  • RevealedField
  • ActionLink
  • ViewPage
  • DataConnectorAccess
  • DataConnectorAccessList
  • CreateSkill
  • SkillWithContent
  • Skill
  • SkillList
  • UpdateSkill
  • BusinessHours
  • HandoffFarewell
  • SystemToolConfig
  • Approver
  • ApprovalRule
  • AccumulatedLimit
  • ApprovalPolicy
  • AgentTool
  • AgentToolList
  • GrantTool
  • ApprovalDecision
  • Approval
  • ApprovalList
  • Actor
  • DecideApproval
  • RequestApprovalReview
  • AutomatedDecision
  • AutomatedDecisionList
  • TeamQuestion
  • TeamQuestionList
  • TeamQuestionMessage
  • TeamQuestionCaseField
  • TeamQuestionContext
  • AnswerTeamQuestion
  • RunLimitsInput
  • CreateRun
  • RunLimits
  • RunResult
  • RunActor
  • Run
  • RunList
  • AnswerRun
  • ScheduledTaskContact
  • ScheduledTaskOnReply
  • CreateScheduledTask
  • ScheduledTask
  • ScheduledTaskList
  • UpdateScheduledTask
  • ScheduledTaskFire
  • InitialStage
  • QuickReply
  • AutoClose
  • TimeRange
  • PipelineBusinessDays
  • Holiday
  • PipelineBusinessHours
  • WaitThresholds
  • PipelineSettings
  • CreatePipeline
  • PipelineSettingsResponse
  • Pipeline
  • PipelineList
  • ClonePipeline
  • ReorderStages
  • UpdatePipeline
  • Condition
  • Transition
  • FollowUp
  • NoProgress
  • StageConfig
  • CreateStage
  • StageConfigResponse
  • Stage
  • StageList
  • UpdateStage
  • FieldOption
  • CreateField
  • Field
  • FieldList
  • UpdateField
  • CreateRoutingRule
  • RoutingRule
  • RoutingRuleList
  • UpdateRoutingRule
  • CreateKnowledgeCollection
  • KnowledgeCollection
  • SearchKnowledge
  • KnowledgePassage
  • KnowledgeSearch
  • KnowledgeCollectionList
  • UpdateKnowledgeCollection
  • CreateKnowledgeDocument
  • KnowledgeDocumentError
  • KnowledgeDocument
  • KnowledgeDocumentList
  • KnowledgeDocumentWithContent
  • UpdateKnowledgeDocument
  • AgentKnowledgeCollection
  • CreateContact
  • Presence
  • Contact
  • ContactList
  • UpsertContact
  • UpdateContact
  • ContactFieldOption
  • CreateContactField
  • ContactFieldOptionOut
  • ContactField
  • ContactFieldList
  • UpdateContactField
  • CreateCompany
  • CompanyDetail
  • Company
  • CompanyList
  • UpdateCompany
  • CreateLeadForm
  • LeadFormWithSecret
  • LeadForm
  • LeadFormList
  • UpdateLeadForm
  • SuppressionInventoryStore
  • SuppressionInventory
  • Suppression
  • InlineContact
  • CreateCase
  • LastMessage
  • CaseContact
  • Case
  • CaseList
  • UpdateCase
  • MoveCase
  • AssignCase
  • CloseCase
  • QueuedCase
  • CaseQueue
  • MoveCasesBatch
  • NotMovedCase
  • CaseBatchMove
  • MuteCase
  • EscalateCase
  • RevealedCaseField
  • ContactEventSent
  • ContactEventCaseAction
  • ContactEvent
  • ContactEventList
  • CreateReminder
  • Reminder
  • ReminderList
  • UpdateReminder
  • CompleteReminder
  • PresenceSignal
  • ReportPresenceSignals
  • PresenceSignalsResult
  • PresenceSettings
  • UpdatePresenceSettings
  • Organization
  • OrganizationBusinessHours
  • OrganizationSettings
  • CompanyProfile
  • CreateNote
  • Note
  • NoteList
  • UpdateNote
  • Attachment
  • AttachmentList
  • AttachmentDownload
  • File
  • FileList
  • MessageAttachment
  • InteractiveButton
  • InteractiveRow
  • InteractiveSection
  • InteractiveList
  • InteractiveProduct
  • InteractiveProductSection
  • InteractiveProducts
  • InteractiveCatalog
  • InteractiveMediaHeader
  • InteractiveCta
  • InteractiveFlow
  • InteractiveCall
  • InteractiveCardHeader
  • InteractiveCard
  • InteractiveCarousel
  • Interactive
  • MessageReply
  • MessageOrderItem
  • MessageOrder
  • MessageLocation
  • MessageFlowResponse
  • MessageSharedPhone
  • MessageContact
  • MessageError
  • Message
  • MessageList
  • CreateMessage
  • TurnTokens
  • TurnStep
  • Turn
  • TurnList
  • UsageTotals
  • UsageGroup
  • Usage
  • CaseMetrics
  • CaseMetricsList
  • CreateBudget
  • BudgetPeriod
  • Budget
  • BudgetList
  • UpdateBudget
  • Member
  • MemberList
  • MemberAuditActor
  • MemberAuditTarget
  • MemberAuditEntry
  • MemberAuditList
  • MemberAvailability
  • SetMemberAvailability
  • UpdateMemberRole
  • UpdateMemberCaseScope
  • Invitation
  • InvitationList
  • CreateInvitation
  • InvitationDelivery
  • Agenda
  • AgendaList
  • CreateAgenda
  • UpdateAgenda
  • AgendaMember
  • AgendaMemberList
  • AddAgendaMember
  • UpdateAgendaMember
  • Slot
  • Availability
  • CreateMeeting
  • Meeting
  • MeetingList
  • CancelMeeting
  • RescheduleMeeting
  • WebhookEndpointWithSecret
  • WebhookEndpoint
  • WebhookEndpointList
  • WebhookEndpointRotation
  • Event
  • WebhookDelivery
  • WebhookDeliveryList
  • ResendEvent
  • EventType
  • EventTypeList
  • RecipientAllowlist
  • ReplaceRecipientAllowlist
  • TemplateHeaderInput
  • TemplateButtonInput
  • TemplateCardHeader
  • TemplateCardButton
  • TemplateCard
  • TemplateCarousel
  • CreateTemplate
  • TemplateHeader
  • TemplateButton
  • Template
  • TemplateSync
  • TemplateList
  • UpdateTemplate
  • RenderTemplate
  • TemplateRender
  • HeaderDocument
  • HeaderMedia
  • SendCatalog
  • SendProductSection
  • SendMpm
  • SendFlow
  • CardMedia
  • SendCard
  • SendComponents
  • TestTemplate
  • MessageFailure
  • WhatsappMessage
  • Recipient
  • OnReply
  • CreateWhatsappMessage
  • EventContact
  • CreateContactEvent
  • TriggerEmail
  • TriggerOnReplyInput
  • TriggerOpenCase
  • TriggerMoveCase
  • TriggerOnEventInput
  • DailyWindow
  • TriggerCadenceInput
  • CreateTrigger
  • TriggerOnReply
  • TriggerOnEvent
  • TriggerCadence
  • Trigger
  • TriggerList
  • CadenceRun
  • CadenceRunList
  • UpdateTrigger
  • OptOut
  • OptOutList
  • ContactFilter
  • Audience
  • Schedule
  • CreateCampaign
  • CampaignOnReply
  • CampaignCounts
  • Campaign
  • CampaignList
  • UpdateCampaign
  • CampaignCost
  • CampaignPreview
  • CampaignRecipient
  • CampaignRecipientList
  • CreateEmailDomain
  • DnsRecord
  • EmailDomain
  • EmailDomainList
  • UpdateEmailDomain
  • EmailRecipient
  • CreateEmailMessage
  • EmailMessage
  • TeamPipeline
  • TeamMember
  • Team
  • TeamList
  • TeamDetailMember
  • TeamQueue
  • TeamDetail
  • CreateTeam
  • UpdateTeam
  • MergeTeam
  • SetTeamMember
  • LinearWebhook
  • LinearIntegration
  • ConnectLinear
  • UpdateLinear
  • EscalateToTeam
  • TeamEscalationIssue
  • TeamEscalation
  • TeamEscalationList
  • DryRun
  • CreateContactMessage
  • CreateTeamTextMessage
  • CreateTeamInteractiveMessage
  • CreateTeamFilesMessage
  • InteractiveButtonsMessage
  • InteractiveListMessage
  • InteractiveProductMessage
  • InteractiveProductListMessage
  • InteractiveCatalogMessage
  • InteractiveCtaUrlMessage
  • InteractiveFlowMessage
  • InteractiveLocationRequestMessage
  • InteractiveContactRequestMessage
  • InteractiveCallMessage
  • InteractiveCarouselMessage
  • ApprovalCondition
  • ApprovalComparison
  • ApprovalAllOf
  • ApprovalAnyOf
  • ConnectorManifest
  • ConnectorAccountSearch
  • ConnectorAccount
  • ConnectorView