La contratación pública, dentro de tu producto
Busca licitaciones, descarga sus documentos con el texto ya leído, consulta adjudicaciones, lanza análisis con IA y recibe avisos automáticos en tu servidor. Una sola clave, los filtros propios de cada país y créditos que ves en todo momento.
export IAL_API_KEY="ilk_live_..."
curl -X POST "https://api.ialicitaciones.com/v1/search" \
-H "Authorization: Bearer $IAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"country":"ES","q":"limpieza","per_page":5}'Autenticación
Crea la clave desde Ajustes → API. Empieza por ilk_live_ y solo se muestra una vez. Se envía en cada llamada:
Authorization: Bearer ilk_live_xxxxxxxxxxxxxxxxCada clave tiene permisos por apartado (búsqueda, fichas, IA, avisos, webhooks), puede limitarse a ciertos países, tiene caducidad opcional y se anula al instante.
Créditos y límites
- · Búsqueda, ficha y adjudicaciones: 1 crédito
- · Documentos con texto: 3 · Lectura bajo demanda: 5
- · Resumen y requisitos: 25 · Análisis, estrategia, anexos y mercado: 40
- · Consultar el estado de una tarea: gratis
Plan Business: bolsa mensual incluida. Enterprise: bolsa ampliada y límites a medida. El saldo se repone cada periodo de facturación y los packs adicionales se suman al saldo. Límite por defecto: 120 llamadas por minuto y clave, con cabeceras X-RateLimit-*.
Pruébala aquí mismo
Pega tu clave y lanza una llamada real. La clave se queda en tu navegador: no la guardamos.
// La respuesta aparecerá aquíReferencia de endpoints
Cuenta y catálogo
Estado de tu clave, créditos disponibles y filtros válidos en cada país.
GET/healthgratis
Comprobación de disponibilidad (sin clave).
Permiso necesario: —
curl -X GET "https://api.ialicitaciones.com/v1/health" \
-H "Authorization: Bearer $IAL_API_KEY"GET/openapi.jsongratis
Especificación OpenAPI completa (sin clave).
Permiso necesario: —
curl -X GET "https://api.ialicitaciones.com/v1/openapi.json" \
-H "Authorization: Bearer $IAL_API_KEY"GET/megratis
Datos de la clave, créditos usados y restantes del periodo.
Permiso necesario: search
curl -X GET "https://api.ialicitaciones.com/v1/me" \
-H "Authorization: Bearer $IAL_API_KEY"GET/countries/{code}/schemagratis
Filtros admitidos, valores válidos y tareas de IA de ese país.
Permiso necesario: search
curl -X GET "https://api.ialicitaciones.com/v1/countries/ES/schema" \
-H "Authorization: Bearer $IAL_API_KEY"Búsqueda y fichas
El mismo buscador de Explorar, con los filtros propios de cada país.
POST/search1 créd.
Busca licitaciones por texto y filtros del país.
Permiso necesario: search
curl -X POST "https://api.ialicitaciones.com/v1/search" \
-H "Authorization: Bearer $IAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "pais": "ES", "q": "limpieza", "exclude_awarded": true, "page": 1, "per_page": 20 }'GET/tenders/{id}1 créd.
Ficha completa de una licitación con sus lotes.
Permiso necesario: tenders
curl -X GET "https://api.ialicitaciones.com/v1/tenders/LICITACION_ID" \
-H "Authorization: Bearer $IAL_API_KEY"GET/tenders/{id}/documents3 créd.
Documentos de la licitación (texto extraído incluido).
Permiso necesario: tenders
curl -X GET "https://api.ialicitaciones.com/v1/tenders/LICITACION_ID/documents" \
-H "Authorization: Bearer $IAL_API_KEY"GET/tenders/{id}/awards1 créd.
Adjudicaciones, adjudicatarios e importes.
Permiso necesario: tenders
curl -X GET "https://api.ialicitaciones.com/v1/tenders/LICITACION_ID/awards" \
-H "Authorization: Bearer $IAL_API_KEY"Documentos
Añade documentos propios y pide su lectura para que la IA los use.
POST/tenders/{id}/documents1 créd.
Registra un documento externo por URL.
Permiso necesario: tenders
curl -X POST "https://api.ialicitaciones.com/v1/tenders/LICITACION_ID/documents" \
-H "Authorization: Bearer $IAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://ejemplo.org/pliego.pdf", "tipo": "pliego" }'POST/tenders/{id}/documents/extract5 créd.
Lanza la lectura del texto de los documentos.
Permiso necesario: tenders
curl -X POST "https://api.ialicitaciones.com/v1/tenders/LICITACION_ID/documents/extract" \
-H "Authorization: Bearer $IAL_API_KEY"Inteligencia artificial
Tareas en segundo plano. Devuelven un identificador y el resultado se consulta después.
POST/ai/{tarea}25 créd.
resumen (25) · requisitos (25) · analisis (40) · estrategia (40) · anexos (40) · mercado (40). Se adapta sola al país.
Permiso necesario: ai
curl -X POST "https://api.ialicitaciones.com/v1/ai/resumen" \
-H "Authorization: Bearer $IAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "licitacion_id": "…", "expediente_id": null }'GET/jobs/{id}gratis
Estado y resultado de una tarea de IA.
Permiso necesario: ai
curl -X GET "https://api.ialicitaciones.com/v1/jobs/LICITACION_ID" \
-H "Authorization: Bearer $IAL_API_KEY"Avisos
Crea y gestiona los avisos guardados del espacio de trabajo.
GET/alertsgratis
Lista los avisos del espacio de trabajo.
Permiso necesario: alerts
curl -X GET "https://api.ialicitaciones.com/v1/alerts" \
-H "Authorization: Bearer $IAL_API_KEY"POST/alerts1 créd.
Crea un aviso.
Permiso necesario: alerts
curl -X POST "https://api.ialicitaciones.com/v1/alerts" \
-H "Authorization: Bearer $IAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "nombre": "Limpieza Madrid", "paises": ["ES"], "keywords": ["limpieza"], "provincias": ["Madrid"], "frecuencia": "diaria" }'GET/alerts/{id}gratis
Detalle de un aviso.
Permiso necesario: alerts
curl -X GET "https://api.ialicitaciones.com/v1/alerts/LICITACION_ID" \
-H "Authorization: Bearer $IAL_API_KEY"PATCH/alerts/{id}1 créd.
Modifica un aviso.
Permiso necesario: alerts
curl -X PATCH "https://api.ialicitaciones.com/v1/alerts/LICITACION_ID" \
-H "Authorization: Bearer $IAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "activa": false }'DELETE/alerts/{id}1 créd.
Elimina un aviso.
Permiso necesario: alerts
curl -X DELETE "https://api.ialicitaciones.com/v1/alerts/LICITACION_ID" \
-H "Authorization: Bearer $IAL_API_KEY"Avisos automáticos (webhooks)
Te enviamos cada novedad a tu servidor, firmada y con reintentos.
GET/webhooksgratis
Lista los destinos configurados.
Permiso necesario: webhooks
curl -X GET "https://api.ialicitaciones.com/v1/webhooks" \
-H "Authorization: Bearer $IAL_API_KEY"POST/webhooks1 créd.
Registra un destino. La clave de firma se muestra una sola vez.
Permiso necesario: webhooks
curl -X POST "https://api.ialicitaciones.com/v1/webhooks" \
-H "Authorization: Bearer $IAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://tuservidor.com/hooks/ialicitaciones", "events": ["tender.matched", "tender.award_published"] }'DELETE/webhooks/{id}1 créd.
Elimina un destino.
Permiso necesario: webhooks
curl -X DELETE "https://api.ialicitaciones.com/v1/webhooks/LICITACION_ID" \
-H "Authorization: Bearer $IAL_API_KEY"GET/webhooks/{id}/deliveriesgratis
Últimos envíos con estado, código y error.
Permiso necesario: webhooks
curl -X GET "https://api.ialicitaciones.com/v1/webhooks/LICITACION_ID/deliveries" \
-H "Authorization: Bearer $IAL_API_KEY"POST/webhooks/{id}/test1 créd.
Envía un evento de prueba (test.ping).
Permiso necesario: webhooks
curl -X POST "https://api.ialicitaciones.com/v1/webhooks/LICITACION_ID/test" \
-H "Authorization: Bearer $IAL_API_KEY"22 endpoints en la versión v1. Los cambios que rompan compatibilidad irán a v2 con aviso previo.
Tareas de IA en segundo plano
Las tareas pesadas no bloquean tu llamada: lanzas la tarea, recibes un identificador y consultas el resultado (o lo recibes por webhook). Cada tarea usa automáticamente la versión adaptada a la normativa del país de la licitación.
# 1. Lanzas la tarea (devuelve un identificador)
curl -X POST "https://api.ialicitaciones.com/v1/ai/resumen" \
-H "Authorization: Bearer $IAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"licitacion_id":"LICITACION_ID"}'
# => { "job_id": "…", "status": "queued", "poll_url": "https://api.ialicitaciones.com/v1/jobs/…" }
# 2. Consultas el resultado cada pocos segundos
curl "https://api.ialicitaciones.com/v1/jobs/JOB_ID" -H "Authorization: Bearer $IAL_API_KEY"
# => { "status": "done", "result": { … } }Avisos automáticos
tender.matchedUna licitación nueva encaja con uno de tus avisos.
tender.award_publishedSe publica la adjudicación de una licitación que sigues.
test.pingEvento de prueba que puedes lanzar cuando quieras.
Cada envío va firmado y se reintenta hasta 6 veces (1, 5, 15, 60, 180 y 720 minutos) si tu servidor falla. Verifica siempre la firma antes de procesar el contenido:
# Cabeceras que recibes en cada envío
X-IAL-Event: tender.matched
X-IAL-Delivery: 1234
X-IAL-Timestamp: 1758220800
X-IAL-Signature: sha256=<hmac>
# hmac = HMAC_SHA256(secreto, "<timestamp>.<cuerpo exacto>")Un esquema por país
Cada país tiene sus propios filtros y clasificaciones. Consulta GET /countries/{code}/schema y recibirás los filtros válidos, sus valores admitidos y las tareas de IA disponibles allí.
CPV, provincia, órgano, estado, importe
CPV, región, estado, importe
CPV, nación, estado, importe
Objeto, subobjeto, modalidad, institución
Entidad, orden de gobierno, carácter, CUCoP
UNSPSC, departamento, modalidad, entidad
UNSPSC, organismo, moneda, tipo de compra
UNSPSC, institución, procedimiento
CPC, provincia, tipo de contratación
Objeto, departamento, entidad
ONU/UNSPSC, región, organismo
Errores
401Falta la clave o no es válida.402Sin créditos en el periodo actual.403La clave no tiene permiso para ese apartado o ese país.404El recurso no existe.422Filtro o campo no admitido (te indicamos cuáles valen).429Demasiadas llamadas por minuto. Reintenta según Retry-After.{
"error": {
"code": "insufficient_credits",
"message": "Sin créditos en el periodo actual",
"credits_remaining": 0
}
}¿Empezamos?
La API viene incluida en el plan Business. Si necesitas un volumen mayor o un acuerdo a medida, hablamos y lo ajustamos.