Pontos
Listar pontos do período, registrar novos pontos e obter foto de auditoria.
URL Base
https://api.iopoint.com.br/apiPontos do período
GET
/customer/v2/point/getFromPeriodRetorna 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
| Nome | Tipo | Obrig. | Descrição |
|---|---|---|---|
| begin_date | date | sim | Data inicial (YYYY-MM-DD). |
| end_date | date | sim | Data final (YYYY-MM-DD). Máximo de 31 dias. |
| national_registry_list[] | array<string> | não | CPFs 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ão | E-mails a filtrar. Opcional — mesma regra do `national_registry_list[]`. Sintaxe: `email_list[][email protected]`. |
| decimal_format | boolean | não | Devolver `worked_time` em decimal quando `1`. |
| include_branches | boolean | não | Quando `1`, agrega a matriz e todas as filiais do grupo econômico na resposta. Só leitura. |
| company_national_registry | string | não | CNPJ (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
| Status | Código | Quando ocorre |
|---|---|---|
| 422 | date_range_exceeded | Perí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/auditRetorna a foto facial registrada no momento da batida em base64, junto com o nome do arquivo e o `mime_type` da imagem.
Query parameters
| Nome | Tipo | Obrig. | Descrição |
|---|---|---|---|
| point_id | integer | sim | ID da batida (`point_id` retornado em `getFromPeriod`). |
| include_branches | boolean | não | Quando `1`, agrega a matriz e todas as filiais do grupo econômico na resposta. Só leitura. |
| company_national_registry | string | não | CNPJ (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
| Status | Código | Quando ocorre |
|---|---|---|
| 404 | point_not_found | Ponto inexistente ou de outra empresa. |
| 404 | audit_photo_not_found | Ponto 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/pointRegistra 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)
| Nome | Tipo | Obrig. | Descrição |
|---|---|---|---|
| national_registry | string | sim | CPF do colaborador (com zeros à esquerda). |
| datetime | datetime | sim | Data/hora da batida (YYYY-MM-DD HH:MM:SS). Não pode ser futura. |
Erros possíveis
| Status | Código | Quando ocorre |
|---|---|---|
| 404 | cpf_not_found | CPF não cadastrado na empresa. |
| 404 | collaborator_not_found | Colaborador associado ao CPF inativo. |
| 422 | collaborator_fired | Único colaborador encontrado com esse CPF na empresa está demitido (`dismissal_date` preenchida). Se houver duplicidade de CPF, o ponto é registrado no ativo. |
| 422 | date_time_greater_than_now | `datetime` no futuro. |
| 422 | date_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..."
}
}