API voor ontwikkelaars

Eén REST API voor lijsten, campagnes, transactionele e-mail — en de AI.

Aan de slag

Elk betaald pakket bevat volledige toegang tot de REST API. Genereer een sleutel in je account onder Account → API-sleutels en stuur die mee met elk verzoek:

curl -H "X-Api-Key: YOUR_KEY" https://mailflow.top/api/index.php/lists

Basis-URL: https://mailflow.top/api/index.php · Antwoorden zijn JSON met een status-veld met de waarde success of error. De API is niet beschikbaar in het gratis pakket.

Kernresources

Het platform is compatibel met MailWizz, dus de volledige kern-API — lijsten, abonnees, segmenten, aangepaste velden, campagnes, tracking, sjablonen, transactionele e-mail, bounces, afmeldingen — is interactief gedocumenteerd (OpenAPI), samen met alle MailFlow-endpoints op deze pagina, op:

→ Interactieve API-referentie (OpenAPI)

Bestaande MailWizz-SDK's (bijv. de officiële PHP SDK) werken direct — richt ze op de basis-URL hierboven.

AI-endpoints

De AI-functies zijn volwaardige onderdelen van de API. Dezelfde sleutel, dezelfde authenticatie en dezelfde pakketlimieten en creditregistratie als in de webapp.

GET /ai/credits

Je AI-creditmeter voor de huidige maand. Credits gelden per factuurmaand en ongebruikte credits worden niet overgedragen naar de volgende maand.

{"status":"success","data":{"unlimited":false,"limit":750,"used":112,"remaining":638}}

GET /ai/replies

Smart Replies-classificaties voor je campagnes — voed je CRM met wie geïnteresseerd is, wie een vraag stelde en wie klaagde. Filters: category (interested, question, complaint, unsubscribe_request, auto_reply, out_of_office, bounce, other), campaign_uid, since (JJJJ-MM-DD), page, per_page (max. 50).

curl -H "X-Api-Key: YOUR_KEY" \
  "https://mailflow.top/api/index.php/ai/replies?category=interested&since=2026-08-01"

{"status":"success","data":{"count":42,"current_page":1,"per_page":20,"total_pages":3,
  "records":[{"from_email":"[email protected]","subject":"RE: your offer",
    "category":"interested","confidence":98,"engine":"embeddings",
    "summary":"...","suggested_reply":"...","date_added":"2026-08-24 18:21:19",
    "campaign_uid":"py794hjqk8a8d"}]}}

GET /ai/tiers

AI-betrokkenheidsniveaus (vip, engaged, passive, at_risk, dormant) per lijst — dezelfde scoring die autopilot en win-back aanstuurt.

{"status":"success","data":{"records":[
  {"list_uid":"qk661oq7nl8c1","name":"Main list","tiers":{"engaged":1200,"passive":3400,"dormant":900}}]}}

POST /ai/subject-lines

Genereer onderwerpregels in elke taal. Body: topic (verplicht), count (1–5, standaard 3), language (optioneel). Verbruikt AI-credits, net als de webeditor.

curl -X POST -H "X-Api-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"topic":"Summer sale for B2B customers","count":3,"language":"Greek"}' \
  https://mailflow.top/api/index.php/ai/subject-lines

{"status":"success","data":{"subjects":["...","...","..."],"credits_remaining":636}}

GET /ai/flows · POST /ai/flows/author · POST /ai/flows/<uid>/enroll · POST /ai/flows/<uid>/status

AI Flow Builder via de API: bekijk je flows met live tellers; laat de AI een complete flow opstellen op basis van een doel in gewone taal ({"goal":"...","list_uid":"..."} — geeft een concept terug dat je activeert met {"status":"active"}); zet een abonnee in een flow ({"email":"..."}).

curl -X POST -H "X-Api-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"goal":"When someone replies interested, notify me, wait 2 days, then send a case study"}' \
  https://mailflow.top/api/index.php/ai/flows/author

Bouw je eigen app op MailFlow

Alles wat je in de webapp doet, kan ook via de API, zodat je MailFlow vanuit je eigen software kunt aansturen. Een typische werkwijze:

  1. Maak een lijst aan en voeg contacten toe: POST /lists, POST /lists/<list_uid>/subscribers/bulk.
  2. Vind nieuwe contacten met DataStack: POST /datastack/import.
  3. Maak zelf een campagne aan (POST /campaigns) of laat de AI die schrijven: POST /ai/campaigns.
  4. Controleer het AI-concept en plan het in: GET /ai/campaigns/<run_id>, POST /ai/campaigns/<run_id>/approve.
  5. Bekijk de resultaten: GET /analytics/campaigns, GET /campaigns/<campaign_uid>/clicks.

