Extraer datos de un contrato
Los contratos entierran sus datos operativos entre páginas de cláusulas estándar que nadie vuelve a leer una vez firmadas. Este endpoint extrae lo que un asistente legal marcaría en una primera revisión: las partes, fechas de vigencia y vencimiento, montos y condiciones de renovación, para que esa información viva en una base de datos y no en un archivero.
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 un contrato firmado que nadie puede consultar
Un equipo legal, un área de finanzas o una oficina de compras rara vez necesita releer un contrato completo; necesita saber quién lo firmó, cuándo vence y cuánto dinero involucra, en el momento, sin abrir el PDF. Este endpoint resuelve exactamente eso: lee el contrato y devuelve los datos operativos como campos estructurados, de modo que responder 'qué contratos de proveedores vencen el próximo trimestre' se convierte en una consulta a base de datos en vez de una tarde buscando carpetas.
Qué ocurre después de enviar el documento
Envía el archivo a POST /ocr/contract y recibe un task_id de inmediato, porque la extracción corre de forma asíncrona y puede tardar más en acuerdos extensos de varias páginas. Al terminar el procesamiento, el resultado estructurado —partes, fechas, montos, términos clave— se entrega mediante un webhook firmado, o queda disponible en un enlace firmado válido por 24 horas.
Los contratos son antiguos, pero el problema de extraerlos es nuevo
Los contratos escritos son anteriores a la imprenta, pero la práctica de almacenar miles de ellos como imágenes escaneadas y PDF es un subproducto reciente de las últimas décadas de digitalización, y creó un problema muy específico: las cláusulas de un contrato son vinculantes desde el momento de la firma, pero los datos que contiene se vuelven prácticamente invisibles a menos que alguien los transcriba manualmente. La extracción estructurada es el puente que falta entre el documento firmado y los sistemas que necesitan actuar sobre él.
Cómo encaja en un flujo documental
Los equipos de operaciones legales lo usan para llenar automáticamente un repositorio de contratos a medida que se firman los acuerdos; los equipos de finanzas lo usan para detectar montos y fechas de pago sin revisión manual; los equipos de compras lo usan para marcar contratos que se acercan a su renovación o vencimiento en todo un portafolio de proveedores, sin que nadie tenga que leer cada contrato de principio a fin.
Un precio ligado a la extensión del documento
El endpoint cobra $0.003 por solicitud más $0.0135 por página, porque un acuerdo de diez páginas requiere más trabajo de extracción que un anexo de una sola; se factura únicamente cuando la extracción se completa con éxito, y un intento fallido se reintenta automáticamente hasta tres veces antes de devolver un error claro sin ningún cargo. El acceso requiere saldo prepago en lugar de una capa gratuita, lo que mantiene la capacidad de procesamiento disponible para trabajo real.
Qué puede hacer con ella
Carga automática de un repositorio de contratos
Extraiga nombres de las partes, fechas y montos apenas se suben los acuerdos firmados, sin captura manual en el sistema de gestión.
Seguimiento de renovaciones y vencimientos
Revise todo el portafolio de contratos con proveedores para marcar cuáles se acercan a su fecha de renovación o terminación.
Conciliación financiera y de pagos
Extraiga montos y condiciones de pago de contratos firmados para cruzarlos contra facturas y órdenes de compra.
Revisión documental en debida diligencia
Extraiga términos clave de cientos de contratos con rapidez durante una adquisición o auditoría, en lugar de leer cada uno manualmente.
Preguntas frecuentes
¿Qué campos devuelve la api extraer datos de contratos?
Las partes, fechas de vigencia y vencimiento, montos y términos clave como condiciones de renovación o terminación.
¿Cómo se calcula el precio en contratos largos?
Paga $0.003 por solicitud más $0.0135 por página, así que el costo escala con la extensión del documento que envía.
¿Existe una versión gratuita de la api extraer datos de contratos?
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.
¿Cómo obtengo los datos extraídos del contrato?
Mediante un webhook firmado cuando termina la tarea, o desde un enlace firmado que permanece válido durante 24 horas.
¿Se cobra si falla la extracción de un contrato?
No. Las tareas fallidas se reintentan automáticamente hasta tres veces y nunca se cobran si aun así fallan.
¿Puede procesar contratos de varias páginas?
Sí, el endpoint lee el documento completo y cobra por página, manejando acuerdos extensos como una sola tarea asíncrona.
¿Funciona con contratos en papel escaneados?
Sí, extrae datos tanto de páginas escaneadas como de documentos digitales nativos.
¿Puedo procesar todo un portafolio de contratos en lote?
Sí, envíe cada contrato como una solicitud independiente; cada llamada devuelve su propio task_id para procesar todo en paralelo.
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/ocr/contract \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/ocr/contract", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ocr/contract",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ocr/contract", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ocr/contract", 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
{
"input": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ocr.contract",
"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_mb | 25 |
max_pages | 10 |
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. |
413 | input_too_large | El archivo supera el límite de tamaño. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |