API-referentie

l33d.be/developers

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://powerchaos.com/api/dropship/status

Endpoints

GET /api/dropship/statusToken testen — geeft je accountnaam, credits-saldo en of betalen op factuur beschikbaar is.
GET /api/dropship/productsAlle actieve producten met prijzen in centen, de volledige staffelkorting per aantal, én photo_url + gravure_zone.
GET /api/dropship/ordersJe bestellingen met status, eindklant en track & trace.
GET /api/dropship/addressesJe adresboek van eindklanten (te beheren in het dropship-paneel).
POST /api/dropship/position-sessionsHosted 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/previewVoorvertoning zonder te bestellen — stuur tekst/logo en ontvang een preview-link (1 uur geldig).
POST /api/dropship/ordersBestelling 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://powerchaos.com/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 …