Naar de inhoud

Supply API

v1

De koppeling waarmee publishers, agencies en AI-agents aanvragen aanleveren aan jouw OXIAE-platform.

https://api.oxiae.com/api

Introductie

De Supply API is bedoeld voor partijen die aanvragen aanleveren aan jouw OXIAE-platform: publishers, agencies, formulieren en AI-agents. Je stuurt een aanvraag in met herkomst en consent, en vraagt daarna de status op. Elke aanvraag wordt toegeschreven aan de organisatie van de gebruikte sleutel. Alle aanroepen verlopen over HTTPS en geven JSON terug, binnen je eigen white-label omgeving. Afnemers halen deze aanvragen weer op via de Demand API.

Authenticatie

De Supply API gebruikt API-sleutels. Stuur je sleutel mee als Bearer-token in de Authorization-header (of via X-Api-Key). Sleutels beheer je zelf, onder je eigen merk, onder Instellingen → API-sleutels. Elke sleutel hoort bij één organisatie, en aanvragen die je met die sleutel instuurt worden aan die organisatie als bron toegeschreven.

curl https://api.oxiae.com/api/supply/leads \
  -X POST \
  -H "Authorization: Bearer oxa_3f9a2b7c8d1e4f60a1b2c3d4" \
  -H "Content-Type: application/json"
Veilig met sleutels omgaan
  • Gebruik sleutels alleen server-side, nooit in een browser of app.
  • Roteer sleutels periodiek en trek gelekte sleutels direct in.
  • Gebruik één sleutel per integratie, zodat je gericht kunt intrekken.
  • Elke sleutel kent een rate limit; standaard 120 verzoeken per minuut.
POST /api/supply/leads

Aanvraag insturen

Levert één aanvraag aan. Herkomst en consent leg je in dezelfde aanroep vast, zodat elke lead zijn eigen bewijs meedraagt. Bij succes krijg je het interne id en een public_access_token terug waarmee je de status opvraagt.

Verplichte velden

first_namestring
Voornaam van de aanvrager.
last_namestring
Achternaam van de aanvrager.
emailstring
Geldig e-mailadres.
phonestring
Telefoonnummer, inclusief landcode.
postcodestring
Postcode van de aanvrager.
descriptionstring
De aanvraag of hulpvraag zelf (max 5.000 tekens).

Optionele velden (herkomst & consent)

utm_source · utm_medium · utm_campaign · utm_term · utm_contentstring
Herkomst: campagnegegevens, worden vastgelegd bij de aanvraag.
gclid · partner_id · channel · referrer · landing_pagestring
Herkomst: klik-id, partner, kanaal en bron-URL.
consentboolean
Of de aanvrager toestemming heeft gegeven.
consent_textstring
De exacte toestemmingstekst die is getoond.
consent_versionstring
Versie-aanduiding van de toestemmingstekst.
consent_basisenum
Grondslag: consent, contract, legitimate_interest of legal_obligation.
Verzoek
curl https://api.oxiae.com/api/supply/leads \
  -X POST \
  -H "Authorization: Bearer oxa_3f9a2b7c8d1e4f60a1b2c3d4" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Sanne",
    "last_name": "de Vries",
    "email": "sanne@voorbeeld.nl",
    "phone": "+31612345678",
    "postcode": "1011AB",
    "description": "Ik zoek hulp bij een arbeidsconflict.",
    "utm_source": "google",
    "utm_campaign": "arbeidsrecht",
    "consent": true,
    "consent_text": "Ik ga akkoord dat mijn gegevens worden gedeeld.",
    "consent_basis": "consent"
  }'
Respons · 201 Created
{
  "data": {
    "id": 21740,
    "public_access_token": "YQ7ETX",
    "status": "phone_unverified"
  }
}
GET /api/supply/leads/{token}

Status opvragen

Geeft de actuele status en kwaliteitsbeoordeling van een eerder ingestuurde aanvraag terug, op basis van het public_access_token. Je ziet alleen aanvragen die met jouw eigen sleutel zijn aangeleverd; anders krijg je 404.

Verzoek
curl https://api.oxiae.com/api/supply/leads/YQ7ETX \
  -H "Authorization: Bearer oxa_3f9a2b7c8d1e4f60a1b2c3d4"
Respons · 200 OK
{
  "data": {
    "id": 21740,
    "status": "assigned",
    "quality_status": "ok",
    "created_at": "2026-07-07T18:50:09+00:00"
  }
}

Foutafhandeling

De API gebruikt standaard HTTP-statuscodes. Bij een validatiefout krijg je 422 met een errors-object per veld.

401
Ontbrekende of ongeldige API-sleutel.
404
Aanvraag niet gevonden, of niet aangeleverd met jouw sleutel.
422
Validatiefout; zie het errors-object.
429
Rate limit bereikt (standaard 120 per minuut).
Fout · 422 Unprocessable Content
{
  "message": "The email field must be a valid email address.",
  "errors": {
    "email": ["The email field must be a valid email address."]
  }
}

Klaar om te koppelen?

Plan een demo of vraag API-toegang aan.