Documentação da API

Bem-vindo à documentação oficial da Feriados API. Nossa API REST fornece dados precisos sobre feriados nacionais, estaduais e municipais do Brasil. Todos os endpoints retornam dados em formato JSON e utilizam códigos de status HTTP padrão.

Referência Interativa da API

Explore nossos endpoints em tempo real com nossa documentação interativa. Teste requisições diretamente do navegador e valide sua integração instantaneamente.

Abrir Referência API
Base URL:
https://feriadosapi.com

Escolha a linguagem dos exemplos

Limites de Uso e Planos

A Feriados API oferece diferentes níveis de serviço dependendo do seu plano. Entender os limites é fundamental para garantir a estabilidade da sua integração.

Plano Free

  • Acesso a feriados Nacionais e Estaduais
  • Acesso às 27 capitais estaduais
  • Rate Limit: 60 requisições por minuto

Planos Pagos

  • Acesso a todos os 5.571 municípios
  • Verificação de data e endpoints avançados
  • Developer: Rate Limit de 60 req/min
  • Starter (120 req/min) e Professional (1.000 req/min)
  • Starter (3 endpoints) e Professional (10 endpoints): Webhooks em tempo real
Sobre os Rate Limits da API: O limite de 60 req/min é aplicado nos planos Free e Developer. Para maior vazão e velocidade em produção, o plano Starter oferece 120 req/min e o Professional 1.000 req/min. Veja os detalhes em Preços e Planos.

Autenticação

Todas as requisições devem incluir sua chave de API no cabeçalho Authorization. Você pode obter sua chave no Dashboard.

Ainda não tem uma chave de API?

Crie sua conta gratuita agora mesmo e comece a integrar.

Criar Conta Grátis
Header example
bash
Authorization: Bearer your_token_here

Paginação e Filtros

A API suporta paginação via parâmetros de query em endpoints de listagem. Além disso, todos os endpoints retornam metadados úteis sobre a resposta no objeto meta.

Parâmetros de Query

ParâmetroDescriçãoPadrão
pageNúmero da página atual1
limitQuantidade de itens por página (max 100)50
anoFiltra feriados por ano (ex: 2026)Todos
facultativosSe true, inclui feriados facultativosfalse

Feriados Nacionais

GETGratuito

Retorna todos os feriados nacionais de um determinado ano.

Endpoint

/api/v1/feriados/nacionais?ano=2026
Example (curl)
bash
curl -X GET "https://feriadosapi.com/api/v1/feriados/nacionais?ano=2026" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Exemplo de Resposta

json
{
"tipo": "NACIONAL",
"ano": "2026",
"feriados": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"data": "01/01/2026",
"nome": "Confraternização Universal",
"tipo": "NACIONAL"
},
{
"id": "123e4567-e89b-12d3-a456-426614174001",
"data": "25/12/2026",
"nome": "Natal",
"tipo": "NACIONAL"
}
],
"meta": {
"total": 12,
"page": 1,
"per_page": 50,
"total_pages": 1
}
}

Feriados Estaduais

GETGratuito

Retorna feriados estaduais (incluindo nacionais) de uma UF específica.

Endpoint

/api/v1/feriados/estado/{uf}?ano=2026
Example (curl)
bash
curl -X GET "https://feriadosapi.com/api/v1/feriados/estado/SP?ano=2026" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Exemplo de Resposta (SP)

json
{
"uf": "SP",
"ano": "2026",
"feriados": [
{
"id": "...",
"data": "09/07/2026",
"nome": "Revolução Constitucionalista",
"tipo": "ESTADUAL"
}
],
"meta": {
"total": 15,
"page": 1,
"per_page": 50,
"total_pages": 1
}
}

Feriados Municipais

GETCapitais GratuitoOutros Consome Cota

Retorna todos os feriados (municipais, estaduais e nacionais) de uma cidade específica pelo código IBGE.

Gratuito para as 27 capitais estaduais. Demais municípios consome 1 unidade da cota mensal.

Endpoint

