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

Scheduling


List the agendas

GET
https://api.lelemon.cl
/v2/scheduling/agendas
Bearer (API key)

The active agendas of the organization: each one has its own opening hours, meeting length and team. Use the id of one to read its availability and to book. An empty list means the organization has not set up scheduling yet. Newest first. Read only and safe to repeat.

Required scope: scheduling:read.

List the agendas › query Parameters

limit
​integer · min: 1 · max: 100
Default: 20
cursor
​string · maxLength: 512

The nextCursor of the previous page, with the same filters.

List the agendas › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

List the agendas › Responses

AgendaList
object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Agenda[] · required
GET/v2/scheduling/agendas
curl https://api.lelemon.cl/v2/scheduling/agendas \ --header 'Authorization: Bearer <token>'
Example Responses
{ "object": "list", "hasMore": true, "nextCursor": "nextCursor", "data": [ { "object": "agenda", "id": "agd_5RvP2aKq9XwLmN3tYbZc01", "slug": "founder", "name": "Founder calls", "timezone": "America/Santiago", "slotDurationMinutes": 30, "minNoticeHours": 24, "maxDaysAhead": 14, "bufferBeforeMinutes": 0, "bufferAfterMinutes": 5, "assignmentStrategy": "round_robin", "availableHours": { "monday": [ { "start": "09:00", "end": "18:00" } ], "tuesday": [ { "start": "09:00", "end": "18:00" } ], "wednesday": [ { "start": "09:00", "end": "18:00" } ], "thursday": [ { "start": "09:00", "end": "18:00" } ], "friday": [ { "start": "09:00", "end": "18:00" } ], "saturday": [ { "start": "09:00", "end": "18:00" } ], "sunday": [ { "start": "09:00", "end": "18:00" } ] }, "defaultTitle": "Reunión", "defaultDescription": "defaultDescription", "generateMeetLink": true, "createdAt": "2024-08-25T15:00:00Z", "updatedAt": "2024-08-25T15:00:00Z" } ] }
json
application/json

Create an agenda

POST
https://api.lelemon.cl
/v2/scheduling/agendas
Bearer (API key)

Creates an active agenda with its opening hours, meeting length and buffers. The first agenda of the organization becomes the default. Add team members to the agenda before booking: an agenda without members has no free slots. 409 conflict with param slug when another agenda already uses the slug.

Required scope: scheduling:configure.

Create an agenda › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

Idempotency-Key
​string · minLength: 1 · maxLength: 255

Makes the request safe to retry. Once it starts running, its final response (2xx, 4xx or 5xx) is kept for 24 hours and the same key gets it back, without repeating the effect. A request rejected before it runs leaves the key free. A replayed create omits the secret. The same key with a different request is rejected with 409 idempotency_key_reused.

Create an agenda › Request Body

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

Create an agenda › Responses

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
POST/v2/scheduling/agendas
curl https://api.lelemon.cl/v2/scheduling/agendas \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "name": "Founder calls", "slug": "founder", "timezone": "America/Santiago", "slotDurationMinutes": 30, "availableHours": { "monday": [ { "start": "09:00", "end": "13:00" } ] } }'
Example Request Body
{ "name": "Founder calls", "slug": "founder", "timezone": "America/Santiago", "slotDurationMinutes": 30, "availableHours": { "monday": [ { "start": "09:00", "end": "13:00" } ] } }
json
application/json
Example Responses
{ "object": "agenda", "id": "agd_5RvP2aKq9XwLmN3tYbZc01", "slug": "founder", "name": "Founder calls", "timezone": "America/Santiago", "slotDurationMinutes": 30, "minNoticeHours": 24, "maxDaysAhead": 14, "bufferBeforeMinutes": 0, "bufferAfterMinutes": 5, "assignmentStrategy": "round_robin", "availableHours": { "monday": [ { "start": "09:00", "end": "18:00" } ], "tuesday": [ { "start": "09:00", "end": "18:00" } ], "wednesday": [ { "start": "09:00", "end": "18:00" } ], "thursday": [ { "start": "09:00", "end": "18:00" } ], "friday": [ { "start": "09:00", "end": "18:00" } ], "saturday": [ { "start": "09:00", "end": "18:00" } ], "sunday": [ { "start": "09:00", "end": "18:00" } ] }, "defaultTitle": "Reunión", "defaultDescription": "defaultDescription", "generateMeetLink": true, "createdAt": "2024-08-25T15:00:00Z", "updatedAt": "2024-08-25T15:00:00Z" }
json
application/json

