Primeros pasos con Gilio API

Gilio es una plataforma diseñada para desarrolladores y negocios que buscan optimizar el procesamiento de grandes cantidades de documentos en sus procesos operaciones y productos digitales. Con Gilio, puedes ingerir, extraer y transformar información estructurada de diversos tipos de documentos, configurando referencias de estructura y layouts que garantizan salidas estandarizadas y ajustadas a tus necesidades.

Gilio API evalúa y orquesta modelos de lenguaje (LLMs) utilizando técnicas avanzadas de prompting, parsing y razonamiento lógico, alcanzando altos niveles de precisión incluso en documentos con estructuras o características complejas.


Crea tu cuenta y obtén tu API Key

Primero, llena y envía el formulario en gilio.co/signup. Recibirás tu API Key y Customer ID de inmediato por email. Para empezar, puedes probar los endpoints desde la documentación o con tu cliente favorito como Insomnia, Postman, cURL entre otros. Simplemente introduce tu API Key en la cabecera “X-Api-Key” para todas las solicitudes.

Valida tu información con el endpoint GET /customers/{customer_id}

curl -X GET https://api.gilio.co/v1/customers/{customer_id} \
     -H "Content-Type: application/json" \
     -H "X-Api-Key: YOUR_API_KEY"

Recibirás una respuesta como ésta:

{
	"enabled": true,
	"business_sector": "PROGRAM_DEVELOPMENT",
	"demo_pages_left": 100,
	"company_name": "SENSIA ECUADOR S.A.",
	"created_at": "2024-06-13T17:46:56Z",
	"personal_data_acceptance": true,
	"plan": "enterprise",
	"contact_details": {
		"email": "pparedes@sensia.ec",
		"lastname": "Paredes Meza",
		"name": "Pedro",
		"phone": "0000111122233333",
		"role": "Jefe de Operaciones"
	},
	"customer_id": "f6b78b0c-d404-47ab-906b-6aec72de5008",
	"demo": false,
	"country": "Ecuador"
}


También puedes editar los campos permitidos con el endpoint PUT /customers/{customer_id}. Sigue el ejemplo a continuación.

curl -X PUT https://api.gilio.co/v1/customers/{customer_id} \
     -H "Content-Type: application/json" \
     -H "X-Api-Key: YOUR_API_KEY" \
     -d '{
            "contact_details": {
                "lastname": "Paredes Meza"
            }
         }'


Preparando el entrenamiento

Un Tag es un modelo referencial tanto de la estructura JSON como de un HTML/PDF digitalizado que se extrae de un documento. De esta manera nos aseguramos de crear un proceso y apariencia visual estandarizada para tus demás documentos de esta misma categoria. Gilio es altamente personalizable y puedes configurar:

  • Instrucciones: para precisar detalles o requerimientos específicos en tus estructuras como identificar campos confusos, transformaciones específicas, cambios en el tipo de dato capturado, entre otros.

  • Páginas requeridas: Si tu documento tiene múltiples páginas pero te interesa extraer únicamente la información de algunas de ellas, puedes configurar cuáles deben ser tomadas en cuenta para el procesamiento. Si tu documento tiene una sola página o una imagen agrega "1" (primera página) como único valor.

  • Digitalización: Si tienes documentos escritos a mano, además de extraer la información puedes crear una versión digital del mismo en PDF, siguiendo la misma apariencia visual del documento original o creando un estilo completamente nuevo. Para esto puede configurar el campo "output_resources" como verdadero.


Para crear un Tag usa el endpoint POST /tag/create. Puedes seguir el ejemplo a continuacion:

$ curl -X POST https://api.gilio.co/v1/tag/create \
     -H "Content-Type: application/json" \
     -H "X-Api-Key: YOUR_API_KEY" \
     -d '{
            "customer_id": "YOUR_CUSTOMER_ID",
            "tag_name": "ORDEN_INSTALACION",
            "description": "Orden de Instalacion de Equipos",
            "output_resources": false,
            "required_pages": [1],
            "json_instructions": "Genera respuestas concisas, unicamente la estructura JSON valida y lista para usar, sin caracteres adicionales",
            "html_instructions": "Crea una plantilla facil de transformar a PDF y que sea visualmente atractiva. Genera de forma concisa, unicamente la estructura HTML lista para usar, sin caracteres adicionales"
         }'


