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 o registrar una consulta. 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/course-modalitiesmodality:read
POST/api/integrations/v1/leadslead: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/course-modalities?country=ES' \
  -H 'x-api-key: TU_CLAVE_DE_SERVIDOR'

La respuesta es { "modalities": [...] }. Cada elemento contiene modalityId, modalityKey, 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 modalityId para asociar una consulta a un grupo. Si modalities está vacío, ningún grupo visible coincide con los filtros.

Estas rutas no matriculan estudiantes ni dan acceso al curso. Envía a los compradores a la oferta pública del grupo o sigue Acceso de estudiantes para añadir a alguien desde Taskpipe.

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 modalityIdNoComo máximo uno. Un grupo debe estar publicado y abierto a matrículas 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, modalityId (texto o null), courseId (texto o null) y status (captured, contacted, converted o discarded). Por ejemplo:

{ "leadId": "id_del_contacto", "modalityId": 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 modalityId ya asociado puede seguir en la ficha aunque el grupo deje de estar publicado; para asignar otro grupo, ese grupo sí debe estar publicado y abierto a matrículas.

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.

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.
404lead_target_not_foundRevisa la organización y el destino; las nuevas asignaciones de contactos necesitan un grupo publicado con matrículas abiertas.
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. Otros datos pueden actualizar una ficha; no los cambies solo para reintentar. Consulta Integraciones para crear claves.