Retrieve an agenda

GET
https://api.lelemon.cl
/v2/scheduling/agendas/{id}
Bearer (API key)

The agenda with its time zone, meeting length and the window in which it accepts bookings. A paused agenda answers 404. Read only and safe to repeat.

Required scope: scheduling:read.

Retrieve an agenda › path Parameters

id
​string · pattern: ^agd_[0-9A-Za-z]{22}… · required

The id of the agenda (agd_…).

Retrieve an agenda › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

Retrieve an agenda › Responses

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
GET/v2/scheduling/agendas/{id}
curl https://api.lelemon.cl/v2/scheduling/agendas/:id \ --header 'Authorization: Bearer <token>'
Example Responses
{ "object": "agenda", "id": "agd_5RvP2aKq9XwLmN3tYbZc01", "slug": "founder", "name": "Founder calls", "timezone": "America/Santiago", "slotDurationMinutes": 30, "minNoticeHours": 24, "maxDaysAhead": 14, "bufferBeforeMinutes": 0, "bufferAfterMinutes": 5, "assignmentStrategy": "round_robin", "availableHours": { "monday": [ { "start": "09:00", "end": "18:00" } ], "tuesday": [ { "start": "09:00", "end": "18:00" } ], "wednesday": [ { "start": "09:00", "end": "18:00" } ], "thursday": [ { "start": "09:00", "end": "18:00" } ], "friday": [ { "start": "09:00", "end": "18:00" } ], "saturday": [ { "start": "09:00", "end": "18:00" } ], "sunday": [ { "start": "09:00", "end": "18:00" } ] }, "defaultTitle": "Reunión", "defaultDescription": "defaultDescription", "generateMeetLink": true, "createdAt": "2024-08-25T15:00:00Z", "updatedAt": "2024-08-25T15:00:00Z" }
json
application/json

Update an agenda

PATCH
https://api.lelemon.cl
/v2/scheduling/agendas/{id}
Bearer (API key)

Changes only the fields you send. availableHours replaces the whole week. Meetings already booked keep their time. 409 conflict with param slug when another agenda already uses the slug.

Required scope: scheduling:configure.

Update an agenda › path Parameters

id
​string · pattern: ^agd_[0-9A-Za-z]{22}… · required

The id of the agenda (agd_…).

Update an agenda › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

Update an agenda › Request Body optional

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

Update an agenda › Responses

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
PATCH/v2/scheduling/agendas/{id}
curl https://api.lelemon.cl/v2/scheduling/agendas/:id \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "slotDurationMinutes": 45, "availableHours": { "monday": [ { "start": "10:00", "end": "12:00" } ] } }'
Example Request Body
{ "slotDurationMinutes": 45, "availableHours": { "monday": [ { "start": "10:00", "end": "12:00" } ] } }
json
application/json
Example Responses
{ "object": "agenda", "id": "agd_5RvP2aKq9XwLmN3tYbZc01", "slug": "founder", "name": "Founder calls", "timezone": "America/Santiago", "slotDurationMinutes": 30, "minNoticeHours": 24, "maxDaysAhead": 14, "bufferBeforeMinutes": 0, "bufferAfterMinutes": 5, "assignmentStrategy": "round_robin", "availableHours": { "monday": [ { "start": "09:00", "end": "18:00" } ], "tuesday": [ { "start": "09:00", "end": "18:00" } ], "wednesday": [ { "start": "09:00", "end": "18:00" } ], "thursday": [ { "start": "09:00", "end": "18:00" } ], "friday": [ { "start": "09:00", "end": "18:00" } ], "saturday": [ { "start": "09:00", "end": "18:00" } ], "sunday": [ { "start": "09:00", "end": "18:00" } ] }, "defaultTitle": "Reunión", "defaultDescription": "defaultDescription", "generateMeetLink": true, "createdAt": "2024-08-25T15:00:00Z", "updatedAt": "2024-08-25T15:00:00Z" }
json
application/json

