API externa da Xeqmate

A API externa da Xeqmate deixa o seu sistema ler os dados da plataforma — câmeras, trechos de gravação, passagens de placa e faciais — e cadastrar, editar e inativar usuários, sem abrir a tela. REST, somente HTTPS, com token por cliente, limite de requisições declarado e todas as chamadas auditadas.

REST · JSON Token por cliente Somente HTTPS Tudo auditado
Visão geral

O que é a API externa da Xeqmate?

É uma API REST que dá ao cliente acesso programático aos dados dele na plataforma: câmeras, gravações, passagens de placa e faciais e gestão de usuários. O acesso é habilitado pelo administrador da plataforma no cadastro do cliente, que gera um token único por cliente (prefixo xqm_) usado no cabeçalho de cada requisição. Somente HTTPS, com limite de 50 requisições por minuto e auditoria de todas as chamadas.

Como funciona

  • Endereço base: https://app.xeqmate.com/api/v1/integrations, com autenticação Authorization: Bearer <token> em toda requisição.
  • Um token por cliente: o administrador liga a API no cadastro do cliente e gera o token; pode regenerá-lo (o anterior deixa de valer no ato) ou revogá-lo a qualquer momento.
  • Limite de requisições: 50 por minuto por token. Toda resposta traz os cabeçalhos X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset; acima do limite, a API responde 429 com Retry-After.
  • Paginação: listagens usam page e limit, com padrão e máximo de 100 itens por página.
  • Datas ISO-8601: entrada com fuso horário (sem fuso, é lida como UTC); saída sempre em UTC, com Z no final.
  • Auditoria completa: cada chamada — inclusive as recusadas — entra na trilha de auditoria da plataforma em nome do cliente, com o prefixo do token no detalhe.
Referência

Endpoints disponíveis

Câmeras, gravações, passagens e usuários — o escopo é o que o administrador do cliente enxerga na plataforma.

MétodoRotaO que faz
GET/cameraLista as câmeras que o cliente enxerga, com filtros por nome e tipo (vídeo, LPR, facial).
GET/camera/{id}Uma câmera pelo id, com status, gravação, analíticos e localização.
GET/camera/{id}/recordTrechos de gravação no período (até 31 dias por consulta), com URLs de MP4 e miniatura assinadas, válidas por 30 dias.
GET/camera/{id}/platePassagens de placa no período (até 7 dias por consulta), com dados do veículo e imagens.
GET/camera/{id}/facePassagens faciais no período (até 7 dias por consulta), com atributos e imagens de cada rosto.
GET/userLista os usuários do cliente, com filtros por nome, e-mail e situação.
GET/user/{id}Um usuário pelo id.
GET/user/rolePapéis que o cliente pode atribuir aos usuários.
POST/userCria um usuário — a senha temporária é gerada pela plataforma e enviada por e-mail.
PUT/user/{id}Edita um usuário; só os campos enviados no corpo são alterados.
DELETE/user/{id}Inativa o usuário (inativação lógica) e encerra as sessões dele.

Sem inicio e fim, as consultas de gravações e passagens usam as últimas 24 horas. As passagens não devolvem total — pagine até meta.has_more vir false.

Na prática

Exemplo de requisição

Listar as câmeras de LPR do cliente:

curl -H "Authorization: Bearer xqm_..." \
  "https://app.xeqmate.com/api/v1/integrations/camera?tipo=alpr&limit=2"

Resposta:

{
  "success": true,
  "data": [
    {
      "id": 163,
      "codigo": "XEQ4MLIQICX591",
      "nome": "SC 283 - Saída para Seara",
      "tipo": "Fixa",
      "status": "Online",
      "ultima_conexao": "2026-08-18T23:33:19Z",
      "gravacao": { "habilitada": true, "retencao_dias": 4 },
      "analiticos": { "placa": true, "facial": false },
      "localizacao": {
        "latitude": -27.108206,
        "longitude": -52.55431,
        "cidade": "Chapecó - SC"
      }
    }
  ],
  "meta": { "page": 1, "limit": 2, "total": 282 }
}