En la respuesta a esta petición deberás encontrar el Tag ID en el campo "tag_id", que deberás usar a continuación:

{
	"customer_id": "f6b78b0c-d404-47ab-906b-6aec72de5008",
	"tag_name": "ORDEN_INSTALACION",
	...
	"tag_id": "baf01f92-8fef-49b7-8cb3-29f46e1bb993",
	"created_at": "2024-06-15 22:55:48.116388"
}


Sube tu primer archivo a entrenar 🏋🏻‍♂️

El primer procesamiento siempre será un Entrenamiento. Esto crea una referencia confiable para validar y generar salidas estándar en futuros documentos de la misma categoría. Usa tu plataforma o nube preferida (Google Drive, OneDrive, Odoo, AWS S3, SAP, entre otros) y envía la URL de los archivos que deseas procesar. Inicia el entrenamiento enviando el valor “training” en el campo “process”.


Para subir un archivo usa el endpoint POST /files/{tag_id}como el ejemplo a continuación:

curl -X POST https://api.gilio.co/v1/files/{tag_id} \
     -H "Content-Type: application/json" \
     -H "X-Api-Key: YOUR_API_KEY" \
     -d '{
            "file_url": "https://drive.google.com/uc?export=download&id=1VUOFV0jxnbVMAcIIFRuHZx0tupcTzsZx",
            "process_type": "training"
         }'


🛎️ Importante
  • Usa URLs que apunten a la descarga del archivo. Por ejemplo, las URLs de Google Drive apuntan por defecto a una vista web que no podrá procesarse. Deberás usar el Id de tu archivo (captúralo en la URL) y usarlo en una URL de descarga, como la del ejemplo.

  • También puedes enviar el contenido del archivo como Base64 a través del campo "file_content"


Tipos de procesamiento

Existen 4 tipos de procesamiento disponibles:

  • training: Entrenamiento de la estructura JSON y apariencia HTML/PDF simultáneamente.

  • json_training: Entrenamiento de la estructura JSON únicamente.

  • html_training: Entrenamiento de la apariencia del documento PDF/HTML (requerido si tienes activa la opción “output_resources”).

  • vision: Procesamiento de un documento. Recuerda, siempre debes haber entrenado un Tag antes para validaciones precisas.


Explora y valida los resultados 🔍

La solicitud anterior debe entregar una respuesta como ésta:

{
	"request_id": "507959f6-f4a1-4424-ac84-065c8e946980",
	"file_path": "source_files/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/vision_507959f6-f4a1-4424-ac84-065c8e946980.pdf"
}


Usa el campo "request_id" para consultar el estado del procesamiento de tu documento. Realiza una solicitud al endpoint GET /files/request/{request_id} y recibirás una respuesta como en el ejemplo a continuación:

{
	"size": "42886",
	"process_id": "6e8f2f0b-87bc-5bbc-723d-6b63bb982b6c",
	"created_at": "2024-06-16 13:48:33",
	"analysis_keys": [
		"results/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/6e8f2f0b-87bc-5bbc-723d-6b63bb982b6c/page-0.jpeg"
	],
	"status": "SUCCESS_PDF_GENERATED",
	"customer_id": "f6b78b0c-d404-47ab-906b-6aec72de5008",
	"source_path": "source_files/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/vision_507959f6-f4a1-4424-ac84-065c8e946980.pdf",
	"pages_count": "1",
	"results_path": "results/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/6e8f2f0b-87bc-5bbc-723d-6b63bb982b6c",
	"file_path": "source_files/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/vision_507959f6-f4a1-4424-ac84-065c8e946980.pdf",
	"request_id": "507959f6-f4a1-4424-ac84-065c8e946980",
	"process_type": "vision",
	"number_of_pages": "1",
	"source_type": "source_files",
	"upload_type": "url",
    "results": [
		"payload.json",
		"template.html"
	],
	"tag_id": "baf01f92-8fef-49b7-8cb3-29f46e1bb993"
}


Revisa las salidas generadas por el entrenamiento y, si estás satisfecho con los resultados, copia las rutas correspondientes de los campos “json_path” y “html_path” y agrega delante los nombres de los archivos correspondientes que se encuentran en el campo "results" para actualizar tu Tag. Esta ruta debe iniciar con el prefijo “results_training/”.

Realiza una solicitud al endpoint PUT /tags/{tag_id} para actualizar la información relacionada a tu Tag:

