API pública
Integra NEX en tus herramientas
Una API JSON para leer las ofertas publicadas y, con una clave de empresa, gestionar tus ofertas, seguir tus candidaturas y leer tu organigrama.
- URL base
- https://nexjobs.net/api/v1
- Formato
- JSON, fechas ISO 8601 en hora universal
- Versión
- v1
- Autenticación
- Clave de empresa en una cabecera Bearer (salvo en los puntos de acceso públicos)
Primeros pasos
- El propietario de la cuenta de empresa abre Gestión y luego API e integraciones.
- Crea una clave, le pone un nombre y marca solo los accesos necesarios.
- Copia la clave, que se muestra una sola vez, y la guarda en la herramienta que llamará a la API.
Para crear claves hace falta un plan que incluya el acceso a la API. Las ofertas publicadas se pueden leer sin clave.
Autenticación
Envía la clave en la cabecera Authorization de cada petición, detrás de la palabra Bearer.
Authorization: Bearer nex_live_…Una clave da acceso a los datos de tu empresa: guárdala en tu servidor, nunca en una página web ni en una aplicación instalada. De hecho, los puntos de acceso privados rechazan las llamadas que vienen de un navegador. Ante la duda, revócala y crea otra.
Accesos (scopes)
Cada clave solo puede hacer lo que se marcó al crearla.
| Acceso | Qué permite |
|---|---|
| jobs:read | Leer las ofertas de la empresa, sea cual sea su estado. |
| jobs:write | Crear ofertas y cerrarlas. |
| applications:read | Leer las candidaturas recibidas: nombre del candidato, etapa, resultado, fechas y documentos. |
| organization:read | Leer el organigrama: direcciones, departamentos, servicios y puestos. |
Límites de llamadas
Cada clave puede enviar 120 peticiones por minuto.
Los puntos de acceso públicos, sin clave, aceptan 120 peticiones por minuto y por dirección IP.
Si se supera, la respuesta lleva el código 429 y la cabecera Retry-After, que indica cuántos segundos esperar.
Paginación
Las listas aceptan los parámetros page (desde 1) y pageSize (20 por defecto, 50 como máximo), y devuelven el total y el número de páginas.
{
"data": [ … ],
"pagination": { "page": 1, "pageSize": 20, "total": 57, "totalPages": 3 }
}Errores
Todos los errores tienen la misma forma: un código estable, para usar en tu programa, y un mensaje de ayuda en inglés.
{
"error": {
"code": "insufficient_scope",
"message": "This key lacks the \"jobs:write\" scope."
}
}| Código | Significado |
|---|---|
| unauthorized | No hay clave, o la cabecera Authorization está mal formada. |
| invalid_api_key | Clave desconocida o revocada. |
| api_access_not_in_plan | El plan de la empresa ya no incluye el acceso a la API. |
| insufficient_scope | La clave no tiene el acceso que exige este punto de acceso. |
| rate_limited | Demasiadas peticiones: espera el tiempo indicado por Retry-After. |
| invalid_request | Parámetro o cuerpo de la petición no válido; el detalle indica el campo. |
| unsupported_media_type | El cuerpo debe enviarse en JSON (Content-Type: application/json). |
| payload_too_large | El cuerpo supera los 64 KB. |
| not_found | Recurso no encontrado, o que no pertenece a tu empresa. |
| invalid_transition | Cambio de estado imposible, por ejemplo cerrar un borrador. |
| publication_blocked | No se puede publicar: correo electrónico no verificado o cupo de ofertas activas alcanzado. Crea la oferta como borrador. |
| internal_error | Error por nuestra parte: inténtalo más tarde. |
Puntos de acceso
GET/jobs
Lista las ofertas publicadas, de la más reciente a la más antigua. Filtros: q (texto libre), country (código de país ISO), sector (código de sector), contract (tipo de contrato).
Público, sin clave.
curl "https://nexjobs.net/api/v1/jobs?q=engineer&pageSize=10"GET/jobs/{id}
Detalle de una oferta publicada: descripción, documentos solicitados y enlace a su página, donde se presenta la candidatura.
Público, sin clave.
curl "https://nexjobs.net/api/v1/jobs/<id>"GET/employer/jobs
Lista las ofertas de tu empresa, sea cual sea su estado, con el número de candidaturas. Filtro: status.
Acceso necesario: jobs:read
curl "https://nexjobs.net/api/v1/employer/jobs?status=PUBLISHED" \ -H "Authorization: Bearer nex_live_…"POST/employer/jobs
Crea una oferta: borrador por defecto; con publish en true, se publica si la empresa está verificada y, si no, espera la moderación.
Acceso necesario: jobs:write
curl -X POST "https://nexjobs.net/api/v1/employer/jobs" \ -H "Authorization: Bearer nex_live_…" \ -H "Content-Type: application/json" \ -d '{ "title": "Maintenance technician", "description": "Preventive and corrective maintenance of the plant equipment.", "contractType": "PERMANENT", "payPeriod": "MONTHLY", "currency": "USD", "salaryMin": 900, "salaryMax": 1200, "requiredDocuments": [{ "kind": "CV" }], "publish": true }'GET/employer/jobs/{id}
Detalle de una de tus ofertas, con las etapas de su proceso y el número de candidaturas en cada una.
Acceso necesario: jobs:read
curl "https://nexjobs.net/api/v1/employer/jobs/<id>" \ -H "Authorization: Bearer nex_live_…"PATCH/employer/jobs/{id}
Cierra una oferta publicada o pendiente. Solo se acepta el paso al estado cerrado.
Acceso necesario: jobs:write
curl -X PATCH "https://nexjobs.net/api/v1/employer/jobs/<id>" \ -H "Authorization: Bearer nex_live_…" \ -H "Content-Type: application/json" \ -d '{ "status": "CLOSED" }'GET/employer/applications
Lista las candidaturas recibidas. Filtros: jobId, outcome, updatedSince (fecha ISO 8601).
Acceso necesario: applications:read
curl "https://nexjobs.net/api/v1/employer/applications?outcome=ACTIVE&updatedSince=2026-09-01T00:00:00Z" \ -H "Authorization: Bearer nex_live_…"GET/organization
Devuelve el organigrama: direcciones, departamentos, servicios y puestos de trabajo.
Acceso necesario: organization:read
curl "https://nexjobs.net/api/v1/organization" \ -H "Authorization: Bearer nex_live_…"
Protección de los candidatos
La API nunca devuelve el correo electrónico, el teléfono ni los mensajes de un candidato, ni ninguna contraseña o cuenta. Es NEX quien organiza el contacto entre el empleador y el candidato.
Evolución de la API
En la versión v1 se pueden añadir campos, pero nunca renombrarlos ni eliminarlos. Un cambio incompatible dará lugar a una versión v2, anunciada con antelación.
