BBookingMeeting
PricingHelp
Sign inStart free
Desarrolladores

API REST

Versión 1 · https://bookingmeeting.com/api/v1

BookingMeeting expone una API REST de solo lectura que te permite extraer citas, trabajadores, servicios y métricas de tu propia empresa para integrarlas en tu web, intranet o herramientas internas. Pensada para integraciones server-to- server: autenticación por Bearer token, JSON, CORS abierto.

Empezar en 1 minuto

  1. Inicia sesión en tu panel de administración → API y crea una key. La verás una sola vez — cópiala.
  2. Llama a cualquier endpoint pasando la key como Bearer:
curl https://bookingmeeting.com/api/v1/me \
  -H "Authorization: Bearer bm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Autenticación

Todas las peticiones requieren la cabecera Authorization: Bearer <tu_api_key>. Las keys empiezan por bm_ seguido de 32 caracteres alfanuméricos. Cada key pertenece a una empresa concreta — solo verás los datos de esa empresa.

Si la key falta, está mal escrita o ha sido revocada, la respuesta es 401 con { "error": "missing_or_invalid_api_key" }.

Límites de uso

  • 60 peticiones por minuto y por key. Si lo superas recibes 429 con cabecera Retry-After indicando los segundos a esperar.
  • Cada respuesta incluye X-RateLimit-Limit, X-RateLimit-Remaining y X-RateLimit-Reset (epoch en segundos) para que ajustes tu cadencia.
  • No hay límite mensual de peticiones — solo el cap por minuto. Si necesitas más, escríbenos.

Formato de respuesta

Todas las respuestas correctas tienen forma { "data": ..., "meta": { "generatedAt": "..." } }. El campo data es el payload concreto del endpoint (objeto o array). meta.generatedAt es el timestamp ISO del servidor en el momento de la respuesta.

Los errores tienen forma { "error": "<código>", "message": "<descripción>" }. Códigos posibles:

  • 401 missing_or_invalid_api_key — la key no es válida.
  • 429 rate_limit_exceeded — has superado las 60 req/min.
  • 500 internal_error — error del servidor; reintenta en unos segundos.

CORS

CORS está abierto a todos los orígenes (Access-Control-Allow-Origin: *). En la práctica no recomendamos llamar a la API desde el navegador de tus clientes porque expondría tu key. Úsala siempre desde tu backend.

Endpoints

GET/me

Información de tu empresa

Devuelve los datos públicos de la empresa propietaria de la API key.

Ejemplo

curl "https://bookingmeeting.com/api/v1/me" \
  -H "Authorization: Bearer bm_..."

Respuesta

{
  "data": {
    "id": "AbCd1234",
    "name": "ACME Consulting",
    "slug": "acme-consulting",
    "branding": {
      "logoUrl": "https://...",
      "primaryColor": "#006BFF",
      "secondaryColor": "#0050CC"
    },
    "contact": { "email": "info@acme.com", "phone": null },
    "settings": {
      "timezone": "Europe/Madrid",
      "defaultBufferBefore": 0,
      "defaultBufferAfter": 15,
      "defaultMinimumNoticeHours": 12
    },
    "metrics": {
      "totalAppointments": 421,
      "totalActiveStaff": 5,
      "appointmentsThisMonth": 38
    },
    "createdAt": "2025-12-04T09:11:22.331Z"
  },
  "meta": { "generatedAt": "2026-05-13T12:00:00.000Z" }
}

GET/staff

Lista de trabajadores

Devuelve todos los trabajadores de tu empresa. Por defecto solo los activos.

Parámetros de query

  • status (string) — Filtra por estado del trabajador. Valores: "active" (default), "pending", "rejected", "suspended".

Ejemplo

curl "https://bookingmeeting.com/api/v1/staff" \
  -H "Authorization: Bearer bm_..."

Respuesta

{
  "data": [
    {
      "id": "uid-abc",
      "displayName": "Laura García",
      "email": "laura@acme.com",
      "photoURL": "https://...",
      "title": "Consultora senior",
      "slug": "laura-garcia",
      "timezone": "Europe/Madrid",
      "googleCalendarConnected": true,
      "acceptedServiceIds": ["srv-1", "srv-2"],
      "metrics": { "appointmentsThisMonth": 12 }
    }
  ],
  "meta": { "generatedAt": "2026-05-13T12:00:00.000Z" }
}

GET/services

Lista de servicios

Devuelve los servicios configurados en tu empresa. Por defecto solo activos.

Parámetros de query

  • active (boolean) — Por defecto "true". Pásalo como "false" para incluir también servicios desactivados.

