xYago APIv1

Autenticación y entornos

Cada petición se autentica con una API key de tu empresa. La clave decide la empresa, el entorno (live o sandbox) y qué puede hacer (scopes).

Enviar la API key

Usa la cabecera Authorization con el esquema Bearer:

Authorization: Bearer xy_live_AbCd...

Si tu herramienta no permite modificar Authorization, puedes usar X-Api-Key: xy_live_AbCd.... Si llegan las dos, manda Authorization. Sin clave, o con una clave inválida, revocada o caducada, la respuesta es 401 invalid_api_key.

La empresa nunca se envía en la URL ni en el cuerpo: sale de la clave. Un id de otra empresa responde 404, exactamente igual que uno inexistente.

Entornos: live y sandbox

Prefijo de la claveEntornoComportamiento
xy_live_liveDatos reales de la empresa. Las escrituras tienen efecto (notificaciones, calendario...).
xy_test_test (sandbox)Datos de ejemplo fijos; las escrituras devuelven respuestas plausibles pero no se guardan. Ver Sandbox.

Los dos entornos usan la misma URL base (https://api.xyago.com/v1). Para pasar a producción solo cambias la clave. Cada entorno tiene su propia configuración en el panel (productos habilitados, límite, IPs permitidas, webhooks y secreto de firma).

Crear, rotar y revocar claves

Un administrador gestiona las claves en el panel de xYago → API Developer → Credenciales:

Recomendaciones: una clave por sistema integrado (así el log del panel muestra quién hizo cada petición), solo los scopes necesarios, guárdala en un gestor de secretos o variable de entorno y rótala periódicamente o si sospechas de una filtración.

Scopes

ScopePermite
areas:readListar y consultar áreas
areas:writeCrear áreas
employees:readListar y consultar empleados y el estado de las importaciones
employees:writeCrear, editar, desactivar e importar empleados
vacations:readListar solicitudes y consultar saldos de vacaciones
vacations:writeSolicitar, aprobar y rechazar vacaciones
time:readListar tramos de horas
time:writeRegistrar tramos de horas

Orden de las comprobaciones

En cada petición se comprueba, en este orden, y se responde con el primer fallo:

  1. API key válida → 401 invalid_api_key
  2. Producto habilitado para el entorno de la clave → 403 api_disabled
  3. Endpoint habilitado → 403 endpoint_disabled
  4. Scope en la clave → 403 insufficient_scope
  5. IP de origen permitida → 403 ip_not_allowed (IPs permitidas)
  6. Límite de peticiones → 429 rate_limited (límites)

X-Request-Id

Todas las respuestas llevan X-Request-Id. Puedes enviar el tuyo (8 a 64 caracteres A-Z a-z 0-9 . _ : -, p. ej. el id de la tarea de tu ERP) y se devolverá igual; si no es válido o no lo envías, xYago genera uno (req_...). El id aparece en el log de peticiones del panel: inclúyelo siempre que contactes con soporte.

curl -i "https://api.xyago.com/v1/employees?limit=10" \
  -H "Authorization: Bearer $XYAGO_API_KEY" \
  -H "X-Request-Id: siesa-sync-20260302-0001"

Transporte

Solo HTTPS. Las peticiones se hacen de servidor a servidor: no hay CORS, así que la API no se puede llamar desde un navegador (y no debe: la clave quedaría expuesta).