iopoint
Referência

Pontos

Listar pontos do período, registrar novos pontos e obter foto de auditoria.

URL Base
https://api.iopoint.com.br/api

Pontos do período

GET/customer/v2/point/getFromPeriod

Retorna os pontos agrupados por colaborador → dia → batidas, com data/hora, método, origem, geolocalização (latitude/longitude e endereço reverso), informações de ajuste e indicação de foto de auditoria. Os filtros `national_registry_list[]` e `email_list[]` são opcionais — sem eles, retorna todos os colaboradores da empresa no período.

has_audit_photo: true indica que existe foto associada ao ponto — use GET /point/audit para obtê-la.

Query parameters

NomeTipoObrig.Descrição
begin_datedatesimData inicial (YYYY-MM-DD).
end_datedatesimData final (YYYY-MM-DD). Máximo de 31 dias.
national_registry_list[]array<string>nãoCPFs a filtrar. Opcional — sem este filtro (e sem `email_list[]`), retorna todos os colaboradores da empresa. Use a sintaxe PHP/HTML padrão repetindo a chave: `national_registry_list[]=12345678900&national_registry_list[]=98765432100`. Os colchetes `[]` no nome são obrigatórios mesmo para um único CPF.
email_list[]array<string>nãoE-mails a filtrar. Opcional — mesma regra do `national_registry_list[]`. Sintaxe: `email_list[][email protected]`.
decimal_formatbooleannãoDevolver `worked_time` em decimal quando `1`.
include_branchesbooleannãoQuando `1`, agrega a matriz e todas as filiais do grupo econômico na resposta. Só leitura.
company_national_registrystringnãoCNPJ (apenas dígitos) de uma empresa do grupo para restringir o escopo a ela. Use os CNPJs retornados em `GET /economic-group`. Fora do grupo acessível retorna `company_not_found` (404).

Erros possíveis

StatusCódigoQuando ocorre
422date_range_exceededPeríodo maior que 31 dias.

Exemplos

Request
curl -X GET "https://api.iopoint.com.br/api/customer/v2/point/getFromPeriod?begin_date=2026-05-01&end_date=2026-05-31" \
  -H "apiIopointToken: SEU_TOKEN_AQUI"
Response200
{
  "data": [
    {
      "national_registry": "12345678900",
      "registration_number": "0042",
      "email": "[email protected]",
      "name": "João da Silva",
      "occupation": "Analista de RH",
      "department": "Recursos Humanos",
      "team": null,
      "business_unit": "Matriz",
      "admission_date": "2022-03-15",
      "pis": "12345678901",
      "company": {
        "name": "Filial São Paulo LTDA",
        "trading_name": "Filial SP",
        "national_registry": "12345678000288"
      },
      "days": [
        {
          "date": "2026-05-26",
          "shift": "08:00-12:00 / 13:00-17:00",
          "worked_time": "08:00:00",
          "points": [
            {
              "point_id": 9991,
              "datetime": "2026-05-26 07:58:12",
              "hour": "07:58",
              "method": "Reconhecimento facial",
              "origin": "App Mobile",
              "is_adjusted": false,
              "adjustment_reason": null,
              "adjusted_by": null,
              "accuracy_meters": 8,
              "geolocation": {
                "lat": -23.5616,
                "lng": -46.6557
              },
              "address": "Av. Paulista, 1000 - Bela Vista, São Paulo - SP",
              "has_audit_photo": true
            }
          ]
        }
      ]
    }
  ],
  "meta": {
    "begin_date": "2026-05-01",
    "end_date": "2026-05-31"
  }
}

Respostas

200
{
  "data": [
    {
      "national_registry": "12345678900",
      "registration_number": "0042",
      "email": "[email protected]",
      "name": "João da Silva",
      "occupation": "Analista de RH",
      "department": "Recursos Humanos",
      "team": null,
      "business_unit": "Matriz",
      "admission_date": "2022-03-15",
      "pis": "12345678901",
      "company": {
        "name": "Filial São Paulo LTDA",
        "trading_name": "Filial SP",
        "national_registry": "12345678000288"
      },
      "days": [
        {
          "date": "2026-05-26",
          "shift": "08:00-12:00 / 13:00-17:00",
          "worked_time": "08:00:00",
          "points": [
            {
              "point_id": 9991,
              "datetime": "2026-05-26 07:58:12",
              "hour": "07:58",
              "method": "Reconhecimento facial",
              "origin": "App Mobile",
              "is_adjusted": false,
              "adjustment_reason": null,
              "adjusted_by": null,
              "accuracy_meters": 8,
              "geolocation": {
                "lat": -23.5616,
                "lng": -46.6557
              },
              "address": "Av. Paulista, 1000 - Bela Vista, São Paulo - SP",
              "has_audit_photo": true
            }
          ]
        }
      ]
    }
  ],
  "meta": {
    "begin_date": "2026-05-01",
    "end_date": "2026-05-31"
  }
}

Foto de auditoria do ponto

GET/customer/v2/point/audit

Retorna a foto facial registrada no momento da batida em base64, junto com o nome do arquivo e o `mime_type` da imagem.

Query parameters

NomeTipoObrig.Descrição
point_idintegersimID da batida (`point_id` retornado em `getFromPeriod`).
include_branchesbooleannãoQuando `1`, agrega a matriz e todas as filiais do grupo econômico na resposta. Só leitura.
company_national_registrystringnãoCNPJ (apenas dígitos) de uma empresa do grupo para restringir o escopo a ela. Use os CNPJs retornados em `GET /economic-group`. Fora do grupo acessível retorna `company_not_found` (404).

Erros possíveis

StatusCódigoQuando ocorre
404point_not_foundPonto inexistente ou de outra empresa.
404audit_photo_not_foundPonto existe, mas não há foto de auditoria associada.

Exemplos

Request
curl -X GET "https://api.iopoint.com.br/api/customer/v2/point/audit?point_id=9991" \
  -H "apiIopointToken: SEU_TOKEN_AQUI"
Response200
{
  "data": {
    "point_id": 9991,
    "filename": "a3f5c2e1b4d8.jpg",
    "mime_type": "image/jpeg",
    "base64": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAg..."
  },
  "meta": {
    "point_id": 9991
  }
}

Respostas

200
{
  "data": {
    "point_id": 9991,
    "filename": "a3f5c2e1b4d8.jpg",
    "mime_type": "image/jpeg",
    "base64": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAg..."
  },
  "meta": {
    "point_id": 9991
  }
}

Registrar ponto

POST/customer/v2/point

Registra uma nova batida de ponto via API. A data/hora não pode ser futura nem anterior à admissão. O endpoint devolve o `point_id` e um `hash` SHA-256 que serve como comprovante.

Body (application/json)

NomeTipoObrig.Descrição
national_registrystringsimCPF do colaborador (com zeros à esquerda).
datetimedatetimesimData/hora da batida (YYYY-MM-DD HH:MM:SS). Não pode ser futura.

Erros possíveis

StatusCódigoQuando ocorre
404cpf_not_foundCPF não cadastrado na empresa.
404collaborator_not_foundColaborador associado ao CPF inativo.
422collaborator_firedÚnico colaborador encontrado com esse CPF na empresa está demitido (`dismissal_date` preenchida). Se houver duplicidade de CPF, o ponto é registrado no ativo.
422date_time_greater_than_now`datetime` no futuro.
422date_begin_less_than_now`datetime` anterior à data de admissão.

Exemplos

Request
curl -X POST "https://api.iopoint.com.br/api/customer/v2/point" \
  -H "apiIopointToken: SEU_TOKEN_AQUI" \
  -H "Content-Type: application/json" \
  -d '{
  "national_registry": "12345678900",
  "datetime": "2026-05-26 07:58:12"
}'
Response201
{
  "data": {
    "point_id": 9991,
    "hash": "f1d2d2f924e986ac86fdf7b36c94bcdf32beec15..."
  }
}

Respostas

201
{
  "data": {
    "point_id": 9991,
    "hash": "f1d2d2f924e986ac86fdf7b36c94bcdf32beec15..."
  }
}