curl -X PUT https://api.gilio.co/v1/files/{tag_id} \
     -H "Content-Type: application/json" \
     -H "X-Api-Key: YOUR_API_KEY" \
     -d '{
            "webhoook": "https://YOUR_WEBHOOK_URL",
            "json_instructions": "Genera respuestas concisas, unicamente la estructura JSON valida y lista para usar, sin caracteres adicionales",
            "html_instructions": "Crea vista HTML facil de imprimir como PDF y que sea visualmente atractiva. Genera de forma concisa, unicamente la estructura HTML lista para usar, sin caracteres adicionales",
            "output_resources": true,
            "json_path": "results_training/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/44bf2d72-ae10-9687-0237-088d612853c7/payload.json",
            "html_path": "results_training/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/44bf2d72-ae10-9687-0237-088d612853c7/template.html"
         }'


🛎️ Importante
  • No olvides actualizar tu Tag con las rutas generadas en json_path y html_path. De esta manera Gilio reconoce las referencias creadas para el procesamiento de tus documentos. No hacerlo puede generar errores o salidas inesperadas.

  • Puedes editar tus instrucciones cuántas veces consideres necesario hasta obtener las salidas deseadas.


Procesa tu Primer Archivo Real 📃

Con tu Tag creado y entrenado, comienza a procesar todos los demás archivos usando el valor “vision” como "process_type". Recuerda que con el campo "request_id" podrás consultar el estado del proceso de tu documento. Los estados disponibles son:

  • SUCCESS_ANALYZE_DOCUMENT: Validaciones iniciales.

  • SUCCESS_JSON_GENERATED: Estructura JSON generada con éxito.

  • SUCCESS_HTML_GENERATED: Estructura HTML generada con éxito.

  • SUCCESS_PDF_GENERATED: Documento PDF generado con éxito (si “output_resources” está activado).

  • SUCCESS_IMAGE_GENERATED: Documento HTML generado con éxito (si “output_resources” está activado).

Este es un ejemplo para iniciar el procesamiento de un archivo con el endpoint POST /files/{tag_id}:

curl -X POST https://api.gilio.co/v1/files/{tag_id} \
     -H "Content-Type: application/json" \
     -H "X-Api-Key: YOUR_API_KEY" \
     -d '{
            "file_url": "https://drive.google.com/uc?export=download&id=1VUOFV0jxnbVMAcIIFRuHZx0tupcTzsZx",
            "process_type": "vision"
         }'


Debes recibir una respuesta como la del ejemplo a continuación. El campo "request_id" es muy importante para consultar el estado del procesamiento en la siguiente solicitud.

{
	"request_id": "c1a25bd0-ee54-4a1f-a6f8-60c65269ad85",
	"source_path": "training/c7a9894a-6cb5-4075-9f2f-ccaa66201b65/1b5f34dd-4aa3-4818-90de-8c2c75b973a0/2024/06/training_c1n25bd0-ee54-4a1f-a6f8-60c65269ad85.pdf"
}


Make a request to the endpoint GET /files/request/{request_id} using the one generated before. You may poll retrieve the information from this endpoint until the processing retrieves the json_payload field and reach the final status.

	{
		"json_payload": "{\n    \"title\": \"PARTE DE OPERACION DEL EQUIPO\",\n    \"page_1\": {\n        \"key_values\": {\n            \"fecha\": \"2024-02-05\",\n            \"equipo\": \"EXCAVADORA\",\n            \"marca\": \"CAT 320\",\n            \"obra\": \"PREFECTURA DEL GUAYAS\",\n            \"operador\": \"LEONARDO ANTHONIO\",\n            \"codigo\": \"MB-362\",\n            \"horometro_hora_inicial\": \"5449\",\n            \"horometro_hora_final\": \"5459\",\n            \"diferencia_horometro\": \"10\",\n            \"km_inicial\": \"\",\n            \"km_final\": \"\",\n            \"jornada_hora_inicial\": \"07:00\",\n            \"jornada_hora_final\": \"18:00\",\n            \"suman_horas_trabajadas\": \"10\",\n            \"codigo_paralizacion\": \"15\",\n            \"paralizacion_inicio\": \"12:00\",\n            \"paralizacion_fin\": \"13:00\",\n            \"suman_horas_paralizadas\": \"1\",\n            \"observaciones\": \"LIMPIANDO PALISADO Y AMPLIACION DE ESTERO QUINTERO MESADO ABAJO\",\n            \"numero_de_referencia\": \"2511642\"\n        },\n        \"table_0\": {\n            \"horas_trabajadas\": {\n                \"horometro_hora_inicial\": \"5449\",\n                \"horometro_hora_final\": \"5459\",\n                \"diferencia_horometro\": \"10\",\n                \"jornada_hora_inicial\": \"07:00\",\n                \"jornada_hora_final\": \"18:00\",\n                \"jornadas\": [\n                    {\n                        \"desde\": \"07:00\",\n                        \"hasta\": \"12:00\",\n                        \"total\": 5\n                    },\n                    {\n                        \"desde\": \"13:00\",\n                        \"hasta\": \"18:00\",\n                        \"total\": 5\n                    }\n                ],\n                \"suma_horas_trabajadas\": \"10\"\n            }\n        },\n        \"table_1\": {\n            \"paralizaciones\": [\n                {\n                    \"codigo\": \"15\",\n                    \"inicio\": \"12:00\",\n                    \"fin\": \"13:00\",\n                    \"total\": 1\n                },\n                {\n                    \"codigo\": \"03\",\n                    \"motivo\": \"CLIMA (LLUVIA - NEBLINA)\"\n                },\n                {\n                    \"codigo\": \"05\",\n                    \"motivo\": \"SIN OPERADOR O CHOFER\"\n                },\n                {\n                    \"codigo\": \"07\",\n                    \"motivo\": \"FALTA DE AREA\"\n                },\n                {\n                    \"codigo\": \"08\",\n                    \"motivo\": \"PARADA POR DAÑO O REPARACION\"\n                },\n                {\n                    \"codigo\": \"09\",\n                    \"motivo\": \"MANTENIMIENTO\"\n                },\n                {\n                    \"codigo\": \"12\",\n                    \"motivo\": \"FALTA DE COMBUSTIBLE\"\n                },\n                {\n                    \"codigo\": \"16\",\n                    \"motivo\": \"TRASLADO DE EQUIPO\"\n                },\n                {\n                    \"codigo\": \"17\",\n                    \"motivo\": \"ABASTECIMIENTO\"\n                },\n                {\n                    \"codigo\": \"18\",\n                    \"motivo\": \"MANTEN. O REPARACION (EQ. ENCENDIDO)\"\n                }\n            ],\n            \"suman_horas_paralizadas\": \"1\"\n        },\n        \"warnings\": []\n    }\n}",
		"size": "181062",
		"process_id": "4882b20a-9dfc-fd4c-82cc-68fa09b3eaba",
		"created_at": "2024-06-25 14:40:40",
		"analysis_keys": [
			"source_files/c7a9894a-6cb5-4075-9f2f-ccaa66201b65/fee75b61-41f7-468d-9e30-3d0cd64256c5/2024/06/vision_d194b181-70c5-41bb-a9fc-c80f905bacf7.jpeg"
		],
		"status": "SUCCESS_PDF_GENERATED",
		"customer_id": "c7a9894a-6cb5-4075-9f2f-ccaa66201b65",
		"source_path": "source_files/c7a9894a-6cb5-4075-9f2f-ccaa66201b65/fee75b61-41f7-468d-9e30-3d0cd64256c5/2024/06/vision_d194b181-70c5-41bb-a9fc-c80f905bacf7.jpeg",
		"pages_count": "1",
		"results_path": "results/c7a9894a-6cb5-4075-9f2f-ccaa66201b65/fee75b61-41f7-468d-9e30-3d0cd64256c5/2024/06/4882b20a-9dfc-fd4c-82cc-68fa09b3eaba",
		"request_id": "d194b181-70c5-41bb-a9fc-c80f905bacf7",
		"process_type": "vision",
		"number_of_pages": "0",
		"results": [
			"payload.json",
			"template-0.html",
			"template-0.pdf"
		],
		"upload_type": "url",
		"source_type": "source_files",
		"tag_id": "fee75b61-41f7-468d-9e30-3d0cd64256c5"
	},


Disfruta los resultados, encuéntralos en el campo "json_payload". Recuerda que puedes volver a entrenar el Tag y añadir Instrucciones para mejorar el proceso y los resultados.

Configura Webhooks 🌐

