Developers

Documentação pública da API comercial

Use a API comercial oficial da platenexus para reconhecer placas com autenticação por API Key.

POST principal
/api/v1/plates/recognize/
Reconhecimento síncrono com retorno normalizado para integração comercial.
Autenticação
X-API-Key
Chave por cliente, pronta para backend, ERP, SaaS, portaria e automações.
Histórico
GET por request_id
Rastreie requisições processadas com segurança usando o identificador da leitura.
Plano grátis atual
2500 leituras/mês
Experiência pensada para validar integração, UX do cliente e trilha comercial.
Em resumo

Primeira integração em 3 passos

O fluxo comercial continua simples: envie a imagem, autentique com sua API Key e receba um JSON estável para o seu produto.

1

Envie a imagem do veículo para o endpoint principal.

Use multipart/form-data e envie o arquivo no campo image. A API foi pensada para integrar com backend, operadores, ERPs e automações.

2

Autentique a requisição com sua API Key.

Inclua o header X-API-Key em toda requisição. A chave é por cliente e o valor completo só é exibido no momento de criação ou rotação.

3

Receba a placa reconhecida e os dados de apoio para seguir seu fluxo.

A resposta traz request_id, status, plate, confidence e processing_time_ms, pronta para UX operacional e trilha de auditoria.

Contrato HTTP

Endpoint principal

Uma visão de contrato comercial para acelerar entendimento técnico, QA e documentação interna do cliente.

URL base pública
https://www.platenexus.com
POST https://www.platenexus.com/api/v1/plates/recognize/
GET https://www.platenexus.com/api/v1/plates/requests/{request_id}/
X-API-Key multipart/form-data request_id rastreável
Regras de request
  • Campo obrigatório: image.
  • Formatos esperados: JPEG, JPG, PNG, BMP e WEBP.
  • Upload máximo controlado pela configuração do ambiente.
  • Resposta síncrona para facilitar integração com workflows operacionais.
  • Quando necessário, consulte o histórico com o request_id retornado no POST.

UX de integração ideal: capture o request_id na primeira resposta, exiba o status ao operador e use o histórico para auditoria, debugging e reconciliação.

Reference-first docs

OpenAPI YAML para times que querem contrato mais formal

Além dos snippets rápidos, a documentação agora expõe um schema OpenAPI público para facilitar geração de clientes, documentação interna, mocks e alinhamento entre backend, QA e parceiros.

Schema público
GET https://www.platenexus.com/docs/openapi.yaml

Use essa URL para importar em Swagger Editor, Postman, Stoplight, ferramentas de QA ou pipelines internos.

Trecho do schema
openapi: 3.1.0
info:
  title: platenexus Commercial Plate Recognition API
paths:
  /api/v1/plates/recognize/:
    post:
      security:
        - ApiKeyAuth: []
  /api/v1/plates/requests/{request_id}/:
    get:
      security:
        - ApiKeyAuth: []
Exemplos prontos

Várias linguagens para reduzir atrito do time

Os snippets abaixo já estão no formato esperado pela API comercial. A ideia é minimizar tempo até a primeira chamada funcional.

Exemplo em Python (requests) Exemplo em JavaScript (fetch) Exemplo em Java Exemplo em Node.js Exemplo em Kotlin Exemplo em Ruby
cURL
curl -X POST "https://www.platenexus.com/api/v1/plates/recognize/" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "image=@/path/to/plate.jpg"
PowerShell
$headers = @{ "X-API-Key" = "YOUR_API_KEY" }
$form = @{ image = Get-Item "C:\\images\\plate.jpg" }

Invoke-RestMethod `
  -Method Post `
  -Uri "https://www.platenexus.com/api/v1/plates/recognize/" `
  -Headers $headers `
  -Form $form
Python
import requests

with open("plate.jpg", "rb") as image_file:
    response = requests.post(
        "https://www.platenexus.com/api/v1/plates/recognize/",
        headers={"X-API-Key": "YOUR_API_KEY"},
        files={"image": image_file},
        timeout=60,
    )

