Desarrolladores

Documentación de API y webhooks.

Una API REST y webhooks firmados para llevar candidatos seleccionados y puntuados a tu propio ATS. Cada solicitud a continuación es en vivo: edita los parámetros y envíala contra una cuenta de sandbox funcional, sin necesidad de registrarte.

Pruébalo al instante

Cada consola en esta página viene precargada con una clave de API de sandbox de lectura/escritura (sk_live_d0c50000) vinculada a una agencia de demostración con datos reales de ejemplo. Cambia a tu propia clave desde API y webhooks en la configuración de tu cuenta de ChatSieve cuando estés listo para probar contra tu propio tenant. La clave de sandbox es pública y compartida: no confíes en que sus datos permanezcan estables.

Autenticación

Tokens Bearer

Cada solicitud se autentica con una clave de API generada desde API y webhooks en la configuración de tu cuenta. Las claves se muestran una sola vez al crearlas: guárdalas de forma segura.

curl https://api.chatsieve.example.com/api/v1/candidates \
  -H "Authorization: Bearer sk_live_..."

Todos los endpoints están limitados a la agencia propietaria de la clave: no hay forma de leer o escribir datos de otro tenant con una clave válida. Las solicitudes sin un encabezado Authorization válido devuelven 401.

Endpoint

Listar candidatos

GET /api/v1/candidates — filtra por estado o vacante, los más recientes primero.

GET/api/v1/candidates
Clave de API
status
vacancy_id
limit
Endpoint

Obtener un candidato

GET /api/v1/candidates/:id — detalle completo, incluyendo el historial de mensajes de WhatsApp, documentos y factores de puntuación. Pega un id de la lista anterior.

GET/api/v1/candidates/:id
Clave de API
id
Endpoint

Actualizar el estado de un candidato

POST /api/v1/candidates/:id/status — aceptar o rechazar dispara el evento de webhook correspondiente a cualquier endpoint suscrito.

POST/api/v1/candidates/:id/status

status must be one of: NEW, SCREENING, PENDING_REVIEW, ACCEPTED, REJECTED

Clave de API
id
Cuerpo de la solicitud (JSON)
Endpoint

Listar vacantes

GET /api/v1/vacancies — cada puesto abierto de la agencia autenticada, con un recuento de candidatos.

GET/api/v1/vacancies
Clave de API
limit
Endpoint

Crear una vacante

POST /api/v1/vacancies — los campos mínimos necesarios para empezar a enrutar solicitantes hacia un flujo de selección.

POST/api/v1/vacancies
Clave de API
Cuerpo de la solicitud (JSON)
Endpoint

Activar selección masiva

POST /api/v1/bulk-screening — envía el mensaje inicial de selección por WhatsApp a cada candidato nuevo de una vacante (o a una lista específica de candidate_ids). Los mensajes se envían de verdad una vez configuradas las credenciales de WhatsApp; hasta entonces se registran con un estado simulado.

POST/api/v1/bulk-screening
Clave de API
Cuerpo de la solicitud (JSON)
Referencia

Errores

Estado
Significado
400
El cuerpo de la solicitud o los parámetros de consulta faltan o no son válidos: consulta el mensaje de error para más detalles.
401
Clave de API faltante, malformada o revocada.
404
El recurso no existe, o no pertenece a tu agencia.
200 / 201
Éxito — 201 al crear un recurso, 200 en los demás casos.
Webhooks

Suscríbete a eventos

Registra un endpoint desde API y webhooks en la configuración de tu cuenta, eligiendo qué eventos recibir. Cada endpoint recibe su propio secreto de firma, mostrado una sola vez al crearlo.

Evento
Se dispara cuando
candidate.accepted
El estado de un candidato se establece en ACCEPTED (desde el portal o la API).
candidate.rejected
El estado de un candidato se establece en REJECTED (desde el portal o la API).
document.flagged
Un documento enviado se marca como NEEDS_REVIEW durante la revisión de documentos.
Estructura del payload
{
  "event": "candidate.accepted",
  "created_at": "2026-07-11T10:00:00.000Z",
  "data": {
    "candidate_id": "clx_9f2a7b",
    "name": "Emily Carter",
    "vacancy_id": "vac_platform_eng",
    "score": 92
  }
}
Verificar la firma

Cada entrega incluye un encabezado X-ChatSieve-Signature: un resumen HMAC-SHA256 en hexadecimal del cuerpo crudo de la solicitud, firmado con el secreto de tu endpoint. Verifica siempre contra los bytes crudos, antes de cualquier análisis JSON, y usa una comparación de tiempo constante.

const crypto = require("crypto");

function isValidSignature(rawBody, signatureHeader, signingSecret) {
  const expected = crypto
    .createHmac("sha256", signingSecret)
    .update(rawBody)
    .digest("hex");

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signatureHeader)
  );
}

// In your webhook route handler:
app.post("/hooks/chatsieve", express.raw({ type: "*/*" }), (req, res) => {
  const signature = req.header("X-ChatSieve-Signature");
  if (!isValidSignature(req.body, signature, process.env.CHATSIEVE_WEBHOOK_SECRET)) {
    return res.status(401).send("Invalid signature");
  }
  const event = JSON.parse(req.body);
  // handle event.event, event.data …
  res.status(200).send("ok");
});
Enviar un webhook de prueba

Envía una carga útil de muestra firmada a cualquier URL que indiques, para que puedas probar tu receptor sin esperar a un evento real de candidato o documento. Obtén una URL gratuita desechable en webhook.site para verla llegar.

Clave de API
URL de destino
Evento
Referencia

Versionado

La versión actual de la API es v1, bajo /api/v1/*. Los cambios importantes se publicarán bajo un nuevo prefijo de versión en lugar de modificar el comportamiento existente. ¿Preguntas? Habla con nosotros.

¿Listo para conectar ChatSieve a tu ATS?

Genera una clave de API en vivo desde tu cuenta en menos de un minuto.

© 2026 ChatSieve, Inc. Todos los derechos reservados.
Hecho para agencias de reclutamiento en todo el mundo.