---
title: "ATS Integration: como integrar a nova API da GeekHunter?"
description: api geekhunter
---

[Pular para o conteúdo](https://content.geekhunter.com.br/pt-br/knowledge-base/ats-integration-como-integrar-a-nova-api-da-geekhunter#main-content)

Português - Brasil

Mostrar submenu para traduções

![](https://content.geekhunter.com.br/hs-fs/hubfs/Texto%20do%20seu%20par%C3%A1grafo%20(4).png?width=2129&height=82&name=Texto%20do%20seu%20par%C3%A1grafo%20(4).png)

Abrir navegação principal

Fechar navegação principal

- Português - Brasil
  
  Mostrar submenu para traduções

 Como podemos ajudar?

- Não há sugestões porque o campo de pesquisa está em branco.

1. [Central de Conhecimento](https://content.geekhunter.com.br/pt-br/knowledge-base?hsLang=pt-br)
2. [Integrações](https://content.geekhunter.com.br/pt-br/knowledge-base/integra%C3%A7%C3%B5es?hsLang=pt-br)

# ATS Integration: como integrar a nova API da GeekHunter?

#### **Passo 1: Gerar sua API Key**

1. Acesse o dashboard da GeekHunter
2. Vá em **Configurações → Integrações → API Keys**
3. Clique em **Gerar nova chave**
4. Copie e armazene com segurança

---

#### **Passo 2: Configurar autenticação**

Todas as requisições devem incluir o header:

```
Authorization: Bearer SUA_API_KEYContent-Type: application/json
```

 

---

#### **Passo 3: Listar todas as vagas**

Endpoint

```
GET /jobs
```

Exemplo com cURL

```
curl -X GET "https://api.geekhunter.com/jobs?page=1&per_page=20" \ -H "Authorization: Bearer SUA_API_KEY"
```

Exemplo com JavaScript (fetch)

```
fetch("https://api.geekhunter.com/jobs?page=1&per_page=20", { headers: {   "Authorization": "Bearer SUA_API_KEY" }}).then(res => res.json()).then(data => console.log(data));
```

Resposta (exemplo)

```
{ "data": [   {     "job_id": "abc123def4",     "title": "Backend Developer",     "created_at": "2026-03-01T09:00:00Z"   } ], "meta": {   "page": 1,   "per_page": 20,   "total": 100,   "total_pages": 5 }}
```

 

---

#### **Passo 4: Buscar dados de uma vaga específica**

Endpoint

```
GET /jobs/{job_id}
```

Exemplo

```
curl -X GET "https://api.geekhunter.com/jobs/abc123def4" \ -H "Authorization: Bearer SUA_API_KEY"
```

 

---

#### **Passo 5: Listar candidatos de uma vaga**

Endpoint

```
GET /jobs/{job_id}/applications
```

Exemplo

```
curl -X GET "https://api.geekhunter.com/jobs/abc123def4/applications" \ -H "Authorization: Bearer SUA_API_KEY"
```

Resposta (exemplo)

```
{ "data": [   {     "application_id": "xyz987abcd",     "name": "João Silva",     "applied_at": "2026-03-02T10:00:00Z",     "resume_url": "https://..."   } ]}
```

 

---

#### **Passo 6: Para rejeitar um candidato**

Endpoint

```
POST /applications/{application_id}/reject
```

Exemplo

```
curl -X POST "https://api.geekhunter.com/applications/xyz987abcd/reject" \ -H "Authorization: Bearer SUA_API_KEY"
```

Possíveis respostas:

- 200 → sucesso
- 422 → candidato já rejeitado

---

#### **Passo 7: Trabalhando com paginação**

Use os parâmetros:

- page → número da página
- per\_page → itens por página (máx: 100)

```
GET /jobs?page=2&per_page=50
```

 

---

#### **Passo 8: Tratamento de erros**

Exemplo de erro:

```
{ "error": "Invalid parameter", "code": "invalid_request"}
```

### **Principais códigos:**

 

- 400 → requisição inválida
- 401 → API Key inválida
- 404 → recurso não encontrado
- 429 → limite excedido

---

#### **Passo 9: Rate limit**

- Limite: **100 requisições por minuto**

Se exceder:

HTTP 429

Retry-After: 30

➡ ️ Aguarde o tempo indicado antes de tentar novamente.

---

#### **Passo 10: Boas práticas**

- Armazene sua API Key em variáveis de ambiente
- Implemente retry automático para erros 429
- Sincronize dados periodicamente (ex: a cada 5 minutos)
- Sempre trate campos null

---

#### **Exemplo de fluxo completo**

1\. Buscar vagas

```
const jobs = await fetch("/jobs");
```

2\. Para cada vaga, buscar candidatos

```
for (const job of jobs.data) { const applications = await fetch(`/jobs/${job.job_id}/applications`);
```

3\. Exemplo: rejeitar candidato

```
 for (const app of applications.data) {   if (app.name === "Teste") {     await fetch(`/applications/${app.application_id}/reject`, {       method: "POST"     });   } }}
```

 

- [Perguntas frequentes](https://content.geekhunter.com.br/pt-br/knowledge-base/perguntas-frequentes?hsLang=pt-br)
- [Comece agora](https://content.geekhunter.com.br/pt-br/knowledge-base/comece-agora?hsLang=pt-br)
- [Gestão de Vagas](https://content.geekhunter.com.br/pt-br/knowledge-base/gest%C3%A3o-de-vagas?hsLang=pt-br)
- [Conta & Configurações](https://content.geekhunter.com.br/pt-br/knowledge-base/conta-configura%C3%A7%C3%B5es?hsLang=pt-br)
- [Integrações](https://content.geekhunter.com.br/pt-br/knowledge-base/integra%C3%A7%C3%B5es?hsLang=pt-br)
- [Dados & Métricas](https://content.geekhunter.com.br/pt-br/knowledge-base/dados-m%C3%A9tricas?hsLang=pt-br)

[![Branca 1](https://content.geekhunter.com.br/hs-fs/hubfs/Branca%201.png?width=260&height=72&name=Branca%201.png "Branca 1")](https://content.geekhunter.com.br/?hsLang=pt-br)

<https://www.facebook.com/> <https://www.twitter.com/> <https://www.instagram.com/> <https://podcasts.apple.com/> [mailto:email@email.com](mailto:email@email.com)

Copyright © 2026, GeekHunter