ClonifyDevelopersIr al panel

Empezar

  • Autenticación
  • Errores
  • Paginación
  • Límites de peticiones
  • Webhooks
  • Para agentes de IA
  • Servidor MCP

Referencia de la API

  • Seguimiento de alumnos6
  • Entregas externas por API6
  • Chat con el clon1
  • Contactos y etiquetas5
  • Accesos de academias4
  • Conversaciones4
  • Catálogo de productos11
  • Ventas externas2
  • Conocimiento12
  • Multimedia4
  • Clones (versions en la API)3
  • Reuniones y reservas3
  • Webinars6
  • Cuenta y consumo1
Clonify

Webinars

GET/api/v1/webinars

Listar webinars

Tus webinars con su nº de inscritos. Por defecto, los próximos; con scope=past, los ya celebrados (el más reciente primero). Puedes quedarte con los de un curso o producto y con los que empiezan entre dos fechas. Sin esos parámetros responde igual que siempre. Las credenciales de emisión nunca viajan.

Plan con sección de Webinars

Parámetros de consulta

scopestring

upcoming (por defecto): los que aún no han terminado, en orden cronológico. past: los terminados o cancelados, del más reciente al más antiguo. all: todos, en orden cronológico.Valores: upcoming · past · all

product_idinteger

Solo las sesiones cuya audiencia incluye este producto, sea su producto principal o uno más.

fromISO 8601

Solo las sesiones que empiezan en esta fecha o después. ISO 8601 con zona (2026-10-01T00:00:00Z) o un día (2026-10-01, medianoche UTC).

untilISO 8601

Solo las sesiones que empiezan antes de esta fecha (no incluida). Mismo formato que from.

starting_afterinteger

El next_starting_after de la página anterior. Sigue pidiendo mientras has_more sea true; omítelo en la primera página.

limitinteger 1..200
bash
curl "https://www.clonify.com/api/v1/webinars" \
  -H "Authorization: Bearer clk_live_…"
json
{
  "object": "list",
  "data": [{
    "object": "webinar",
    "id": 410,
    "title": "Clase en directo: módulo 3",
    "start_at": "2026-10-07T16:00:00.000Z",
    "duration_minutes": 90,
    "status": "ended",
    "audience_product_id": 3161,
    "audience_product_ids": [3161],
    "replay_published": true,
    "registrant_count": 48
  }],
  "has_more": true,
  "next_starting_after": 410
}
POST/api/v1/webinars

webinars_create

Permiso de escrituraPlan con sección de Webinars

Cuerpo (JSON)

titlestring (máx 200)obligatorio
start_atISO 8601 (futuro)obligatorio
descriptionstring (máx 2000)
duration_minutesinteger 1..600 (45 por defecto)
timezonezona IANA (Europe/Madrid por defecto)
capacityinteger | null
audience_product_idsinteger[]
session_kindstring

Valores: broadcast · group

broadcast_sourcestring

Valores: clonify · external

recurrencestring

Valores: once · weekly

recurrence_end{ type: forever | until | count, until_at?, count? }
auto_publish_replayboolean
bash
curl -X POST "https://www.clonify.com/api/v1/webinars" \
  -H "Authorization: Bearer clk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"title":"…","start_at":"…"}'
json
{
  "object": "list",
  "data": [{
    "object": "webinar",
    "id": 433,
    "title": "Asset allocation",
    "start_at": "2026-10-14T16:00:00.000Z",
    "duration_minutes": 120,
    "timezone": "Europe/Madrid",
    "status": "scheduled",
    "audience_product_ids": [3161],
    "session_kind": "group",
    "broadcast_source": "clonify",
    "public_slug": "42e59b8bdc0d",
    "replay_published": false,
    "auto_publish_replay": true,
    "registrant_count": 0
  }],
  "has_more": false,
  "next_starting_after": null,
  "calendar_activated": false
}
GET/api/v1/webinars/{id}

webinars_get

Plan con sección de Webinars

Parámetros de ruta

idintegerobligatorio
bash
curl "https://www.clonify.com/api/v1/webinars/1" \
  -H "Authorization: Bearer clk_live_…"
PATCH/api/v1/webinars/{id}

webinars_update

Permiso de escrituraPlan con sección de Webinars

Parámetros de ruta

idintegerobligatorio

Cuerpo (JSON)

titlestring (máx 200)
descriptionstring | null
start_atISO 8601
duration_minutesinteger 1..600
capacityinteger | null
audience_product_idsinteger[]
session_kindstring

Valores: broadcast · group

broadcast_sourcestring

Valores: clonify · external

auto_publish_replayboolean
bash
curl -X PATCH "https://www.clonify.com/api/v1/webinars/1" \
  -H "Authorization: Bearer clk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"title":"…","description":"…"}'
GET/api/v1/webinars/{id}/registrants

Listar inscritos de un webinar

Nombre, email y estado (registrado / asistió / no vino) de cada inscrito. Su token de acceso a la sala nunca viaja.

Plan con sección de Webinars

Parámetros de ruta

