doc_splitter analiza un PDF, identifica los documentos que contiene y devuelve una lista de cortes (splits) con su rango de páginas y clasificación. Después puedes crear ítems adicionales (por ejemplo doc_validation, ac_mx, aa_mx) usando un corte específico como archivo de entrada.
Cuándo usarlo
Usadoc_splitter cuando:
- Recibes un solo PDF que agrupa varios documentos (por ejemplo, un expediente con acta constitutiva, actas de asamblea, poderes, etc.).
- Necesitas identificar qué documento está en cada rango de páginas antes de procesarlo.
- Quieres reprocesar un subconjunto de páginas del PDF original sin volver a subir el archivo.
El
doc_splitter no clasifica el PDF en un solo tipo: lo divide en varios sub-documentos. Si tu caso es “un archivo = un documento” y solo necesitas clasificarlo, usa doc_validation directamente.Conceptos clave
Corte (split)
Un corte representa un documento identificado dentro del PDF original. Cada corte tiene:support_id— identificador único del corte (formatods_<uuid>). Cada corte corresponde a un documento individual que el splitter detectó dentro del PDF original. Usa este valor enfile_source_info.support_idcuando quieras crear un ítem hijo para procesar ese documento.page_start/page_end— rango de páginas que ocupa el corte dentro del PDF original (1-based, inclusivas). Por ejemplo,page_start: 4ypage_end: 7significa que el documento detectado abarca de la página 4 a la 7.support_url— URL firmada al sub-PDF que Trébol generó para este corte. Es solo informativa (por ejemplo, para previsualizar el documento); no la envíes al crear ítems hijo — Trébol resuelve el archivo internamente.support_metadata— metadatos que el modelo de IA generó al clasificar el corte: qué tipo de documento es (document_type), una etiqueta descriptiva (classification) y la fecha de expedición detectada (expedition_date), cuando aplica.
Ciclo de vida
El procesamiento deldoc_splitter es asíncrono. En la API pública solo verás dos estados en item_status:
pending— el análisis está en curso (descarga del PDF y detección de cortes).complete— el análisis terminó. Distingue el resultado poritem_error:- Sin
item_error(onull) → éxito. Los cortes están disponibles enitem_value.split_documents. - Con
item_error→ falló. Consulta el código para identificar la causa (PDF inválido, tipos personalizados desconocidos, etc.). Ver Errores.
- Sin
Otros tipos de ítem exponen también
needs-review y error (ver Respuestas por tipo de item). doc_splitter no usa esos estados: no requiere revisión manual (el resultado es determinista sobre el PDF) y los fallos del pipeline se reportan siempre como complete + item_error para que un mismo consumidor de webhooks maneje éxito y fallo con la misma señal terminal.El
doc_splitter solo acepta archivos PDF. Cualquier otro formato (JPG, PNG, DOCX, etc.) falla con item_error: "unsupported_file_type". PDFs con contraseña fallan con item_error: "password_protected_pdf".Autenticación
Todos los endpoints requieren tu API key en el headerx-api-key.
Crear un ítem doc_splitter
Puedes crear un ítem doc_splitter de dos formas: al crear una verificación nueva o agregándolo a una verificación existente. El cuerpo del ítem es idéntico en ambos casos.
Opciones del ítem
string
required
Debe ser
"doc_splitter".string
required
URL descargable del PDF a dividir. Requerido al crear el ítem (o usa
options.file_source: "item" para referenciar un corte de un doc_splitter previo). El flujo de carga directa con upload_url no aplica a doc_splitter.array
Restringe el universo de tipos de documento que el splitter puede reconocer. Acepta tipos built-in (por ejemplo
ac_mx, aa_mx, csf_mx) y nombres de tipos de ítem personalizados (cit_...). Si se envía vacío o se omite, se usa el catálogo base completo.string
Atajo para especificar un único tipo esperado. Equivalente a
allowed_item_types: ["<tipo>"].Opción 1 — Al crear la verificación
POST /verifications
Opción 2 — En una verificación existente
PUT /verifications/{verification-id}/add-items
Consumir el resultado
Consulta la verificación una vez que el ítem esté enitem_status: "complete":
GET /verifications/{verification-id}
Cuando el doc_splitter termina con éxito, cada ítem incluye los cortes bajo item_value.split_documents.
Estructura de la respuesta
boolean
true si se detectó más de un documento; false si el PDF corresponde a un único documento.array
Lista de cortes identificados.
Cuando el splitter no logra mapear un corte contra los tipos disponibles (los de
allowed_item_types o el catálogo base), el document_type se devuelve como "unknown". Si el modelo tampoco pudo inferir metadatos adicionales, el objeto support_metadata puede omitirse por completo del corte. Usa support_metadata?.document_type ?? "unknown" en tu código para cubrir ambos casos.El
doc_splitter puede dejar páginas sin cubrir (portadas, anexos, separadores en blanco). No todas las páginas del PDF original tienen que aparecer en un corte.Crear un ítem a partir de un corte
Para procesar un documento identificado por el splitter, agrega un nuevo ítem referenciando eldoc_splitter original y el corte específico. Trébol resuelve internamente el sub-PDF; no necesitas enviar support_url.
PUT /verifications/{verification-id}/add-items
Opciones del ítem
string
required
Cualquier tipo soportado que acepte un archivo como entrada (por ejemplo
doc_validation, generic, ac_mx, aa_mx, csf_mx).string
required
Debe ser
"item".object
required
Referencia al corte del
doc_splitter.Cada llamada a
add-items con la misma referencia (item_id + support_id) crea un ítem hijo nuevo. No hay deduplicación del lado servidor: si envías la misma referencia dos veces, obtendrás dos ítems.Errores
Los errores de configuración de la petición se devuelven como códigos HTTP estándar. Los fallos del procesamiento asíncrono se exponen en el campoitem_error del ítem doc_splitter.
Errores HTTP al referenciar un corte
item_error en un doc_splitter fallido
Un doc_splitter que termina en item_status: "complete" con item_error significa que el análisis falló. Los valores posibles son:
Ejemplo completo
Flujo end-to-end: divide un expediente en documentos individuales y procesa dos de ellos.1
Crear el doc_splitter
Agrega el ítem a una verificación existente, restringiendo los tipos esperados.La respuesta contiene el
id del ítem doc_splitter (aquí 30829); guárdalo para los pasos siguientes. El verification-id (c8dc41fc-...) es el mismo que usaste en la URL del add-items.Respuesta abreviada
Si
add-items responde con más ítems (por ejemplo un doc_validation que agregaste en la misma llamada), el doc_splitter es el que tiene item_type: "doc_splitter". Filtra por ese campo antes de leer el id.2
Esperar el resultado
El análisis es asíncrono. Tienes dos opciones:Cuando el ítem 30829 termine, su
- Webhooks (recomendado): suscríbete al evento
verification_item.v2.completed. Trébol te avisa cuando el ítem termina; filtra pordata.item_type: "doc_splitter"ydata.item_id: 30829. - Polling: consulta
GET /verifications/{verification-id}hasta que el ítem esté enitem_status: "complete".
item_value.split_documents contendrá los cortes con sus support_id.3
Seleccionar los cortes que quieres procesar
Del array
split_documents, elige los cortes según su support_metadata.document_type. Ejemplo:4
Crear ítems a partir de los cortes
Envía los ítems hijos en una sola llamada a Cada ítem hijo ejecuta su flujo normal de extracción / validación, pero solo sobre las páginas del corte referenciado.
add-items.Los ítems hijos también son asíncronos: aparecen en
item_status: "pending" y pasan a complete cuando terminan (con item_error si fallaron). Suscríbete a verification_item.v2.completed filtrando por sus item_id — o, si quieres esperar a que todo el expediente termine, escucha verification.v2.finished sobre el verification-id. Nunca asumas que el ítem hijo está listo justo después de que add-items responde.Siguientes pasos
Tipos de documentos
Lista completa de tipos que puedes usar en
allowed_item_types y como destino de un corte.Tipos de ítem personalizados
Combina el splitter con tipos personalizados (
cit_...) para reconocer documentos propios de tu cuenta.Extracciones personalizadas
Personaliza la extracción de los documentos que el splitter identifique.
Webhooks
Recibe notificaciones cuando el
doc_splitter termine de procesarse.