Skip to content

Métricas ​

As métricas transformam os dados operacionais do ATS em indicadores acionáveis: quantas vagas estão abertas, quantos candidatos estão em andamento, quanto tempo leva para contratar e onde o funil trava. Com esses relatórios, a equipe de recrutamento identifica gargalos, compara períodos e prioriza as vagas que mais precisam de atenção.

Todos os endpoints desta página são de somente leitura (GET) e retornam arrays ou objetos prontos para alimentar dashboards e gráficos — sem paginação.

Headers obrigatórios

Todas as requisições devem incluir o header X-Ats-Id (UUID) com o identificador da instância e Authorization: Bearer {token} com o token de um usuário do ATS (atsUser). Endpoints de métricas não são públicos nem acessíveis a candidatos.


Filtros comuns e escopo por empresa ​

A maioria dos relatórios aceita os mesmos filtros opcionais de query:

NomeTipoObrigatórioDescrição
fromstringNãoData inicial do período, no formato YYYY-MM-DD.
tostringNãoData final do período, no formato YYYY-MM-DD.
atsJobIdnumberNãoRestringe o relatório a uma vaga específica.

O campo de data considerado depende do relatório: candidaturas usam appliedAt, contratações usam hiredAt, recusas usam rejectedAt e durações de etapa usam a data da transição.

Escopo RBAC por empresa

Administradores enxergam os dados de todas as empresas da instância. Recrutadores veem apenas as empresas às quais estão vinculados: um recrutador sem vínculos recebe contagens zeradas ou arrays vazios, nunca dados de outras empresas.


Endpoints ​

KPIs Gerais ​

Retorna os indicadores-chave do recrutamento em um único objeto, ideal para os cartões do topo de um dashboard.

http
GET /v1/ats/user/metrics/kpis

Parâmetros de Query ​

Aceita os filtros comuns: from, to e atsJobId.

Campos da Resposta ​

CampoTipoDescrição
openJobsNumberQuantidade de vagas com status open.
activeApplicationsNumberCandidaturas com status active (em andamento no funil).
newApplicationsNumberCandidaturas recebidas no período filtrado (todas, quando from/to não são informados).
hiredNumberCandidaturas contratadas no período filtrado.
avgTimeToHireDaysNumber | nullTempo médio entre a candidatura e a contratação, em dias. null quando não há contratações.
conversionRateNumber | nullTaxa de conversão: contratados ÷ candidaturas encerradas (status diferente de active). null quando não há candidaturas encerradas.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/ats/user/metrics/kpis?from=2026-01-01&to=2026-09-10&atsJobId=1" \
  -H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna o objeto com os seis KPIs.

json
{
  "openJobs": 2,
  "activeApplications": 0,
  "newApplications": 0,
  "hired": 0,
  "avgTimeToHireDays": null,
  "conversionRate": 0
}

Evolução de Candidaturas ​

Retorna uma série temporal com o total de candidaturas recebidas por período, ordenada da data mais antiga para a mais recente — a base para gráficos de linha ou área.

http
GET /v1/ats/user/metrics/applications

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
groupByenumSimGranularidade da série: day, week ou month.
fromstringNãoData inicial do período (YYYY-MM-DD).
tostringNãoData final do período (YYYY-MM-DD).
atsJobIdnumberNãoRestringe a série a uma vaga específica.

Cada ponto da série traz a data de início do período (date, no formato YYYY-MM-DD) e o total de candidaturas (applications).

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/ats/user/metrics/applications?groupBy=month&from=2026-01-01&to=2026-10-10&atsJobId=1" \
  -H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna o array de pontos da série temporal.

json
[
  {
    "date": "2026-09-01",
    "applications": 1
  }
]

422 Unprocessable Entity

Ocorre quando groupBy não é enviado ou tem valor inválido.

json
{
  "errors": [
    {
      "message": "The groupBy field must be defined",
      "rule": "required",
      "field": "groupBy"
    }
  ]
}

Funil de uma Vaga ​

Retorna a contagem de candidaturas em cada etapa do pipeline de uma vaga, na ordem das etapas — o retrato instantâneo do funil. Etapas sem candidaturas aparecem com applicationsCount igual a zero, o que permite desenhar o funil completo mesmo quando vazio.

http
GET /v1/ats/user/metrics/funnel

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
atsJobIdnumberSimID da vaga (deve existir na instância).

Campos da Resposta ​

CampoTipoDescrição
stageIdNumberID da etapa.
stageNameStringNome da etapa.
stageTypeStringTipo da etapa (applied, screening, interview, offer, hired, rejected, etc.).
positionNumberPosição da etapa no pipeline.
applicationsCountNumberCandidaturas atualmente nesta etapa.

Exemplo de Requisição ​

