Ir al contenido
Taskpipe

Referencia de la API

Rutas externas, permisos y reglas de las peticiones.

Usa esta API desde tu servidor para listar grupos, registrar una consulta o dar acceso a un estudiante. Crea una clave en Ajustes → Acceso a la API y guárdala en el servidor, fuera del alcance de los visitantes. Cada clave pertenece a una organización y necesita un permiso para cada tarea. Envíala en la cabecera x-api-key. Si la petición lleva JSON, añade Content-Type: application/json.

MétodoRutaPermiso
GET/api/integrations/v1/cohortscohort:read
POST/api/integrations/v1/leadslead:write
POST/api/integrations/v1/cohort-studentsstudent:write

Listar grupos

Usa esta ruta para mostrar grupos en tu web. Solo devuelve grupos publicados y visibles en la lista de la organización asociada a la clave. Los filtros son opcionales; si envías varios, el grupo debe cumplirlos todos.

ParámetroFormato y efecto
courseIdID del curso original.
startDateFecha AAAA-MM-DD; compara la fecha pública de inicio en la zona horaria del grupo.
countryCódigo de dos letras; se convierte a mayúsculas.
city, venueCoincidencia exacta.
curl 'https://TU_DOMINIO/api/integrations/v1/cohorts?country=ES' \
  -H 'x-api-key: TU_CLAVE_DE_SERVIDOR'

La respuesta es { "cohorts": [...] }. Cada elemento contiene cohortId, cohortKey, courseId, title, timezone, country, city, venue, hasStorefront, publicDates, seatAvailability, capacity y remainingSeats. El lugar, la capacidad y las fechas pueden ser null. seatAvailability vale available o full. publicDates, si existe, contiene startsAt y endsAt, cada uno null o { "instant": "..." }. Usa cohortKey para dar acceso y cohortId para asociar una consulta a un grupo. Si cohorts está vacío, ningún grupo visible coincide con los filtros.

Registrar un contacto

Llama a esta ruta cuando alguien envíe una consulta desde tu web. Asigna un externalLeadId a cada envío y reutilízalo si tienes que repetir la petición por un fallo de red.

curl 'https://TU_DOMINIO/api/integrations/v1/leads' \
  -H 'x-api-key: TU_CLAVE_DE_SERVIDOR' -H 'Content-Type: application/json' \
  -d '{"externalLeadId":"form-1042","capturedAt":"2026-09-23T10:00:00Z","person":{"name":"Ana Ruiz","email":"ana@example.com"},"source":{"system":"website","form":"course-enquiry","pageUrl":"https://school.example/courses","locale":"es"}}'
CampoObligatorioRegla
externalLeadIdSíID del envío, de 1 a 200 caracteres; mantenlo al reintentar.
capturedAtSíFecha y hora ISO; no más de cinco minutos en el futuro.
personSíCorreo o teléfono internacional; name es opcional.
sourceSísystem, form, pageUrl y locale; URL HTTP o HTTPS.
courseId o cohortIdNoComo máximo uno. Un grupo debe estar publicado al asignarlo.
messageNoHasta 5.000 caracteres.
customFieldsNoHasta 20 campos con key, label y value; claves únicas.
marketingConsentNoRegistro aparte de la elección sobre comunicaciones comerciales; ver abajo.

source.system y source.form empiezan por letra minúscula y solo admiten minúsculas, números o guiones (máximo 64 caracteres). pageUrl se guarda sin parámetros ni fragmento. Crear un contacto devuelve 201; repetir la petición o actualizar un contacto existente devuelve 200. La respuesta contiene leadId, cohortId (texto o null), courseId (texto o null) y status (captured, converted o discarded). Por ejemplo:

{ "leadId": "id_del_contacto", "cohortId": null, "courseId": null, "status": "captured" }

Si repites los mismos datos una vez normalizados, Taskpipe devuelve el contacto guardado sin tocar los cambios hechos por el equipo. Si cambias los datos con el mismo ID externo, o envías datos de una persona que ya figura en esta organización, la ficha se actualiza. Los campos enviados pueden sustituir valores anteriores. Antes de corregir un envío, consulta lo que ya está guardado. Un cohortId ya asociado puede seguir en la ficha aunque el grupo deje de estar publicado; para asignar otro grupo, ese grupo sí debe estar publicado.

marketingConsent es independiente de la consulta. Envíalo solo si has registrado la elección de la persona. Exige granted (booleano), givenAt (fecha y hora ISO), uiLocation (URL HTTP/S) y userAgent (1–1024 caracteres imprimibles). Puede incluir IP, país, región e idioma; la región exige el país.

Dar acceso a un estudiante

Usa esta ruta cuando hayas decidido incorporar a un estudiante a un grupo publicado. isPaid registra si consta como pagado; esta petición no cobra al estudiante.

curl 'https://TU_DOMINIO/api/integrations/v1/cohort-students' \
  -H 'x-api-key: TU_CLAVE_DE_SERVIDOR' -H 'Content-Type: application/json' \
  -d '{"cohortKey":"autumn-2026","student":{"name":"Ana Ruiz","email":"ana@example.com"},"isPaid":false,"joinedAt":"2026-09-23T10:00:00Z"}'
CampoObligatorioRegla
cohortKeySíClave de un grupo publicado de esta organización.
student.name, student.emailSíNombre no vacío y correo válido.
student.phoneNoTeléfono internacional, al menos cinco caracteres.
joinedAtSíFecha y hora ISO.
isPaidNoVale false por defecto; registra el pago, no cobra una tarjeta.

Al crear una matrícula, la respuesta es 201 y se pone en cola un correo de acceso. Si repites la petición con el mismo grupo, correo y valor de isPaid, recibes 200 con la matrícula existente; no se pone otro correo en cola. Si cambias isPaid, recibes 409 student_access_conflict: esta ruta no cambia el estado de pago de una matrícula existente. Las dos respuestas correctas contienen:

{
  "studentId": "id_del_estudiante",
  "cohortStudentId": "id_de_matricula",
  "cohortId": "id_del_grupo",
  "status": "active",
  "loginPath": "/login"
}

Si se pierde la respuesta, repite la misma petición mientras el grupo siga publicado. Una respuesta 200 confirma que la matrícula existe. Un grupo inexistente, no publicado o ajeno devuelve 404, incluso si una petición anterior pudo haber creado la matrícula; si cambió el estado del grupo, compruébalo en Taskpipe. Un grupo lleno devuelve 409 cohort_full al intentar añadir una matrícula nueva.

Errores y reintentos

Los errores usan { "error": { "code": "...", "message": "..." } }; algunos incluyen requestId o details. No uses el texto del mensaje para tomar decisiones.

EstadoCódigo habitualQué hacer
400validation_errorCorrige el JSON o los campos.
401missing_api_key, invalid_api_keyUsa una clave válida con el permiso necesario.
404cohort_not_found, lead_target_not_foundRevisa la organización y el destino; los grupos deben estar publicados para nuevas matrículas o nuevas asignaciones de contactos.
409cohort_full, student_access_conflictResuelve el límite de plazas o el estado de pago.
413payload_too_largeEl cuerpo de la petición para registrar un contacto supera 32 KiB.
429rate_limitedEspera los segundos de Retry-After.

Si recibes un error 5xx o se pierde la respuesta, no sabes si la operación se completó. Repite la consulta con el mismo externalLeadId y los mismos datos, o el acceso con el mismo grupo, correo y isPaid. No cambies esos valores solo para reintentar: otros datos pueden actualizar una ficha y otro valor de isPaid puede causar un conflicto. Consulta Integraciones para crear claves.