Authenticatie
Elke aanroep draagt je API-token als Bearer-header. Het token vind je (na gratis activatie van dropshipping op je account) in het dropship-paneel onder API.
curl -H "Authorization: Bearer JOUW_TOKEN" https://l33d.be/api/dropship/status
Endpoints
| GET /api/dropship/status | Token testen — geeft je accountnaam, credits-saldo en of betalen op factuur beschikbaar is. |
| GET /api/dropship/products | Alle actieve producten met prijzen in centen, de volledige staffelkorting per aantal, én photo_url + gravure_zone. |
| GET /api/dropship/orders | Je bestellingen met status, eindklant en track & trace. |
| GET /api/dropship/addresses | Je adresboek van eindklanten (te beheren in het dropship-paneel). |
| POST /api/dropship/position-sessions | Hosted positioneren (aanbevolen): maak een sessie voor een product en krijg een whitelabel L33D-link terug naar de volledige gravure-editor. Zie Logo positioneren. |
| GET /api/dropship/position-sessions/{token} | Resultaat ophalen: status, de volledige layout en een voorvertoning. |
| POST /api/dropship/preview | Voorvertoning zonder te bestellen — stuur tekst/logo en ontvang een preview-link (1 uur geldig). |
| POST /api/dropship/orders | Bestelling plaatsen — zie hieronder. |
Bestelling plaatsen
De prijs in het antwoord is wat jij aan L33D betaalt voor deze bestelling (staffels, jouw eigen korting, tweezijdig/rotary-toeslag, btw-regime, verzendkost op het eindklant-adres) — dat is dus je kostprijs, niet wat je aan je eigen klant aanrekent (die prijs bepaal je zelf, volledig los van L33D). Je hoeft zelf niets te herrekenen — L33D doet dat server-side, als integriteitscheck. Betaling: standaard met je credits (de bestelling gaat dan direct in productie). Onvoldoende saldo of "payment": "link"/"invoice" → betaallink of op factuur (indien toegestaan op je account).
Optie A — via een hosted positioneer-sessie (aanbevolen, ondersteunt alles: multi-tekst, multi-logo, rotary, tweezijdig)
curl -X POST https://l33d.be/api/dropship/orders \
-H "Authorization: Bearer JOUW_TOKEN" -H "Content-Type: application/json" \
-d '{
"reference": "WC-1042",
"address": { "first_name": "Jan", "last_name": "Peeters",
"street": "Kerkstraat", "house_number": "12",
"postal_code": "3500", "city": "Hasselt", "country": "BE" },
"items": [
{ "quantity": 2, "position_session_token": "…uit de bevestigde sessie…" }
]
}'
Optie B — eenvoudige tekst + één logo, rechtstreeks (geen positioneer-sessie)
{
"items": [
{ "product_id": 1, "quantity": 2, "text": "Voor opa" },
{ "product_id": 1, "quantity": 1,
"logo_url": "https://jouwsite.be/logo.png",
"logo_position": { "cx": 0.5, "cy": 0.5, "w": 0.4, "angle": 90 } }
]
}
// logo_url (wij downloaden) of logo_base64 — PNG/JPG/WebP, max 5 MB.
// Zonder logo_position centreren we automatisch in de gravurezone.
Antwoord (201): order_number, total_cents, paid, insufficient_credits, credit_balance_cents, pay_url, track_url. Je kan ook "address_id" uit je adresboek meesturen i.p.v. een volledig adres.
Webhooks
Stel in het dropship-paneel een webhook-URL in en wij POST'en een JSON-event bij elke statuswijziging (order.status_changed) en zodra er track & trace is (order.tracking_added). Verifieer de afzender via de header X-L33D-Signature: een sha256-HMAC over de rauwe body met jouw API-token als sleutel.
// PHP-voorbeeld: handtekening controleren
$body = file_get_contents('php://input');
$sig = $_SERVER['HTTP_X_L33D_SIGNATURE'] ?? '';
if (!hash_equals(hash_hmac('sha256', $body, 'JOUW_TOKEN'), $sig)) {
http_response_code(401); exit;
}
$event = json_decode($body, true);
// $event['event'] === 'order.status_changed' | 'order.tracking_added' | 'test'
// $event['data'] => order_number, status, tracking_code, tracking_url, end_customer …