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.
https://feriadosapi.comEscolha 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
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.
Authorization: Bearer your_token_herePaginaçã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âmetro | Descrição | Padrão |
|---|---|---|
| page | Número da página atual | 1 |
| limit | Quantidade de itens por página (max 100) | 50 |
| ano | Filtra feriados por ano (ex: 2026) | Todos |
| facultativos | Se true, inclui feriados facultativos | false |
Feriados Nacionais
Retorna todos os feriados nacionais de um determinado ano.
Endpoint
/api/v1/feriados/nacionais?ano=2026curl -X GET "https://feriadosapi.com/api/v1/feriados/nacionais?ano=2026" \ -H "Authorization: Bearer YOUR_API_TOKEN"Exemplo de Resposta
{ "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
Retorna feriados estaduais (incluindo nacionais) de uma UF específica.
Endpoint
/api/v1/feriados/estado/{uf}?ano=2026curl -X GET "https://feriadosapi.com/api/v1/feriados/estado/SP?ano=2026" \ -H "Authorization: Bearer YOUR_API_TOKEN"Exemplo de Resposta (SP)
{ "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
Retorna todos os feriados (municipais, estaduais e nacionais) de uma cidade específica pelo código IBGE.
Endpoint
/api/v1/feriados/cidade/{ibge}?ano=2026curl -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)
{ "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
Verifica se uma data específica é feriado. Retorna 404 se não for.
Endpoint
/api/v1/feriados/data/{ano-mes-dia}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.
GET /api/v1/feriados/nacionais?ano=2026&bancarios=trueEndpoint dedicado: Listar feriados bancários
GratuitoGET /api/v1/feriados/bancarios?ano=2026Parâmetros opcionais: uf, ibge, facultativos.
Verificar dia útil bancário
GratuitoGET /api/v1/feriados/dia-util-bancario/2026-02-16Retorna 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
Retorna a lista de todas as Unidades Federativas (UFs) e seus nomes.
Endpoint
/api/v1/estadoscurl -X GET "https://feriadosapi.com/api/v1/estados" \ -H "Authorization: Bearer YOUR_API_TOKEN"Listar Municípios
Retorna a lista completa de todos os 5.571 municípios brasileiros.
Endpoint
/api/v1/municipioscurl -X GET "https://feriadosapi.com/api/v1/municipios" \ -H "Authorization: Bearer YOUR_API_TOKEN"Buscar Município
Retorna os dados de um município específico pelo código IBGE.
Endpoint
/api/v1/municipio/{ibge}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
{ "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 ProfessionalReceba 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.
Plano Starter inclui até 3 endpoints simultâneos. Professional inclui até 10 endpoints com telemetria avançada.
Filtre disparos por endpoint por tipo (Nacional, Estadual, Municipal, Facultativo), UFs específicas ou apenas bancários.
Notificações enviadas instantaneamente via HTTP POST com tolerância a falhas e retentativas automáticas.
Eventos Disponíveis
| Evento | Descrição | Gatilho |
|---|---|---|
| feriado.created | Disparado quando um novo feriado ou data oficial é cadastrado e publicado na base de dados. | Novo feriado inserido |
| feriado.updated | Disparado quando dados de um feriado sofrem retificação (mudança de data por decreto, descrição ou tipo). | Alteração cadastral ou decreto |
| feriado.deleted | Disparado quando um feriado ou ponto facultativo é revogado ou removido do calendário oficial. | Revogação ou exclusão |
| ping | Disparo 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)
{ "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çalho | Formato / Exemplo | Descrição |
|---|---|---|
| X-Feriados-Signature | t=1788894200,v1=a1b2c3d4e5f6... | Contém o timestamp UNIX t e a assinatura criptográfica HMAC-SHA256 v1 em hexadecimal. |
| X-Feriados-Delivery | deliv_01j9a8b7c6d5e4f3a2b1c0d9e8 | Identificador único da entrega para rastreamento, idempotência e desduplicação. |
| X-Feriados-Timestamp | 1788894200 | Timestamp UNIX (em segundos) de quando a requisição foi despachada. |
| Content-Type | application/json; charset=utf-8 | Corpo em JSON codificado em UTF-8 |
Protocolo de Validação Passo a Passo
- Extraia o timestamp e a assinatura: Faça o parse do cabeçalho X-Feriados-Signature para separar os valores de t e v1.
- 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.
- Monte o payload assinado: Concatene t + "." + rawBody. Atenção: utilize o corpo bruto da requisição exatamente como recebido (sem json parsing prévio).
- Calcule o HMAC-SHA256: Criptografe a string concatenada com a chave secreta do webhook (whsec_...) usando o algoritmo SHA-256 em hexadecimal.
- 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
import crypto from 'crypto';import express, { Request, Response } from 'express';
const app = express();// Importante: capture o corpo bruto (Buffer) para validação HMACapp.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 });});import osimport timeimport hmacimport hashlibfrom 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)
| Tentativa | Intervalo | Tempo Acumulado | Comportamento |
|---|---|---|---|
| 1ª Tentativa | T + 0 | Instantâneo | Disparo imediato após publicação do evento |
| 2ª Tentativa | ~5 min | T + 5m | Primeira retentativa após falha |
| 3ª Tentativa | ~30 min | T + 35m | Segunda retentativa |
| 4ª Tentativa | ~2 horas | T + 2h 35m | Janela intermediária de tolerância |
| 5ª Tentativa | ~8 horas | T + 10h 35m | Permite recuperação de deploys e manutenções |
| 6ª Tentativa | ~24 horas | T + ~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.comAlé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_KEY2. Conexão Local (npx)
Execute diretamente via CLI (Node.js/npm).
npx -y @feriados-api/mcp-serverConecte sua Aplicação
{ "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.