InicioGuíasGuía independiente · no es el sitio oficial de Teachable
teachable·es Empezar gratis

Guías

Teachable API y webhooks: guía para desarrolladores (2026)

Guía técnica de la API REST de Teachable y sus webhooks en 2026: autenticación, endpoints, eventos, casos de uso, límites y en qué planes están.

Equipo editorial · actualizado 2026 · 14 min de lectura
Integraciones de Teachable con otras apps

Teachable expone una API REST en https://developers.teachable.com (versión v1) que te permite leer cursos, usuarios, inscripciones y transacciones, y crear o matricular usuarios mediante una API key. Además, sus webhooks notifican en tiempo real eventos como una nueva venta o la finalización de un curso, de modo que puedas automatizar tu negocio sin sondear constantemente la plataforma.

Esta guía está pensada para desarrolladores que quieren integrar Teachable con un CRM, una herramienta de facturación, una comunidad o cualquier flujo a medida. Es técnica pero accesible: si tienes nociones de HTTP y JSON, podrás seguirla. Todos los datos (endpoints, eventos, límites) están tomados de la documentación oficial para desarrolladores; aun así, dado que la plataforma evoluciona, verifica siempre el detalle final en developers.teachable.com antes de poner nada en producción.

Aviso: esta es una guía independiente con fines informativos. No es el sitio oficial de Teachable y algunos enlaces son de afiliado.

Qué es y para qué sirve la API de Teachable

La API de Teachable es una API REST tipo Admin API: actúa en nombre de tu escuela (school) y te da acceso programático a los mismos datos que ves en el panel de administración. En lugar de exportar CSV a mano o copiar datos entre herramientas, escribes código que consulta y modifica esa información directamente.

A grandes rasgos, la API te permite:

Si quieres una visión más general del producto antes de meterte en código, puedes leer qué es Teachable y, si tu objetivo es conectar herramientas sin programar, conviene revisar primero las integraciones de Teachable (Zapier, nativas, etc.), que cubren muchos casos sin tocar la API.

API vs. webhooks: dos piezas que se complementan

Es importante no confundirlas:

En una integración bien diseñada se usan juntos: los webhooks te avisan de que «algo pasó» y, si necesitas más contexto, llamas a la API para completar la información.

Autenticación: la API key

Teachable autentica las peticiones a la Admin API mediante una API key que viaja en una cabecera HTTP. El formato exacto, según la documentación, es:

apiKey: TU_CLAVE_AQUI

Es decir, no es el típico Authorization: Bearer ..., sino una cabecera propia llamada apiKey. Cualquier petición sin una clave válida será rechazada.

Cómo crear tu API key

El proceso, desde el panel de tu escuela (necesitas acceso de propietario/owner):

  1. Entra en Settings > API (Ajustes > API) en el administrador de tu escuela.
  2. Pulsa Create API Key.
  3. Asígnale un nombre descriptivo (por ejemplo, «Integración CRM» o «Webhook facturación»).
  4. Pulsa Create.

Puedes revocar una clave en cualquier momento desde la misma pantalla Settings > API: en el menú de tres puntos (More Actions) junto a la clave, elige Revoke Key. Es buena práctica usar claves distintas por integración y nombrarlas bien, para poder revocar solo la que corresponda si algo se ve comprometido.

Seguridad básica

La API key da acceso a datos de tus alumnos y de tus ventas, así que trátala como una contraseña:

Endpoints principales de la API REST

Todos los endpoints cuelgan de la base https://developers.teachable.com y usan el prefijo de versión /v1. Por ejemplo, para listar cursos la URL completa es https://developers.teachable.com/v1/courses.

La siguiente tabla resume los recursos documentados más útiles. No es necesariamente la lista completa ni sustituye a la referencia oficial, pero te da una idea clara de lo que puedes hacer:

