7SevenLicite
API v1

Documentação da API

REST. JSON. Bearer auth. Disponível para plano Business ou superior.

Início rápido

  1. 1. Faça upgrade para Business.
  2. 2. Em Conta → API Keys, clique em "Criar chave".
  3. 3. Copie a chave (só aparece uma vez).
  4. 4. Use em qualquer endpoint v1:
curl
curl -H "Authorization: Bearer sl_live_xxxxx" \
  https://sevenlicite.com.br/api/v1/fornecedor/12345678000190

Autenticação

Toda requisição precisa do header Authorization: Bearer <chave>. As chaves começam com sl_live_.

Bearer token

Header Authorization padrão. Sem OAuth, sem refresh.

Hash + revogação

Guardamos só hash da chave. Revogue a qualquer momento.

Scopes

Por padrão 'read'. 'write' liberado sob demanda.

Endpoints

Base URL: https://sevenlicite.com.br/api/v1

GET/api/v1/healthpúblico

Health check (sem auth)

Resposta 200
{
  "ok": true,
  "service": "sevenlicite-api",
  "version": "1.0.0",
  "timestamp": "2026-04-27T10:00:00Z"
}
GET/api/v1/fornecedor/{cnpj}

Dossiê completo: empresa, score B2G, sanções (CEIS/CNEP/CEPIM), últimos 50 contratos

Resposta 200
{
  "cnpj": "12345678000190",
  "empresa": {
    "razao_social": "EMPRESA EXEMPLO S/A",
    "cnae_descricao": "Comércio atacadista...",
    "uf": "SP", "municipio": "São Paulo"
  },
  "score_b2g": 78,
  "perfil": "VETERANO",
  "kpis": {
    "total_contratos": 142,
    "valor_total": 45200000,
    "ticket_medio": 318309,
    "orgaos_distintos": 18,
    "contratos_12m": 23,
    "valor_12m": 8400000
  },
  "sancoes": { "ceis": [], "cnep": [], "cepim": [] },
  "ultimos_contratos": [/* ... */]
}
GET/api/v1/orgao/{codigo}

Dossiê do órgão público + top 20 fornecedores

Resposta 200
{
  "codigo_orgao": "36000",
  "nome_orgao": "MINISTERIO DA SAUDE",
  "kpis": {
    "total_contratos": 18429,
    "valor_total": 5210000000,
    "ticket_medio": 282765,
    "ticket_mediano": 45000,
    "fornecedores_distintos": 3201,
    "contratos_12m": 2847,
    "valor_12m": 980000000
  },
  "top_fornecedores": [
    { "rank": 1, "cnpj": "...", "nome_contratado": "...", "qtd_contratos": 124, "valor_total": 89000000 }
  ]
}
GET/api/v1/licitacoes

Busca paginada de licitações. Query params: q, uf, modalidade, valor_min, valor_max, apenas_abertas, limit (max 100), offset

Resposta 200
{
  "licitacoes": [
    {
      "id_licitacao": "...",
      "numero_licitacao": "PE-001/2026",
      "modalidade": "Pregão Eletrônico",
      "objeto": "Aquisição de luminárias LED...",
      "data_abertura": "2026-05-10",
      "valor_licitacao": 250000,
      "nome_orgao": "Prefeitura Municipal de XYZ",
      "uf": "SP", "score_relevancia": 0.74
    }
  ],
  "meta": { "limit": 50, "offset": 0, "retornados": 50 }
}
GET/api/v1/licitacoes/{id}

Detalhe de uma licitação + dossiê do órgão + top 5 fornecedores recorrentes

Resposta 200
{
  "licitacao": { /* campos completos */ },
  "dossie_orgao": { /* kpis */ },
  "top_fornecedores_orgao": [/* top 5 */]
}

Webhooks

Receba POST em sua URL toda vez que um evento relevante ocorrer — sem polling, sem rate limit. Configure em Conta → Webhooks.