/api/v1/feriados/cidade/{ibge}?ano=2026
Example (curl)
bash
curl -X GET "https://feriadosapi.com/api/v1/feriados/cidade/3550308?ano=2026" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Exemplo de Resposta (São Paulo - 3550308)

json
{
"cidade": {
"ibge": 3550308,
"nome": "São Paulo",
"uf": "SP"
},
"ano": "2026",
"feriados": [
{
"id": "...",
"data": "25/01/2026",
"nome": "Aniversário de São Paulo",
"tipo": "MUNICIPAL"
}
],
"meta": {
"total": 18,
"page": 1,
"per_page": 50,
"total_pages": 1
}
}

Verificar Data

GETConsome Cota

Verifica se uma data específica é feriado. Retorna 404 se não for.

Atenção: Este endpoint está disponível apenas nos planos pagos e consome 1 unidade da sua cota mensal por consulta.

Endpoint

/api/v1/feriados/data/{ano-mes-dia}
Example (curl)
bash
curl -X GET "https://feriadosapi.com/api/v1/feriados/data/2026-12-25" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Feriados Bancários

A API inclui o calendário bancário oficial baseado na Resolução 4.880/2020 do CMN e no calendário da FEBRABAN. Todos os endpoints retornam o campo bancario (booleano) indicando se o feriado é bancário. Inclui todos os feriados nacionais mais datas facultativas em que agências não funcionam: Carnaval (seg/ter), Quarta-feira de Cinzas (expediente após meio-dia), Corpus Christi e Véspera de Ano Novo (31/dez).

Filtrar apenas feriados bancários

Adicione ?bancarios=true a qualquer endpoint existente para retornar somente feriados bancários.

bash
GET /api/v1/feriados/nacionais?ano=2026&bancarios=true

Endpoint dedicado: Listar feriados bancários

Gratuito
json
GET /api/v1/feriados/bancarios?ano=2026

Parâmetros opcionais: uf, ibge, facultativos.

Verificar dia útil bancário

Gratuito
json
GET /api/v1/feriados/dia-util-bancario/2026-02-16

Retorna se a data é dia útil bancário. Se não for, informa o motivo e o próximo dia útil. Formato da data: YYYY-MM-DD.

Listar Estados

GETGratuito

Retorna a lista de todas as Unidades Federativas (UFs) e seus nomes.

Endpoint

/api/v1/estados
Example (curl)
bash
curl -X GET "https://feriadosapi.com/api/v1/estados" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Listar Municípios

GETGratuito

Retorna a lista completa de todos os 5.571 municípios brasileiros.

Endpoint

/api/v1/municipios
Example (curl)
bash
curl -X GET "https://feriadosapi.com/api/v1/municipios" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Buscar Município

GETGratuito

Retorna os dados de um município específico pelo código IBGE.

Endpoint

/api/v1/municipio/{ibge}
Example (curl)
bash
curl -X GET "https://feriadosapi.com/api/v1/municipio/3550308" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Glossário e Modelos

Tipos de Feriados

  • NACIONALFeriado válido em todo o território brasileiro.
  • ESTADUALFeriado válido apenas em um estado específico (UF).
  • MUNICIPALFeriado válido apenas no município específico (ex: Aniversário da cidade).
  • FACULTATIVOPonto facultativo. A adesão é opcional (ex: Carnaval, Corpus Christi em alguns locais).

Objeto Feriado

json
{
"id": "UUID", // Identificador único
"data": "DD/MM/YYYY", // Data oficial
"nome": "String", // Nome do feriado
"tipo": "Enum", // NACIONAL | ESTADUAL | MUNICIPAL | FACULTATIVO
"descricao": "String", // Contexto histórico
"uf": "SP", // (Opcional) UF do feriado
"codigo_ibge": 12345, // (Opcional) IBGE do mun.
"bancario": true // Feriado bancário (FEBRABAN)
}

Webhooks de Feriados

Starter e Professional

