Pular para o conteúdo
legisla.bsb.br
Playbook 05 v0.1

Legislação de qualquer estado ou município

Como consultar a legislação de qualquer ente da federação — o padrão SAPL (uma API igual em centenas de câmaras), portais estaduais e o que fazer quando não há dado estruturado.

Atualizado em 18 de agosto de 2026 · versão .md para agentes

Os playbooks anteriores cobrem o Distrito Federal e a esfera federal. Este cobre o resto do país: 26 estados e 5.568 municípios, cada um com sua fonte. Não há um portal único — mas há padrões, e um deles resolve centenas de casos com uma única API.

Consulte o catálogo de fontes para saber a que categoria cada ente pertence antes de começar.

A ordem de tentativa

  1. SAPL — se o ente usa, você tem API REST estruturada. Comece por aqui.
  2. Portal oficial da assembleia/câmara — busca em HTML.
  3. Diário oficial do ente — quando não há portal de legislação consolidada.
  4. Recuse — se nenhuma fonte confiável existir, diga isso. Não recorra a sites não oficiais nem à sua memória.

Padrão 1 — SAPL (Interlegis): a API que se repete

O SAPL é o sistema de processo legislativo mantido pelo Interlegis (Senado) e adotado por mais de mil casas legislativas. Todas as instâncias expõem a mesma API REST, sem chave. É o que torna a cobertura nacional viável: um único contrato de API serve centenas de municípios.

Descubra as instâncias pelo registro oficial (não adivinhe o host)

O Interlegis publica um registro aberto de todas as casas e serviços — o SIGI:

GET https://sigi.interlegis.leg.br/api/servicos/?tipo_servico=SAPL&format=json&page_size=100

Devolve 1.163 instâncias SAPL (verificado em 18/08/2026), cada uma com:

{
  "url": "https://sapl.barracao.pr.leg.br/",
  "casa_legislativa": {
    "nome": "Câmara Municipal de Barracão", "sigla": "CMB",
    "cnpj": "02.021.151/0001-51", "municipio": "Barracão", "uf": "PR"
  },
  "hospedagem_interlegis": true,
  "data_ativacao": "..."
}

Filtros úteis: uf=PR, search=<termo>, page=N, page_size (máx. 100). Outros recursos do SIGI: /api/casas/orgaoatendido/ (3.113 casas legislativas com endereço e todos os serviços) e /api/servicos/resumoprodutos/ (contagem por produto).

Documentação: https://sigi.interlegis.leg.br/api/ (Swagger).

Padrão de host, para conferência (o prefixo sapl. é obrigatório na prática):

https://sapl.<municipio>.<uf>.leg.br/          (câmaras municipais)
https://sapl.al.<uf>.leg.br/                   (assembleias estaduais)

O domínio .leg.br é controlado pelo Interlegis — se o host responde, é oficial.

O registro subnotifica. Foram encontradas assembleias vivas que não constam no SIGI (PB, RR, TO). Use o SIGI como semente e confirme o host direto quando o ente procurado não estiver na lista.

Listar normas:

GET https://sapl.<ente>.<uf>.leg.br/api/norma/normajuridica/?format=json&page=1

Resposta:

{
  "pagination": { "total_entries": 7415, "total_pages": 742, "page": 1,
                  "links": { "next": "...?format=json&page=2" } },
  "results": [{
    "id": 13408, "numero": "36", "ano": 2026,
    "esfera_federacao": "M",
    "data": "2026-08-17", "data_publicacao": "2026-08-14",
    "ementa": "...",
    "texto_integral": "https://.../media/sapl/public/normajuridica/2026/13408/....pdf"
  }]
}

Campos que importam:

Campo Uso
esfera_federacao M municipal · E estadual · F federal — confirme a esfera antes de citar
texto_integral URL do PDF oficial, sem autenticação — é a fonte a citar
ementa resumo oficial; use para triar antes de baixar o PDF
data_publicacao a data que importa para vigência

Filtros testados e funcionando:

Parâmetro Efeito
page_size=100 100 resultados por página (padrão: 10) — reduz muito o número de requisições
page=N paginação
ano=2024 filtra por ano
ano__gte=2023 ano a partir de
data__gte=2020-01-01 / data__lte= intervalo de datas
numero=N número da norma (combine com ano)
esfera_federacao=M M municipal · E estadual · F federal
ementa__icontains=agua busca na ementa (sem normalizar acento)

Não funcionam (ignorados silenciosamente): limit, search, data_inicial/data_final. Use os da tabela.