Ejemplo

curl "https://bookingmeeting.com/api/v1/services" \
  -H "Authorization: Bearer bm_..."

Respuesta

{
  "data": [
    {
      "id": "srv-1",
      "name": "Consulta inicial",
      "description": "Primera sesión de 30 minutos.",
      "duration": 30,
      "type": "video",
      "bufferBefore": 0,
      "bufferAfter": 15,
      "minimumNoticeHours": 12,
      "maxAdvanceDays": 60,
      "assignedStaffIds": ["uid-abc"],
      "color": "#006BFF",
      "isActive": true,
      "createdAt": "2025-12-04T09:11:22.331Z"
    }
  ],
  "meta": { "generatedAt": "2026-05-13T12:00:00.000Z" }
}

GET/appointments

Lista de citas

Devuelve hasta 200 citas ordenadas por fecha descendente. Soporta filtrado por rango, trabajador y estado.

Parámetros de query

  • from (string (ISO 8601)) — Fecha mínima de inicio de cita. Ej.: "2026-05-01T00:00:00Z".
  • to (string (ISO 8601)) — Fecha máxima de inicio de cita.
  • staffId (string) — UID del trabajador. Filtra a sus citas únicamente.
  • status (string) — Estado. Valores: "confirmed", "completed", "cancelled", "no_show".
  • limit (number) — Entre 1 y 200. Por defecto 50.

Ejemplo

curl "https://bookingmeeting.com/api/v1/appointments" \
  -H "Authorization: Bearer bm_..."

Respuesta

{
  "data": [
    {
      "id": "appt-xyz",
      "staffId": "uid-abc",
      "serviceId": "srv-1",
      "serviceName": "Consulta inicial",
      "serviceDuration": 30,
      "clientEmail": "cliente@example.com",
      "clientName": "Jorge García",
      "clientPhone": null,
      "startAt": "2026-05-15T10:00:00.000Z",
      "endAt": "2026-05-15T10:30:00.000Z",
      "timezone": "Europe/Madrid",
      "status": "confirmed",
      "meetingType": "video",
      "meetLink": "https://meet.google.com/abc-defg-hij",
      "source": "landing",
      "createdAt": "2026-05-13T08:22:11.123Z"
    }
  ],
  "meta": { "generatedAt": "2026-05-13T12:00:00.000Z" }
}

GET/analytics

Métricas agregadas

Resumen de tu empresa: totales, distribución horaria, ranking de servicios y de trabajadores, timeline diaria.

Parámetros de query

  • days (number) — Ventana en días. Entre 1 y 365. Por defecto 30.

Ejemplo

curl "https://bookingmeeting.com/api/v1/analytics" \
  -H "Authorization: Bearer bm_..."

Respuesta

{
  "data": {
    "range": { "days": 30 },
    "totals": {
      "bookings": 142,
      "cancellations": 8,
      "completed": 121,
      "upcoming": 13
    },
    "byHour": [{ "hour": 10, "count": 22 }, { "hour": 11, "count": 31 }],
    "byDayOfWeek": [{ "dow": 1, "count": 18 }],
    "byService": [{ "serviceId": "srv-1", "count": 84 }],
    "byStaff": [{ "staffId": "uid-abc", "count": 76 }],
    "timeline": [{ "day": "2026-04-13", "count": 4 }]
  },
  "meta": { "generatedAt": "2026-05-13T12:00:00.000Z" }
}

Versionado

La versión actual es v1. Mientras existan clientes activos sobre v1 no haremos cambios incompatibles: añadiremos nuevos campos opcionales y nuevos endpoints, pero no eliminaremos ni cambiaremos el tipo de los existentes. Una hipotética v2 coexistiría con v1 durante un periodo de migración.

Soporte

¿Necesitas ayuda integrando, un endpoint nuevo, o un caso de uso específico? Escríbenos a support@bookingmeeting.com.

← Volver al inicioCrear API key
BBookingMeeting

B2B scheduling platform. Works with Google Calendar / Meet, Microsoft 365 / Outlook / Teams and Zoho Calendar / Zoho Meeting.

Product

  • Sign in
  • Pricing
  • Partners
  • Affiliates
  • Features
  • Google integration

Legal

  • Privacy
  • Terms

Contact

  • Help Center & Chat
  • support@bookingmeeting.com

Developers

  • API documentation

Company

  • About us
  • Blog
  • Press kit
© 2026 BookingMeeting · All rights reserved.Estado del serviciov1.0
A+SecurityMozilla Observatory110/100Optimal headers and policies