List the team of an agenda

GET
https://api.lelemon.cl
/v2/scheduling/agendas/{id}/members
Bearer (API key)

The people whose calendars make the free slots of the agenda, newest first. Each one says whether a calendar the agenda can read is connected: a person without one adds no slots. An agenda with an empty list has no free slots. Read only and safe to repeat.

Required scope: scheduling:read.

List the team of an agenda › path Parameters

id
​string · pattern: ^agd_[0-9A-Za-z]{22}… · required

The id of the agenda (agd_…).

List the team of an agenda › query Parameters

limit
​integer · min: 1 · max: 100
Default: 20
cursor
​string · maxLength: 512

The nextCursor of the previous page, with the same filters.

List the team of an agenda › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

List the team of an agenda › Responses

AgendaMemberList
object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​AgendaMember[] · required
GET/v2/scheduling/agendas/{id}/members
curl https://api.lelemon.cl/v2/scheduling/agendas/:id/members \ --header 'Authorization: Bearer <token>'
Example Responses
{ "object": "list", "hasMore": true, "nextCursor": "nextCursor", "data": [ { "object": "agenda_member", "id": "mbr_4Zq0x8bVw1TqS9mYp3RkLd", "name": "Ana Pérez", "calendarConnected": true, "active": true, "priority": 1 } ] }
json
application/json

Add a person to the team of an agenda

POST
https://api.lelemon.cl
/v2/scheduling/agendas/{id}/members
Bearer (API key)

Adds an active member of the organization, who starts taking bookings from the agenda. Adding someone who is already in changes nothing and answers with their current entry: use the update route to change priority or active. The person only adds free slots once a calendar is connected. 404 not_found with param memberId when the member does not exist in the organization.

Required scope: scheduling:configure.

Add a person to the team of an agenda › path Parameters

id
​string · pattern: ^agd_[0-9A-Za-z]{22}… · required

The id of the agenda (agd_…).

Add a person to the team of an agenda › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

Idempotency-Key
​string · minLength: 1 · maxLength: 255

Makes the request safe to retry. Once it starts running, its final response (2xx, 4xx or 5xx) is kept for 24 hours and the same key gets it back, without repeating the effect. A request rejected before it runs leaves the key free. A replayed create omits the secret. The same key with a different request is rejected with 409 idempotency_key_reused.

Add a person to the team of an agenda › Request Body

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

Add a person to the team of an agenda › Responses

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.

POST/v2/scheduling/agendas/{id}/members
curl https://api.lelemon.cl/v2/scheduling/agendas/:id/members \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "memberId": "mbr_02y0e5MANqacVbmtn1YyeJ", "priority": 1 }'
Example Request Body
{ "memberId": "mbr_02y0e5MANqacVbmtn1YyeJ", "priority": 1 }
json
application/json
Example Responses
{ "object": "agenda_member", "id": "mbr_4Zq0x8bVw1TqS9mYp3RkLd", "name": "Ana Pérez", "calendarConnected": true, "active": true, "priority": 1 }
json
application/json

Remove a person from the team of an agenda

DELETE
https://api.lelemon.cl
/v2/scheduling/agendas/{id}/members/{memberId}
Bearer (API key)

Takes the person out of the agenda only; they stay in the organization and their slots stop being offered. Meetings already booked keep their time. Removing someone who is not in the agenda does nothing.

Required scope: scheduling:configure.

Remove a person from the team of an agenda › path Parameters

id
​string · pattern: ^agd_[0-9A-Za-z]{22}… · required

The id of the agenda (agd_…).

memberId
​string · pattern: ^mbr_[0-9A-Za-z]{22}… · required

The id of the member (mbr_…).

Remove a person from the team of an agenda › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

Remove a person from the team of an agenda › Responses

Removed.

No data returned
DELETE/v2/scheduling/agendas/{id}/members/{memberId}
curl https://api.lelemon.cl/v2/scheduling/agendas/:id/members/:memberId \ --request DELETE \ --header 'Authorization: Bearer <token>'
Example Responses
No example specified for this content type

Update a person in the team of an agenda

PATCH
https://api.lelemon.cl
/v2/scheduling/agendas/{id}/members/{memberId}
Bearer (API key)

Changes only the fields you send. active false keeps the person in the agenda but stops offering their slots, active true brings them back. Meetings already booked keep their person. 404 not_found when the person is not in the agenda.

Required scope: scheduling:configure.

Update a person in the team of an agenda › path Parameters

id
​string · pattern: ^agd_[0-9A-Za-z]{22}… · required

The id of the agenda (agd_…).

memberId
​string · pattern: ^mbr_[0-9A-Za-z]{22}… · required

The id of the member (mbr_…).

Update a person in the team of an agenda › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

Update a person in the team of an agenda › Request Body optional

UpdateAgendaMember
priority
​integer · min: 1 · max: 1000
active
​boolean

Update a person in the team of an agenda › Responses

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.

PATCH/v2/scheduling/agendas/{id}/members/{memberId}
curl https://api.lelemon.cl/v2/scheduling/agendas/:id/members/:memberId \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "active": false, "priority": 2 }'
Example Request Body
{ "active": false, "priority": 2 }
json
application/json
Example Responses
{ "object": "agenda_member", "id": "mbr_4Zq0x8bVw1TqS9mYp3RkLd", "name": "Ana Pérez", "calendarConnected": true, "active": true, "priority": 1 }
json
application/json

Read the free slots of an agenda

GET
https://api.lelemon.cl
/v2/scheduling/availability
Bearer (API key)

The free slots of the agenda in the next daysAhead days (7 by default, up to 60, capped by the maxDaysAhead of the agenda), nearest first. It crosses the opening hours of the agenda with the calendars of its team, the buffers and the minimum notice. It does not say whose calendar a slot comes from or what fills the busy ones. A slot is only a promise until you book it: another booking can take it first. Read only and safe to repeat.

Required scope: scheduling:read.

Read the free slots of an agenda › query Parameters

agendaId
​string · required

The agenda to look at. List them with GET /v2/scheduling/agendas.

daysAhead
​number · min: 1 · max: 60

How many days ahead to look. The maxDaysAhead of the agenda still caps it.

Default: 7

Read the free slots of an agenda › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

Read the free slots of an agenda › Responses

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.

GET/v2/scheduling/availability
curl 'https://api.lelemon.cl/v2/scheduling/availability?agendaId=<string>' \ --header 'Authorization: Bearer <token>'
Example Responses
{ "object": "availability", "agendaId": "agd_5RvP2aKq9XwLmN3tYbZc01", "timezone": "America/Santiago", "slots": [ { "start": "2026-11-03T13:00:00.000Z", "end": "2026-11-03T13:30:00.000Z" } ] }
json
application/json

List meetings

GET
https://api.lelemon.cl
/v2/scheduling/meetings
Bearer (API key)

The meetings booked in the agendas of the organization, whoever booked them: this API, the dashboard or an agent. Newest booked first. Filter by agendaId, status, attendeeEmail or the range of start. Read only and safe to repeat. It carries the name, email and phone of the attendees, so it needs scheduling:read, which also reads the free slots.

Required scope: scheduling:read.

List meetings › query Parameters

limit
​integer · min: 1 · max: 100
Default: 20
cursor
​string · maxLength: 512

The nextCursor of the previous page, with the same filters.

agendaId
​string
status
​string · enum
Enum values:
scheduled
confirmed
completed
canceled
no_show
rescheduled
attendeeEmail
​string

Only the meetings booked for this address.

startsFrom
​string · date-time

Only meetings that start at or after this instant.

startsTo
​string · date-time

Only meetings that start before this instant.

List meetings › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

List meetings › Responses

MeetingList
object
​string · enum · required
Enum values:
list
hasMore
​boolean · required
nextCursor
​string | null · required
​Meeting[] · required
GET/v2/scheduling/meetings
curl https://api.lelemon.cl/v2/scheduling/meetings \ --header 'Authorization: Bearer <token>'
Example Responses
{ "object": "list", "hasMore": true, "nextCursor": "nextCursor", "data": [ { "object": "meeting", "id": "mtg_5RvP2aKq9XwLmN3tYbZc01", "agendaId": "agd_5RvP2aKq9XwLmN3tYbZc01", "status": "scheduled", "start": "2024-08-25T15:00:00Z", "end": "2024-08-25T15:00:00Z", "durationMinutes": 30, "timezone": "America/Santiago", "attendeeEmail": "[email protected]", "attendeeName": "Ana Pérez", "attendeePhone": "attendeePhone", "companyName": "companyName", "context": "context", "meetLink": "meetLink", "canceledAt": "2024-08-25T15:00:00Z", "cancelReason": "cancelReason", "createdAt": "2024-08-25T15:00:00Z", "updatedAt": "2024-08-25T15:00:00Z" } ] }
json
application/json

Book a meeting

POST
https://api.lelemon.cl
/v2/scheduling/meetings
Bearer (API key)

Books the slot that starts at start: the person assigned by the agenda gets the event in their calendar and the attendee gets the invitation with the video call link, by email. It cannot be undone, only canceled: use dryRun=true first, which runs the same checks (the agenda, the recipient allowlist, that start is a free slot) and answers 200 with the meeting as it would be created, booking and sending nothing; its id is not saved. Send an Idempotency-Key so a retry does not book twice. 409 slot_not_available if someone took the slot or start is not a slot of the availability: read it again and pick another.

Required scope: scheduling:write.

Book a meeting › query Parameters

dryRun
​boolean

When true, the request goes through the same validation as the real one and is answered with what would happen (always 200), and nothing is saved, sent or charged. The answer has the same shape as the real one plus dryRun: true; an id in it is not saved. It does not use the Idempotency-Key.

Book a meeting › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

Idempotency-Key
​string · minLength: 1 · maxLength: 255

Makes the request safe to retry. Once it starts running, its final response (2xx, 4xx or 5xx) is kept for 24 hours and the same key gets it back, without repeating the effect. A request rejected before it runs leaves the key free. A replayed create omits the secret. The same key with a different request is rejected with 409 idempotency_key_reused.

Book a meeting › Request Body

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.

Book a meeting › Responses

dryRun=true: the meeting as it would be created; nothing is booked.

What a dryRun answer adds to the normal one: nothing was saved, sent or charged, and an id in it is not saved.
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
dryRun
​boolean · const

Present and true when the request had dryRun=true.

Const value:
POST/v2/scheduling/meetings
curl https://api.lelemon.cl/v2/scheduling/meetings \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "agendaId": "agd_02y0e5MANqacVbmtn1YyeJ", "start": "2026-11-03T13:00:00.000Z", "attendeeEmail": "[email protected]", "attendeeName": "Ana Pérez", "attendeePhone": "+56912345678", "companyName": "Empresa SpA", "context": "She wants a demo of the agents for sales." }'
Example Request Body
{ "agendaId": "agd_02y0e5MANqacVbmtn1YyeJ", "start": "2026-11-03T13:00:00.000Z", "attendeeEmail": "[email protected]", "attendeeName": "Ana Pérez", "attendeePhone": "+56912345678", "companyName": "Empresa SpA", "context": "She wants a demo of the agents for sales." }
json
application/json
Example Responses
{ "object": "meeting", "id": "mtg_5RvP2aKq9XwLmN3tYbZc01", "agendaId": "agd_5RvP2aKq9XwLmN3tYbZc01", "status": "scheduled", "start": "2024-08-25T15:00:00Z", "end": "2024-08-25T15:00:00Z", "durationMinutes": 30, "timezone": "America/Santiago", "attendeeEmail": "[email protected]", "attendeeName": "Ana Pérez", "attendeePhone": "attendeePhone", "companyName": "companyName", "context": "context", "meetLink": "meetLink", "canceledAt": "2024-08-25T15:00:00Z", "cancelReason": "cancelReason", "createdAt": "2024-08-25T15:00:00Z", "updatedAt": "2024-08-25T15:00:00Z", "dryRun": true }
json
application/json

Retrieve a meeting

GET
https://api.lelemon.cl
/v2/scheduling/meetings/{id}
Bearer (API key)

The meeting with its status, start, attendee and video call link. Read only and safe to repeat.

Required scope: scheduling:read.

Retrieve a meeting › path Parameters

id
​string · pattern: ^mtg_[0-9A-Za-z]{22}… · required

The id of the meeting (mtg_…).

Retrieve a meeting › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

Retrieve a meeting › Responses

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
GET/v2/scheduling/meetings/{id}
curl https://api.lelemon.cl/v2/scheduling/meetings/:id \ --header 'Authorization: Bearer <token>'
Example Responses
{ "object": "meeting", "id": "mtg_5RvP2aKq9XwLmN3tYbZc01", "agendaId": "agd_5RvP2aKq9XwLmN3tYbZc01", "status": "scheduled", "start": "2024-08-25T15:00:00Z", "end": "2024-08-25T15:00:00Z", "durationMinutes": 30, "timezone": "America/Santiago", "attendeeEmail": "[email protected]", "attendeeName": "Ana Pérez", "attendeePhone": "attendeePhone", "companyName": "companyName", "context": "context", "meetLink": "meetLink", "canceledAt": "2024-08-25T15:00:00Z", "cancelReason": "cancelReason", "createdAt": "2024-08-25T15:00:00Z", "updatedAt": "2024-08-25T15:00:00Z" }
json
application/json

Cancel a meeting

POST
https://api.lelemon.cl
/v2/scheduling/meetings/{id}/cancel
Bearer (API key)

Deletes the event from the calendar, which tells the attendee, and frees the slot. The meeting stays readable with status canceled. It cannot be undone: book again if it was a mistake. 409 meeting_not_active if the meeting is already canceled or finished. The reason is stored with the meeting.

Required scope: scheduling:write.

Cancel a meeting › path Parameters

id
​string · pattern: ^mtg_[0-9A-Za-z]{22}… · required

The id of the meeting (mtg_…).

Cancel a meeting › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

Idempotency-Key
​string · minLength: 1 · maxLength: 255

Makes the request safe to retry. Once it starts running, its final response (2xx, 4xx or 5xx) is kept for 24 hours and the same key gets it back, without repeating the effect. A request rejected before it runs leaves the key free. A replayed create omits the secret. The same key with a different request is rejected with 409 idempotency_key_reused.

Cancel a meeting › Request Body optional

CancelMeeting
reason
​string · maxLength: 500

Why it is canceled. Stored with the meeting.

