API de Festivos

API de Festivos Colombia - Documentación

v1

1. Introducción

La API de Festivos de Colombia permite consultar información sobre los días festivos oficiales de Colombia de manera programática. Con esta API es posible:

  • Obtener la lista completa de festivos para cualquier año, o para un rango de fechas.
  • Verificar si una fecha específica es festivo.
  • Consultar cuál es el próximo día festivo o una lista de próximos festivos.

Todas las respuestas están en formato JSON e incluyen los nombres de los festivos en español e inglés. Todas las fechas se muestran de acuerdo la zona horaria oficial de Colombia (GMT-5 / UTC-5).

2. Autenticación

La API admite dos métodos de autenticación:

Bearer Token (recomendado)

Incluir la API Key en el encabezado Authorization:

curl -X GET "https://festivos.com.co/api/v1/festivos" \
  -H "Authorization: Bearer TU_API_KEY"

Parámetro de consulta

Alternativamente, pasar la API Key como parámetro api_key:

curl -X GET "https://festivos.com.co/api/v1/festivos?api_key=TU_API_KEY"

Se recomienda usar Bearer Token ya que las URLs pueden quedar registradas en logs del servidor, historial del navegador y otros sistemas intermedios.

Para obtener una API Key es necesario crear una cuenta en el Panel de Desarrolladores. Cada cuenta puede tener hasta 3 API Keys activas.

Importante: La API Key debe mantenerse segura y no compartirse públicamente. Si una clave ha sido comprometida, es posible eliminarla y crear una nueva desde el Panel.

3. Límites de uso

Para garantizar un servicio estable, la API tiene los siguientes límites:

  • Solicitudes por minuto: 20 por API Key
  • Solicitudes por día: 1000 por API Key
  • API Keys por cuenta: 3
  • Rango de años válido: 1984 - 9999

Cuando se excede el límite de solicitudes, la respuesta incluye el código de estado 429 Too Many Requests.

El uso de la API debe ser razonable. Las cuentas o API Keys con actividad sospechosa o abusiva serán suspendidas.

4. Endpoints

4.1. Listar festivos

GET /festivos

Obtiene la lista de todos los días festivos para un año específico. Opcionalmente permite filtrar por mes.

Parámetros de consulta

Parámetro Tipo Descripción
year integer opcional Año a consultar (1984-9999). Por defecto: año actual
month integer opcional Mes a filtrar (1-12)

Ejemplo de solicitud

curl -X GET "https://festivos.com.co/api/v1/festivos?year=2025" \
  -H "Authorization: Bearer TU_API_KEY"

Ejemplo de respuesta

{
  "data": [
    {
      "date": "2026-01-01",
      "day_of_week_es": "Jueves",
      "day_of_week_en": "Thursday",
      "day_of_week_iso": 4,
      "name_es": "Año Nuevo",
      "name_en": "New Year's day"
    },
    {
      "date": "2026-01-12",
      "day_of_week_es": "Lunes",
      "day_of_week_en": "Monday",
      "day_of_week_iso": 1,
      "name_es": "Epifanía",
      "name_en": "Epiphany"
    },
    ...
  ]
}

4.2. Verificar fecha

GET /festivos/check

Verifica si una fecha específica es un día festivo en Colombia.

Parámetros de consulta

Parámetro Tipo Descripción
date string requerido Fecha en formato ISO 8601 (YYYY-MM-DD)

Ejemplo de solicitud

curl -X GET "https://festivos.com.co/api/v1/festivos/check?date=2026-01-01" \
  -H "Authorization: Bearer TU_API_KEY"

Ejemplo de respuesta (es festivo)

{
  "festivo": true,
  "data": {
    "date": "2026-01-01",
    "day_of_week_es": "Jueves",
    "day_of_week_en": "Thursday",
    "day_of_week_iso": 4,
    "name_es": "Año Nuevo",
    "name_en": "New Year's day"
  }
}

Ejemplo de respuesta (no es festivo)

{
  "festivo": false,
  "data": null
}

4.3. Hoy

GET /festivos/today

Verifica si hoy es un día festivo en Colombia.

Parámetros

No requiere.

Ejemplo de solicitud

curl -X GET "https://festivos.com.co/api/v1/festivos/today" \
  -H "Authorization: Bearer TU_API_KEY"

Ejemplo de respuesta (hoy es festivo)

{
  "festivo": true,
  "data": {
    "date": "2025-01-01",
    "day_of_week_es": "Miércoles",
    "day_of_week_en": "Wednesday",
    "day_of_week_iso": 3,
    "name_es": "Año Nuevo",
    "name_en": "New Year's Day"
  }
}

Ejemplo de respuesta (hoy no es festivo)

{
  "festivo": false,
  "data": null
}

4.4. Siguiente festivo

GET /festivos/next

Obtiene información sobre el siguiente día festivo a partir de la fecha actual.

Nota: Si hoy es un día festivo, este endpoint devuelve el siguiente festivo, no hoy.

Parámetros

No requiere.

Ejemplo de solicitud

curl -X GET "https://festivos.com.co/api/v1/festivos/next" \
  -H "Authorization: Bearer TU_API_KEY"

Ejemplo de respuesta

{
  "data": {
    "date": "2026-01-12",
    "day_of_week_es": "Lunes",
    "day_of_week_en": "Monday",
    "day_of_week_iso": 1,
    "name_es": "Epifanía",
    "name_en": "Epiphany"
  }
}

4.5. Próximos festivos

GET /festivos/upcoming

Devuelve una lista de los próximos días festivos. Por defecto, devuelve los próximos 3 festivos (excluyendo hoy incluso si hoy es festivo).

Parámetros de consulta

Parámetro Tipo Descripción
limit integer opcional Número de festivos a devolver (1-10). Por defecto: 3
include_today boolean opcional Incluir hoy si es festivo. Por defecto: false

Ejemplo de solicitud

curl -X GET "https://festivos.com.co/api/v1/festivos/upcoming?limit=5" \
  -H "Authorization: Bearer TU_API_KEY"

Ejemplo de respuesta

{
  "data": [
    {
      "date": "2026-01-12",
      "day_of_week_es": "Lunes",
      "day_of_week_en": "Monday",
      "day_of_week_iso": 1,
      "name_es": "Epifanía",
      "name_en": "Epiphany"
    },
    {
      "date": "2026-03-23",
      "day_of_week_es": "Lunes",
      "day_of_week_en": "Monday",
      "day_of_week_iso": 1,
      "name_es": "Día de San José",
      "name_en": "Saint Joseph's Day"
    },
    {
      "date": "2026-04-02",
      "day_of_week_es": "Jueves",
      "day_of_week_en": "Thursday",
      "day_of_week_iso": 4,
      "name_es": "Jueves Santo",
      "name_en": "Maundy Thursday"
    },
    ...
  ]
}

4.6. Festivos por rango de fechas

GET /festivos/range

Devuelve todos los días festivos dentro de un rango de fechas especificado. El rango máximo es de 1 año.

Parámetros de consulta

Parámetro Tipo Descripción
from string requerido Fecha de inicio en formato ISO 8601 (YYYY-MM-DD)
to string requerido Fecha de fin en formato ISO 8601 (YYYY-MM-DD). Rango máximo: 1 año

Ejemplo de solicitud

curl -X GET "https://festivos.com.co/api/v1/festivos/range?from=2026-01-01&to=2026-01-31" \
  -H "Authorization: Bearer TU_API_KEY"

Ejemplo de respuesta

{
  "data": [
    {
      "date": "2026-01-01",
      "day_of_week_es": "Jueves",
      "day_of_week_en": "Thursday",
      "day_of_week_iso": 4,
      "name_es": "Año Nuevo",
      "name_en": "New Year's day"
    },
    {
      "date": "2026-01-12",
      "day_of_week_es": "Lunes",
      "day_of_week_en": "Monday",
      "day_of_week_iso": 1,
      "name_es": "Epifanía",
      "name_en": "Epiphany"
    }
  ]
}

5. Formato de respuesta

Todas las respuestas siguen un formato consistente.

Campos de un festivo

Campo Tipo Descripción
date string Fecha en formato ISO 8601 (YYYY-MM-DD)
day_of_week_es string Día de la semana en español (Lunes, Martes, etc.)
day_of_week_en string Día de la semana en inglés (Monday, Tuesday, etc.)
day_of_week_iso integer Día de la semana según ISO 8601 (1=lunes, 7=domingo)
name_es string Nombre oficial del festivo en español
name_en string Nombre oficial del festivo en inglés

6. Errores

La API utiliza códigos de estado HTTP estándar para indicar el resultado de las solicitudes.

Códigos de estado

Código Descripción
200 OK Solicitud exitosa
400 Bad Request Parámetros inválidos
401 Unauthorized API Key faltante o inválida
422 Unprocessable Entity Error de validación en los parámetros
429 Too Many Requests Límite de solicitudes excedido
500 Internal Server Error Error interno del servidor

Formato de error

Cuando ocurre un error, la respuesta incluye un mensaje descriptivo:

{
  "message": "Unauthenticated."
}

Para errores de validación (422), se incluyen detalles de los campos con errores:

{
  "message": "The year field must be at least 1984.",
  "errors": {
    "year": [
      "The year field must be at least 1984."
    ]
  }
}