Skip to content

Public API

Connect NEX to your tools

A JSON API to read published job offers and, with a company key, manage your offers, follow your applications and read your organisation chart.

Base URL
https://nexjobs.net/api/v1
Format
JSON, ISO 8601 dates in universal time
Version
v1
Authentication
Company key in a Bearer header (except public endpoints)

Getting started

  1. The owner of the company account opens Management, then API and integrations.
  2. They create a key, give it a name and tick only the access it needs.
  3. They copy the key, shown only once, and store it in the tool that will call the API.

Creating keys requires a plan that includes API access. Published offers remain readable without a key.

Authentication

Send the key in the Authorization header of every request, after the word Bearer.

Authorization: Bearer nex_live_…

A key opens your company’s data: keep it on your server, never in a web page or an installed app. Private endpoints refuse calls coming from a browser anyway. When in doubt, revoke it and create a new one.

Access (scopes)

Each key can only do what was ticked when it was created.

Access (scopes)
AccessWhat it allows
jobs:readRead the company’s job offers, whatever their status.
jobs:writeCreate job offers and close them.
applications:readRead the applications received: candidate name, stage, outcome, dates and documents.
organization:readRead the organisation chart: directorates, departments, services and positions.

Rate limits

Each key may send 120 requests per minute.

Public endpoints, without a key, accept 120 requests per minute per IP address.

Beyond that, the response has status 429 and a Retry-After header telling how many seconds to wait.

Pagination

Lists accept the page (from 1) and pageSize (20 by default, 50 at most) parameters, and return the total and the number of pages.

{
  "data": [ … ],
  "pagination": { "page": 1, "pageSize": 20, "total": 57, "totalPages": 3 }
}

Errors

Every error has the same shape: a stable code, for your program to use, and a help message in English.

{
  "error": {
    "code": "insufficient_scope",
    "message": "This key lacks the \"jobs:write\" scope."
  }
}
Errors
CodeMeaning
unauthorizedNo key, or a malformed Authorization header.
invalid_api_keyUnknown or revoked key.
api_access_not_in_planThe company’s plan no longer includes API access.
insufficient_scopeThe key lacks the access this endpoint requires.
rate_limitedToo many requests: wait for the delay given by Retry-After.
invalid_requestInvalid parameter or request body; the details name the field.
unsupported_media_typeThe body must be sent as JSON (Content-Type: application/json).
payload_too_largeThe body exceeds 64 KB.
not_foundResource not found, or not owned by your company.
invalid_transitionImpossible status change, such as closing a draft.
publication_blockedCannot publish: unverified e-mail address or active-offer quota reached. Create the offer as a draft.
internal_errorError on our side: try again later.

Endpoints

  • GET/jobs

    Lists published offers, newest first. Filters: q (free text), country (ISO country code), sector (sector code), contract (contract type).

    Public, no key.

    curl "https://nexjobs.net/api/v1/jobs?q=engineer&pageSize=10"
  • GET/jobs/{id}

    One published offer in full: description, requested documents and the link to its page, where people apply.

    Public, no key.

    curl "https://nexjobs.net/api/v1/jobs/<id>"
  • GET/employer/jobs

    Lists your company’s offers, whatever their status, with the number of applications. Filter: status.

    Access required: jobs:read

    curl "https://nexjobs.net/api/v1/employer/jobs?status=PUBLISHED" \
      -H "Authorization: Bearer nex_live_…"
  • POST/employer/jobs

    Creates an offer: a draft by default; with publish set to true, it is published if the company is verified, otherwise it waits for moderation.

    Access required: 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}

    One of your offers in full, with its pipeline stages and the number of applications at each stage.

    Access required: jobs:read

    curl "https://nexjobs.net/api/v1/employer/jobs/<id>" \
      -H "Authorization: Bearer nex_live_…"
  • PATCH/employer/jobs/{id}

    Closes a published or pending offer. Only the change to the closed status is accepted.

    Access required: 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

    Lists the applications received. Filters: jobId, outcome, updatedSince (ISO 8601 date).

    Access required: 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

    Returns the organisation chart: directorates, departments, services and work positions.

    Access required: organization:read

    curl "https://nexjobs.net/api/v1/organization" \
      -H "Authorization: Bearer nex_live_…"

Protecting candidates

The API never returns a candidate’s e-mail address, phone number or messages, nor any password or account. NEX organises the contact between employer and candidate.

How the API evolves

Within v1, fields may be added, never renamed or removed. An incompatible change will come as a v2, announced in advance.

OpenAPI specification (JSON)

© 2026 NEX — The platform that recruits excellence