Recurso Método y endpoint Para qué sirve
Cursos GET /v1/courses Listar los cursos de la escuela
Curso GET /v1/courses/{course_id} Detalle de un curso concreto
Progreso del curso GET /v1/courses/{course_id}/progress Progreso agregado de los alumnos
Inscripciones del curso GET /v1/courses/{course_id}/enrollments Ver quién está matriculado
Lección GET /v1/courses/{course_id}/lectures/{lecture_id} Detalle de una lección
Quizzes GET /v1/courses/{course_id}/lectures/{lecture_id}/quizzes Cuestionarios de una lección
Respuestas de quiz GET .../quizzes/{quiz_id}/responses Respuestas enviadas por alumnos
Matricular POST /v1/enroll Inscribir a un usuario en un curso
Desmatricular POST /v1/unenroll Quitar una inscripción
Planes de precios GET /v1/pricing_plans Listar planes de precios
Plan de precios GET /v1/pricing_plans/{pricing_plan_id} Detalle de un plan
Transacciones GET /v1/transactions Consultar ventas/pagos
Usuarios GET /v1/users Listar usuarios
Crear usuario POST /v1/users Dar de alta un usuario
Usuario GET /v1/users/{user_id} Detalle de un usuario
Actualizar usuario PUT /v1/users/{user_id} Modificar datos de un usuario
Webhooks GET /v1/webhooks Listar webhooks configurados
Eventos de webhook GET /v1/webhooks/{webhook_id}/events Ver eventos disparados

También existe un grupo de endpoints /v1/current_user/... orientados a representar al usuario autenticado (sus cursos, su progreso, marcar una lección como completada). Para los detalles exactos de cada parámetro, paginación y formato de respuesta, consulta la referencia oficial en developers.teachable.com.

Ejemplo de llamada con cURL

Una petición mínima para listar tus cursos sería:

curl --request GET \
  --url "https://developers.teachable.com/v1/courses" \
  --header "accept: application/json" \
  --header "apiKey: TU_CLAVE_AQUI"

Y un ejemplo en Node.js usando fetch para listar usuarios:

// Node 18+ trae fetch nativo
const respuesta = await fetch(
  "https://developers.teachable.com/v1/users",
  {
    method: "GET",
    headers: {
      accept: "application/json",
      apiKey: process.env.TEACHABLE_API_KEY, // nunca hardcodear
    },
  }
);

if (!respuesta.ok) {
  throw new Error(`Error de la API: ${respuesta.status}`);
}

const datos = await respuesta.json();
console.log(datos);

Fíjate en dos detalles: la clave se lee de una variable de entorno (process.env.TEACHABLE_API_KEY) y comprobamos respuesta.ok para detectar errores, incluido el 429 por exceso de peticiones que veremos más abajo.

Webhooks: eventos en tiempo real

Los webhooks son, para la mayoría de integraciones, la parte más valiosa. En lugar de preguntar «¿ha habido alguna venta nueva?» cada cinco minutos, configuras una URL en tu servidor y Teachable te envía un POST con el evento en cuanto ocurre.

La documentación para desarrolladores recoge un conjunto amplio de eventos. Estos son los más relevantes agrupados por categoría:

Evento Cuándo se dispara
Sale.created Se produce una compra / inscripción de pago
Sale.subscription_canceled Se cancela una suscripción
Transaction.created Se procesa un pago
Transaction.refunded Se reembolsa una transacción
Enrollment.created Un usuario se inscribe en un curso
Enrollment.completed Un alumno completa un curso al 100%
Enrollment.disabled Se desmatricula a un usuario de un curso
LectureProgress.created Se completa una lección
User.created Se crea una cuenta nueva
User.updated Cambian los datos de un usuario
UserTag.created / UserTag.removed Se añade o quita una etiqueta a un usuario
Comment.created Se publica un comentario en un curso
Response.created Se envía un cuestionario calificado
EmailLead.created Se confirma una suscripción a la lista de correo
AbandonedOrder.created Un checkout queda incompleto (carrito abandonado)

Hay más eventos disponibles (por ejemplo, los relacionados con coaching como Admission.created y Admission.disabled, o las opciones de marketing como User.subscribe_to_marketing_emails). La lista completa y actualizada está en la sección de eventos del Developer Hub.

Estructura del payload

Todos los webhooks comparten un «sobre» (envelope) común, y el contenido específico del evento viaja dentro del campo object. Un ejemplo simplificado para una venta:

{
  "type": "Sale.created",
  "id": 123456,
  "livemode": true,
  "created": "2026-01-15T14:46:56+00:00",
  "hook_event_id": 7654321,
  "object": {
    "...": "datos específicos del evento (venta, usuario, curso...)"
  }
}

Según el evento, el object incluirá datos del usuario (ID, email, nombre), del curso (ID, título), de la inscripción (estado, porcentaje de progreso, referencia a la venta) o de la transacción (importe, divisa, referencias a Stripe/PayPal, desglose de comisiones). Para conocer la estructura exacta de cada payload, apóyate en la documentación oficial y, sobre todo, registra (logea) los primeros eventos reales que recibas para ver con tus propios ojos qué campos llegan.