Receba notificações HTTP POST automáticas no seu servidor sempre que um feriado for cadastrado, atualizado ou excluído na base de dados da Feriados API. Elimine rotinas de polling desnecessárias e mantenha seus sistemas e regras de negócio 100% sincronizados em tempo real.

Planos e Capacidade

Plano Starter inclui até 3 endpoints simultâneos. Professional inclui até 10 endpoints com telemetria avançada.

Filtros Granulares

Filtre disparos por endpoint por tipo (Nacional, Estadual, Municipal, Facultativo), UFs específicas ou apenas bancários.

Disparo em Tempo Real

Notificações enviadas instantaneamente via HTTP POST com tolerância a falhas e retentativas automáticas.

Eventos Disponíveis

EventoDescriçãoGatilho
feriado.createdDisparado quando um novo feriado ou data oficial é cadastrado e publicado na base de dados.Novo feriado inserido
feriado.updatedDisparado quando dados de um feriado sofrem retificação (mudança de data por decreto, descrição ou tipo).Alteração cadastral ou decreto
feriado.deletedDisparado quando um feriado ou ponto facultativo é revogado ou removido do calendário oficial.Revogação ou exclusão
pingDisparo de teste iniciado manualmente pelo painel para validar conectividade, certificado SSL e verificação de assinatura.Botão Testar no Painel

Exemplo de Payload Recebido (JSON)

HTTP POST Payload (application/json)
json
{
"id": "deliv_01j9a8b7c6d5e4f3a2b1c0d9e8",
"event": "feriado.created",
"created_at": "2026-09-08T18:30:00.000Z",
"data": {
"id": "a3b8c7d6-e5f4-4a3b-8c7d-6e5f4a3b8c7d",
"nome": "Dia da Consciência Negra",
"data": "2026-11-20",
"tipo": "NACIONAL",
"descricao": "Feriado Nacional oficializado pela Lei nº 14.759/2023.",
"uf": null,
"codigo_ibge": null,
"bancario": true
}
}

Assinatura e Validação Criptográfica (HMAC-SHA256)

Para garantir que as requisições recebidas no seu webhook foram realmente originadas pela Feriados API e não foram alteradas durante o trânsito, cada disparo inclui cabeçalhos de segurança contendo uma assinatura criptográfica baseada na chave secreta (whsec_...) do endpoint.

Cabeçalhos HTTP Enviados

CabeçalhoFormato / ExemploDescrição
X-Feriados-Signaturet=1788894200,v1=a1b2c3d4e5f6...Contém o timestamp UNIX t e a assinatura criptográfica HMAC-SHA256 v1 em hexadecimal.
X-Feriados-Deliverydeliv_01j9a8b7c6d5e4f3a2b1c0d9e8Identificador único da entrega para rastreamento, idempotência e desduplicação.
X-Feriados-Timestamp1788894200Timestamp UNIX (em segundos) de quando a requisição foi despachada.
Content-Typeapplication/json; charset=utf-8Corpo em JSON codificado em UTF-8

Protocolo de Validação Passo a Passo

  1. Extraia o timestamp e a assinatura: Faça o parse do cabeçalho X-Feriados-Signature para separar os valores de t e v1.
  2. Previna Ataques de Replay: Calcule Math.abs(Date.now() / 1000 - t). Se a diferença for superior a 300 segundos (5 minutos), descarte a requisição.
  3. Monte o payload assinado: Concatene t + "." + rawBody. Atenção: utilize o corpo bruto da requisição exatamente como recebido (sem json parsing prévio).
  4. Calcule o HMAC-SHA256: Criptografe a string concatenada com a chave secreta do webhook (whsec_...) usando o algoritmo SHA-256 em hexadecimal.
  5. Comparação em tempo constante: Utilize crypto.timingSafeEqual (Node.js) ou hmac.compare_digest (Python) para evitar ataques de temporização.

Exemplo de Validação de Assinatura