print(response.status_code)
print(response.json())
JavaScript / Fetch
const formData = new FormData();
formData.append("image", fileInput.files[0]);

const response = await fetch("https://www.platenexus.com/api/v1/plates/recognize/", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY"
  },
  body: formData,
});

const data = await response.json();
console.log(data);
Node.js / Axios
const axios = require("axios");
const FormData = require("form-data");
const fs = require("fs");

async function recognizePlate() {
  const form = new FormData();
  form.append("image", fs.createReadStream("plate.jpg"));

  const response = await axios.post(
    "https://www.platenexus.com/api/v1/plates/recognize/",
    form,
    {
      headers: {
        "X-API-Key": "YOUR_API_KEY",
        ...form.getHeaders(),
      },
      timeout: 60000,
    }
  );

  console.log(response.data);
}

recognizePlate();
Java / HttpClient
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.UUID;

public class PlateRecognitionExample {
    public static void main(String[] args) throws IOException, InterruptedException {
        String boundary = "----platenexus-" + UUID.randomUUID();
        Path imagePath = Path.of("plate.jpg");
        byte[] fileBytes = Files.readAllBytes(imagePath);

        byte[] body = (
            "--" + boundary + "\r\n" +
            "Content-Disposition: form-data; name=\"image\"; filename=\"plate.jpg\"\r\n" +
            "Content-Type: image/jpeg\r\n\r\n"
        ).getBytes();

        byte[] closing = ("\r\n--" + boundary + "--\r\n").getBytes();
        byte[] payload = new byte[body.length + fileBytes.length + closing.length];
        System.arraycopy(body, 0, payload, 0, body.length);
        System.arraycopy(fileBytes, 0, payload, body.length, fileBytes.length);
        System.arraycopy(closing, 0, payload, body.length + fileBytes.length, closing.length);

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://www.platenexus.com/api/v1/plates/recognize/"))
            .header("X-API-Key", "YOUR_API_KEY")
            .header("Content-Type", "multipart/form-data; boundary=" + boundary)
            .POST(HttpRequest.BodyPublishers.ofByteArray(payload))
            .build();

        HttpClient client = HttpClient.newHttpClient();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
Kotlin / OkHttp
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MultipartBody
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody.Companion.asRequestBody
import java.io.File

fun main() {
    val file = File("plate.jpg")
    val requestBody = MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart(
            "image",
            file.name,
            file.asRequestBody("image/jpeg".toMediaType())
        )
        .build()

    val request = Request.Builder()
        .url("https://www.platenexus.com/api/v1/plates/recognize/")
        .addHeader("X-API-Key", "YOUR_API_KEY")
        .post(requestBody)
        .build()

    OkHttpClient().newCall(request).execute().use { response ->
        println(response.body?.string())
    }
}
C# / HttpClient
using System.Net.Http;
using System.Net.Http.Headers;

using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "YOUR_API_KEY");

using var form = new MultipartFormDataContent();
using var fileStream = File.OpenRead("plate.jpg");
using var fileContent = new StreamContent(fileStream);
fileContent.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
form.Add(fileContent, "image", "plate.jpg");

var response = await client.PostAsync("https://www.platenexus.com/api/v1/plates/recognize/", form);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
Go
package main

import (
    "bytes"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

func main() {
    file, _ := os.Open("plate.jpg")
    defer file.Close()

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    part, _ := writer.CreateFormFile("image", "plate.jpg")
    io.Copy(part, file)
    writer.Close()

    req, _ := http.NewRequest("POST", "https://www.platenexus.com/api/v1/plates/recognize/", body)
    req.Header.Set("X-API-Key", "YOUR_API_KEY")
    req.Header.Set("Content-Type", writer.FormDataContentType())

    resp, _ := http.DefaultClient.Do(req)
    defer resp.Body.Close()
    payload, _ := io.ReadAll(resp.Body)
    println(string(payload))
}
Ruby
require "net/http"
require "json"

uri = URI("https://www.platenexus.com/api/v1/plates/recognize/")
request = Net::HTTP::Post.new(uri)
request["X-API-Key"] = "YOUR_API_KEY"
request.set_form([["image", File.open("plate.jpg")]], "multipart/form-data")

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
  http.request(request)
end

puts response.body
PHP / cURL
<?php

$ch = curl_init('https://www.platenexus.com/api/v1/plates/recognize/');
$data = [
    'image' => new CURLFile(__DIR__ . '/plate.jpg'),
];

curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['X-API-Key: YOUR_API_KEY'],
    CURLOPT_POSTFIELDS => $data,
    CURLOPT_RETURNTRANSFER => true,
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
Exemplos por cenário

Como encaixar a API em produtos e operações reais

Além do snippet técnico, estes exemplos ajudam a visualizar como a UX do produto pode ficar em cada contexto de uso.

SaaS B2B / backoffice

O usuário sobe uma imagem, o backend chama o POST, persiste request_id e mostra placa, confiança e status no painel. Ideal para CRMs, ERPs e software vertical.

Portaria / controle de acesso

A câmera ou operador envia a imagem, a interface recebe success ou not_found, e a UX orienta liberar entrada, pedir nova captura ou registrar exceção.

Estacionamento / auditoria operacional

O sistema usa o resultado imediato no atendimento e depois consulta o histórico por request_id para auditoria, disputa operacional e suporte.

Consulta posterior

Recupere o histórico por request_id

Esse endpoint é útil para auditoria, reconciliação, suporte e telas operacionais que precisam rastrear uma leitura específica.

Endpoint
GET https://www.platenexus.com/api/v1/plates/requests/{request_id}/
Header
X-API-Key: YOUR_API_KEY
Retorno típico
  • status normalizado
  • plate e confidence
  • http_status, charged e created_at
Response design

Respostas esperadas para produto, suporte e operação

Além de 200 success, a API também usa estados funcionais úteis para a UX do operador e para trilhas de suporte.

200 · success

Placa reconhecida

Use este caminho para liberar entrada, registrar evento ou seguir a regra principal do produto.

{
  "request_id": "8c29cf32-2cae-4f79-8f2e-28a9b71ce1de",
  "status": "success",
  "plate": "ABC1D23",
  "confidence": 0.94,
  "confidence_is_estimated": false,
  "country": "BR",
  "timestamp": "2026-05-18T12:00:00+00:00",
  "processing_time_ms": 1234
}
200 · not_found

Imagem válida sem placa legível

Bom para UX honesta: processamento concluído, mas sem leitura utilizável. Isso ajuda a orientar reenvio, câmera ou posição.

{
  "request_id": "8c29cf32-2cae-4f79-8f2e-28a9b71ce1de",
  "status": "not_found",
  "plate": null,
  "confidence": null,
  "confidence_is_estimated": false,
  "timestamp": "2026-05-18T12:00:00+00:00",
  "message": "No plate detected",
  "processing_time_ms": 980
}
401 / 429 / 500

Erros de autenticação, limite e runtime

Ideal para desenhar fallback visual, mensagens de suporte e telemetria do cliente sem ambiguidade.

{
  "request_id": "8c29cf32-2cae-4f79-8f2e-28a9b71ce1de",
  "status": "limit_exceeded",
  "message": "Monthly request limit exceeded"
}
Status codes & quota

Matriz operacional para engenharia e customer success

Esse resumo ajuda times a desenhar mensagens, dashboards, logs e regras de cobrança sem precisar interpretar tudo no código.

HTTP status Cobra quota? O que significa UX recomendada
200 success Sim Placa reconhecida com sucesso. Mostre a placa, confiança e siga o fluxo principal do produto.
200 not_found Sim Imagem processada, mas sem leitura útil. Explique ao operador que a imagem foi processada e ofereça reenvio.
400 error Não Imagem ausente ou inválida. Valide tipo e arquivo antes do POST e exiba mensagem de correção.
401 error Não API key ausente, inválida ou revogada. Interrompa a automação e acione rotação ou checagem da chave.
403 error Não Cliente inativo. Escalone para gestão da conta ou suporte comercial.
404 error Não Histórico não encontrado para o cliente dono da chave. Verifique request_id e escopo da conta autenticada.
429 limit_exceeded Não Limite mensal esgotado. Mostre plano ou upgrade, pause automação ou entre em contato com vendas.
500 error Não Falha interna de reconhecimento. Registre o request_id, tente novamente e abra suporte se persistir.
Boas práticas

Checklist de qualidade para uma integração mais impecável

Pensado para melhorar UX técnica, estabilidade do cliente e clareza de suporte desde o primeiro deploy.

Capture o request_id sempre

Ele é a peça-chave para troubleshooting, auditoria, histórico e conversa entre produto, suporte e cliente.

Separe not_found de erro técnico

Nem toda leitura vazia é falha. Essa distinção melhora muito a UX do operador e os analytics do produto.

Não exponha a API Key no front-end público

A arquitetura recomendada é backend-to-backend ou backend intermediando o upload do cliente final.

Valide o arquivo antes do envio

Checar tamanho, extensão e tipo MIME reduz erros de UX, ruído operacional e chamadas desnecessárias.

Logue status e tempo de resposta

Guardar status, request_id e processing_time_ms melhora suporte, SLO e observabilidade.

Desenhe mensagens amigáveis para o operador

Mensagens específicas para autenticação, limite, imagem inválida e not_found deixam o sistema mais profissional.

Termos de busca e caminhos de integração mais comuns

Conteúdo pensado para buscas como API ANPR, OCR de placas, reconhecimento de placas via REST e integração LPR para software.

API REST com X-API-Key

Fluxo simples para enviar imagem, autenticar a requisição e receber a leitura da placa com dados de apoio para o seu sistema.

OCR de placas para SaaS B2B

Ideal para empresas que querem embutir leitura de placas no próprio produto sem construir um motor do zero.

Integração para operação real

Aplicável a condomínio, portaria remota, estacionamento, logística e segurança veicular com jornada comercial e técnica clara.

FAQ técnico da API de reconhecimento de placas

Respostas diretas para as dúvidas mais comuns antes de iniciar uma integração comercial.

Sim. O fluxo principal é HTTP com envio de imagem e autenticação por API Key, facilitando integração com backend, ERP, SaaS e apps internos.

Não. A proposta da platenexus é entregar uma API comercial pronta para uso, preservando o motor existente e simplificando a adoção no produto do cliente.

Sim. O posicionamento atual atende especialmente operações de acesso, estacionamentos, logística e software B2B com leitura de placas.

Sim. Você pode começar pela conta grátis e documentação pública. Quando precisar de maior volume, apoio de ativação ou plano comercial, o caminho de vendas continua disponível.

Páginas especializadas para buscas mais específicas

Estas páginas ficam no mesmo site, entram no sitemap e ajudam o Google a relacionar a platenexus com integrações, condomínios, estacionamentos, SaaS, IA local e logística.

API de leitura de placas para software e integrações reais

Página focada em quem busca API ANPR, OCR de placas e integração REST comercial.

Reconhecimento de placas para condomínios e rotinas de acesso

Página voltada a síndicos, integradores, empresas de acesso e operações de portaria.

OCR de placas para estacionamentos, entrada e saída de veículos

Ideal para operações que buscam reduzir fricção em estacionamento e controle de permanência.

LPR para SaaS B2B que quer embutir leitura de placas no produto

Página específica para software houses e empresas SaaS que querem adicionar OCR de placas como feature.

IA local para leitura de placas em ambiente controlado

Página pensada para quem valoriza privacidade, governança e previsibilidade operacional.

ANPR para logística, triagem veicular e organização de pátios

Página voltada a transportadoras, operadores logísticos e equipes que organizam fluxo veicular.

ANPR for India

License plate recognition API for Indian vehicles, CCTV, parking and smart city projects.

ALPR for USA

Automatic license plate recognition API for US vehicles, parking systems, CCTV and access control.

Best ALPR Software 2026

Compare ALPR and ANPR software options and find the best license plate recognition API for your project.