{"openapi":"3.1.0","info":{"title":"API pública do Editais do Brasil","version":"1.0.0","summary":"Licitações abertas do PNCP, concursos públicos e a base de CNPJs da Receita Federal.","description":"Dados públicos de compras governamentais do Brasil, lidos do banco do Editais do Brasil (sincronizado com o PNCP várias vezes ao dia), em português.\n\n**Quando usar:** encontrar licitações com proposta aberta por objeto, estado, cidade, órgão, modalidade ou setor; ler os dados de uma licitação; listar concursos públicos abertos e previstos; consultar empresas pelo CNPJ (esta última com chave).\n\n**Sem chave:** `/api/v1/editais`, `/api/v1/editais/{id}` e `/concursos.json`. **Com chave de cliente (Bearer `edb_info_…`):** `/api/v1/editais/{id}/info`, o resumo do edital com trecho e página. **Com chave (Bearer `edb_cnpj_…`):** `/api/v1/cnpj` e `/api/v1/cnpj/agregado` — a chave é criada em https://editaisdobrasil.com/api-cnpj.\n\nErros vêm sempre em JSON. Datas em ISO 8601, no fuso de Brasília quando sem fuso. Sempre mostre ao usuário o `url` de cada item (a página no site, com o documento oficial e o link do PNCP) e confira o edital oficial antes de participar.\n\nTambém disponível como servidor MCP (Streamable HTTP, sem login): https://editaisdobrasil.com/mcp. Mapa do site para agentes: https://editaisdobrasil.com/llms.txt.","contact":{"name":"Editais do Brasil","url":"https://editaisdobrasil.com/suporte","email":"contato@editaisdobrasil.com"},"termsOfService":"https://editaisdobrasil.com/termos"},"externalDocs":{"description":"llms.txt — o que existe no site e como citar","url":"https://editaisdobrasil.com/llms.txt"},"servers":[{"url":"https://editaisdobrasil.com","description":"Produção"}],"tags":[{"name":"Licitações","description":"Licitações com proposta aberta, do PNCP."},{"name":"Concursos","description":"Concursos públicos abertos, previstos e realizados."},{"name":"CNPJ","description":"Base pública de CNPJs da Receita Federal (exige chave)."}],"paths":{"/api/v1/editais":{"get":{"operationId":"buscarLicitacoesAbertas","tags":["Licitações"],"summary":"Buscar licitações abertas","description":"Lista licitações com proposta aberta e ainda no prazo, as mais recentes primeiro (ou as que fecham primeiro, com `ordem=prazo`). Use para perguntas como 'licitações de merenda em Pernambuco' ou 'pregões de software da prefeitura de Recife'. Devolve o total, a página pedida e o link da mesma busca no site.","parameters":[{"name":"q","in":"query","description":"O que está sendo comprado. Vírgula separa alternativas: `merenda, alimentação escolar`.","schema":{"type":"string","description":"Palavras do objeto.","maxLength":120}},{"name":"excluir","in":"query","description":"Palavras que tiram a licitação da lista: `obra, reforma`.","schema":{"type":"string","description":"Palavras a excluir.","maxLength":120}},{"name":"uf","in":"query","description":"Sigla do estado.","schema":{"type":"string","enum":["AC","AL","AP","AM","BA","CE","DF","ES","GO","MA","MT","MS","MG","PA","PB","PR","PE","PI","RJ","RN","RS","RO","RR","SC","SP","SE","TO"]}},{"name":"cidade","in":"query","description":"Município, como no PNCP (ex.: Recife). Use junto com `uf`.","schema":{"type":"string","description":"Nome do município.","maxLength":80}},{"name":"modalidade","in":"query","description":"Código da modalidade: 6 = Pregão Eletrônico; 7 = Pregão Presencial; 4 = Concorrência Eletrônica; 5 = Concorrência Presencial; 8 = Dispensa de Licitação; 9 = Inexigibilidade; 1 = Leilão Eletrônico; 13 = Leilão Presencial; 3 = Concurso; 2 = Diálogo Competitivo; 12 = Credenciamento; 11 = Pré-qualificação; 10 = Manifestação de Interesse.","schema":{"type":"integer","enum":[6,7,4,5,8,9,1,13,3,2,12,11,10]}},{"name":"orgao","in":"query","description":"Parte do nome do órgão: `secretaria de saúde`.","schema":{"type":"string","description":"Nome do órgão.","maxLength":80}},{"name":"esfera","in":"query","description":"F = federal, E = estadual, M = municipal.","schema":{"type":"string","enum":["F","E","M"]}},{"name":"setor","in":"query","description":"Setor do objeto pela classificação do site (ver /metodologia). Prefira isto a palavras genéricas como 'tecnologia'.","schema":{"type":"string","enum":["saude","construcao-e-engenharia","tecnologia","educacao","agronegocio","alimentacao","meio-ambiente","transporte-e-logistica","energia","seguranca","limpeza-e-conservacao","cultura-e-criatividade"]}},{"name":"ordem","in":"query","description":"`recentes` (padrão) ou `prazo` (as que fecham primeiro).","schema":{"type":"string","enum":["recentes","prazo"],"default":"recentes"}},{"name":"prazo_minimo_dias","in":"query","description":"Só as que ainda têm pelo menos N dias para a proposta.","schema":{"type":"integer","minimum":1,"maximum":365}},{"name":"publicado_ultimos_dias","in":"query","description":"Só as publicadas nos últimos N dias.","schema":{"type":"integer","minimum":1,"maximum":365}},{"name":"pagina","in":"query","description":"Página de resultados, a partir de 1.","schema":{"type":"integer","minimum":1,"maximum":50,"default":1}},{"name":"limite","in":"query","description":"Itens por página.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"A página de resultados.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginaLicitacoes"}}}},"400":{"description":"Parâmetro inválido (o `error.hint` diz o valor aceito).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"Falha ao consultar o catálogo; tente de novo em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/editais/{id}":{"get":{"operationId":"obterLicitacao","tags":["Licitações"],"summary":"Ler uma licitação","description":"Os dados de uma licitação pelo id do site (o `id` da busca, ou o final da URL /edital/{id}): objeto completo, órgão, unidade, local, modalidade, situação, valores e prazos. Use depois da busca, para responder sobre uma licitação específica.","parameters":[{"name":"id","in":"path","required":true,"description":"Id da licitação no site: CNPJ do órgão, 1, sequencial e ano da compra no PNCP (ex.: `00394460005887-1-000123-2026`) — o `id` da busca.","schema":{"type":"string","pattern":"^[0-9]{14}-1-[0-9]{1,6}-[0-9]{4}$"}}],"responses":{"200":{"description":"A licitação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Licitacao"}}}},"400":{"description":"Id em formato inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Licitação não encontrada no catálogo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"Falha ao consultar o catálogo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/editais/{id}/info":{"get":{"operationId":"obterResumoDoEdital","tags":["Licitações"],"summary":"Resumo do edital com trecho e página","description":"O edital resumido (geral, por seção e o que ele exige), cada item com o trecho LITERAL do PDF e a página — conferidos no servidor; item cujo trecho não está na página é descartado. Gerado uma vez por edital: ainda não gerado, devolve 202 e entra na fila. Conteúdo gerado automaticamente: o documento oficial é a única fonte válida. Exige chave de cliente (edb_info_…), com cota mensal e limite por minuto.","security":[{"chaveInfo":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Id da licitação no site (o `id` de /api/v1/editais), ex.: `00394460005887-1-000123-2026`.","schema":{"type":"string","pattern":"^[0-9]{14}-1-[0-9]{1,6}-[0-9]{4}$"}}],"responses":{"200":{"description":"O resumo (ou o motivo de não haver: escaneado, sem documento, não publicado).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumoEdital"}}}},"202":{"description":"Em preparação: o edital entrou na fila. Tente de novo depois (Retry-After).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumoEdital"}}}},"400":{"description":"Id em formato inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Sem chave (missing_api_key).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Chave inválida ou revogada (invalid_api_key, revoked_api_key).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"Cota do mês usada (quota_exceeded) ou limite por minuto (rate_limited, com Retry-After).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"Falha ao consultar o resumo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/concursos.json":{"get":{"operationId":"listarConcursos","tags":["Concursos"],"summary":"Catálogo de concursos públicos","description":"Todos os concursos do site em JSON: primeiro os abertos e previstos, depois os já realizados, com órgão, banca, vagas, cargos, remuneração, taxa, inscrições e cronograma. Atualizado a cada hora. Use para 'quais concursos estão com inscrição aberta' ou para ler o cronograma de uma edição.","responses":{"200":{"description":"O catálogo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogoConcursos"}}}}}}},"/api/v1/cnpj":{"get":{"operationId":"consultarCnpj","tags":["CNPJ"],"summary":"Consultar empresas na base de CNPJs","description":"Três formas: o cadastro de um CNPJ (`cnpj`), uma listagem por filtros (`cnae`, `atividade`, `uf`, `municipio`, `porte`, `dias`…) ou uma pergunta em português (`pergunta`), que vira SQL. A resposta traz o SQL executado. Sem e-mail nem telefone. Exige chave; cada chamada consome créditos da franquia.","security":[{"chaveApi":[]}],"parameters":[{"name":"cnpj","in":"query","description":"Um CNPJ, 14 dígitos (pontuação é ignorada).","schema":{"type":"string","pattern":"^[0-9./-]{14,18}$"}},{"name":"pergunta","in":"query","description":"Pergunta em português: `padarias abertas em Curitiba nos últimos 90 dias`.","schema":{"type":"string","description":"Pergunta em linguagem natural.","maxLength":500}},{"name":"atividade","in":"query","description":"Atividade em palavras (vira até 8 CNAEs).","schema":{"type":"string","description":"Atividade econômica.","maxLength":120}},{"name":"cnae","in":"query","description":"Códigos CNAE de 7 dígitos, separados por vírgula (até 50).","schema":{"type":"string","description":"Lista de CNAEs.","pattern":"^[0-9,\\s]+$"}},{"name":"uf","in":"query","description":"Sigla do estado.","schema":{"type":"string","enum":["AC","AL","AP","AM","BA","CE","DF","ES","GO","MA","MT","MS","MG","PA","PB","PR","PE","PI","RJ","RN","RS","RO","RR","SC","SP","SE","TO"]}},{"name":"municipio","in":"query","description":"Código IBGE do município (7 dígitos).","schema":{"type":"string","pattern":"^[0-9]{7}$"}},{"name":"porte","in":"query","description":"me, epp ou demais (vírgula para mais de um).","schema":{"type":"string","description":"Porte."}},{"name":"situacao","in":"query","description":"`ativa` (padrão) ou `todas`.","schema":{"type":"string","enum":["ativa","todas"],"default":"ativa"}},{"name":"dias","in":"query","description":"Só as abertas nos últimos N dias.","schema":{"type":"integer","minimum":1}},{"name":"excluir_mei","in":"query","description":"1 para tirar MEI.","schema":{"type":"integer","enum":[0,1]}},{"name":"ordenar","in":"query","description":"Ordem da listagem.","schema":{"type":"string","enum":["abertura_desc","abertura_asc","nome"],"default":"abertura_desc"}},{"name":"limite","in":"query","description":"Linhas por chamada.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},{"name":"cursor","in":"query","description":"O `proximo_cursor` da resposta anterior, para a página seguinte.","schema":{"type":"string","description":"Cursor opaco."}}],"responses":{"200":{"description":"Empresas encontradas, com o SQL e os créditos restantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RespostaCnpj"}}}},"400":{"description":"Parâmetro inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroSimples"}}}},"401":{"description":"Chave ausente, inválida ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroSimples"}}}},"402":{"description":"Créditos da franquia esgotados.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroSimples"}}}},"504":{"description":"A consulta passou do tempo; estreite os filtros.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroSimples"}}}}}}},"/api/v1/cnpj/agregado":{"get":{"operationId":"agregarCnpj","tags":["CNPJ"],"summary":"Contar empresas por grupo","description":"A contagem de empresas por município, CNAE, porte, ano de abertura ou estado, com os mesmos filtros de /api/v1/cnpj. Use para 'quantas empresas de software ativas há em Recife'. Exige chave; custa uma chamada.","security":[{"chaveApi":[]}],"parameters":[{"name":"agrupar","in":"query","description":"Como agrupar.","schema":{"type":"string","enum":["municipio","cnae","porte","ano_abertura","uf"],"default":"uf"}},{"name":"atividade","in":"query","description":"Atividade em palavras (vira até 8 CNAEs).","schema":{"type":"string","description":"Atividade econômica.","maxLength":120}},{"name":"cnae","in":"query","description":"Códigos CNAE de 7 dígitos, separados por vírgula.","schema":{"type":"string","description":"Lista de CNAEs.","pattern":"^[0-9,\\s]+$"}},{"name":"uf","in":"query","description":"Sigla do estado.","schema":{"type":"string","enum":["AC","AL","AP","AM","BA","CE","DF","ES","GO","MA","MT","MS","MG","PA","PB","PR","PE","PI","RJ","RN","RS","RO","RR","SC","SP","SE","TO"]}},{"name":"municipio","in":"query","description":"Código IBGE do município (7 dígitos).","schema":{"type":"string","pattern":"^[0-9]{7}$"}},{"name":"situacao","in":"query","description":"`ativa` (padrão) ou `todas`.","schema":{"type":"string","enum":["ativa","todas"],"default":"ativa"}}],"responses":{"200":{"description":"Os grupos e o total.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RespostaAgregado"}}}},"400":{"description":"Parâmetro inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroSimples"}}}},"401":{"description":"Chave ausente, inválida ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroSimples"}}}},"504":{"description":"A contagem passou do tempo; estreite por uf, municipio ou cnae.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErroSimples"}}}}}}}},"components":{"securitySchemes":{"chaveApi":{"type":"http","scheme":"bearer","description":"Chave `edb_cnpj_…`, criada em https://editaisdobrasil.com/api-cnpj."},"chaveInfo":{"type":"http","scheme":"bearer","description":"Chave de cliente `edb_info_…` (também aceita no cabeçalho X-API-Key). Peça em contato@editaisdobrasil.com."}},"schemas":{"Erro":{"type":"object","description":"Erro da API pública: código estável, mensagem e o que fazer.","required":["error","docs"],"properties":{"error":{"type":"object","required":["code","message","hint"],"properties":{"code":{"type":"string","description":"Código estável: `not_found`, `invalid_parameter`, `internal_error`…"},"message":{"type":"string","description":"O que deu errado, em português."},"hint":{"type":"string","description":"Como resolver."}}},"docs":{"type":"string","format":"uri","description":"Esta especificação."}}},"ErroSimples":{"type":"object","description":"Erro da API de CNPJ.","required":["erro"],"properties":{"erro":{"type":"string","description":"O que deu errado e como resolver."},"sql":{"type":"string","description":"O SQL, quando a falha foi na consulta."}}},"ItemCitado":{"type":"object","required":["afirmacao","trecho","pagina"],"properties":{"afirmacao":{"type":"string","description":"O que o edital estabelece, em uma frase."},"trecho":{"type":"string","description":"Cópia literal do edital, conferida no texto da página."},"pagina":{"type":"integer","minimum":1,"description":"Página do PDF onde o trecho está."},"link_pdf":{"type":["string","null"],"format":"uri","description":"O PDF aberto na página (#page=N)."}}},"ResumoEdital":{"type":"object","required":["edital_id","status","aviso","resumo","secoes","exigencias"],"properties":{"edital_id":{"type":"string"},"status":{"type":"string","enum":["disponivel","em_preparacao","escaneado","sem_documento","indisponivel"],"description":"Só `disponivel` traz conteúdo."},"aviso":{"type":"string","description":"Sempre presente: conteúdo gerado automaticamente; o documento oficial é a fonte."},"resumo":{"type":"array","items":{"$ref":"#/components/schemas/ItemCitado"}},"secoes":{"type":"array","items":{"type":"object","required":["id","titulo","itens"],"properties":{"id":{"type":"string"},"titulo":{"type":"string"},"itens":{"type":"array","items":{"$ref":"#/components/schemas/ItemCitado"}}}}},"exigencias":{"type":"array","items":{"$ref":"#/components/schemas/ItemCitado"}},"gerado_em":{"type":["string","null"],"format":"date-time"},"modelo":{"type":["string","null"]},"versao":{"type":["string","null"],"description":"Versão do gerador; muda quando o formato ou as instruções mudam."},"fonte_pdf":{"type":["object","null"],"properties":{"url":{"type":"string","format":"uri"},"titulo":{"type":"string"},"paginas":{"type":"integer"}}},"url":{"type":"string","format":"uri","description":"A mesma informação em /edital/{id}/info."}}},"LicitacaoResumo":{"type":"object","required":["id","objeto","url"],"properties":{"id":{"type":"string","description":"Id no site; use em /api/v1/editais/{id}."},"objeto":{"type":"string","description":"O que está sendo comprado."},"orgao":{"type":["string","null"]},"municipio":{"type":["string","null"]},"uf":{"type":["string","null"]},"modalidade":{"type":["string","null"]},"publicado_em":{"type":["string","null"],"format":"date"},"propostas_ate":{"type":["string","null"],"format":"date","description":"Último dia para a proposta."},"url":{"type":"string","format":"uri","description":"A página da licitação no site. Mostre este link."}}},"PaginaLicitacoes":{"type":"object","required":["total","pagina","limite","itens","busca_completa"],"properties":{"total":{"type":"integer","description":"Quantas licitações abertas casam com os filtros."},"pagina":{"type":"integer"},"limite":{"type":"integer"},"itens":{"type":"array","items":{"$ref":"#/components/schemas/LicitacaoResumo"}},"busca_completa":{"type":"string","format":"uri","description":"A mesma busca no site."}}},"Licitacao":{"type":"object","required":["id","objeto","url"],"properties":{"id":{"type":"string"},"numero_controle_pncp":{"type":["string","null"]},"objeto":{"type":"string"},"informacao_complementar":{"type":["string","null"]},"orgao":{"type":["string","null"]},"orgao_cnpj":{"type":["string","null"]},"unidade":{"type":["string","null"]},"municipio":{"type":["string","null"]},"uf":{"type":["string","null"]},"modalidade":{"type":["string","null"]},"modo_disputa":{"type":["string","null"]},"situacao":{"type":["string","null"]},"aberta":{"type":["boolean","null"],"description":"Recebendo proposta, pelo último sincronismo."},"valor_estimado":{"type":["number","null"],"description":"Em reais. null = não divulgado (orçamento sigiloso), não zero."},"valor_homologado":{"type":["number","null"]},"publicado_em":{"type":["string","null"],"format":"date"},"propostas_de":{"type":["string","null"],"description":"Início das propostas (ISO, Brasília)."},"propostas_ate":{"type":["string","null"],"description":"Fim das propostas (ISO, Brasília)."},"tem_sistema_de_origem":{"type":"boolean"},"url":{"type":"string","format":"uri","description":"A página da licitação no site, com documentos e o link do PNCP."}}},"CatalogoConcursos":{"type":"object","required":["total","concursos"],"properties":{"fonte":{"type":"string"},"url":{"type":"string","format":"uri"},"gerado_em":{"type":"string","format":"date-time"},"aviso":{"type":"string"},"calendario_ics":{"type":"string","format":"uri"},"total":{"type":"integer"},"abertos_ou_previstos":{"type":"integer"},"concursos":{"type":"array","items":{"type":"object","required":["id","nome"],"properties":{"id":{"type":"string"},"nome":{"type":"string"},"orgao":{"type":["string","null"]},"banca":{"type":["string","null"]},"status":{"type":"string"},"uf":{"type":["string","null"]},"vagas":{"type":["integer","null"]},"cargos":{"type":"array","items":{"type":"string"}},"remuneracao_maxima":{"type":["number","null"]}},"additionalProperties":true}}}},"RespostaCnpj":{"type":"object","required":["dados","sql","consumo"],"properties":{"sql":{"type":"string","description":"A consulta executada."},"explicacao":{"type":"string","description":"Como a pergunta virou consulta (só com `pergunta`)."},"colunas":{"type":"array","items":{"type":"string"}},"dados":{"type":"array","description":"Uma empresa por item, com as colunas como chaves.","items":{"type":"object","additionalProperties":true}},"total":{"type":["integer","null"],"description":"Total do universo filtrado (null se a contagem passou do tempo)."},"retornadas":{"type":"integer"},"proximo_cursor":{"type":["string","null"],"description":"Passe em `cursor` para a próxima página."},"fonte":{"type":"object","additionalProperties":true,"description":"Snapshot da Receita usado."},"consumo":{"type":"object","properties":{"creditos":{"type":"integer"},"restantes":{"type":["integer","null"]},"franquia":{"type":["integer","null"]}}}}},"RespostaAgregado":{"type":"object","required":["total","grupos"],"properties":{"filtros":{"type":"object","additionalProperties":true},"total":{"type":"integer"},"grupos":{"type":"array","items":{"type":"object","required":["total"],"properties":{"chave":{"type":["string","integer","null"]},"rotulo":{"type":["string","null"]},"total":{"type":"integer"}},"additionalProperties":true}}},"additionalProperties":true}}}}