REST API v1
Conversielek API
Trigger audits vanuit je eigen tooling, CI/CD-pipeline of dashboard. Bearer-token auth, JSON in/uit. Eén endpoint.
Quick start
Drie stappen om je eerste programmatic audit te triggeren:
- 1Maak een API-key aan op /account/api-keys. Bewaar de plain key — wordt éénmaal getoond.
- 2Base64-encode 1-5 screenshots van je webshop (PNG/JPG/WebP).
- 3POST naar
/api/v1/auditsmet Bearer-header en JSON-payload.
Authenticatie
Alle requests vereisen een Bearer-token in de Authorization-header. Plain keys hebben format cl_<32 hex chars>.
Authorization: Bearer cl_a1b2c3d4e5f6...- · Keys zijn revocable via /account/api-keys.
- · Hashing: SHA-256 server-side. Plain key wordt nooit opgeslagen.
- · Per-key usage-tracking (last_used_at + count).
POST /api/v1/audits
Triggert een nieuwe audit. Synchroon: response na succesvolle AI-call (kan 30-90s duren). Output wordt opgeslagen in je account.
Request body
{
"flowType": "checkout",
"webshopName": "Mijn Webshop",
"webshopUrl": "https://mijnwebshop.nl",
"productCategory": "fashion",
"targetAudience": "vrouwen 25-45 jaar",
"currentChallenge": "hoge cart abandonment in checkout",
"screenshots": [
{
"name": "step1.png",
"type": "image/png",
"base64": "iVBORw0KGgoAAAANS..."
}
]
}Veld-beschrijvingen
flowTypestringrequired
Welke flow. Eén van:
homepage, product, cart, checkout, mobilewebshopNamestringrequired
Naam van de webshop (zichtbaar in rapport).
webshopUrlstringoptional
Volledige URL inclusief https://.
productCategorystringrequired
Productcategorie (bv. "fashion", "electronics").
targetAudiencestringoptional
Korte beschrijving doelgroep. Maakt audit relevanter.
currentChallengestringoptional
Wat probeert je shop op te lossen? (1-2 zinnen).
screenshotsarrayrequired
1-5 screenshots als base64. Elke item:
{ name?, type, base64 }.Response (200 OK)
{
"ok": true,
"auditId": "550e8400-e29b-41d4-a716-446655440000",
"result": {
"overall_score": 6.8,
"summary": "Sterke productpagina's, maar checkout verliest vertrouwen...",
"trust_score": 7.2,
"issues": [...],
"quick_wins": [...],
"nl_specific_checks": {...},
"nl_deep_checks": [...],
"avg_deep_checks": [...]
}
}Foutcodes
401AUTH_MISSING / AUTH_INVALID
Bearer-header ontbreekt of key ongeldig/ingetrokken.
400BAD_FLOW / BAD_INPUT / NO_SCREENSHOTS
Validation. Zie
error-veld voor detail.413BODY_TOO_LARGE
Request body >25 MB. Comprimeer screenshots.
502AI_ERROR / AI_PARSE_FAIL
AI-provider down of returnde non-JSON. Retry na 30s.
500NO_AI_KEY
Server-misconfiguratie. Mail support.
Voorbeelden
cURL
curl -X POST https://conversielek.nl/api/v1/audits \
-H "Authorization: Bearer cl_YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"flowType": "checkout",
"webshopName": "Mijn Shop",
"productCategory": "fashion",
"screenshots": [
{ "type": "image/png", "base64": "'"$(base64 -i screenshot.png)"'" }
]
}'Node.js (fetch)
import fs from 'node:fs/promises';
const screenshot = await fs.readFile('screenshot.png');
const base64 = screenshot.toString('base64');
const res = await fetch('https://conversielek.nl/api/v1/audits', {
method: 'POST',
headers: {
'Authorization': 'Bearer cl_YOUR_KEY_HERE',
'Content-Type': 'application/json',
},
body: JSON.stringify({
flowType: 'checkout',
webshopName: 'Mijn Shop',
productCategory: 'fashion',
screenshots: [{ type: 'image/png', base64 }],
}),
});
const { ok, auditId, result } = await res.json();
console.log('Score:', result.overall_score);Python (requests)
import base64
import requests
with open('screenshot.png', 'rb') as f:
b64 = base64.b64encode(f.read()).decode()
r = requests.post(
'https://conversielek.nl/api/v1/audits',
headers={'Authorization': 'Bearer cl_YOUR_KEY_HERE'},
json={
'flowType': 'checkout',
'webshopName': 'Mijn Shop',
'productCategory': 'fashion',
'screenshots': [{'type': 'image/png', 'base64': b64}],
},
)
data = r.json()
print('Score:', data['result']['overall_score'])Belangrijk om te weten
- Audits zijn synchroon — verwacht 30-90s response-tijd. Configureer je client-side timeout op minstens 120s.
- Rate-limit: gedeelde Anthropic-quota geldt. Bij 429-responses: exponential backoff.
- Output wordt opgeslagen in je account en is zichtbaar via de webapp. Goed voor team-collab en historie-tracking.
- API-versionering: huidig: v1. Breaking changes krijgen v2 op aparte path. Geen sunset-policy voor v1 voorlopig.
- Support: mail info@trofsof.com voor bugs of feature-requests.