Developers

Documentación pública de la API comercial

Utilice la API comercial oficial de platenexus para reconocer matrículas con autenticación 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.
En resumen

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

Envíe la imagen del vehículo al 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 la solicitud con su 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

Reciba la matrícula reconocida y los datos de apoyo para continuar su flujo.

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.

Ejemplo en Python (requests) Ejemplo en 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.

Términos de búsqueda y caminos de integración más comunes

Contenido pensado para búsquedas como API ANPR, OCR de matrículas, reconocimiento de matrículas por REST e integración LPR para software.

API REST con X-API-Key

Flujo simple para enviar imagen, autenticar la solicitud y recibir la lectura de la matrícula con datos de apoyo para su sistema.

OCR de matrículas para SaaS B2B

Ideal para empresas que quieren incorporar lectura de matrículas a su producto sin construir un motor desde cero.

Integración para operación real

Aplicable a condominios, porterías remotas, estacionamientos, logística y seguridad vehicular con un recorrido comercial y técnico claro.

FAQ técnico de la API de reconocimiento de matrículas

Respuestas directas para las dudas más comunes antes de iniciar una integración comercial.

Sí. El flujo principal es HTTP con envío de imagen y autenticación por API Key, lo que facilita la integración con backend, ERP, SaaS y aplicaciones internas.

No. La propuesta de platenexus es entregar una API comercial lista para usar, preservando el motor existente y simplificando la adopción en el producto del cliente.

Sí. El posicionamiento actual atiende especialmente operaciones de acceso, estacionamientos, logística y software B2B con lectura de matrículas.

Sí. Puede empezar por la cuenta gratuita y la documentación pública. Cuando necesite más volumen, apoyo de activación o un plan comercial, el camino de ventas sigue disponible.

Páginas especializadas para búsquedas más específicas

Estas páginas viven en el mismo sitio, entran en el sitemap y ayudan a Google a asociar platenexus con integraciones, condominios, estacionamientos, SaaS, IA local y logística.

API de lectura de matrículas para software e integraciones reales

Página pensada para quienes buscan API ANPR, OCR de matrículas e integración REST comercial.

Reconocimiento de matrículas para condominios y rutinas de acceso

Página pensada para administradores, integradores y empresas de control de acceso.

OCR de matrículas para estacionamientos, entrada y salida vehicular

Ideal para operaciones que buscan reducir fricción en el estacionamiento y el control de permanencia.

LPR para SaaS B2B que quiere incorporar lectura de matrículas en el producto

Página específica para software houses y empresas SaaS que quieren añadir OCR de matrículas como feature.

IA local para lectura de matrículas en entorno controlado

Página pensada para equipos que valoran privacidad, gobierno y previsibilidad operativa.

ANPR para logística, triaje vehicular y organización de patios

Página pensada para transportistas, operadores logísticos y equipos que organizan flujo vehicular.

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.