Buenas prácticas con webhooks

Hay un par de detalles importantes que conviene tener claros desde el principio:

Casos de uso habituales

Con la API y los webhooks combinados puedes montar automatizaciones muy potentes. Algunos ejemplos reales:

Muchas de estas automatizaciones también se pueden montar sin código a través de conectores como Zapier o Make, que se apoyan en estos mismos webhooks. Si tu caso es sencillo, esa vía puede ahorrarte mantenimiento; lo vemos con más detalle en la guía de integraciones de Teachable. Y si lo que te interesa es la parte de pagos (qué pasarelas hay, comisiones, divisas), te será útil leer cómo cobrar pagos en Teachable antes de programar la lógica de facturación.

¿Quieres una cuenta para empezar a desarrollar y probar la API? Puedes crear tu escuela en Teachable y, si tu plan lo incluye, generar tu primera API key en minutos.

Límites de uso (rate limits)

La Admin API aplica un límite de 100 peticiones por minuto por escuela. Para ayudarte a respetarlo, cada respuesta incluye cabeceras informativas:

Si superas el límite, la API responde con un código HTTP 429 y el mensaje «API rate limit exceeded». La recomendación oficial es esperar el tiempo indicado en RateLimit-Reset antes de reintentar.

En la práctica, esto se traduce en dos consejos: implementa reintentos con espera (backoff) respetando esas cabeceras, y prefiere los webhooks a sondear la API en bucle. Si necesitas procesar grandes volúmenes (por ejemplo, una migración), espacia las peticiones para no chocar contra el límite. Ten en cuenta, además, que según el plan puede existir un límite mensual de volumen de peticiones, así que dimensiona tus sincronizaciones en consecuencia.

En qué planes está disponible la API y los webhooks

Este es un punto que cambia con frecuencia, así que conviene tomarlo como orientación y confirmarlo en la página de precios oficial. En líneas generales, según la documentación:

Como los nombres de los planes, los precios y los límites de Teachable se han ido reorganizando (hubo cambios notables en 2025), te recomendamos contrastar la disponibilidad exacta antes de decidirte. Tienes un repaso de las opciones en nuestra guía de precios de Teachable, y si tu objetivo final es monetizar formación, en vender cursos en Teachable verás cómo encaja la parte técnica con la estrategia comercial.

Si vas a necesitar API y webhooks de forma intensiva, asegúrate de elegir un plan que los incluya: puedes comparar las opciones y empezar directamente desde la web de Teachable.

Preguntas frecuentes

¿Es gratis usar la API de Teachable? La API en sí no tiene un coste aparte, pero no está disponible en todos los planes: necesitas, como mínimo, el plan Growth o superior. Es decir, el «coste» es el del plan que te da acceso. Confirma siempre la disponibilidad en la página de precios oficial.

¿Qué tipo de autenticación usa la API? Una API key que se envía en una cabecera HTTP con el formato apiKey: TU_CLAVE. No usa el clásico Authorization: Bearer. La clave se crea y se revoca desde Settings > API en el panel de tu escuela.

¿Teachable firma sus webhooks para verificar su origen? No. Teachable no incluye una firma criptográfica en los webhooks, por lo que no puedes verificar el origen mediante una cabecera de firma. Protégete usando una URL secreta, HTTPS y, si puedes, validando cada evento contra la API.

¿Qué pasa si recibo el mismo evento de webhook dos veces? Puede ocurrir: Teachable reintenta los envíos y puede generar duplicados. Haz tu receptor idempotente guardando un identificador único del evento (como el hook_event_id o el ID de la venta) y comprobándolo antes de actuar.

¿Puedo inventarme endpoints o asumir que existen otros? Mejor no. Trabaja siempre con los endpoints documentados en developers.teachable.com. Si algo no aparece en la referencia oficial, asume que no existe o que no está soportado, y comprueba el comportamiento real con peticiones de prueba antes de depender de ello en producción.


Guía independiente con fines informativos. No es el sitio oficial de Teachable. Algunos enlaces de esta página son de afiliado: si contratas a través de ellos, podemos recibir una comisión sin coste adicional para ti. Verifica siempre los detalles técnicos y los planes en la documentación y la web oficiales.

¿Listo para empezar con Teachable?

Crea tu cuenta y prueba la plataforma sin coste.

Empezar gratis en Teachable →

Artículos relacionados