Documentação
MCP Painel →

Documentação da API

Um gateway, uma chave, um envelope. Emita NF-e, NFC-e, MDF-e, CT-e e DCe, consulte CNPJ, faça correção fiscal por EAN e envie WhatsApp — tudo em https://aceleraapi.com.br/api/v1.

Envelope de resposta

Toda resposta JSON segue o mesmo formato. Em erro, ok=false e error traz code (estável) e message. Exceção: downloads (XML/PDF/HTML) vêm como arquivo binário direto, fora do envelope.

  • Base: https://aceleraapi.com.br/api/v1
  • Autenticação por Authorization: Bearer <chave>
  • Corpos e respostas em JSON (UTF-8)
Envelopeapplication/json
// sucesso
{ "ok": true, "status": 200,
  "error": null,
  "data": { /* conteúdo */ } }

// erro
{ "ok": false, "status": 422,
  "error": {
    "code": "emissao_rejeitada",
    "message": "Rejeicao 539: Duplicidade..." },
  "data": null }

Autenticação

Duas chaves, dois papéis. Envie sempre no header Authorization.

ChaveQuem usaServe para
aca_… devVocê (software house, a “matriz”)Gerenciar empresas, produtos e consumo
ace_… empresaCada empresa cadastradaConsumir os produtos (emitir, CNPJ, WhatsApp…)
Regra de ouro. Endpoint de gestão (/empresas, /conta) exige aca_; endpoint de produto (/nfe, /cnpj…) exige ace_.
Requisição
curl https://aceleraapi.com.br/api/v1/ping \
  -H "Authorization: Bearer ace_SEU_TOKEN"
use AceleraApi\Client;
$cli = new Client('ace_SEU_TOKEN');
$info = $cli->ping();
uses AceleraAPI;
Api := TAceleraClient.Create('ace_SEU_TOKEN');
R := Api.Ping; // libere R com .Free

Ambiente & homologação

Todo documento fiscal tem dois ambientes. Comece sempre em homologação.

  • Homologação (ambiente: 2) — testes, sem valor fiscal.
  • Produção (ambiente: 1) — vale como documento fiscal.

O certificado A1 é compartilhado entre NF-e/NFC-e/MDF-e/CT-e/DCe do mesmo emitente: envie uma vez (base64) e todos usam. Cada documento tem sua própria série.

Antes de produção: valide o ciclo completo em homologação — emitir → baixar XML → baixar PDF → cancelar.
Certificado & série
# certificado A1 (uma vez, compartilhado)
curl -X POST .../api/v1/nfe/certificado \
  -H "Authorization: Bearer ace_SEU_TOKEN" \
  -d '{"certificado_base64":"MIIK...","senha":"..."}'

# série + ambiente
curl -X PUT .../api/v1/nfe/configuracao \
  -H "Authorization: Bearer ace_SEU_TOKEN" \
  -d '{"ambiente":2,"serie_nfe":1}'
$b64 = base64_encode(file_get_contents('cert.pfx'));
$cli->nfe()->enviarCertificado($b64, 'senha');
$cli->nfe()->configurar(['ambiente'=>2, 'serie_nfe'=>1]);
Api.EnviarCertificado('nfe', CertToBase64('cert.pfx'), 'senha').Free;
Api.Put('nfe/configuracao', JSONFromStr('{"ambiente":2,"serie_nfe":1}')).Free;

Fluxo matriz → empresa

O modelo é feito para quem revende para vários clientes.

  1. Cadastre a empresa com sua chave aca_ (POST /empresas). A resposta traz o token dela (ace_…), exibido só ali — guarde cifrado.
  2. Vincule os produtos (no cadastro, no painel, ou POST /empresas/{id}/produtos/{codigo}).
  3. Consuma com o token da empresa. Cada uso é medido e aparece no seu consumo.

Se perder o token, gere outro com POST /empresas/{id}/token (revoga o anterior).

Ciclo
aca_ (você) ──► POST /empresas
                  └─► data.token = ace_ (cliente)

ace_ (cliente) ──► POST /nfe/emitir
               ──► GET  /cnpj/{cnpj}
               ──► POST /whatsapp/mensagens

Primeira chamada, na sua linguagem

A API é HTTP com JSON — funciona em qualquer stack. Abaixo, a mesma requisição autenticada (GET /v1/ping) em seis linguagens. Se ela responder 200, sua integração está pronta para começar.

curl https://aceleraapi.com.br/api/v1/ping \
  -H "Authorization: Bearer aca_SUA_CHAVE"
<?php
// composer require aceleraapi/sdk
$api = new \AceleraApi\Client('aca_SUA_CHAVE');
$r   = $api->get('/ping');

// ou sem SDK, com cURL puro:
$ch = curl_init('https://aceleraapi.com.br/api/v1/ping');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer aca_SUA_CHAVE'],
]);
$r = json_decode(curl_exec($ch), true);
# pip install requests
import requests

r = requests.get(
    "https://aceleraapi.com.br/api/v1/ping",
    headers={"Authorization": "Bearer aca_SUA_CHAVE"},
    timeout=30,
)
print(r.json())
// Node 18+ — fetch nativo, sem dependência
const r = await fetch("https://aceleraapi.com.br/api/v1/ping", {
  headers: { Authorization: "Bearer aca_SUA_CHAVE" },
});
const dados = await r.json();
console.log(dados);
using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", "aca_SUA_CHAVE");

var json = await http.GetStringAsync(
    "https://aceleraapi.com.br/api/v1/ping");
Console.WriteLine(json);
// SDK Delphi: unit AceleraAPI (veja /docs/sdks)
uses AceleraAPI;

Api := TAceleraClient.Create('aca_SUA_CHAVE');
try
  Resp := Api.Get('/ping');
  ShowMessage(Resp.ToJSON);
finally
  Api.Free;
end;
Resposta esperada. Toda rota devolve o mesmo envelope, o que permite tratar sucesso e erro num único ponto do seu código:
{ "ok": true, "status": 200, "error": null,
  "data": { "servico": "AceleraAPI", "versao": "v1",
             "tipo_chave": "dev", "conta": "[email protected]" } }

Sem chave ainda? Crie a conta — o ambiente de homologação é liberado na hora e chamada em homologação não é cobrada. Prefere que a sua IA faça a integração? Veja o servidor MCP e o llms-full.txt.

Referência por produto

Cada documento tem página própria, com o corpo completo da requisição e os erros específicos.