TypeScript / Node.js (Express)
verify-webhook.ts
typescript
import crypto from 'crypto';
import express, { Request, Response } from 'express';
const app = express();
// Importante: capture o corpo bruto (Buffer) para validação HMAC
app.use(express.raw({ type: 'application/json' }));
const WEBHOOK_SECRET = process.env.FERIADOS_WEBHOOK_SECRET!; // whsec_...
function verifyWebhookSignature(
rawBody: Buffer,
signatureHeader: string,
secret: string,
toleranceSeconds = 300
): boolean {
// 1. Extrair t e v1
const elements = signatureHeader.split(',');
const timestampPart = elements.find((el) => el.startsWith('t='));
const signaturePart = elements.find((el) => el.startsWith('v1='));
if (!timestampPart || !signaturePart) return false;
const timestamp = parseInt(timestampPart.substring(2), 10);
const signature = signaturePart.substring(3);
// 2. Prevenir replay attacks (janela de 5 minutos)
const currentTime = Math.floor(Date.now() / 1000);
if (Math.abs(currentTime - timestamp) > toleranceSeconds) {
return false;
}
// 3. Montar payload assinado: `${timestamp}.${rawBody}`
const signedPayload = `${timestamp}.${rawBody.toString('utf-8')}`;
// 4. Calcular HMAC-SHA256
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(signedPayload)
.digest('hex');
// 5. Comparar de forma segura contra timing attacks
const expectedBuffer = Buffer.from(expectedSignature, 'utf-8');
const actualBuffer = Buffer.from(signature, 'utf-8');
if (expectedBuffer.length !== actualBuffer.length) return false;
return crypto.timingSafeEqual(expectedBuffer, actualBuffer);
}
app.post('/api/webhook-feriados', (req: Request, res: Response) => {
const signatureHeader = req.headers['x-feriados-signature'] as string;
if (!signatureHeader || !verifyWebhookSignature(req.body, signatureHeader, WEBHOOK_SECRET)) {
return res.status(401).json({ error: 'Assinatura inválida' });
}
const payload = JSON.parse(req.body.toString('utf-8'));
console.log('Evento recebido com sucesso:', payload.event, payload.data);
// Retorne status 2xx rapidamente (< 8s)
return res.status(200).json({ received: true });
});
Python (FastAPI)
verify_webhook.py
python
import os
import time
import hmac
import hashlib
from fastapi import FastAPI, Request, HTTPException, status
app = FastAPI()
WEBHOOK_SECRET = os.environ.get("FERIADOS_WEBHOOK_SECRET") # whsec_...
def verify_signature(raw_body: bytes, header_val: str, secret: str, tolerance: int = 300) -> bool:
if not header_val or not secret:
return False
parts = dict(item.split("=", 1) for item in header_val.split(",") if "=" in item)
timestamp_str = parts.get("t")
signature = parts.get("v1")
if not timestamp_str or not signature:
return False
# 1. Prevenir Replay Attack (5 minutos)
timestamp = int(timestamp_str)
if abs(time.time() - timestamp) > tolerance:
return False
# 2. Montar string assinada: timestamp.raw_body
signed_payload = f"{timestamp}.".encode("utf-8") + raw_body
# 3. Calcular HMAC-SHA256
expected_sig = hmac.new(
secret.encode("utf-8"),
signed_payload,
hashlib.sha256
).hexdigest()
# 4. Comparação em tempo constante
return hmac.compare_digest(expected_sig, signature)
@app.post("/api/webhook-feriados")
async def handle_webhook(request: Request):
sig_header = request.headers.get("x-feriados-signature")
body = await request.body()
if not sig_header or not verify_signature(body, sig_header, WEBHOOK_SECRET):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Assinatura inválida"
)
data = await request.json()
print(f"Evento recebido com sucesso: {data['event']}")
# Retorne status 2xx rapidamente (< 8s)
return {"received": True}

Política de Retry, Circuit Breaker e Retenção

Nosso sistema de entrega utiliza arquitetura tolerante a falhas com retentativas agendadas, backoff exponencial e circuit breaker automático para proteger seu servidor de sobrecargas.

Expectativa de Resposta e Timeout

Seu endpoint deve responder com status HTTP na faixa 2xx (200, 201, 202 ou 204) em até 8 segundos.