Cancel a meeting › Responses

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
POST/v2/scheduling/meetings/{id}/cancel
curl https://api.lelemon.cl/v2/scheduling/meetings/:id/cancel \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "reason": "The customer cannot attend." }'
Example Request Body
{ "reason": "The customer cannot attend." }
json
application/json
Example Responses
{ "object": "meeting", "id": "mtg_5RvP2aKq9XwLmN3tYbZc01", "agendaId": "agd_5RvP2aKq9XwLmN3tYbZc01", "status": "scheduled", "start": "2024-08-25T15:00:00Z", "end": "2024-08-25T15:00:00Z", "durationMinutes": 30, "timezone": "America/Santiago", "attendeeEmail": "[email protected]", "attendeeName": "Ana Pérez", "attendeePhone": "attendeePhone", "companyName": "companyName", "context": "context", "meetLink": "meetLink", "canceledAt": "2024-08-25T15:00:00Z", "cancelReason": "cancelReason", "createdAt": "2024-08-25T15:00:00Z", "updatedAt": "2024-08-25T15:00:00Z" }
json
application/json

Move a meeting to another slot

POST
https://api.lelemon.cl
/v2/scheduling/meetings/{id}/reschedule
Bearer (API key)

Moves the same meeting, with the same person assigned, to the new start and updates the calendar event, which tells the attendee. start must be a free slot of the agenda and the person assigned must be free then: 409 slot_not_available otherwise. 409 meeting_not_active if the meeting is canceled or finished. Use dryRun=true to run the same checks and get the meeting as it would end, moving nothing.

Required scope: scheduling:write.

Move a meeting to another slot › path Parameters

id
​string · pattern: ^mtg_[0-9A-Za-z]{22}… · required

The id of the meeting (mtg_…).

Move a meeting to another slot › query Parameters

dryRun
​boolean

When true, the request goes through the same validation as the real one and is answered with what would happen (always 200), and nothing is saved, sent or charged. The answer has the same shape as the real one plus dryRun: true; an id in it is not saved. It does not use the Idempotency-Key.

Move a meeting to another slot › Headers

Lelemon-Subaccount
​string · pattern: ^sub_[0-9A-Za-z]{22}…

The subaccount (sub_…) this request acts on. Only for the keys of a platform account; without it the request acts on the account itself.

Idempotency-Key
​string · minLength: 1 · maxLength: 255

Makes the request safe to retry. Once it starts running, its final response (2xx, 4xx or 5xx) is kept for 24 hours and the same key gets it back, without repeating the effect. A request rejected before it runs leaves the key free. A replayed create omits the secret. The same key with a different request is rejected with 409 idempotency_key_reused.

Move a meeting to another slot › Request Body

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.

Move a meeting to another slot › Responses

What a dryRun answer adds to the normal one: nothing was saved, sent or charged, and an id in it is not saved.
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
dryRun
​boolean · const

Present and true when the request had dryRun=true.

Const value:
POST/v2/scheduling/meetings/{id}/reschedule
curl https://api.lelemon.cl/v2/scheduling/meetings/:id/reschedule \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "start": "2026-11-04T15:00:00.000Z" }'
Example Request Body
{ "start": "2026-11-04T15:00:00.000Z" }
json
application/json
Example Responses
{ "object": "meeting", "id": "mtg_5RvP2aKq9XwLmN3tYbZc01", "agendaId": "agd_5RvP2aKq9XwLmN3tYbZc01", "status": "scheduled", "start": "2024-08-25T15:00:00Z", "end": "2024-08-25T15:00:00Z", "durationMinutes": 30, "timezone": "America/Santiago", "attendeeEmail": "[email protected]", "attendeeName": "Ana Pérez", "attendeePhone": "attendeePhone", "companyName": "companyName", "context": "context", "meetLink": "meetLink", "canceledAt": "2024-08-25T15:00:00Z", "cancelReason": "cancelReason", "createdAt": "2024-08-25T15:00:00Z", "updatedAt": "2024-08-25T15:00:00Z", "dryRun": true }
json
application/json

InvitationsWebhook endpoints