La API de Croma ya no solo responde por fuentes oficiales. Desde hoy puedes pasarle una URL o una pregunta y recibir contenido listo para usar en tu producto.
Son cuatro endpoints, todos bajo /global, todos con el mismo esquema de autenticación y de errores que el resto de la API.
Extraer una página como markdown#
POST /global/extract/markdown/v1 devuelve el contenido legible de una página, sin navegación, sin banners y sin scripts.
curl https://api.croma.run/global/extract/markdown/v1 \
-H "Authorization: Bearer $CROMA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://ejemplo.gov.co/resolucion-1234",
"scope": "main"
}'scope acepta main para quedarte solo con el cuerpo del artículo, o full cuando necesitas la página completa. La guía completa está en extract.
Extraer campos con un esquema#
POST /global/extract/json/v1 recibe un JSON Schema y devuelve exactamente esos campos. Útil cuando ya sabes qué necesitas y no quieres parsear texto.
curl https://api.croma.run/global/extract/json/v1 \
-H "Authorization: Bearer $CROMA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://ejemplo.gov.co/resolucion-1234",
"json_schema": {
"type": "object",
"properties": {
"numero": { "type": "string" },
"fecha": { "type": "string" },
"entidad": { "type": "string" }
},
"required": ["numero", "fecha"]
}
}'Si el esquema no es válido la respuesta es un 400 que nombra el campo, no un error genérico:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_param",
"param": "json_schema",
"message": "`json_schema` was rejected. It must be a valid JSON Schema object describing the fields you want."
}
}Generar datos estructurados#
POST /global/generate/json/v1 no necesita una URL. Le das una instrucción y un esquema, y devuelve el objeto. Los detalles están en generate.
Investigación con fuentes#
POST /global/research/v1 recibe una pregunta y devuelve un informe con las fuentes que consultó y cuántas páginas analizó. Es el endpoint más lento de la API y tiene su propio límite, explicado en research.
Límites#
| Endpoint | Límite por organización |
|---|---|
/global/extract/markdown/v1 | 60 solicitudes / hora |
/global/extract/json/v1 | 60 solicitudes / hora |
/global/generate/json/v1 | 60 solicitudes / hora |
/global/research/v1 | 10 solicitudes / hora |
Los cuatro están disponibles también como herramientas MCP, así que tu asistente puede llamarlos sin que escribas código. La referencia completa está en la documentación.
Por qué viven en la misma API#
Consultar un registro público casi nunca es el trabajo completo. Encuentras la resolución, y después hay que leerla, sacarle tres campos, resumirla y cruzarla con lo que ya tenías. Ese pedazo casi siempre termina resuelto con un proveedor aparte: otra llave, otro contrato, otro formato de errores, otra factura.
Nos parece que no tiene por qué ser así. Ya tienes una llave nuestra y ya sabes cómo respondemos cuando algo sale mal. Estos cuatro endpoints usan exactamente eso: el mismo Authorization, el mismo esquema de errores, los mismos límites por organización. Integrarlos es leer una página de documentación, no arrancar una evaluación de vendors.
Ahí está la ventaja real de haber construido esto nosotros. Cada capacidad que agregamos entra por la misma puerta y le sirve a todo lo que ya tienes conectado, en lugar de sumar una pieza más que mantener.
Vamos a seguir por ese camino. Si hay algo que hoy resuelves con un servicio aparte y que tendría sentido pedirle a la misma API, cuéntanos: esa lista es la que estamos usando para decidir qué sigue.