idintegerobligatorio
bash
curl "https://www.clonify.com/api/v1/webinars/1/registrants" \
  -H "Authorization: Bearer clk_live_…"
GET/api/v1/webinars/attendance

Exportar la asistencia a los directos de un curso

Una fila por sesión y persona de todas las sesiones de un curso o producto que ya han empezado (las canceladas no salen), para no pedir los inscritos sesión a sesión. status vale attended cuando consta que la persona llegó al directo (reprodujo la emisión o llegó a la puerta de la mesa de grupo); registered_not_attended si tiene inscripción pero no consta su entrada; no_show si es inscrita de una sesión pública y se la marcó ausente al terminar. En las 24 horas previas a una sesión de curso, Clonify inscribe a quien tiene acceso a sus productos (hasta 500 por producto, y a nadie si el producto está abierto a cualquiera), así que registered_not_attended suele significar «invitado y no vino»; quien queda fuera de ese tope no tiene inscripción. En una sesión compartida por varios productos solo salen los alumnos del product_id pedido: se quita a quien, al empezar la sesión, solo tenía acceso por los otros productos, y se mantiene a quien no tiene ningún acceso registrado. Con include_not_joined=true se añaden filas not_joined: personas con acceso al producto cuando empezó la sesión y sin inscripción. Ese estado se DEDUCE de los accesos que constan hoy (una compra o etiqueta de acceso desde que se registró en Clonify, una inclusión en un pack desde que se abrió) y de su caducidad; no es un registro de lo que hizo la persona, no recupera accesos retirados o devueltos después y, en productos abiertos a cualquiera, solo incluye a quien tiene un acceso registrado. status_source dice de dónde sale cada fila (registration o access). live_seconds mide la conexión confirmada a la mesa de grupo o el tiempo de reproducción visible de la emisión, y replay_watched_seconds la repetición vista; los dos son null si no hay medición, que empezó en septiembre de 2026 y no se reconstruye hacia atrás. Son datos de conexión y reproducción, no prueba de atención. Una página puede traer menos filas que limit, o ninguna, con has_more todavía a true: sigue pidiendo hasta que sea false. El objeto measurement de cada respuesta resume qué mide cada campo.

Plan con sección de Webinars

Parámetros de consulta

product_idintegerobligatorio

El curso o producto. Salen las sesiones cuya audiencia lo incluye, y las filas not_joined se calculan sobre el acceso a este producto. Obligatorio.

fromISO 8601

Solo las sesiones que empiezan en esta fecha o después. ISO 8601 con zona (2026-10-01T00:00:00Z) o un día (2026-10-01, medianoche UTC).

untilISO 8601

Solo las sesiones que empiezan antes de esta fecha (no incluida). Mismo formato que from.

webinar_idinteger

Limita la exportación a una sola sesión del producto.

include_not_joinedboolean

true añade a quien tenía acceso al producto cuando empezó la sesión y no tiene inscripción (status not_joined, deducido del acceso). Por defecto false: solo inscripciones.

starting_afterstring

El next_starting_after de la página anterior, tal cual (es un cursor opaco). Omítelo en la primera página.

limitinteger 1..200

Máximo de filas por página: 1–200; por defecto 100.

bash
curl "https://www.clonify.com/api/v1/webinars/attendance" \
  -H "Authorization: Bearer clk_live_…"
json
{
  "object": "list",
  "data": [{
    "object": "webinar_attendance",
    "id": "WzQxMCwiYW5hQGV4YW1wbGUuY29tIl0",
    "webinar_id": 410,
    "webinar_title": "Clase en directo: módulo 3",
    "webinar_start_at": "2026-10-07T16:00:00.000Z",
    "webinar_status": "ended",
    "session_kind": "group",
    "registrant_id": 9120,
    "contact_id": 3,
    "visitor_id": 88,
    "name": "Ana Pérez",
    "email": "ana@example.com",
    "status": "attended",
    "status_source": "registration",
    "registered_at": "2026-10-06T16:00:04.000Z",
    "live_seconds": 4980,
    "live_seconds_source": "group_room_connections",
    "replay_watched": false,
    "replay_watched_seconds": null
  }, {
    "object": "webinar_attendance",
    "id": "WzQxMCwibHVpc0BleGFtcGxlLmNvbSJd",
    "webinar_id": 410,
    "webinar_title": "Clase en directo: módulo 3",
    "webinar_start_at": "2026-10-07T16:00:00.000Z",
    "webinar_status": "ended",
    "session_kind": "group",
    "registrant_id": null,
    "contact_id": 41,
    "visitor_id": 97,
    "name": "Luis Gómez",
    "email": "luis@example.com",
    "status": "not_joined",
    "status_source": "access",
    "registered_at": null,
    "live_seconds": null,
    "live_seconds_source": null,
    "replay_watched": true,
    "replay_watched_seconds": 1830
  }],
  "has_more": true,
  "next_starting_after": "WzQxMCwibHVpc0BleGFtcGxlLmNvbSJd",
  "measurement": { "status": "…", "not_joined": "…", "live_seconds": "…" }
}