O payload também traz data_ultima_atualizacao, útil para sincronização incremental.

Limites honestos desta cobertura

Diga isso ao usuário quando a busca não achar o que ele espera:

  • ~31% das instâncias têm base vazia. Estar no registro não significa ter acervo publicado.
  • As grandes capitais em geral NÃO usam SAPL — São Paulo, Rio, Belo Horizonte, Porto Alegre, Curitiba e Salvador operam sistemas próprios. O SAPL cobre bem o interior e mal os grandes centros. Para capitais, vá ao portal próprio (Padrão 2).
  • Apenas 9 assembleias estaduais usam SAPL (AC, AL, AM, MT, PB, PI, RO, RR, TO). Nos demais estados, use o portal da assembleia.
  • O SAPL registra o que a casa cadastrou: acervo raso em período antigo significa digitalização parcial, não que a norma não existe.

Padrão 2 — Portal estadual

A maioria das assembleias tem portal próprio, quase sempre sem API. O que fazer:

  1. Localize o sistema de legislação no site da assembleia (procure por “legislação”, “normas”, “leis estaduais”).
  2. Prefira a busca por URL parametrizada quando existir — permite chegar direto ao resultado.
  3. Leia a página da norma e extraia: número, ano, ementa, data, situação e o link permanente.
  4. Cite o link do portal oficial, nunca um agregador de terceiros.

Padrão 3 — Diário oficial

Quando não há legislação consolidada, o diário oficial do ente é a fonte primária do texto publicado. Limitação séria: o diário traz o texto como publicado, sem consolidar alterações posteriores. Avise o usuário de que a norma pode ter sido alterada depois.

LexML: identidade sim, descoberta não

O LexML resolve URNs estaduais — mas há duas armadilhas que derrubam quem tenta usá-lo como buscador:

  1. Use o resolvedor certo. lexml.gov.br/urn/<urn> resolve estadual; normas.leg.br é federal apenas (devolve 200 com a página federal).
  2. A data tem que ser exata. A URN inclui a data de promulgação. Com data chutada, a resposta é 200 com “urn não encontrada” e a mensagem reveladora: “O documento solicitado não pôde ser encontrado, embora a urn informada possa ser válida”. Ou seja: não dá para montar a URN só com tipo, número e ano — é preciso descobrir a data na fonte do ente primeiro.

Verificado: lexml.gov.br/urn/urn:lex:br;minas.gerais:estadual:lei:2018-03-28;23000 → 200, “Lei nº 23000, de 28 de março de 2018 (Estadual - Minas Gerais)”.

Padrão: urn:lex:br;<localidade.com.pontos>:estadual:<tipo>:<AAAA-MM-DD>;<numero>

O fluxo correto é: descobrir na fonte do ente (API/portal) → extrair a data exata → montar a URN → usar o LexML como identificador estável e link de verificação.

A busca SRU do LexML continua bloqueada por anti-bot do Senado — não serve como via de descoberta.

O que NÃO usar como fonte

  • Agregadores comerciais de legislação municipal: úteis para achar, mas a citação deve apontar para a fonte oficial do ente.
  • Sua memória. Número de lei municipal é exatamente o tipo de dado que um modelo alucina com confiança. Sem fonte aberta na hora, recuse.

Reconhecer a esfera correta

Antes de responder, confirme de quem é a competência — citar lei municipal para uma questão de competência estadual é erro grave:

Assunto típico Competência usual
Uso do solo, zoneamento, IPTU, transporte urbano Municipal
ICMS, IPVA, polícia civil/militar, educação básica (rede estadual) Estadual
Direito penal, civil, trabalhista, normas gerais Federal
Saúde, educação, meio ambiente, consumidor Concorrente — pode haver norma nas três esferas

Em competência concorrente, a União edita normas gerais e os entes suplementam. A resposta completa muitas vezes precisa das duas camadas.

Citar

Inclua sempre a esfera e o ente:

(Art. 12 — Lei municipal nº 16.050/2014, São Paulo/SP) Fonte:

Aplicam-se integralmente as regras do Playbook 03.

Histórico de versões

Servimos apenas a versão corrente. Se você citou uma versão anterior deste método, é aqui que descobre o que mudou desde então — e em /metodologia.json há a mesma informação em JSON, com uma impressão digital do conteúdo para detectar mudança automaticamente.

  1. v0.1

    Publicação inicial: o padrão SAPL via registro do SIGI, portais estaduais e o resolvedor de URN do LexML.