Eventos disponíveis

  • licitacao.nova — uma licitação que casou com seu alerta foi publicada
  • licitacao.atualizada — situação ou valor mudou
  • alerta.disparado — resumo (todas as licitações de um disparo de alerta)
  • webhook.test — disparado manualmente pela UI para testar

Headers da entrega

  • X-SevenLicite-Event — nome do evento
  • X-SevenLicite-Signaturesha256=<hmac> calculado com seu secret
  • X-SevenLicite-Webhook-Id — id do webhook que disparou
  • User-Agent: SevenLicite-Webhook/1.0

Payload de exemplo (licitacao.nova)

POST sua-url
{
  "event": "licitacao.nova",
  "delivered_at": "2026-04-27T10:00:00Z",
  "webhook_id": "8f3c…",
  "data": {
    "alerta": { "id": "…", "nome": "Iluminação LED em SP" },
    "licitacao": {
      "id_licitacao": "…",
      "modalidade": "Pregão Eletrônico",
      "objeto": "Aquisição de luminárias LED…",
      "data_abertura": "2026-05-10",
      "valor_licitacao": 250000,
      "nome_orgao": "Prefeitura Municipal de…",
      "uf": "SP"
    }
  }
}

Validar a assinatura HMAC (Node)

ts
import crypto from "node:crypto";

export function isAssinaturaValida(req: Request, body: string, secret: string) {
  const recebida = req.headers.get("x-sevenlicite-signature") || "";
  const esperada = "sha256=" + crypto
    .createHmac("sha256", secret)
    .update(body)
    .digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(recebida),
    Buffer.from(esperada)
  );
}

Boas práticas

  • Responda 2xx em <10s; processe assíncrono se demorar.
  • Após 5 falhas consecutivas desativamos o webhook automaticamente — você recebe e-mail.
  • Garanta idempotência: o mesmo webhook_id/id_licitacao pode chegar duas vezes em caso de retry.
  • Ignore eventos que você não escuta — usamos um único pipeline.

Rate limit

  • Business: 60 req/min por chave, 100k chamadas/mês
  • Enterprise: 600 req/min por chave (ou custom), SLA 99,9%

Toda resposta inclui:

  • X-RateLimit-Limit — limite atual
  • X-RateLimit-Remaining — restantes na janela
  • X-RateLimit-Reset — segundos até a janela rolar

Quando excedido, retornamos HTTP 429 com header Retry-After.

Códigos de erro

StatusQuando acontece
200Sucesso
400Parâmetros inválidos (CNPJ malformado, etc.)
401Falta header ou chave inválida/revogada
402Plano sem permissão (não é Business+)
403Scope insuficiente (write em chave read)
404Recurso não encontrado
429Rate limit
500Erro interno (raro; reportar suporte)

Exemplos

Node / TypeScript (fetch)

ts
async function getFornecedor(cnpj: string) {
  const r = await fetch(
    "https://sevenlicite.com.br/api/v1/fornecedor/" + cnpj,
    { headers: { Authorization: "Bearer " + process.env.SEVENLICITE_KEY } }
  );
  if (!r.ok) throw new Error(`HTTP ${r.status}`);
  return r.json();
}

Python (requests)

python
import os, requests

def get_fornecedor(cnpj):
    r = requests.get(
        f"https://sevenlicite.com.br/api/v1/fornecedor/{cnpj}",
        headers={"Authorization": f"Bearer {os.environ['SEVENLICITE_KEY']}"},
        timeout=30,
    )
    r.raise_for_status()
    return r.json()

cURL — busca de licitações abertas em SP

bash
curl -G "https://sevenlicite.com.br/api/v1/licitacoes" \
  -H "Authorization: Bearer $SEVENLICITE_KEY" \
  --data-urlencode "q=iluminação LED" \
  --data-urlencode "uf=SP" \
  --data-urlencode "limit=20"

Pronto para integrar?

Faça upgrade para Business e crie chaves agora.