Skip to Content
SEPE

SEPE

Conecta tus aplicaciones con funciones del SEPE.

Parámetros en la cabecera HTTP

  • Authorization (caracteres): Autorización de la API. Ejemplo: Bearer {token}
  • X-Cert-Secret (caracteres) : Clave secreta asociada al certificado del cliente.

URL base

https://api.saltra.es/api/v4/sepe

Errores

Los errores recibidos en la API del SEPE o errores de validación.

  • success (booleano) : La respuesta “true” cuando todo esta correcto, y “false” cuando hay errores.
  • message (caracteres) : El mensaje de la respuesta.
  • errors (arreglo) : Los errores capturados en la API, ya sea del SEPE o errores de validación.
    • sepe: Errores relacionados con el SEPE.
    • regimen: Errores de validación.
  • maintenance (booleano) : Cuando el SEPE se encuentra en mantenimiento.
  • retry_after opcional (número entero) : En los 503 con maintenance: true o con retryable: true: los mismos segundos que la cabecera Retry-After. Si no viene, usa la cabecera.
  • retryable opcional (booleano) : true en los 503 en los que no hemos podido comunicarnos con el organismo; reintenta después de Retry-After. No aparece en el 424 ni en el 503 de resultado desconocido de una escritura.

Respuesta

Respuesta
{ "success": false, "message": "Página no operativa, inténtelo de nuevo más tarde. StatusCode: 500", "status": 500, "data": [], "errors": { "sepe": [ "Página no operativa, inténtelo de nuevo más tarde. StatusCode: 500" ], "regimen": ["El campo regimen es obligatorio."] }, "maintenance": true }

Códigos de estado

El código HTTP distingue si la consulta tiene respuesta, si el problema está en lo que nos has enviado o si el fallo es del SEPE. Úsalo para decidir si merece la pena reintentar.

CódigoQué significa¿Reintentar?
200La operación se ha realizado.—
404El SEPE ha respondido correctamente y no hay datos para esa consulta: el trabajador no tiene certificados, o no hay documento en esa fecha.No. Es una respuesta definitiva; reintentar devolverá lo mismo.
422Los datos enviados no son válidos, según nuestra validación o según el propio SEPE (por ejemplo, un NIF/NIE mal formado).No, hasta corregir los datos.
429Has superado el límite de peticiones (ver Límites de consultas) o el certificado ya tiene una comunicación en curso.Sí, esperando lo que indique Retry-After.
424El SEPE ha respondido y ha rechazado la operación por un motivo distinto a los anteriores, o ha rechazado el certificado digital que le presentamos. El message empieza por SEPE: cuando es su texto, y entonces la respuesta lleva la cabecera X-Saltra-Error: organism-rejected.No, hasta corregir los datos (o cambiar el certificado).
503 + retryable: trueNo hemos podido comunicarnos con el SEPE (fallo de conexión, tiempo agotado en una consulta, respuesta no válida). Lleva retry_after en el cuerpo y las cabeceras Retry-After (60 segundos por defecto) y X-Saltra-Error: organism-unavailable.Sí, esperando lo que indique Retry-After.
503 + maintenance: trueEl SEPE está en mantenimiento o no está operativo (maintenance: true). Incluye los casos en los que su servidor no responde de forma verificable. La respuesta lleva la cabecera Retry-After con los segundos que debes esperar; reintentar antes devuelve el mismo 503.Sí, esperando lo que indique Retry-After.
503 sin Retry-AfterResultado desconocido de una comunicación (contrato, llamamiento, anulación…): el SEPE no ha respondido a tiempo o no ha confirmado, y puede haberse registrado. Sin retryable ni Retry-After; timeout: true cuando se ha agotado el tiempo.No a ciegas: comprueba primero si se registró (podrías duplicarla).

Hasta el 18/09/2026, las consultas sin resultados (No existen certificados para ese NIF, No se encuentra el documento en esta fecha…) se devolvían con 502. Ahora son 404: si tu integración trata cualquier 5xx como “reintentar”, deja de repetir consultas que nunca van a cambiar.

Hasta el 19/09/2026, algunas caídas del SEPE salían como 502 con el mensaje Error de conexión de SALTRA con el (SEPE) y maintenance: false. Ahora son 503 con maintenance: true, como el resto de sus paradas. Fíate de maintenance, no del texto del mensaje: es el campo pensado para esto y no cambia de redacción.

Hasta el 26/10/2026, los rechazos del SEPE salían como 502 y los tiempos agotados como 504. Ahora el rechazo es 424, la falta de comunicación es 503 con retryable: true y Retry-After, y una comunicación de resultado desconocido es 503 sin Retry-After. Los fallos de conexión como Error de conexión de SALTRA con el (SEPE) llevan ahora maintenance: false y retryable: true. La API ya no devuelve nunca a propósito 502 ni 504: si los recibes, los genera la infraestructura de red, no la API, y no traen nuestro cuerpo. Ver el changelog del 23/10/2026.

Ejemplo de 503 (Certific@ en mantenimiento):

HTTP/1.1 503 Service Unavailable Content-Type: application/json Retry-After: 120
Respuesta 503
{ "success": false, "message": "SEPE: SEPE en mantenimiento.", "status": 503, "errors": { "sepe": ["SEPE: SEPE en mantenimiento."] }, "maintenance": true, "retry_after": 120 }

El valor de Retry-After depende del caso. Cuando Saltra ya sabe que el SEPE está parado (por ejemplo, Certific@ en mantenimiento), responde sin volver a consultarlo y Retry-After son los segundos que faltan para que lo compruebe de nuevo (hasta 300 segundos, 5 minutos). En el resto de paradas es un valor por defecto de unos minutos. En el 503 con retryable: true (no hemos podido comunicarnos con el SEPE) es de 60 segundos por defecto.

Espera los segundos que indique Retry-After antes de reintentar. Reintentar antes no desbloquea nada: devuelve el mismo 503. No hagas polling a intervalo fijo (por ejemplo, cada 10 segundos).

Hasta el 04/10/2026, el 503 no decía cuánto esperar. Ahora el 503 de mantenimiento lleva siempre la cabecera Retry-After y puede traer también retry_after en el cuerpo, con el mismo valor.

Hasta el 14/10/2026, cuando el servicio Certific@ del SEPE no estaba disponible, sus endpoints podían tardar unos 12 segundos y responder 500 con un mensaje de «Tiempo agotado». Ahora responden enseguida 503 con maintenance: true, la cabecera Retry-After y el mensaje SEPE: El servicio Certific@ no está disponible en este momento. Inténtalo de nuevo más tarde. Mientras siga sin estar disponible, las peticiones siguientes también reciben un 503 de inmediato. No es un problema de tu certificado ni de los datos enviados: espera lo que indique Retry-After y no reintentes en bucle.

Límites de consultas

Las peticiones autenticadas están limitadas a 80 por minuto en las consultas (GET) y 120 por minuto en las escrituras (POST). El límite se cuenta por certificado (si se envía X-Cert-Secret) o, en su defecto, por usuario autenticado, y por ruta. Las peticiones no autenticadas se limitan a 60 por minuto por IP. Los endpoints de integración pesada —GET /employee-situations y GET /ta-info-for-nss de Seguridad Social, y GET /contrata/data del SEPE— comparten un cupo combinado más bajo, de 30 peticiones por minuto por certificado (o usuario): consumir uno reduce el cupo de los otros dos.

Saltra publica el estado de tu cupo en las cabeceras de todas las respuestas, para que puedas regular el ritmo de tus llamadas antes de agotarlo.

CabeceraTipoCuándo se envíaQué indica
X-Ratelimit-LimitenteroSiemprePeticiones permitidas por minuto.
X-Ratelimit-RemainingenteroSiemprePeticiones que te quedan en la ventana actual.
X-Ratelimit-Resettimestamp UNIXSiempreInstante en que la ventana se renueva y X-Ratelimit-Remaining vuelve a su máximo.
Retry-AftersegundosEn 429 y en los 503 de organismo en mantenimiento (maintenance: true) o con el que no hemos podido comunicarnos (retryable: true). Nunca en un 424 ni en el 503 de resultado desconocido de una escritura.Segundos que debes esperar antes de reintentar.

Ejemplo de respuesta correcta:

HTTP/1.1 200 OK X-Ratelimit-Limit: 80 X-Ratelimit-Remaining: 45 X-Ratelimit-Reset: 1786012860

X-Ratelimit-Reset es un instante absoluto, no una cuenta atrás: se mantiene igual en todas las respuestas de la misma ventana y solo avanza cuando el cupo se renueva. Combinado con X-Ratelimit-Remaining es lo que te permite espaciar las peticiones cuando te acercas al límite, en vez de detenerte en seco.

Al superar el límite, la API responde 429 Too Many Requests y añade Retry-After:

HTTP/1.1 429 Too Many Requests X-Ratelimit-Limit: 80 X-Ratelimit-Remaining: 0 X-Ratelimit-Reset: 1786012860 Retry-After: 37

El cuerpo sigue el formato de error habitual:

{ "success": false, "status": 429, "message": "Too Many Requests" }

Espera los segundos que indique Retry-After antes de reintentar. Reintentar antes de tiempo no adelanta el desbloqueo: consume más cupo y alarga la espera.

Actualizado el