Inkoopautomatisering
End-to-end API voor het indienen en intrekken van biedingen op 5 openbare aanbestedingsportalen. Versleuteling, bestandsupload en stapsgewijze logging — alles via één enkele REST API. Momenteel in bèta — om toegang aan te vragen kunt u contact met ons opnemen.
Ondersteunde portalen
/api/v2/procurement/portalsNEN (nen.nipez.cz), E-ZAK (instantie-URL), TenderArena, Eveza (instantie-URL), E-zakazky.cz (instantie-URL). E-ZAK, Eveza en E-zakazky vereisen portalUrl — de URL van de specifieke instantie.
Een bieding indienen
/api/v2/procurement/bidsBodyparameters
| Parameter | Type | Beschrijving |
|---|---|---|
| portal* | string | NEN | EZAK | TENDERARENA | EVEZA | EZAKAZKY |
| tenderId* | string | Aanbestedings-ID op het portaal |
| credentialId | string | Opgeslagen referentie-ID (of geef inloggegevens mee) |
| credentials | object | {username, password, portalUrl?} — alternatief voor credentialId |
| files | array | [{name, url, size}] — biedingsbestanden |
| criteria | array | [{name, value}] — gunningscriteria |
| tenderTitle | string | Aanbestedingstitel (voor overzicht) |
| dryRun | boolean | true = test zonder definitieve indiening |
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": "bod.pdf", "url": "https://..."}],
"criteria": [{"name": "Biedprijs", "value": "1500000"}]
}'{
"jobId": "clx1abc...",
"status": "PENDING",
"message": "Job created — will be processed by cron"
}Taakstatus
/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}
]
}Biedenlijst
/api/v2/procurement/bidsEen bod intrekken
/api/v2/procurement/bids/:jobIdBodyparameters
| Parameter | Type | Beschrijving |
|---|---|---|
| reason | string | Reden voor intrekking (optioneel) |
AI-analyse
/api/v2/procurement/analyze| Parameter | Type | Beschrijving |
|---|---|---|
| tenderId* | string | Aanbestedings-ID in de RWX-database |
Geeft een gestructureerde JSON terug met 50+ velden: titel, waarde, criteria, kwalificaties, risico's, AI-aanbevelingen en een schatting van de winkans.
Portaalgegevens
Beheer portaalgegevens in het dashboard op /dashboard/procurement/credentials. Wachtwoorden worden versleuteld met AES-256-GCM en nooit in platte tekst opgeslagen.
Creditkosten
| Parameter | Type | Beschrijving |
|---|---|---|
| Bod indienen | POST bids | 50 credits |
| Bod intrekken | DELETE bids/:id | 20 credits |
| AI-analyse | POST analyze | 10 credits |
| Lezen (lijst, detail) | GET | 1 credit |
| Portalen weergeven | GET portals | 0 credits |
Workflow
Typische stroom: 1) Sla gegevens op in het dashboard → 2) Test de inlog → 3) Zoek een aanbesteding (GET tenders) → 4) Analyseer de documentatie (POST analyze) → 5) Dien een bod in (POST bids) → 6) Volg de status (GET bids/:jobId)