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")