Sukora

API para desarrolladores

Dispara entregables de Sukora desde tu herramienta (Zapier, Make, n8n, un CRM o un script) y recibe un aviso por webhook cuando estén listos.

Autenticación

Todas las llamadas a la API usan tu API key en la cabecera Authorization. La encuentras (y puedes regenerarla) en el Studio, en Ajustes → Integraciones. Guárdala en secreto: da acceso a tus créditos.

Authorization: Bearer sk_tu_clave

URL base: https://sukora.xyz

Endpoints

Listar lo que puedes pedir

GET /api/v1/skills

Devuelve el catálogo: cada entregable con su clave y su coste en créditos.

curl https://sukora.xyz/api/v1/skills \
  -H "Authorization: Bearer sk_tu_clave"
{
  "skills": [
    { "key": "competitive-analysis", "name": "Análisis competitivo", "credits": 150 },
    { "key": "content-calendar", "name": "Calendario de contenido", "credits": 180 }
    // …
  ]
}

Crear un entregable

POST /api/v1/tasks

Encola un entregable para tu negocio (usa la marca que tengas guardada). Responde al momento con el id; el trabajo se hace en segundo plano. Los créditos se descuentan al ejecutarse.

Campo Tipo Descripción
skill string Clave del catálogo (obligatorio). P.ej. competitive-analysis.
message string Instrucción o contexto extra (opcional).
curl -X POST https://sukora.xyz/api/v1/tasks \
  -H "Authorization: Bearer sk_tu_clave" \
  -H "Content-Type: application/json" \
  -d '{ "skill": "competitive-analysis" }'
{ "id": "e514b0b7-…", "skill": "competitive-analysis", "status": "queued", "credits": 150 }

Consultar el estado

GET /api/v1/tasks/:id

Cuando status sea done, incluye la url pública del entregable y su pdfUrl.

curl https://sukora.xyz/api/v1/tasks/e514b0b7-… \
  -H "Authorization: Bearer sk_tu_clave"
{
  "id": "e514b0b7-…",
  "skill": "competitive-analysis",
  "status": "done",
  "url": "https://sukora.xyz/d/e514b0b7-…",
  "pdfUrl": "https://sukora.xyz/d/e514b0b7-…/informe.pdf"
}

Listar tus entregables recientes

GET /api/v1/tasks

Devuelve tus últimos entregables (para sondear desde Zapier/Make/n8n o un CRM). Parámetro opcional ?limit=N (1–100, por defecto 20).

curl "https://sukora.xyz/api/v1/tasks?limit=10" \
  -H "Authorization: Bearer sk_tu_clave"
{
  "tasks": [
    {
      "id": "e514b0b7-…",
      "skill": "competitive-analysis",
      "status": "done",
      "createdAt": "2026-07-25T00:00:00.000Z",
      "url": "https://sukora.xyz/d/e514b0b7-…"
    }
  ]
}

Automatización (Zapier, Make, n8n)

No necesitas escribir código: cualquier herramienta de automatización con módulos HTTP puede conectar Sukora usando esta API y los webhooks. Recetas listas:

Zapier

Disparador: «Webhooks by Zapier → Catch Hook» y pega esa URL en Ajustes → Integraciones de Sukora → recibirás un evento cada vez que un entregable esté listo. Acción: «Webhooks by Zapier → POST» a https://sukora.xyz/api/v1/tasks con la cabecera Authorization: Bearer sk_… y el cuerpo { "skill": "competitive-analysis" } para pedir un entregable desde cualquier Zap.

Make (Integromat)

Usa el módulo HTTP → Make a request: método POST, URL https://sukora.xyz/api/v1/tasks, cabecera de autorización y cuerpo JSON con el skill. Para avisos, apunta un Webhook de Make en Integraciones de Sukora.

n8n

Nodo HTTP Request (POST a /api/v1/tasks) para pedir, y nodo Webhook como disparador de «entregable listo». Igual de simple.

CRM y otras herramientas

Cualquier CRM o app que permita llamar a una URL o recibir webhooks encaja: dispara un entregable con POST /api/v1/tasks cuando entra un lead, y recibe el resultado por webhook o sondeando GET /api/v1/tasks. La API es REST estándar con Bearer, así que cabe en casi cualquier flujo.

Webhooks

En vez de consultar el estado, puedes recibir un aviso automático. Pon la URL de tu herramienta en Ajustes → Integraciones y Sukora enviará un POST cuando cada entregable esté listo:

{
  "event": "deliverable.ready",
  "taskId": "e514b0b7-…",
  "skillKey": "competitive-analysis",
  "url": "https://sukora.xyz/d/e514b0b7-…",
  "pdfUrl": "https://sukora.xyz/d/e514b0b7-…/informe.pdf",
  "at": "2026-07-25T00:00:00.000Z"
}

Verificar la firma

Cada aviso lleva la cabecera X-Sukora-Signature: sha256=…, que es el HMAC-SHA256 del cuerpo con tu secreto de firma (también en Integraciones). Compruébalo para asegurarte de que el aviso viene de Sukora:

// Node.js
const crypto = require('crypto');
function esDeSukora(rawBody, firma, secreto) {
  const esperado = 'sha256=' +
    crypto.createHmac('sha256', secreto).update(rawBody).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(firma), Buffer.from(esperado));
}
Errores. 401 = API key ausente o inválida · 402 = créditos insuficientes · 400 = skill no válido · 404 = la tarea no es de tu cuenta.