API pública
Integre a NEX nas suas ferramentas
Uma API JSON para ler as ofertas publicadas e, com uma chave de empresa, gerir as suas ofertas, acompanhar as candidaturas e ler o organograma.
- URL de base
- https://nexjobs.net/api/v1
- Formato
- JSON, datas ISO 8601 em hora universal
- Versão
- v1
- Autenticação
- Chave de empresa num cabeçalho Bearer (exceto nos pontos de acesso públicos)
Começar
- O proprietário da conta de empresa abre Gestão e depois API e integrações.
- Cria uma chave, dá-lhe um nome e assinala apenas os acessos necessários.
- Copia a chave, mostrada uma única vez, e guarda-a na ferramenta que vai chamar a API.
Criar chaves exige um plano que inclua o acesso à API. As ofertas publicadas continuam legíveis sem chave.
Autenticação
Envie a chave no cabeçalho Authorization de cada pedido, depois da palavra Bearer.
Authorization: Bearer nex_live_…Uma chave abre os dados da sua empresa: guarde-a no seu servidor, nunca numa página web nem numa aplicação instalada. Aliás, os pontos de acesso privados recusam chamadas vindas de um navegador. Em caso de dúvida, revogue-a e crie outra.
Acessos (scopes)
Cada chave só pode fazer o que foi assinalado quando foi criada.
| Acesso | O que permite |
|---|---|
| jobs:read | Ler as ofertas da empresa, seja qual for o estado. |
| jobs:write | Criar ofertas e encerrá-las. |
| applications:read | Ler as candidaturas recebidas: nome do candidato, etapa, resultado, datas e documentos. |
| organization:read | Ler o organograma: direções, departamentos, serviços e postos. |
Limites de chamadas
Cada chave pode enviar 120 pedidos por minuto.
Os pontos de acesso públicos, sem chave, aceitam 120 pedidos por minuto e por endereço IP.
Acima disso, a resposta tem o código 429 e o cabeçalho Retry-After, que indica quantos segundos esperar.
Paginação
As listas aceitam os parâmetros page (a partir de 1) e pageSize (20 por omissão, 50 no máximo) e devolvem o total e o número de páginas.
{
"data": [ … ],
"pagination": { "page": 1, "pageSize": 20, "total": 57, "totalPages": 3 }
}Erros
Todos os erros têm a mesma forma: um código estável, para usar no seu programa, e uma mensagem de ajuda em inglês.
{
"error": {
"code": "insufficient_scope",
"message": "This key lacks the \"jobs:write\" scope."
}
}| Código | Significado |
|---|---|
| unauthorized | Sem chave, ou cabeçalho Authorization mal formado. |
| invalid_api_key | Chave desconhecida ou revogada. |
| api_access_not_in_plan | O plano da empresa já não inclui o acesso à API. |
| insufficient_scope | A chave não tem o acesso exigido por este ponto de acesso. |
| rate_limited | Demasiados pedidos: aguarde o tempo indicado por Retry-After. |
| invalid_request | Parâmetro ou corpo do pedido inválido; o detalhe indica o campo. |
| unsupported_media_type | O corpo tem de ser enviado em JSON (Content-Type: application/json). |
| payload_too_large | O corpo excede 64 KB. |
| not_found | Recurso não encontrado, ou que não pertence à sua empresa. |
| invalid_transition | Mudança de estado impossível, por exemplo encerrar um rascunho. |
| publication_blocked | Não é possível publicar: e-mail não verificado ou limite de ofertas ativas atingido. Crie a oferta como rascunho. |
| internal_error | Erro do nosso lado: tente mais tarde. |
Pontos de acesso
GET/jobs
Lista as ofertas publicadas, das mais recentes para as mais antigas. Filtros: q (texto livre), country (código de país ISO), sector (código de setor), contract (tipo de contrato).
Público, sem chave.
curl "https://nexjobs.net/api/v1/jobs?q=engineer&pageSize=10"GET/jobs/{id}
Detalhe de uma oferta publicada: descrição, documentos pedidos e ligação para a sua página, onde se faz a candidatura.
Público, sem chave.
curl "https://nexjobs.net/api/v1/jobs/<id>"GET/employer/jobs
Lista as ofertas da sua empresa, seja qual for o estado, com o número de candidaturas. Filtro: status.
Acesso necessário: jobs:read
curl "https://nexjobs.net/api/v1/employer/jobs?status=PUBLISHED" \ -H "Authorization: Bearer nex_live_…"POST/employer/jobs
Cria uma oferta: rascunho por omissão; com publish a true, é publicada se a empresa estiver verificada e, caso contrário, aguarda moderação.
Acesso necessário: 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}
Detalhe de uma das suas ofertas, com as etapas do processo e o número de candidaturas em cada uma.
Acesso necessário: jobs:read
curl "https://nexjobs.net/api/v1/employer/jobs/<id>" \ -H "Authorization: Bearer nex_live_…"PATCH/employer/jobs/{id}
Encerra uma oferta publicada ou pendente. Só é aceite a passagem ao estado encerrado.
Acesso necessário: 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 as candidaturas recebidas. Filtros: jobId, outcome, updatedSince (data ISO 8601).
Acesso necessário: 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
Devolve o organograma: direções, departamentos, serviços e postos de trabalho.
Acesso necessário: organization:read
curl "https://nexjobs.net/api/v1/organization" \ -H "Authorization: Bearer nex_live_…"
Proteção dos candidatos
A API nunca devolve o e-mail, o telefone nem as mensagens de um candidato, nem qualquer palavra-passe ou conta. É a NEX que organiza o contacto entre o empregador e o candidato.
Evolução da API
Na versão v1 podem ser acrescentados campos, mas nunca renomeados nem removidos. Uma alteração incompatível dará origem a uma versão v2, anunciada com antecedência.