Configura un Webhook en cada Tag para recibir notificaciones sobre cambios de estado en el procesamiento de documentos. Esto te permite, por ejemplo, iniciar tareas en herramientas de automatización cuando un documento cambia de estado o finaliza su procesamiento o usar la estructura JSON lista para armar un correo electrónico dinámico o un PDF para enviar como archivo adjunto.

curl -X PUT https://api.gilio.co/v1/files/{tag_id} \
     -H "Content-Type: application/json" \
     -H "X-Api-Key: YOUR_API_KEY" \
     -d '{
            "webhoook": "https://YOUR_WEBHOOK_URL",
         }

🛎️ Importante
  • Los webhooks deben ser URLs públicas de tipo POST que procesen cuerpos en formato JSON


Gestiona tus Tags y Archivos 🗃️

Puedes crear tantos Tags como necesites según el tipo de documentos que quieras procesar. Consulta una lista de ellos y sus configuraciones con el endpoint GET /tags/customer/{customer_id}:

curl -X GET https://api.gilio.co/v1/tags/customer/{customer_id} \
     -H "Content-Type: application/json" \
     -H "X-Api-Key: YOUR_API_KEY"


Recibirás una respuesta como la siguiente:

[
	{
		"updated_at": "2024-06-16T13:48:28.964025",
		"created_at": "2024-06-15 22:55:48.116388",
		"html_instructions": "Crea vista HTML facil de imprimir como PDF y que sea visualmente atractiva. Genera de forma concisa, unicamente la estructura HTML lista para usar, sin caracteres adicionales",
		"json_path": "results_training/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/44bf2d72-ae10-9687-0237-088d612853c7/payload.json",
		"required_pages": [
			1
		],
		"html_path": "results_training/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/44bf2d72-ae10-9687-0237-088d612853c7/template.html",
		"json_instructions": "Genera respuestas concisas, unicamente la estructura JSON valida y lista para usar, sin caracteres adicionales",
		"customer_id": "f6b78b0c-d404-47ab-906b-6aec72de5008",
		"output_resources": true,
		"tag_name": "ORDEN_INSTALACION",
		"description": "Orden de Instalacion de Equipos",
		"tag_id": "baf01f92-8fef-49b7-8cb3-29f46e1bb993"
	},
    {
      ...
    }
]


Finalmente, consulta una lista de los archivos procesados, sus estados, resultados y metadata disponible haciendo una peticion al endpoint GET /files/{tag_id}:

curl -X GET https://api.gilio.co/v1/files/{tag_id} \
     -H "Content-Type: application/json" \
     -H "X-Api-Key: YOUR_API_KEY"


Te devolverá una respuesta como ésta:

[
	{
		"size": "42886",
		"process_id": "6e8f2f0b-87bc-5bbc-723d-6b63bb982b6c",
		"created_at": "2024-06-16 13:48:33",
		"analysis_keys": [
			"results/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/6e8f2f0b-87bc-5bbc-723d-6b63bb982b6c/page-0.jpeg"
		],
		"status": "SUCCESS_ANALYZING_DOCUMENT",
		"customer_id": "f6b78b0c-d404-47ab-906b-6aec72de5008",
		"source_path": "source_files/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/vision_507959f6-f4a1-4424-ac84-065c8e946980.pdf",
		"pages_count": "1",
		"results_path": "results/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/6e8f2f0b-87bc-5bbc-723d-6b63bb982b6c",
		"file_path": "source_files/f6b78b0c-d404-47ab-906b-6aec72de5008/baf01f92-8fef-49b7-8cb3-29f46e1bb993/2024/06/vision_507959f6-f4a1-4424-ac84-065c8e946980.pdf",
		"request_id": "507959f6-f4a1-4424-ac84-065c8e946980",
		"process_type": "vision",
		"number_of_pages": "1",
		"upload_type": "url",
		"source_type": "source_files",
		"tag_id": "baf01f92-8fef-49b7-8cb3-29f46e1bb993"
	},
	{
		"size": "42886",
		"process_id": "aca52db7-024a-97af-1d16-21f9953e1ffc",
		"created_at": "2024-06-16 13:29:50",
      ...
    }
  ]


¡Y eso es todo! Ahora estás listo para empezar a utilizar Gilio API y transformar la manera en que gestionas tus documentos. Si tienes alguna duda, no dudes en contactarnos. ¡Estamos aquí para ayudarte a tener éxito! 🚀