Erros seguem sempre o mesmo formato, em qualquer status 4xx/5xx:

{ "success": false, "message": "Token de API inválido.", "error": 401 }
Referência

Códigos de resposta

CódigoQuando acontece
400Campo do corpo ou da URL fora do contrato — a mensagem vem como mapa campo → motivo.
401Sem cabeçalho de autenticação, token inválido, revogado ou regenerado.
402Cliente bloqueado por inadimplência.
403Cliente inativo ou API externa desligada nas configurações do cliente.
404Câmera ou usuário fora do escopo do cliente; câmera sem gravação, sem LPR ou sem facial.
409E-mail ou documento já cadastrado; usuário já inativo.
422Período fora do limite (7 dias em passagens, 31 em gravações), início depois do fim, valor de filtro desconhecido.
429Mais de 50 requisições no minuto — aguarde os segundos indicados em Retry-After.
502O servidor de mídia da câmera não respondeu; tente novamente em instantes.
O caminho inverso

API para consultar, webhook para receber

A API é o seu sistema chamando a Xeqmate. Para o caminho inverso — a plataforma chamando o seu sistema quando um alerta de placa ou facial acontece —, o recurso é o webhook: um POST com JSON de formato fixo, token Bearer e assinatura HMAC. Os dois juntos cobrem integrações completas, do evento em tempo real à consulta histórica. Veja como funciona na página de integrações.

Como o acesso é liberado

A API não é aberta ao público: o administrador da plataforma habilita a API externa no cadastro de cada cliente e gera ali o token. Cada exibição, regeneração ou revogação do token também fica registrada na auditoria. Esse modelo por cliente é o mesmo usado pelos integradores que revendem a plataforma: cada cliente final pode ter o próprio acesso, isolado dos demais, consultando por exemplo as gravações em nuvem das próprias câmeras. A visão geral da plataforma está em VMS SaaS.

Dúvidas frequentes

Perguntas sobre a API

Não. O acesso é habilitado por cliente: o administrador da plataforma liga a API externa no cadastro do cliente e gera um token único (prefixo xqm_). Só com o interruptor ligado e o token no cabeçalho as chamadas funcionam — desligar o interruptor bloqueia o token na hora.

50 requisições por minuto por token. Toda resposta informa os cabeçalhos X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset; passando do limite, a API responde 429 com o tempo de espera em Retry-After.

Sim. O endpoint GET /camera/{id}/record devolve os trechos de gravação do período consultado (até 31 dias por consulta) com URLs de MP4 e de miniatura já assinadas, válidas por 30 dias — o seu sistema baixa o vídeo direto, sem sessão na plataforma.

Sim: criar (POST /user, com senha temporária enviada por e-mail e troca obrigatória no primeiro acesso), editar (PUT /user/{id}) e inativar (DELETE /user/{id}, que encerra as sessões abertas). Os papéis disponíveis vêm de GET /user/role.

Sim, todas — inclusive leituras e chamadas recusadas (401, 403, 429). Cada uma aparece na auditoria da plataforma em nome do cliente, com o prefixo do token no detalhe. Gerar, regenerar, revogar e até exibir o token também são eventos auditados.

A API é de consulta: o seu sistema pergunta, a plataforma responde. Para receber alertas de placa e faciais em tempo real, o recurso é o webhook — a plataforma envia um POST assinado para a URL do seu sistema a cada alerta. Veja a página de integrações.

Demonstração

Veja a API com os dados da sua operação

30 minutos com nosso time: conectamos uma câmera sua ao vivo e mostramos as consultas de câmeras, gravações e passagens funcionando no seu cenário.

Resposta em até 1 dia útil · sem cartão, sem instalação, sem compromisso