Menú

Referencia de la API · CRM

Reservas: configuración

crm · booking · 15 operaciones

GET/v1/crm/booking/event-types

List booking event types

crm.booking.event_types.list

LecturaIdempotenteDesde 2026-11-01

Lists the meeting types sellers publish on their public booking pages (title, slug, duration, buffers, notice, location, custom questions, reminders, enabled), oldest first and paginated by cursor (limit 50 by default, up to 200), each with the seller's name (user_name). Filter by vendor_user_id for one seller. The order a seller set for their page is the order field. Read-only.

Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_booking_event_types_listEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.event_types.list".

Costo declarado: hasta 202 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).

Parámetros

limitintegerqueryopcional

How many items this page brings at most (see the maximum and the default in the schema).

Por defecto: 50

cursorstringqueryopcional

The next_cursor of the previous page, exactly as it came (only for the same list and filters); without it, the first page.

vendor_user_idstringqueryopcional

Only this seller's (a user_id of crm.team.list); without it, every seller's.

Respuesta

dataarray<object>
has_moreboolean
next_cursorstring

Errores

Ejemplo

curl "https://api.mb-suite.com/v1/crm/booking/event-types" \
  -H "Authorization: Bearer $MB_API_KEY"

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl "https://api.mb-suite.com/v1/crm/booking/event-types" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/booking/event-types

Create a booking event type

crm.booking.event_types.create

EscrituraDesde 2026-11-01

Creates a meeting type for a seller's public booking page (user_id: a member of the CRM team): title, slug (unique per seller), duration, buffers, minimum notice, booking horizon, daily cap, slot step, location (meet, zoom, phone, in_person, custom_url), custom questions, phone field, email and WhatsApp reminders, blocked dates and redirect. It is created disabled: enable it with crm.booking.event_types.set_enabled. A WhatsApp reminder needs the phone field enabled and required. Own: manage_own_booking; another seller's: manage_any_booking.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_booking_event_types_createEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.event_types.create".

Costo declarado: hasta 2 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).

Parámetros

user_idstringcuerporequerido

The seller (a user_id of crm.team.list): their own needs manage_own_booking, someone else's manage_any_booking.

slugstringcuerporequerido

Last part of the public link (…/book/<organization>/<seller>/<slug>): lowercase letters, digits and dashes, starting with a letter; unique per seller.

titlestringcuerporequerido

Name shown on the booking page and in the invitations.

locationobjectcuerporequerido

Where the meeting happens.

descriptionstringcuerpoopcional

Shown on the booking page (short markdown allowed).

colorstringcuerpoopcional

Hex color of the event type in the app's calendar (#rrggbb).

durationintegercuerpoopcional

Length of the meeting in minutes, 5 to 480 (default 30).

Por defecto: 30

buffer_beforeintegercuerpoopcional

Free minutes kept before each meeting, 0 to 60 (default 0).

Por defecto: 0

buffer_afterintegercuerpoopcional

Free minutes kept after each meeting, 0 to 60 (default 0).

Por defecto: 0

min_notice_hoursintegercuerpoopcional

How many hours ahead a slot must be to be bookable, 0 to 168 (default 4).

Por defecto: 4

max_advance_daysintegercuerpoopcional

How many days ahead it can be booked, 1 to 365 (default 60).

Por defecto: 60

max_bookings_per_dayintegercuerpoopcional

Most bookings of this type per day, 1 to 50; without it, no cap.

slot_increment_minutes5 | 10 | 15 | 20 | 30 | 45 | 60cuerpoopcional

Minutes between the start times offered: 5, 10, 15 (default), 20, 30, 45 or 60.

Por defecto: 15

custom_questionsarray<object>cuerpoopcional

Extra questions of the booking form, up to 20 (name and email are always asked).

Por defecto: []

phone_fieldobjectcuerpoopcional

The built-in phone field (default: shown, optional).

reminder_email24hbooleancuerpoopcional

Email the booker a reminder 24 hours before (default true).

Por defecto: true

reminder_whatsappobjectcuerpoopcional

WhatsApp confirmation and reminders to the booker (default all off); they need the phone field enabled and required.

Por defecto: {"reminder24h":{"enabled":false},"reminder10min":{"enabled":false}}

notify_vendor_emailbooleancuerpoopcional

Email the seller on each new booking (default true).

Por defecto: true

schedule_overrideobjectcuerpoopcional

Hours of this event type only; without it, the seller's weekly schedule (crm.booking.schedules.update).

blocked_date_rangesarray<object>cuerpoopcional

Days this event type cannot be booked, up to 40 ranges.

Por defecto: []

cover_image_urlstring (uri)cuerpoopcional

Absolute URL of the image on top of the booking page.

redirect_urlstring (uri)cuerpoopcional

Absolute URL the booker goes to after booking (instead of the confirmation page).

Respuesta

event_type_idstring

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/crm/booking/event-types" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "user_id": "USER_ID",
  "slug": "SLUG",
  "title": "TITLE",
  "location": {}
}'

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/booking/event-types" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "user_id": "USER_ID",
  "slug": "SLUG",
  "title": "TITLE",
  "location": {}
}'
PATCH/v1/crm/booking/event-types/{event_type_id}

Update a booking event type

crm.booking.event_types.update

EscrituraDesde 2026-11-01

Updates any field of an event type (the same ones as on create); only the fields sent change, and a changed slug must stay unique for the seller. The WhatsApp reminder rule is checked against the merged result. To enable or disable it use crm.booking.event_types.set_enabled. Own: manage_own_booking; another seller's: manage_any_booking.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_booking_event_types_updateEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.event_types.update".

Costo declarado: hasta 2 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).

Parámetros

event_type_idstringrutarequerido

The event type's id, from crm.booking.event_types.list.

slugstringcuerpoopcional

Last part of the public link (…/book/<organization>/<seller>/<slug>): lowercase letters, digits and dashes, starting with a letter; unique per seller.

titlestringcuerpoopcional

Name shown on the booking page and in the invitations.

descriptionstringcuerpoopcional

Shown on the booking page (short markdown allowed).

colorstringcuerpoopcional

Hex color of the event type in the app's calendar (#rrggbb).

durationintegercuerpoopcional

Length of the meeting in minutes, 5 to 480 (default 30).

buffer_beforeintegercuerpoopcional

Free minutes kept before each meeting, 0 to 60 (default 0).

buffer_afterintegercuerpoopcional

Free minutes kept after each meeting, 0 to 60 (default 0).

min_notice_hoursintegercuerpoopcional

How many hours ahead a slot must be to be bookable, 0 to 168 (default 4).

max_advance_daysintegercuerpoopcional

How many days ahead it can be booked, 1 to 365 (default 60).

max_bookings_per_dayintegercuerpoopcional

Most bookings of this type per day, 1 to 50; without it, no cap.

slot_increment_minutes5 | 10 | 15 | 20 | 30 | 45 | 60cuerpoopcional

Minutes between the start times offered: 5, 10, 15 (default), 20, 30, 45 or 60.

locationobjectcuerpoopcional

Where the meeting happens.

custom_questionsarray<object>cuerpoopcional

Extra questions of the booking form, up to 20 (name and email are always asked).

phone_fieldobjectcuerpoopcional

The built-in phone field (default: shown, optional).

reminder_email24hbooleancuerpoopcional

Email the booker a reminder 24 hours before (default true).

reminder_whatsappobjectcuerpoopcional

WhatsApp confirmation and reminders to the booker (default all off); they need the phone field enabled and required.

notify_vendor_emailbooleancuerpoopcional

Email the seller on each new booking (default true).

schedule_overrideobjectcuerpoopcional

Hours of this event type only; without it, the seller's weekly schedule (crm.booking.schedules.update).

blocked_date_rangesarray<object>cuerpoopcional

Days this event type cannot be booked, up to 40 ranges.

cover_image_urlstring (uri)cuerpoopcional

Absolute URL of the image on top of the booking page.

redirect_urlstring (uri)cuerpoopcional

Absolute URL the booker goes to after booking (instead of the confirmation page).

Respuesta

oktrue

Errores

Ejemplo

curl -X PATCH "https://api.mb-suite.com/v1/crm/booking/event-types/{event_type_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X PATCH "https://api.mb-suite.com/v1/crm/booking/event-types/{event_type_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/booking/event-types/{event_type_id}/enabled

Enable or disable a booking event type

crm.booking.event_types.set_enabled

EscrituraIdempotenteDesde 2026-11-01

Turns an event type on (it shows on the seller's public booking page and takes bookings) or off (hidden, configuration kept; existing bookings are not touched). Idempotent. Own: manage_own_booking; another seller's: manage_any_booking.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_booking_event_types_set_enabledEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.event_types.set_enabled".

Costo declarado: hasta 1 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).

Parámetros

event_type_idstringrutarequerido

The event type's id, from crm.booking.event_types.list.

enabledbooleancuerporequerido

true shows it on the booking page and takes bookings; false hides it (its configuration is kept).

Respuesta

