Documentação de Integração
A API NAI utiliza padrões RESTful simples. Todas as respostas são em JSON e o processamento pesado é acelerado via GPU.
Endpoint Base: https://nai-ia.com.br/alprbr-api
Autenticação: Utilize sua chave de API via Query Parameter (url) ou Header, dependendo da linguagem.
C# (.NET 6+)
Exemplo de envio de imagem utilizando HttpClient e autenticação via URL.
ClienteApi.cs
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
// Namespace principal do cliente
namespace ApiCliente
{
class Program
{
// Configurações da API
private const string ApiBaseUrl = "https://nai-ia.com.br/alprbr-api";
private const string UploadEndpoint = "/upload/photo";
private const string ApiKey = "SUA_CHAVE_AQUI";
// Instância estática do HttpClient para evitar exaustão de sockets
private static readonly HttpClient Client = new HttpClient();
public static async Task Main(string[] args)
{
string CaminhoArquivo = "./caminhoes.png";
if(!File.Exists(CaminhoArquivo))
{
Console.WriteLine("Arquivo não encontrado.");
return;
}
try
{
await UploadImagem(CaminhoArquivo);
}
catch(Exception ex)
{
Console.WriteLine($"Erro: {ex.Message}");
}
}
/// <summary>
/// Realiza o upload da imagem e imprime o JSON de resposta.
/// </summary>
private static async Task UploadImagem(string CaminhoArquivo)
{
// Monta o formulário multipart
using(var Form = new MultipartFormDataContent())
{
using(var FileStream = File.OpenRead(CaminhoArquivo))
{
var StreamContent = new StreamContent(FileStream);
// Define o tipo do conteúdo como imagem
StreamContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg");
// Adiciona o arquivo ao formulário com o nome "file"
Form.Add(StreamContent, "file", Path.GetFileName(CaminhoArquivo));
// Autenticação via Query String para compatibilidade
string UrlComAuth = $"{ApiBaseUrl}{UploadEndpoint}?api_key={ApiKey}";
// Envia requisição POST
var Response = await Client.PostAsync(UrlComAuth, Form);
if(!Response.IsSuccessStatusCode)
{
throw new Exception($"Falha: {Response.StatusCode}");
}
// Lê e exibe o resultado
string JsonString = await Response.Content.ReadAsStringAsync();
Console.WriteLine(JsonString);
}
}
}
}
}
JavaScript (Browser/Fetch)
Utilize FormData para criar o payload e autenticação via Query String para evitar problemas de CORS em navegadores.
app.js
const API_BASE_URL = "https://nai-ia.com.br/alprbr-api";
const UPLOAD_ENDPOINT = "/upload/photo";
const API_KEY = "SUA_CHAVE_AQUI";
/**
* Envia arquivo para a API.
* Usa api_key na URL para autenticação.
*/
async function uploadArquivo(file) {
const formData = new FormData();
// O campo deve se chamar "file"
formData.append("file", file);
// Concatena a chave na URL (Query String)
const urlComAuth = `${API_BASE_URL}${UPLOAD_ENDPOINT}?api_key=${API_KEY}`;
try {
const response = await fetch(urlComAuth, {
method: 'POST',
body: formData
});
if (!response.ok) {
throw new Error(`Erro na requisição: ${response.status}`);
}
const json = await response.json();
console.log("Resultado:", json);
return json;
} catch (error) {
console.error("Falha no upload:", error);
}
}
Python 3 (Requests)
Recomendado para automação backend. Utiliza a biblioteca requests e autenticação via Header HTTP.
cliente_api.py
import requests
import os
# Configurações
API_BASE_URL = "https://nai-ia.com.br/alprbr-api"
UPLOAD_ENDPOINT = "/upload/photo"
API_KEY = "SUA_CHAVE_AQUI"
def upload_arquivo(caminho_arquivo):
"""
Envia imagem para processamento.
Autenticação via Header X-API-KEY.
"""
if not os.path.exists(caminho_arquivo):
print("Arquivo não encontrado.")
return
# Cabeçalho de autenticação
headers = {"X-API-KEY": API_KEY}
# Definição do arquivo e tipo MIME
files = {
"file": (os.path.basename(caminho_arquivo), open(caminho_arquivo, "rb"), "image/jpeg")
}
try:
# Envio POST
response = requests.post(
API_BASE_URL + UPLOAD_ENDPOINT,
files=files,
headers=headers
)
if response.status_code == 200:
print("[Sucesso] Resposta JSON:")
print(response.json())
else:
print(f"[Erro] Status: {response.status_code}")
print(response.text)
except Exception as e:
print(f"Erro de conexão: {e}")
if __name__ == "__main__":
upload_arquivo("./temp/carro1.png")