Leer un currículum
Un currículum es un bloque de texto que ningún sistema de reclutamiento puede filtrar ni ordenar hasta que alguien lo transcribe a mano. Este endpoint lee el CV como lo haría una persona y devuelve datos estructurados del candidato —nombre, contacto, experiencia, educación, habilidades— en segundos.
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.
Pensado para el volumen, no para el caso aislado
Los equipos de reclutamiento rara vez procesan un currículum a la vez; reciben cientos por día en formatos de todo tipo, desde plantillas de diseño con dos columnas hasta fotocopias escaneadas de un candidato que se presentó sin cita. Este endpoint está construido para ese volumen: no asume un único formato, sigue los encabezados y agrupa la información como lo haría un ojo humano, y normaliza el resultado en un esquema estable que su base de datos puede confiar.
Qué ocurre exactamente con el archivo
Envía el archivo del currículum a POST /ocr/resume y recibe un task_id de inmediato porque el proceso corre de forma asíncrona. Cuando termina, el perfil extraído llega mediante un webhook firmado, o puede recuperarlo desde un enlace firmado que permanece válido durante 24 horas. Nada queda esperando a que una pestaña consulte el estado; su sistema simplemente recibe el aviso.
De la página escrita al JSON consultable
El currículum como género apenas ha cambiado en un siglo —nombre, experiencia, educación, contacto—, pero los contenedores no dejan de multiplicarse: exportaciones en PDF desde herramientas de diseño, documentos de Word con tablas, descargas de perfiles de LinkedIn, incluso fotos tomadas con el teléfono a una copia impresa. Una extracción confiable significa manejar esa variedad sin pedirle al candidato que reformatee nada, y esa es exactamente la capa que ofrece esta API.
Dónde encaja en su flujo de trabajo
Puede alimentarlo directamente desde su formulario de postulación, su buzón de correo o una carga masiva del archivo acumulado de años en PDF. La salida se mapea con naturalidad a los campos habituales de un sistema de seguimiento de candidatos, así que el siguiente paso —deduplicar, buscar por palabra clave, comparar contra un requisito de vacante— se ejecuta sobre datos estructurados y no sobre expresiones regulares improvisadas.
Un precio acorde al trabajo realizado
Cada llamada cuesta $0.003 por solicitud más $0.0135 por documento, y se cobra únicamente cuando la extracción se completa con éxito; un intento fallido se reintenta automáticamente hasta tres veces y, si aun así falla, recibe un error claro sin ningún cargo. No existe capa gratuita ni período de prueba por diseño: el acceso requiere saldo prepago, lo que mantiene el endpoint rápido y libre de tráfico de abuso.
Qué puede hacer con ella
Automatización de ingreso al ATS
Complete el registro del candidato en cuanto sube su CV, sin que un reclutador tenga que copiar cada campo manualmente.
Migración masiva de bases de currículums
Convierta una carpeta con miles de CV antiguos en PDF a filas estructuradas para un nuevo sistema de reclutamiento, en un solo lote.
Búsqueda de candidatos por habilidades
Extraiga habilidades y puestos normalizados para que los reclutadores filtren candidatos por criterio en lugar de leer documento por documento.
Filtrado en agencias de colocación
Convierta los currículums que llegan desde distintas bolsas de empleo a un formato uniforme antes de que lleguen a la bandeja de un reclutador.
Preguntas frecuentes
¿Qué devuelve la api para leer currículums?
Un perfil en JSON estructurado con contacto, experiencia laboral, educación, habilidades y fechas extraídas del CV subido.
¿Qué formatos de archivo acepta?
Documentos de currículum estándar en PDF, Word y páginas escaneadas o fotografiadas; el endpoint lee el diseño sin importar la herramienta de exportación usada.
¿Existe una capa gratuita para la api leer curriculum?
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 recibo los resultados del análisis?
Mediante un webhook firmado cuando termina la tarea asíncrona, o descargándolos desde un enlace firmado válido por 24 horas.
¿Se cobra si la extracción falla?
No. Las tareas fallidas se reintentan automáticamente hasta tres veces y nunca se cobran; solo paga por un documento procesado con éxito.
¿Puedo enviar currículums en lote?
Sí, envíe una solicitud por documento y cada una devuelve su propio task_id, lo que permite procesar lotes grandes en paralelo.
¿Cuánto cuesta la api leer curriculum?
$0.003 por solicitud más $0.0135 por documento procesado, con precios publicados y sin créditos ni tokens ocultos.
¿Funciona con currículums escaneados?
Sí, extrae texto tanto de páginas escaneadas o fotografiadas como de documentos digitales nativos.
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/resume \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/ocr/resume", {
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/resume",
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/resume", 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/resume", 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.resume",
"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. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |