Extraer fechas
Un contrato dice 'dentro de los treinta días de la firma', un correo dice 'hablemos el próximo martes', una factura dice '15/03/24': tres formatos distintos para algo que un sistema necesita poder ordenar cronológicamente. Este endpoint de extracción de fechas lee texto libre, identifica cada mención de fecha o evento que encuentra y la normaliza a un formato único e inequívoco, para que un sistema posterior pueda por fin ordenar, filtrar y comparar.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
El problema de las fechas escondidas en la prosa
Las fechas escritas por personas son maravillosamente inconsistentes: frases relativas como 'el próximo viernes' o 'en dos semanas', formatos regionales donde 03/04 significa un día distinto según el país, y formas escritas como 'el quince de marzo'. Un script armado alrededor de una sola expresión regular falla en cuanto el documento usa otra convención, y justamente eso es lo que este endpoint evita al leer las fechas como lo haría una persona, en contexto.
Quién necesita esto en realidad
Equipos legales que procesan contratos para dar seguimiento a plazos, empresas de logística que analizan manifiestos de envío y notas de entrega, reclutadores que revisan hojas de vida para verificar rangos de fechas laborales, y equipos de soporte que rastrean tickets buscando marcas de tiempo relevantes para un SLA comparten la misma necesidad: convertir menciones de fecha dispersas en una línea de tiempo estructurada sin releer cada documento a mano.
Qué llega en la respuesta
POST /text/extract-dates devuelve cada mención de fecha encontrada en el texto junto con su valor normalizado, de modo que 'el próximo martes' se resuelve según el contexto cuando el punto de referencia es deducible, y fechas explícitas como '2024-03-15' pasan sin ambigüedad. Cuando el texto que rodea la fecha nombra un evento asociado —una renovación, un plazo, una reunión—, esa etiqueta también se incluye, de modo que el resultado se lee como una pequeña línea de tiempo y no como una lista aislada de marcas de tiempo.
Por qué esto es genuinamente difícil
Interpretar fechas parece trivial hasta que se considera que '03/04/2024' significa 4 de marzo en Estados Unidos y 3 de abril en casi todos los demás países, que los años fiscales no coinciden con el año calendario en todas las jurisdicciones, y que frases como 'tercer trimestre' o 'fin de mes' no tienen una fecha fija sin contexto organizacional. Por eso los analizadores de fechas basados en expresiones regulares genéricas fallan en silencio con más frecuencia de la que se cree en documentos reales.
Cómo encaja en un pipeline de documentos
Como la llamada es asíncrona, puede enviar un lote de contratos o correos y recoger cada línea de tiempo normalizada conforme llega, ya sea mediante su webhook firmado apenas está lista o a través de un enlace firmado válido por 24 horas si su sistema prefiere consultarlo. El precio depende de la longitud del documento y no de una tarifa plana, de modo que un correo de dos líneas cuesta una fracción de lo que cuesta un contrato de arrendamiento de varias páginas, y ninguna tarea que falle tras los reintentos se cobra.
Qué puede hacer con ella
Seguimiento de plazos contractuales
Extraer cada fecha de renovación, plazo de aviso y fecha de terminación de un lote de contratos firmados para alimentar automáticamente un calendario de cumplimiento.
Verificación de línea de tiempo laboral
Extraer los rangos de fechas de empleo de hojas de vida cargadas para detectar vacíos sin explicar o solapamientos de cargos durante la selección de personal.
Automatizar correos hacia el calendario
Analizar correos entrantes de clientes en busca de fechas de reunión y horarios propuestos para sugerir automáticamente eventos de calendario en lugar de leer cada hilo a mano.
Documentos de envío y logística
Normalizar fechas de entrega y horas límite en manifiestos redactados con formatos de fecha mixtos según el país de cada proveedor.
Preguntas frecuentes
¿Cómo funciona la API para extraer fechas de un texto?
Se envía el texto a POST /text/extract-dates, que devuelve de inmediato un task_id, y la lista normalizada de fechas junto con su contexto llega después por webhook o mediante un enlace firmado válido por 24 horas.
¿Reconoce fechas relativas como 'el próximo lunes'?
Sí; cuando el texto que la rodea da suficiente contexto, la expresión relativa se resuelve a una fecha explícita, y cuando no hay un punto de referencia confiable, la frase se devuelve tal cual en lugar de adivinarse.
¿Qué formatos de fecha reconoce?
Lee formatos mixtos dentro de un mismo documento, incluyendo formatos numéricos como DD/MM/AAAA y MM/DD/AAAA, fechas escritas y expresiones informales, y las devuelve todas normalizadas a un mismo formato consistente.
¿Hay una prueba gratuita?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cuánto cuesta extraer fechas de un texto?
El costo es de 0.003 dólares por solicitud más 0.013 dólares por cada 1000 palabras procesadas, y solo se cobra por las tareas que se completan con éxito.
¿Se puede procesar un lote grande de documentos?
Sí, cada documento es una tarea asíncrona independiente, así que puede enviar tantos como necesite y recoger los resultados conforme cada uno termina.
¿También extrae el evento asociado a la fecha?
Cuando el texto nombra a qué corresponde la fecha —un plazo, una renovación, una reunión—, esa etiqueta se devuelve junto con la fecha normalizada en lugar de entregar solo la marca de tiempo aislada.
¿Por qué no basta con una expresión regular para encontrar fechas?
Una sola expresión regular no distingue de forma confiable '03/04' entre formatos regionales ni resuelve frases relativas como 'en dos semanas', por lo que los documentos con formatos mixtos requieren lectura en contexto y no simple coincidencia de patrones.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/text/extract-dates \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/text/extract-dates", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/extract-dates",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/extract-dates", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/extract-dates", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.extract_dates",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_tokens | 20000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |