STATUS LICITAÇÕES
monitor independente

API PNCP: Swagger, endpoints e parâmetros de consulta

API REST pública em pncp.gov.br/api/consulta/v1/ com dados abertos de atas, contratações, contratos e PCAs. Nesta página: os 12 endpoints com parâmetros obrigatórios, erros comuns (400, 204, limites de página), o Swagger UI e o status da API ao vivo, logo abaixo.

API PNCP
6 componentes monitorados · última mudança: 15 de set., 00:17
6 fora do ar
FORA DO AR

Histórico por componente

consulta pca

consulta contratos

api docs

consulta proposta

consulta publicacao

consulta atas

Comentários

Entre pra comentar:

Por que monitorar a API separada do Portal?

O Portal PNCP (consultado por humanos no navegador) e esta API REST (consumida por sistemas) são produtos com infraestruturas e padrões de tráfego diferentes. Costumam falhar de forma independente: o site pode cair sem afetar a API, e vice-versa.

O que fazer durante uma instabilidade da API

Swagger do PNCP: onde encontrar a documentação da API

O Swagger UI oficial da API de consulta fica em pncp.gov.br/api/consulta/swagger-ui/index.html. Nele você explora todos os endpoints, parâmetros e schemas de resposta, e pode testar chamadas direto no navegador — sem autenticação, pois a API de consulta é pública. Quando a API cai, o Swagger geralmente cai junto; confira o status acima antes de assumir erro no seu código.

Endpoints da API de consulta do PNCP

Base: https://pncp.gov.br/api/consulta — todos os endpoints são GET, públicos e sem autenticação. A API expõe 12 operações, agrupadas em contratações, atas, contratos/empenhos, instrumentos de cobrança e planos de contratação.

EndpointO que retornaParâmetros obrigatórios
/v1/contratacoes/publicacao Contratações por data de publicação dataInicial, dataFinal, codigoModalidadeContratacao, pagina
/v1/contratacoes/proposta Contratações com recebimento de propostas aberto dataFinal, pagina
/v1/contratacoes/atualizacao Contratações por data de atualização global dataInicial, dataFinal, codigoModalidadeContratacao, pagina
/v1/orgaos/{cnpj}/compras/{ano}/{sequencial} Uma contratação específica Os três valores no caminho
/v1/atas Atas de registro de preço por período de vigência dataInicial, dataFinal, pagina
/v1/atas/atualizacao Atas por data de atualização global dataInicial, dataFinal, pagina
/v1/contratos Contratos/empenhos por data de publicação dataInicial, dataFinal, pagina
/v1/contratos/atualizacao Contratos por data de atualização global dataInicial, dataFinal, pagina
/v1/instrumentoscobranca/inclusao Instrumentos de cobrança (notas fiscais) por data de inclusão dataInicial, dataFinal, pagina
/v1/pca/ Itens de PCA por ano e classificação superior anoPca, codigoClassificacaoSuperior, pagina
/v1/pca/usuario Itens de PCA por ano e usuário anoPca, idUsuario, pagina
/v1/pca/atualizacao PCA por data de atualização global dataInicio, dataFim, pagina

/v1/contratacoes/publicacao

O endpoint mais usado: lista contratações publicadas num intervalo de datas. Exige o código da modalidade — não existe consulta "de todas as modalidades" numa chamada só; para varrer tudo, itere sobre os códigos.

/v1/contratacoes/proposta

Retorna contratações com o período de recebimento de propostas em aberto — é o endpoint certo para quem procura oportunidades ainda disputáveis. Atenção: ele aceita apenas dataFinal. Mandar dataInicial aqui é um erro comum, porque os outros endpoints pedem os dois.

/v1/atas e /v1/contratos

Atas de registro de preço por período de vigência e contratos/empenhos por data de publicação. Ambos aceitam janelas maiores por página que as contratações.

Erros comuns ao consumir a API

Boa parte dos 400 Bad Request vem de cinco detalhes que a documentação não destaca:

  1. Datas no formato yyyyMMdd, sem hífens. 20260101, não 2026-01-01.
  2. pagina é obrigatório em todos os endpoints de listagem e começa em 1. Omitir é a causa mais frequente de 400. (A única exceção é a consulta de uma contratação específica por CNPJ/ano/sequencial, que não pagina.)
  3. O teto de tamanhoPagina muda por endpoint: 50 nas contratações, 100 nos instrumentos de cobrança, 500 em atas, contratos e PCA. O mínimo é 10 em todos.
  4. /v1/pca/atualizacao usa dataInicio e dataFim — e não dataInicial/dataFinal como o resto da API. É uma inconsistência real da spec.
  5. Sem resultados devolve 204 No Content, não um 200 com lista vazia. Cliente que assume corpo JSON sempre presente quebra nesse caso.

Além do 400, todas as operações declaram 422 Unprocessable Entity para erro de validação de parâmetro — trate os dois como erro do cliente (sem retry), ou seu consumidor entra em loop de tentativas num request que nunca vai passar.

As respostas paginadas vêm num envelope com data, totalRegistros, totalPaginas, numeroPagina, paginasRestantes e empty — use paginasRestantes para decidir se continua iterando.

Perguntas frequentes

A API do PNCP está fora do ar agora?

O card de status acima responde: sondamos os seis endpoints principais da API de consulta a cada 5 minutos, de fora, e o status é recarregado enquanto esta página fica aberta. A API tem status próprio, independente do Portal PNCP — é comum a API cair e o site continuar no ar, e vice-versa.

Por que recebo 400 Bad Request na API do PNCP?

As causas mais frequentes são: datas no formato yyyyMMdd sem hífens; o parâmetro pagina omitido, que é obrigatório em todos os endpoints de listagem e começa em 1; e tamanhoPagina acima do teto do endpoint. Veja a lista completa em Erros comuns ao consumir a API, nesta página.

Qual o limite de tamanhoPagina na API de consulta do PNCP?

O teto varia por endpoint: 50 nas contratações, 100 nos instrumentos de cobrança e 500 em atas, contratos e PCA. O mínimo é 10 em todos.

Onde fica o Swagger da API do PNCP?

A spec OpenAPI e o Swagger UI da API de consulta ficam em pncp.gov.br/api/consulta/swagger-ui/index.html. O JSON da spec está em pncp.gov.br/api/consulta/v3/api-docs.

A API do PNCP devolve 204 quando não há resultados?

Sim. Consulta sem resultados responde 204 No Content, e não 200 com lista vazia. Cliente que assume corpo JSON sempre presente quebra nesse caso.

Documentação oficial