Lange taken (schrijven door de AI, websites lezen, DataStack-imports) draaien op de achtergrond: de aanroep antwoordt met 202 en een job_id, en GET /ai/jobs/<job_id> laat je weten wanneer de taak klaar is.

Analyses

Dezelfde cijfers als in je dashboard en campagnerapporten. Datums zijn in UTC; from en to (YYYY-MM-DD) staan standaard op de afgelopen 30 dagen. Accounttotalen worden om de paar minuten bijgewerkt.

  • GET /analytics/overview — lijsten, abonnees, campagnes en verzendresultaten over een periode: verzonden, bezorgd, geopend, geklikt, bounces, klachten, afmeldingen en de bijbehorende ratio's.
  • GET /analytics/timeline — dezelfde resultaten per dag (of per uur met interval=hour), plus nieuwe abonnees.
  • GET /analytics/campaigns — één rij per campagne met de resultaten; filter met status.
  • GET /campaigns/<campaign_uid>/opens en /clicks — wie heeft geopend of geklikt, wanneer, vanaf waar en op welk apparaat (unique=1 voor alleen de eerste gebeurtenissen).
  • GET /campaigns/<campaign_uid>/links, /locations, /devices, /timeline, /abuse-reports — kliks per link, resultaten per land en stad, per apparaattype en per uur, en misbruikmeldingen.
  • GET /campaigns/<campaign_uid>/stats, /bounces, /unsubscribes, /complaints, /delivery-logs — de belangrijkste campagnerapporten.
  • GET /lists/<list_uid>/stats — abonnees per status en bron, dagelijkse groei en de campagnes die naar de lijst zijn verstuurd.
curl -H "X-Api-Key: YOUR_KEY" \
  "https://mailflow.top/api/index.php/analytics/overview?from=2026-09-01&to=2026-09-30"

{"status":"success","data":{"period":{"from":"2026-09-01","to":"2026-09-30","timezone":"UTC"},
  "lists":9,"subscribers":{"total":52040,"confirmed":50102,"unsubscribed":311},
  "campaigns":{"total":24,"sent":20,"draft":4},
  "activity":{"sent":48210,"delivered":47650,"unique_opens":14230,"unique_clicks":2210,
    "bounces":402,"complaints":3,"unsubscribes":95,"open_rate":29.86,"click_rate":4.64}}}

Account en verzendinstellingen

  • GET /account · PUT /account — je profiel, pakket, verzendlimiet en overige limieten; wijzig je naam, telefoonnummer of tijdzone.
  • GET|POST /campaign-groups · GET|PUT|DELETE /campaign-groups/<group_uid> — campagnegroepen.
  • GET|POST /suppression-lists · GET|PUT|DELETE /suppression-lists/<list_uid> · GET|POST|DELETE /suppression-lists/<list_uid>/emails — suppressielijsten (tot 10.000 e-mailadressen per aanroep).
  • GET|POST /blacklist · DELETE /blacklist/<email_uid> · GET /blacklist/check?email= — je blokkeerlijst, en of een adres ergens geblokkeerd is.
  • GET|POST /sending-domains · GET|DELETE /sending-domains/<id> · POST /sending-domains/<id>/verify — verzenddomeinen met de DKIM-, SPF- en DMARC-records die je moet publiceren.
  • GET|POST /tracking-domains · GET|DELETE /tracking-domains/<id> · POST /tracking-domains/<id>/verify — je eigen trackingdomeinen voor links.
  • GET /delivery-servers · GET /countries — de servers waarmee je kunt verzenden, en landen met hun zones.

AI-campagnes