Redirecionamentos (3xx), erros de cliente (4xx), erros de servidor (5xx) ou timeouts acima de 8s são computados como falha e entram na fila de retentativas.

Circuit Breaker Automático

Se um endpoint acumular 20 falhas de entrega consecutivas, ele é temporariamente pausado para proteger sua infraestrutura de sobrecargas.

Um aviso visual é exibido no seu painel. Você pode reativá-lo com 1 clique assim que restabelecer o serviço.

Escala de Retentativas com Backoff Exponencial (6 Tentativas)

TentativaIntervaloTempo AcumuladoComportamento
TentativaT + 0InstantâneoDisparo imediato após publicação do evento
Tentativa~5 minT + 5mPrimeira retentativa após falha
Tentativa~30 minT + 35mSegunda retentativa
Tentativa~2 horasT + 2h 35mJanela intermediária de tolerância
Tentativa~8 horasT + 10h 35mPermite recuperação de deploys e manutenções
Tentativa~24 horasT + ~34hÚltima tentativa agendada

Retenção de Logs por 30 Dias

Inspecione status HTTP, tempos de resposta (ms), payload enviado e detalhes de erros de cada disparo diretamente no painel web.

Reenvio Manual sob Demanda

Mesmo que todas as 6 tentativas automáticas tenham se esgotado, você pode reenviar qualquer entrega do histórico com 1 clique a qualquer momento.

Agentes de IA via MCP

Site Exclusivo do Servidor MCP

Para ver opções avançadas, como configuração para VS Code, Copilot, Cursor e guias completos para Frameworks, acesse nosso portal dedicado a integração com Model Context Protocol.

Acessar mcp.feriadosapi.com

Além da nossa clássica API REST, a Feriados API é o Primeiro Servidor Model Context Protocol (MCP) de Feriados do Brasil. Com ele, você fornece contexto local preciso sobre regras de datas e feriados para Agentes de IA desenvolvidos nas plataformas OpenAI, Gemini, Claude, Manus e outras.

1. Conexão Remota (Recomendada)

Configure via URL conectando a API no seu cliente.

https://mcp.feriadosapi.com/api/mcp?apiKey=YOUR_KEY

2. Conexão Local (npx)

Execute diretamente via CLI (Node.js/npm).

npx -y @feriados-api/mcp-server

Conecte sua Aplicação

Example: Configuration File (MCP Clients & Frameworks)
json
{
"mcpServers": {
"feriadosapi": {
"url": "https://mcp.feriadosapi.com/api/mcp?apiKey=YOUR_API_KEY"
}
}
}

Casos de Uso Reais para a sua IA:

  • Agente de Logística: "Calcule o prazo de entrega final para Salvador, ignorando a contagem de tempo durante finais de semana, feriados nacionais e feriados estaduais na Bahia."
  • Agente de Viagens: "Monte um roteiro em Ouro Preto na próxima semana. Evite marcar atrações na terça caso seja um feriado municipal."
  • Agente de RH/DP: "Gere o fechamento do ponto deste mês identificando todas as horas extras feitas durante emendas e pontos facultativos da base São Paulo."
  • Assistente Financeiro: "Verifique este lote de faturas e antecipe o pagamento bancário daquelas cujos vencimentos coincidirão com feriados."

Tools Injetadas no Agente

buscar_feriadosBusca completa com filtros flexíveis (data, tipo, UF, IBGE, ano, bancarios).
feriados_nacionaisLista de todos os feriados nacionais.
feriados_por_estadoBusca feriados estaduais usando a sigla UF.
feriados_por_cidadeBusca feriados municipais usando código IBGE.
feriados_bancariosLista feriados bancários FEBRABAN. Filtros: ano, UF, IBGE.
verificar_dia_util_bancarioVerifica se uma data é dia útil bancário (motivo + próximo dia útil).
verificar_dataVerifica se uma data (YYYY-MM-DD) é feriado.
listar_estadosLista estados e UFs (dá contexto).
buscar_municipiosBusca código IBGE de cidades.