Beta

Automatización de Contratación

API integral para enviar y retirar ofertas en 5 portales de licitación pública. Cifrado, carga de archivos y registro paso a paso — todo a través de una única API REST. Actualmente en beta — para solicitar acceso, contáctenos.

Portales compatibles

GET/api/v2/procurement/portals

NEN (nen.nipez.cz), E-ZAK (URL de instancia), TenderArena, Eveza (URL de instancia), E-zakazky.cz (URL de instancia). E-ZAK, Eveza y E-zakazky requieren portalUrl — la URL de la instancia específica.

Envío de una oferta

POST/api/v2/procurement/bids

Parámetros del cuerpo

ParámetroTipoDescripción
portal*stringNEN | EZAK | TENDERARENA | EVEZA | EZAKAZKY
tenderId*stringID de la licitación en el portal
credentialIdstringID de credencial almacenada (o proporcionar credenciales)
credentialsobject{username, password, portalUrl?} — alternativa a credentialId
filesarray[{name, url, size}] — archivos de la oferta
criteriaarray[{name, value}] — criterios de evaluación
tenderTitlestringTítulo de la licitación (para resumen)
dryRunbooleantrue = prueba sin envío final
curl -X POST https://veritra.io/api/v2/procurement/bids \
  -H "X-API-Key: mrw_procurement_..." \
  -H "Content-Type: application/json" \
  -d '{
    "portal": "NEN",
    "tenderId": "N006-24-V00012345",
    "credentialId": "clx1abc...",
    "files": [{"name": "oferta.pdf", "url": "https://..."}],
    "criteria": [{"name": "Precio de la oferta", "value": "1500000"}]
  }'
{
  "jobId": "clx1abc...",
  "status": "PENDING",
  "message": "Job created — will be processed by cron"
}

Estado del trabajo

GET/api/v2/procurement/bids/:jobId
{
  "id": "clx1abc...",
  "type": "SUBMIT_BID",
  "status": "COMPLETED",
  "portal": "NEN",
  "steps": [
    {"step": 1, "action": "login", "status": "ok", "durationMs": 1240},
    {"step": 2, "action": "load_tender", "status": "ok", "durationMs": 890},
    {"step": 3, "action": "encrypt", "status": "ok", "durationMs": 320},
    {"step": 4, "action": "upload_file", "status": "ok", "durationMs": 2100},
    {"step": 5, "action": "submit", "status": "ok", "durationMs": 1560}
  ]
}

Lista de ofertas

GET/api/v2/procurement/bids

Retirada de una oferta

DELETE/api/v2/procurement/bids/:jobId

Parámetros del cuerpo

ParámetroTipoDescripción
reasonstringMotivo de la retirada (opcional)

Análisis de IA

POST/api/v2/procurement/analyze
ParámetroTipoDescripción
tenderId*stringID de licitación en la base de datos RWX

Devuelve un JSON estructurado con más de 50 campos: título, valor, criterios, requisitos, riesgos, recomendaciones de IA y estimación de probabilidad de éxito.

Credenciales del portal

Gestione las credenciales del portal en el panel de control en /dashboard/procurement/credentials. Las contraseñas se cifran con AES-256-GCM y nunca se almacenan en texto plano.

Coste en créditos

ParámetroTipoDescripción
Enviar ofertaPOST bids50 créditos
Retirar ofertaDELETE bids/:id20 créditos
Análisis de IAPOST analyze10 créditos
Lectura (listado, detalle)GET1 crédito
Listar portalesGET portals0 créditos

Flujo de trabajo

Flujo típico: 1) Guardar credenciales en el panel de control → 2) Probar inicio de sesión → 3) Buscar una licitación (GET tenders) → 4) Analizar la documentación (POST analyze) → 5) Enviar una oferta (POST bids) → 6) Supervisar el estado (GET bids/:jobId)