Laat de AI campagnes voor je schrijven, met of zonder jouw controle. De AI gebruikt je bedrijfsprofiel, kiest de doelgroep en de verzendtijd, test de e-mail tegen spamfilters en schrijft hem in de taal van elke abonnee.

  • POST /ai/campaigns — vertel de AI wat er verstuurd moet worden: goal (verplicht), list_uid (een lijst, auto of prospects), audience, business, template_uid, follow_up, auto_send.
  • POST /ai/campaigns/prepare — de AI bepaalt wat er als volgende wordt verstuurd (maximaal 3 per dag); optioneel hint.
  • GET /ai/campaigns · GET /ai/campaigns/<run_id> — AI-campagnes met onderwerpregels, doelgroep, voorgestelde tijd en spamcontrole (html=1 voegt de e-mail zelf toe).
  • POST /ai/campaigns/<run_id>/approve — plan de verzending in: when = proposed, now of custom met send_at; optioneel max_send.
  • POST /ai/campaigns/<run_id>/revise (met feedback) · POST /ai/campaigns/<run_id>/discard — vraag om wijzigingen of verwijder het concept.
  • GET /ai/jobs/<job_id> — de status van een achtergrondtaak en de AI-campagnes die daarmee zijn aangemaakt.
  • GET|PUT /ai/hands-off — hands-off-modus: de AI plant, schrijft en verstuurt zonder op jou te wachten ({"enabled":true}).
curl -X POST -H "X-Api-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"goal":"Invite our customers to the autumn webinar","list_uid":"auto"}' \
  https://mailflow.top/api/index.php/ai/campaigns

{"status":"success","data":{"job_id":512,"job_status":"queued","check":"/ai/jobs/512"}}

curl -H "X-Api-Key: YOUR_KEY" https://mailflow.top/api/index.php/ai/jobs/512

{"status":"success","data":{"job_id":512,"type":"autopilot","status":"done","ai_campaigns":[331],"sent":false}}

Bedrijfsprofielen

De AI schrijft namens je bedrijf. Houd één profiel per website aan:

  • GET|POST /ai/businesses — je bedrijven; voeg er een toe met website.
  • GET|PUT|DELETE /ai/businesses/<domain> — profiel, afzender (from_name, from_email, reply_to) en bedrijfsgegevens (company_*).
  • POST /ai/businesses/<domain>/read-website · PUT /ai/businesses/<domain>/main — laat de AI de website lezen en het profiel invullen; maak er je hoofdbedrijf van.

DataStack-prospects

Vind verse zakelijke en persoonlijke e-mailadressen en importeer ze direct in je lijsten. Imports tellen mee voor je pakket; tellingen zijn gratis.

  • GET /datastack/credits — hoeveel adressen je deze maand nog mag importeren binnen je pakket.
  • GET /datastack/count — hoeveel adressen er zijn voor country, niche (bedrijfscategorieën), keyword en role (persoonlijk). Gratis.
  • POST /datastack/import — importeer adressen van het type business en/of personal in list_uid (achtergrondtaak). Nieuwe adressen worden gecontroleerd voordat er een campagne naartoe wordt verstuurd.
curl -X POST -H "X-Api-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"list_uid":"cr5899rtqe668","business":2000,"country":"Greece","niche":"dentist, hotel"}' \
  https://mailflow.top/api/index.php/datastack/import

{"status":"success","data":{"job_id":513,"job_status":"queued","check":"/ai/jobs/513","list_uid":"cr5899rtqe668"}}

Supporttickets

  • GET|POST /support-tickets — je tickets; open een nieuw ticket met subject, message, category en priority.
  • GET /support-tickets/<ticket_uid> · POST /support-tickets/<ticket_uid>/replies · PUT /support-tickets/<ticket_uid>/close — lees het gesprek, reageer, sluit af.

Rechten van API-sleutels

Een sleutel kan worden beperkt tot bepaalde endpoints. Ga naar Account → API-sleutels, bewerk de sleutel, schakel rechten in en vink aan wat de sleutel mag gebruiken. De endpoints op deze pagina staan daar vermeld met het voorvoegsel MailFlow.

Fouten en limieten

  • 400X-Api-Key ontbreekt of is ongeldig, of de sleutel heeft geen rechten voor dit endpoint
  • 402 — niet genoeg DataStack-credits deze maand
  • 403 — de functie zit niet in je pakket, of een pakketlimiet is bereikt
  • 404 — de lijst, campagne of het andere item bestaat niet in je account
  • 409 — het item heeft niet de juiste status (alleen concepten kunnen bijvoorbeeld worden goedgekeurd)
  • 422 — ontbrekende/ongeldige parameters
  • 429 — AI-creditlimiet of maandelijks AI-tegoed bereikt; wordt gereset op je volgende factuurdatum

Pieken worden per sleutel afgeremd — implementeer exponentiële backoff bij 429. Vragen? Neem contact met ons op of open een supportticket.