javascript
fetch('https://api.us.basis.tavares.in/v1/ats/user/metrics/funnel?atsJobId=1', {
  headers: {
    'X-Ats-Id': '3fa85f64-5717-4562-b3fc-2c963f66afa6',
    'Authorization': 'Bearer {token}'
  }
})
  .then(response => response.json())
  .then(data => console.log(data));

Respostas ​

200 OK

Retorna o array de etapas com suas contagens, ordenado por position.

json
[
  {
    "stageId": 1,
    "stageName": "New",
    "stageType": "applied",
    "position": 1,
    "applicationsCount": 0
  },
  {
    "stageId": 2,
    "stageName": "Screening",
    "stageType": "screening",
    "position": 2,
    "applicationsCount": 0
  },
  {
    "stageId": 3,
    "stageName": "Interview",
    "stageType": "interview",
    "position": 3,
    "applicationsCount": 0
  },
  {
    "stageId": 4,
    "stageName": "Offer",
    "stageType": "offer",
    "position": 4,
    "applicationsCount": 0
  },
  {
    "stageId": 6,
    "stageName": "Rejected",
    "stageType": "rejected",
    "position": 5,
    "applicationsCount": 0
  },
  {
    "stageId": 5,
    "stageName": "Hired",
    "stageType": "hired",
    "position": 6,
    "applicationsCount": 1
  }
]

422 Unprocessable Entity

Ocorre quando atsJobId não é enviado ou a vaga não existe na instância.

json
{
  "errors": [
    {
      "message": "The selected atsJobId is invalid",
      "rule": "database.exists",
      "field": "atsJobId"
    }
  ]
}

Duração por Etapa ​

Retorna o tempo médio e mediano que as candidaturas permanecem em cada etapa, ordenado da etapa mais lenta para a mais rápida. É o relatório que revela os gargalos do funil: uma etapa com avgSeconds muito acima das demais indica onde os candidatos ficam parados.

Os tempos são calculados a partir do histórico de transições das candidaturas — cada mudança de etapa registra quantos segundos a candidatura passou na etapa de origem. Para entender como esse histórico é gerado a cada movimentação, consulte a página Candidaturas & Funil.

http
GET /v1/ats/user/metrics/stage-durations

Parâmetros de Query ​

Aceita os filtros comuns: from, to e atsJobId. O período filtra pela data em que a transição ocorreu.

Campos da Resposta ​

CampoTipoDescrição
stageIdNumberID da etapa de origem das transições.
stageNameStringNome da etapa.
transitionsNumberQuantidade de saídas da etapa no período.
avgSecondsNumberTempo médio de permanência na etapa, em segundos.
medianSecondsNumberTempo mediano de permanência na etapa, em segundos (menos sensível a outliers que a média).

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/ats/user/metrics/stage-durations?from=2026-01-01&to=2026-09-12&atsJobId=1" \
  -H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna o array de etapas com as estatísticas de tempo, ordenado por avgSeconds decrescente.

json
[
  {
    "stageId": 1,
    "stageName": "New",
    "transitions": 2,
    "avgSeconds": 1213,
    "medianSeconds": 1212
  }
]

Origens das Candidaturas ​

Retorna a distribuição das candidaturas por canal de origem, ordenada do canal com mais candidaturas para o com menos. Use para descobrir quais fontes de atração rendem mais volume.

http
GET /v1/ats/user/metrics/sources

Parâmetros de Query ​

Aceita os filtros comuns: from, to e atsJobId. O período filtra pela data da candidatura (appliedAt).

A source pode ser job_board, career_site, referral, sourced, import, agency ou other.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/ats/user/metrics/sources?from=2026-01-01&to=2026-10-10&atsJobId=1" \
  -H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna o array de origens com seus totais, ordenado por total decrescente.

json
[
  {
    "source": "career_site",
    "total": 1
  }
]

Motivos de Recusa ​

Retorna o ranking dos motivos de recusa mais frequentes, considerando apenas candidaturas rejected com motivo registrado. Use para entender por que os candidatos estão sendo eliminados e ajustar requisitos ou processos.

http
GET /v1/ats/user/metrics/rejection-reasons

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
limitnumberNãoQuantidade máxima de motivos no ranking (entre 1 e 50, padrão: 10).
fromstringNãoData inicial do período (YYYY-MM-DD), filtrando por rejectedAt.
tostringNãoData final do período (YYYY-MM-DD), filtrando por rejectedAt.
atsJobIdnumberNãoRestringe o ranking a uma vaga específica.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/ats/user/metrics/rejection-reasons?from=2026-01-01&to=2026-10-13&atsJobId=1&limit=10" \
  -H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna o array de motivos com seus totais, ordenado por total decrescente.

json
[
  {
    "reasonId": 1,
    "reasonName": "Salário fora do orçamento",
    "total": 1
  }
]