oktrue

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/crm/booking/event-types/{event_type_id}/enabled" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "enabled": true
}'

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/booking/event-types/{event_type_id}/enabled" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "enabled": true
}'
POST/v1/crm/booking/event-types/{event_type_id}/duplicate

Duplicate a booking event type

crm.booking.event_types.duplicate

EscrituraDesde 2026-11-01

Copies an event type for the same seller with a free slug ('-copia', '-copia-2'…), the title plus ' (copia)', the counters at zero and disabled. Returns the new id. Own: manage_own_booking; another seller's: manage_any_booking.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_booking_event_types_duplicateEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.event_types.duplicate".

Costo declarado: hasta 52 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).

Parámetros

event_type_idstringrutarequerido

The event type's id, from crm.booking.event_types.list.

Respuesta

event_type_idstring

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/crm/booking/event-types/{event_type_id}/duplicate" \
  -H "Authorization: Bearer $MB_API_KEY"

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/booking/event-types/{event_type_id}/duplicate" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/booking/event-types/{event_type_id}/delete

Delete a booking event type

crm.booking.event_types.delete

IrreversibleDesde 2026-11-01

Deletes an event type for good (it does not go to the trash). Refused with event_type_has_upcoming_bookings while it has confirmed bookings ahead: disable it with crm.booking.event_types.set_enabled instead. Past bookings keep their data. The booking lead sources bound to it are paused (they would take no more leads); the dry run names them. Own: manage_own_booking; another seller's: manage_any_booking.

Pide confirmación: primero dry_run: true (vista previa y confirm_token, que vale 10 minutos y una sola vez), después el mismo cuerpo con confirm_token. En unas pocas, solo con ciertos datos: la descripción dice cuándo. Por qué y cómo: Vista previa y confirmación.

Alcance
crm:write y «Permitir eliminar» (crm:delete en OAuth)
Permiso
Editar en el módulo
Tool del MCP
crm_booking_event_types_deleteEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.event_types.delete".

Costo declarado: hasta 102 lecturas y 21 escrituras por llamada (cuentan en el cupo diario).

Parámetros

event_type_idstringrutarequerido

The event type's id, from crm.booking.event_types.list.

Respuesta

oktrue

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/crm/booking/event-types/{event_type_id}/delete" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "dry_run": true
}'

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/booking/event-types/{event_type_id}/delete" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "dry_run": true
}'
POST/v1/crm/booking/event-types/reorder

Reorder a seller's booking event types

crm.booking.event_types.reorder

EscrituraIdempotenteDesde 2026-11-01

Sets the order of a seller's event types on their booking page and list: ordered_ids (up to 200) become order 0, 1, 2… Every id must be an event type of that seller (user_id). Idempotent. Own: manage_own_booking; another seller's: manage_any_booking.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_booking_event_types_reorderEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.event_types.reorder".

Costo declarado: hasta 200 lecturas y 200 escrituras por llamada (cuentan en el cupo diario).

Parámetros

user_idstringcuerporequerido

The seller (a user_id of crm.team.list): their own needs manage_own_booking, someone else's manage_any_booking.

ordered_idsarray<string>cuerporequerido

That seller's event type ids in the new order, up to 200.

Respuesta

oktrue

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/crm/booking/event-types/reorder" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "user_id": "USER_ID",
  "ordered_ids": [
    "ORDERED_ID"
  ]
}'

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/booking/event-types/reorder" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "user_id": "USER_ID",
  "ordered_ids": [
    "ORDERED_ID"
  ]
}'
PATCH/v1/crm/booking/schedules/{user_id}

Set a seller's weekly availability

crm.booking.schedules.update

EscrituraIdempotenteDesde 2026-11-01

Replaces a seller's weekly booking availability: an IANA time zone and seven days (mon…sun), each with up to six ranges in minutes from midnight (end after start; an empty day is unavailable). Event types without their own schedule offer slots from it. The seller must be on the CRM team. Own: manage_own_booking; another seller's: manage_any_booking.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_booking_schedules_updateEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.schedules.update".

Costo declarado: hasta 2 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).

Parámetros

user_idstringrutarequerido

The seller (a user_id of crm.team.list): their own needs manage_own_booking, someone else's manage_any_booking.

scheduleobjectcuerporequerido

The whole weekly schedule: it replaces the saved one.

Respuesta

oktrue

Errores

Ejemplo

curl -X PATCH "https://api.mb-suite.com/v1/crm/booking/schedules/{user_id}" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "schedule": {}
}'

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X PATCH "https://api.mb-suite.com/v1/crm/booking/schedules/{user_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "schedule": {}
}'
GET/v1/crm/booking/settings

List which sellers take bookings

crm.booking.settings.list

LecturaIdempotenteDesde 2026-11-01

Lists every seller of the CRM team with their name (display_name, as the team shows it) and whether their public booking is on (booking_enabled). Use crm.booking.settings.get for one seller's full page and schedule. Read-only.

Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_booking_settings_listEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.settings.list".

Costo declarado: hasta 400 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).

Parámetros

Sin parámetros.

Respuesta

dataarray<object>

Errores

Ejemplo

curl "https://api.mb-suite.com/v1/crm/booking/settings" \
  -H "Authorization: Bearer $MB_API_KEY"

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl "https://api.mb-suite.com/v1/crm/booking/settings" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/crm/booking/settings/{user_id}

Get a seller's booking page and schedule

crm.booking.settings.get

LecturaIdempotenteDesde 2026-11-01

Returns a seller's booking settings: whether booking is on, the weekly schedule and time zone, the public slug, bio, display name, avatar, default page language, calendar color and calendar sharing; null if they never configured them. Own: view_own_bookings; another seller's: view_any_booking.

Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_booking_settings_getEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.settings.get".

Costo declarado: hasta 1 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).

Parámetros

user_idstringrutarequerido

The seller (a user_id of crm.team.list): their own needs manage_own_booking, someone else's manage_any_booking.

Respuesta

settingsobject | null

Errores

Ejemplo

curl "https://api.mb-suite.com/v1/crm/booking/settings/{user_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl "https://api.mb-suite.com/v1/crm/booking/settings/{user_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
PATCH/v1/crm/booking/settings/{user_id}

Update a seller's booking page

crm.booking.settings.update

EscrituraIdempotenteDesde 2026-11-01

Updates a seller's public booking page: bio, display name, default language (es, en, pt-BR) and avatar (a public https URL or an MB Suite storage path; null removes it). Fields left out keep their value. The slug changes with crm.booking.settings.set_slug and the switch with crm.booking.settings.set_enabled. Own: manage_own_booking; another seller's: manage_any_booking.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_booking_settings_updateEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.settings.update".

Costo declarado: hasta 2 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).

Parámetros

user_idstringrutarequerido

The seller (a user_id of crm.team.list): their own needs manage_own_booking, someone else's manage_any_booking.

biostringcuerpoopcional

Text under the seller's name on the booking page, up to 2000 characters.

avatar_urlstring | nullcuerpoopcional

The page's photo: a public https URL or an MB Suite storage path; null removes it (crm.booking.settings.use_profile_photo copies the profile photo).

display_namestringcuerpoopcional

Name shown on the booking page (default: the profile name).

default_localeenumcuerpoopcional

Language the booking page opens in: es, en or pt-BR.

Valores: es, en, pt-BR

Respuesta

oktrue

Errores

Ejemplo

curl -X PATCH "https://api.mb-suite.com/v1/crm/booking/settings/{user_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X PATCH "https://api.mb-suite.com/v1/crm/booking/settings/{user_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/booking/settings/{user_id}/enabled

Turn a seller's public booking on or off

crm.booking.settings.set_enabled

EscrituraIdempotenteDesde 2026-11-01

The master switch of a seller's public booking (off by default). Turning it on also gives them a default schedule, a public slug and a '30-minute meeting' event type when they have none, so the page works right away; off hides the page and rejects new bookings (existing ones stay). Idempotent. Own: manage_own_booking; another seller's: manage_any_booking.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_booking_settings_set_enabledEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.settings.set_enabled".

Costo declarado: hasta 50 lecturas y 4 escrituras por llamada (cuentan en el cupo diario).

Parámetros

user_idstringrutarequerido

The seller (a user_id of crm.team.list): their own needs manage_own_booking, someone else's manage_any_booking.

enabledbooleancuerporequerido

true turns the seller's public booking on, false off.

Respuesta

oktrue

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/crm/booking/settings/{user_id}/enabled" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "enabled": true
}'

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/booking/settings/{user_id}/enabled" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "enabled": true
}'
POST/v1/crm/booking/settings/{user_id}/slug

Set a seller's public booking slug

crm.booking.settings.set_slug

EscrituraIdempotenteDesde 2026-11-01

Sets the slug of a seller's public booking page (/book/{org}/{slug}): unique in the organization, lowercase letters, digits and dashes, starting with a letter, some words reserved. The previous slug is released. Links shared with the old slug stop working. Own: manage_own_booking; another seller's: manage_any_booking.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_booking_settings_set_slugEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.settings.set_slug".

Costo declarado: hasta 25 lecturas y 3 escrituras por llamada (cuentan en el cupo diario).

Parámetros

user_idstringrutarequerido

The seller (a user_id of crm.team.list): their own needs manage_own_booking, someone else's manage_any_booking.

slugstringcuerporequerido

The seller's part of the public link (/book/<organization>/<slug>): lowercase letters, digits and dashes, starting with a letter, unique in the organization.

Respuesta

slugstring

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/crm/booking/settings/{user_id}/slug" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "slug": "SLUG"
}'

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/booking/settings/{user_id}/slug" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "slug": "SLUG"
}'
POST/v1/crm/booking/settings/{user_id}/profile-photo

Use the seller's profile photo on their booking page

crm.booking.settings.use_profile_photo

EscrituraDesde 2026-11-01

Copies the seller's MB Suite profile photo to public storage and sets it as their booking page avatar, so it shows in link previews and to anonymous visitors. A Google Workspace photo cannot be fetched (profile_photo_not_public: upload one instead); no photo answers profile_photo_missing. Own: manage_own_booking; another seller's: manage_any_booking.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_booking_settings_use_profile_photoEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.settings.use_profile_photo".

Costo declarado: hasta 3 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).

Parámetros

user_idstringrutarequerido

The seller (a user_id of crm.team.list): their own needs manage_own_booking, someone else's manage_any_booking.

Respuesta

avatar_urlstring

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/crm/booking/settings/{user_id}/profile-photo" \
  -H "Authorization: Bearer $MB_API_KEY"

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/booking/settings/{user_id}/profile-photo" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/crm/booking/availability

List a seller's free booking slots for an event type

crm.booking.availability

LecturaIdempotenteDesde 2026-11-01

Returns the free slots of one of a seller's booking event types between from and to (ms UTC; default: from now for 14 days; at most 31 days per call), computed by the same engine as the public booking page and the AI Setter: the event type's schedule (or the seller's), blocked dates, minimum notice, maximum advance, buffers, the daily cap, the seller's confirmed bookings and the busy times of their connected Google or Outlook calendar (best effort: with calendar_connected false, or if their calendar does not answer, the slots cannot account for it). Pick the event type by event_type_id, or by event_type_slug with vendor_user_id (default: the caller). Each slot has start_ms and end_ms (UTC), start_local in time_zone (the booker's IANA zone; default: the seller's) and start_local_vendor; book one by passing its start_ms to crm.bookings.create. At most limit slots (default 100, up to 500); has_more says there are more in the window: ask again from the last end_ms. Nothing is booked or held. Errors: booking_unavailable (409, details.reason vendor_not_configured, vendor_booking_disabled or event_type_disabled), booking_event_type_not_found, event_type_not_of_vendor, invalid_timezone, invalid_time_range. Your own slots need view_own_bookings; another seller's, view_any_booking (owners, admins, CRM admins and sales managers).

Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_booking_availabilityEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.booking.availability".

Costo declarado: hasta 300 lecturas y 0 escrituras por llamada (cuentan en el cupo diario). Toca una plataforma externa (google): cuenta en el cupo de operaciones externas.

Parámetros

vendor_user_idstringqueryopcional

The seller (user_id from crm.booking.settings.list): whose slug event_type_slug is (default: the caller); with event_type_id it must be its owner.

event_type_idstringqueryopcional

The event type, from crm.booking.event_types.list (or pass event_type_slug).

event_type_slugstringqueryopcional

The event type's slug, unique per seller (instead of event_type_id).

fromintegerqueryopcional

Window start, epoch ms (default: now); next_from of the previous call to continue.

tointegerqueryopcional

Window end, epoch ms (default: from + 14 days; at most 31 days).

time_zonestringqueryopcional

The booker's IANA time zone for start_local (default: the seller's).

limitintegerqueryopcional

Slots per call, 1 to 500 (default 100).

Por defecto: 100

Respuesta

vendor_user_idstring
event_typeobject
vendor_time_zonestring
time_zonestring
fromnumber
tonumber
calendar_connectedboolean
slotsarray<object>
has_moreboolean

More free slots after the last one in the window: call again with from = next_from.

next_fromnumber

With has_more: the from of the next call (just after the last slot).

Errores

Ejemplo

curl "https://api.mb-suite.com/v1/crm/booking/availability" \
  -H "Authorization: Bearer $MB_API_KEY"

Probar con tu API key de prueba

Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar. En la práctica esta operación no se simula (toca otra plataforma): responde 409 sandbox_external_unavailable.