{"openapi":"3.1.0","info":{"title":"Aicquisition API","version":"2.0.2.1","description":"Met de API van Aicquisition koppel je je eigen systemen aan het belplatform: leads aanleveren, opvragen wat ermee gebeurde en ze bijwerken. De volledige uitleg staat op https://aicquisitioncrm.nl/api-docs.\n\n## Een sleutel\nEen sleutel maak je in Aicquisition bij **Instellingen → Koppelingen**. Hij wordt één keer getoond; bewaar hem in je koppeling, niet in een mail of chat. Stuur hem mee als `Authorization: Bearer ack_live_…` (of als header `x-api-key`).\n\n## Wat een sleutel mag\nBij het aanmaken vink je aan wat de sleutel mag. Bij elk endpoint staat welk recht het vraagt.\n- **Aanleveren**: leads en afspraken in een campagne zetten, en de ids opzoeken die je daarvoor nodig hebt (organisatie, campagnes, lijsten).\n- **Lezen**: alles opvragen: leads met hun contactgegevens, gesprekken, afspraken, het team.\n- **Wijzigen**: leads bijwerken, notities zetten en lijsten aanmaken.\n\nGeef een sleutel niet meer dan hij nodig heeft. Een Zapier-stap die leads aanlevert, hoeft het leadbestand niet te kunnen lezen.\n\n## Eerst proberen: de testsleutel\nVink bij het aanmaken **Testsleutel** aan. Een testsleutel (`ack_test_…`) controleert alles wat een echte sleutel controleert (velden, campagne, lijst, closer, de afspraak die je verzet of afzegt) en schrijft niets weg. Het antwoord zegt wat er echt zou gebeuren. Lezen doet hij gewoon. Dat is de zandbak: klik hieronder op **Authorize**, plak de testsleutel en probeer de verzoeken met **Try it out**.\n\n## Waar begin je\n1. `GET /api/v2/organisaties/{org_id}` met je organisatie-id, of eerst `GET /api/v2/fases` om te zien of je sleutel werkt.\n2. `GET /api/v2/organisaties/{org_id}/campagnes` en `GET /api/v2/campagnes/{id}/lijsten` voor de ids.\n3. `POST /api/v2/leads` levert leads aan; `GET /api/v2/leads` haalt ze op, met `gewijzigd_sinds` alleen wat er veranderde.\n\n## Bladeren\nLijsten komen in bladzijden van standaard 50 (`limiet` tot 200). Staat er een `volgende_cursor` in het antwoord, geef die dan mee als `cursor` voor de volgende bladzijde. Is hij `null`, dan ben je klaar.\n\n## Goed om te weten\n- **Telefoonnummer** is het enige verplichte veld van een lead. Een nummer met voorloopnul lezen we als Nederlands; een buitenlands nummer stuur je met landnummer (+32…).\n- **Dubbel bestaat niet**: hetzelfde nummer in dezelfde campagne is dezelfde lead. Een verloren of moeilijk bereikbare lead wordt heropend; een lopende lead houdt zijn fase en krijgt een notitie.\n- **Tot 100 leads** per aanleververzoek en **60 verzoeken per minuut** per sleutel; daarboven volgt een 429 met `Retry-After`.\n- **Oude adressen**: `POST /api/inbound/leads` en `GET /api/inbound/campagnes` blijven werken; ze doen hetzelfde als `POST /api/v2/leads` en de campagne-endpoints.\n- **Duurdere nummers**: wordt een nummer buiten het gewone tarief gebeld, dan wacht de lead op akkoord van de opdrachtgever voordat er gebeld wordt. Het antwoord zegt het per lead."},"servers":[{"url":"https://aicquisitioncrm.nl"}],"security":[{"bearer":[]},{"sleutelHeader":[]}],"tags":[{"name":"Organisatie","description":"De werkruimte van de sleutel, het team en de fases."},{"name":"Campagnes en lijsten","description":"De campagnes en de lijsten waarin leads landen."},{"name":"Leads","description":"Leads aanleveren, opvragen en bijwerken."},{"name":"Gesprekken en afspraken","description":"Wat er met leads gebeurde."}],"paths":{"/api/v2/organisaties/{org_id}":{"get":{"x-slug":"organisatie","tags":["Organisatie"],"summary":"Organisatie opvragen","description":"**Recht: aanleveren of lezen.**\n\nMet wat deze sleutel mag. Een andere org_id dan die van de sleutel geeft een 404.","parameters":[{"name":"org_id","in":"path","required":true,"description":"Het id van de organisatie.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"De organisatie.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organisatie"}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Aanleveren of Lezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Aanleveren of Lezen."}}}},"404":{"description":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}}},"/api/v2/organisaties/{org_id}/campagnes":{"get":{"x-slug":"campagnes-van-de-organisatie","tags":["Campagnes en lijsten"],"summary":"Campagnes opvragen","description":"**Recht: aanleveren of lezen.**","parameters":[{"name":"org_id","in":"path","required":true,"description":"Het id van de organisatie.","schema":{"type":"string","format":"uuid"}},{"name":"ook_gearchiveerd","in":"query","required":false,"description":"Ook gearchiveerde campagnes.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"De campagnes.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Campagne"}}}}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Aanleveren of Lezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Aanleveren of Lezen."}}}},"404":{"description":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}}},"/api/v2/organisaties/{org_id}/leads":{"get":{"x-slug":"leads-van-de-organisatie","tags":["Leads"],"summary":"Leads van de organisatie","description":"**Recht: lezen.**\n\nNieuwste wijziging eerst. Met `gewijzigd_sinds` haal je alleen op wat er sinds je vorige keer veranderde: bewaar het `gewijzigd` van de eerste lead en geef het de volgende keer mee.","parameters":[{"name":"org_id","in":"path","required":true,"description":"Het id van de organisatie.","schema":{"type":"string","format":"uuid"}},{"name":"campagne_id","in":"query","required":false,"description":"Alleen deze campagne.","schema":{"type":"string","format":"uuid"}},{"name":"lijst_id","in":"query","required":false,"description":"Alleen deze lijst.","schema":{"type":"string","format":"uuid"}},{"name":"fase","in":"query","required":false,"description":"Eén of meer fases, met komma's: `gebeld_1,gebeld_2`. Zie GET /api/v2/fases.","schema":{"type":"string"}},{"name":"gewijzigd_sinds","in":"query","required":false,"description":"Alleen leads die sinds dit moment veranderden.","schema":{"type":"string","format":"date-time"}},{"name":"zoek","in":"query","required":false,"description":"Naam, e-mail of telefoonnummer (06… mag); elk woord moet ergens voorkomen.","schema":{"type":"string"}},{"name":"externe_id","in":"query","required":false,"description":"De id die jullie zelf meegaven bij het aanleveren.","schema":{"type":"string"}},{"name":"limiet","in":"query","required":false,"description":"Hoeveel per bladzijde, 1 tot 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"De volgende_cursor uit het vorige antwoord.","schema":{"type":"string"}}],"responses":{"200":{"description":"Een bladzijde leads.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Lead"}},"volgende_cursor":{"type":["string","null"],"description":"Geef mee als cursor voor de volgende bladzijde; null betekent klaar."}}}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Lezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Lezen."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}}},"/api/v2/campagnes/{id}":{"get":{"x-slug":"campagne","tags":["Campagnes en lijsten"],"summary":"Campagne opvragen","description":"**Recht: aanleveren of lezen.**","parameters":[{"name":"id","in":"path","required":true,"description":"Het id van de campagne.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"De campagne.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampagneDetail"}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Aanleveren of Lezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Aanleveren of Lezen."}}}},"404":{"description":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}}},"/api/v2/campagnes/{id}/lijsten":{"get":{"x-slug":"lijsten-van-een-campagne","tags":["Campagnes en lijsten"],"summary":"Lijsten opvragen","description":"**Recht: aanleveren of lezen.**","parameters":[{"name":"id","in":"path","required":true,"description":"Het id van de campagne.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"De lijsten, nieuwste eerst.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Lijst"}}}}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Aanleveren of Lezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Aanleveren of Lezen."}}}},"404":{"description":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}},"post":{"x-slug":"lijst-aanmaken","tags":["Campagnes en lijsten"],"summary":"Lijst aanmaken","description":"**Recht: wijzigen.**\n\nDe naam is uniek binnen de campagne; bestaat hij al, dan volgt een 409 met het id van die lijst.","parameters":[{"name":"id","in":"path","required":true,"description":"Het id van de campagne.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NieuweLijst"},"example":{"naam":"Calendly","bron":"Calendly"}}}},"responses":{"201":{"description":"De nieuwe lijst.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Lijst"}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Wijzigen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Wijzigen."}}}},"404":{"description":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel."}}}},"409":{"description":"Er staat al een lijst met deze naam in de campagne.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Er staat al een lijst met deze naam in de campagne.","lijst_id":"c4d5e6f7-0819-4a2b-8c3d-4e5f6a7b8c9d"}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}}},"/api/v2/lijsten/{id}/leads":{"get":{"x-slug":"leads-in-een-lijst","tags":["Leads"],"summary":"Leads in een lijst","description":"**Recht: lezen.**\n\nNieuwste wijziging eerst. Met `gewijzigd_sinds` haal je alleen op wat er sinds je vorige keer veranderde: bewaar het `gewijzigd` van de eerste lead en geef het de volgende keer mee.","parameters":[{"name":"id","in":"path","required":true,"description":"Het id van de lijst.","schema":{"type":"string","format":"uuid"}},{"name":"campagne_id","in":"query","required":false,"description":"Alleen deze campagne.","schema":{"type":"string","format":"uuid"}},{"name":"fase","in":"query","required":false,"description":"Eén of meer fases, met komma's: `gebeld_1,gebeld_2`. Zie GET /api/v2/fases.","schema":{"type":"string"}},{"name":"gewijzigd_sinds","in":"query","required":false,"description":"Alleen leads die sinds dit moment veranderden.","schema":{"type":"string","format":"date-time"}},{"name":"zoek","in":"query","required":false,"description":"Naam, e-mail of telefoonnummer (06… mag); elk woord moet ergens voorkomen.","schema":{"type":"string"}},{"name":"externe_id","in":"query","required":false,"description":"De id die jullie zelf meegaven bij het aanleveren.","schema":{"type":"string"}},{"name":"limiet","in":"query","required":false,"description":"Hoeveel per bladzijde, 1 tot 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"De volgende_cursor uit het vorige antwoord.","schema":{"type":"string"}}],"responses":{"200":{"description":"Een bladzijde leads.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Lead"}},"volgende_cursor":{"type":["string","null"],"description":"Geef mee als cursor voor de volgende bladzijde; null betekent klaar."}}}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Lezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Lezen."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}}},"/api/v2/leads/{id}":{"get":{"x-slug":"lead","tags":["Leads"],"summary":"Lead opvragen","description":"**Recht: lezen.**\n\nMet de fasegeschiedenis, producten, afspraken en de laatste vijftig gesprekken. Notities staan op /notities.","parameters":[{"name":"id","in":"path","required":true,"description":"Het id van de lead.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"De lead.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadDetail"}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Lezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Lezen."}}}},"404":{"description":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}},"patch":{"x-slug":"lead-bijwerken","tags":["Leads"],"summary":"Lead bijwerken","description":"**Recht: wijzigen.**\n\nAlleen de velden die je meestuurt veranderen. Een fasewissel komt in de geschiedenis en gaat, net als wanneer een beller hem verschuift, door naar een gekoppeld CRM. Naar verloren vraagt een `verloren_reden`. Het telefoonnummer is niet te wijzigen: een ander nummer is een andere lead.","parameters":[{"name":"id","in":"path","required":true,"description":"Het id van de lead.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadWijziging"},"example":{"fase":"follow_up","volgende_actie":"2026-10-12T10:00:00+02:00","email":"iris@voorbeeld.nl"}}}},"responses":{"200":{"description":"De lead na de wijziging; bij een testsleutel wat er zou veranderen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Lead"}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Wijzigen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Wijzigen."}}}},"404":{"description":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}}},"/api/v2/leads/{id}/notities":{"get":{"x-slug":"tijdlijn-van-een-lead","tags":["Leads"],"summary":"Tijdlijn van een lead","description":"**Recht: lezen.**\n\nNotities, samenvattingen van gesprekken, verstuurde mail en afspraken; nieuwste eerst.","parameters":[{"name":"id","in":"path","required":true,"description":"Het id van de lead.","schema":{"type":"string","format":"uuid"}},{"name":"limiet","in":"query","required":false,"description":"Hoeveel, tot 500.","schema":{"type":"integer","default":100}}],"responses":{"200":{"description":"De tijdlijn.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Notitie"}}}}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Lezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Lezen."}}}},"404":{"description":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}},"post":{"x-slug":"notitie-zetten","tags":["Leads"],"summary":"Notitie zetten","description":"**Recht: wijzigen.**\n\nDe naam van de sleutel staat als afzender op de tijdlijn.","parameters":[{"name":"id","in":"path","required":true,"description":"Het id van de lead.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NieuweNotitie"},"example":{"tekst":"Heeft de offerte ontvangen, belt vrijdag terug."}}}},"responses":{"201":{"description":"De notitie.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Notitie"}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Wijzigen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Wijzigen."}}}},"404":{"description":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Bestaat niet, of hoort niet bij de werkruimte van de sleutel."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}}},"/api/v2/gesprekken":{"get":{"x-slug":"gesprekken","tags":["Gesprekken en afspraken"],"summary":"Gesprekken opvragen","description":"**Recht: lezen.**\n\nNieuwste eerst. Opnames en transcripts gaan niet mee; de samenvatting wel, met `met_samenvatting=true`.","parameters":[{"name":"campagne_id","in":"query","required":false,"description":"Alleen deze campagne.","schema":{"type":"string","format":"uuid"}},{"name":"lead_id","in":"query","required":false,"description":"Alleen deze lead.","schema":{"type":"string","format":"uuid"}},{"name":"beller","in":"query","required":false,"description":"Het e-mailadres van de beller.","schema":{"type":"string"}},{"name":"uitkomst","in":"query","required":false,"description":"Eén uitkomst.","schema":{"type":"string","enum":["no_answer","voicemail","gatekeeper","wrong_number","not_interested","callback","qualified","meeting_booked"]}},{"name":"van","in":"query","required":false,"description":"Begonnen op of na dit moment.","schema":{"type":"string","format":"date-time"}},{"name":"tot","in":"query","required":false,"description":"Begonnen vóór dit moment.","schema":{"type":"string","format":"date-time"}},{"name":"met_samenvatting","in":"query","required":false,"description":"Met de samenvatting van het gesprek.","schema":{"type":"boolean","default":false}},{"name":"limiet","in":"query","required":false,"description":"Hoeveel per bladzijde, 1 tot 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"De volgende_cursor uit het vorige antwoord.","schema":{"type":"string"}}],"responses":{"200":{"description":"Een bladzijde gesprekken.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Gesprek"}},"volgende_cursor":{"type":["string","null"],"description":"Geef mee als cursor voor de volgende bladzijde; null betekent klaar."}}}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Lezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Lezen."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}}},"/api/v2/afspraken":{"get":{"x-slug":"afspraken","tags":["Gesprekken en afspraken"],"summary":"Afspraken opvragen","description":"**Recht: lezen.**\n\nOp tijdstip van de afspraak, laatste eerst. Komende afspraken: `van` op nu.","parameters":[{"name":"campagne_id","in":"query","required":false,"description":"Alleen deze campagne.","schema":{"type":"string","format":"uuid"}},{"name":"lead_id","in":"query","required":false,"description":"Alleen deze lead.","schema":{"type":"string","format":"uuid"}},{"name":"closer","in":"query","required":false,"description":"Het e-mailadres van de closer.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Eén status.","schema":{"type":"string","enum":["gepland","gehouden","no_show","afgezegd","verzet"]}},{"name":"van","in":"query","required":false,"description":"Op of na dit moment.","schema":{"type":"string","format":"date-time"}},{"name":"tot","in":"query","required":false,"description":"Vóór dit moment.","schema":{"type":"string","format":"date-time"}},{"name":"limiet","in":"query","required":false,"description":"Hoeveel per bladzijde, 1 tot 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"De volgende_cursor uit het vorige antwoord.","schema":{"type":"string"}}],"responses":{"200":{"description":"Een bladzijde afspraken.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Afspraak"}},"volgende_cursor":{"type":["string","null"],"description":"Geef mee als cursor voor de volgende bladzijde; null betekent klaar."}}}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Lezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Lezen."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}}},"/api/v2/team":{"get":{"x-slug":"het-team","tags":["Organisatie"],"summary":"Team opvragen","description":"**Recht: lezen.**\n\nWie er in de werkruimte werkt, met rol. Het e-mailadres van een closer gebruik je als `closer_email` bij een afspraak.","responses":{"200":{"description":"Het team.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Teamlid"}}}}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Lezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Lezen."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}}},"/api/v2/fases":{"get":{"x-slug":"fases","tags":["Organisatie"],"summary":"Fases opvragen","description":"**Elke geldige sleutel.**\n\nIn de volgorde van het bord, met de naam op het scherm. Handig om te proberen of je sleutel werkt.","responses":{"200":{"description":"De fases.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Fase"}}}}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}}},"/api/v2/leads":{"get":{"x-slug":"leads-opvragen","tags":["Leads"],"summary":"Leads opvragen","description":"**Recht: lezen.**\n\nNieuwste wijziging eerst. Met `gewijzigd_sinds` haal je alleen op wat er sinds je vorige keer veranderde: bewaar het `gewijzigd` van de eerste lead en geef het de volgende keer mee.","parameters":[{"name":"organisatie_id","in":"query","required":false,"description":"Mag weg; staat hij erin, dan moet het die van de sleutel zijn.","schema":{"type":"string","format":"uuid"}},{"name":"campagne_id","in":"query","required":false,"description":"Alleen deze campagne.","schema":{"type":"string","format":"uuid"}},{"name":"lijst_id","in":"query","required":false,"description":"Alleen deze lijst.","schema":{"type":"string","format":"uuid"}},{"name":"fase","in":"query","required":false,"description":"Eén of meer fases, met komma's: `gebeld_1,gebeld_2`. Zie GET /api/v2/fases.","schema":{"type":"string"}},{"name":"gewijzigd_sinds","in":"query","required":false,"description":"Alleen leads die sinds dit moment veranderden.","schema":{"type":"string","format":"date-time"}},{"name":"zoek","in":"query","required":false,"description":"Naam, e-mail of telefoonnummer (06… mag); elk woord moet ergens voorkomen.","schema":{"type":"string"}},{"name":"externe_id","in":"query","required":false,"description":"De id die jullie zelf meegaven bij het aanleveren.","schema":{"type":"string"}},{"name":"limiet","in":"query","required":false,"description":"Hoeveel per bladzijde, 1 tot 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","required":false,"description":"De volgende_cursor uit het vorige antwoord.","schema":{"type":"string"}}],"responses":{"200":{"description":"Een bladzijde leads.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Lead"}},"volgende_cursor":{"type":["string","null"],"description":"Geef mee als cursor voor de volgende bladzijde; null betekent klaar."}}}}}},"400":{"description":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Het verzoek klopt niet; het antwoord noemt de fout en het veld.","veld":"…"}}}},"401":{"description":"Geen sleutel, of een sleutel die niet (meer) werkt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Geen sleutel, of een sleutel die niet (meer) werkt."}}}},"403":{"description":"De sleutel mist het recht Lezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"De sleutel mist het recht Lezen."}}}},"429":{"description":"Meer dan 60 verzoeken per minuut; wacht een minuut.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Meer dan 60 verzoeken per minuut; wacht een minuut."}}}}}},"post":{"tags":["Leads"],"summary":"Leads aanleveren","x-slug":"leads-aanleveren","description":"**Recht: aanleveren.** Ook bereikbaar als `POST /api/inbound/leads`.\n\nZet één lead (`lead`) of tot 100 leads (`leads`) in een campagne. Een lead wordt herkend aan zijn telefoonnummer: staat hij al in de campagne, dan komt er geen tweede bij maar een notitie bij de bestaande. Het antwoord geeft per lead terug wat er gebeurde, in de volgorde van het verzoek.\n\nPer lead kan een `afspraak` mee die de lead zelf heeft geboekt; Aicquisition plant die dan in bij de closer. Zie [Afspraken meesturen](/api-docs/afspraken-meesturen) voor een uitgewerkt voorbeeld.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Aanleververzoek"},"examples":{"een_lead":{"summary":"Eén lead","value":{"campagne_id":"8b1c2d3e-4f50-4a6b-9c7d-8e9f0a1b2c3d","lead":{"telefoon":"0612345678","voornaam":"Iris","achternaam":"Hoek","email":"iris@voorbeeld.nl"}}},"stapel":{"summary":"Een stapel leads in een lijst","value":{"campagne_id":"8b1c2d3e-4f50-4a6b-9c7d-8e9f0a1b2c3d","lijst_id":"c4d5e6f7-0819-4a2b-8c3d-4e5f6a7b8c9d","leads":[{"telefoon":"0612345678","voornaam":"Iris","achternaam":"Hoek","email":"iris@voorbeeld.nl"},{"telefoon":"+32470123456","voornaam":"Loes","bedrijf":"Hallo Hart","externe_id":"crm-4711"}]}},"calendly":{"summary":"Lead met afspraak (Calendly)","value":{"campagne_id":"8b1c2d3e-4f50-4a6b-9c7d-8e9f0a1b2c3d","lijst_id":"c4d5e6f7-0819-4a2b-8c3d-4e5f6a7b8c9d","lead":{"telefoon":"0612345678","voornaam":"Iris","achternaam":"Hoek","email":"iris@voorbeeld.nl","notitie":"Wil het hebben over de automatisering van offertes.","afspraak":{"id":"https://api.calendly.com/scheduled_events/AAA/invitees/BBB","start":"2026-10-09T10:00:00+02:00","duur_minuten":30,"closer_email":"mark@voorbeeld.nl"}}}},"verzetten":{"summary":"Afspraak verzetten","value":{"campagne_id":"8b1c2d3e-4f50-4a6b-9c7d-8e9f0a1b2c3d","lead":{"telefoon":"0612345678","afspraak":{"id":"https://api.calendly.com/scheduled_events/CCC/invitees/DDD","vervangt_id":"https://api.calendly.com/scheduled_events/AAA/invitees/BBB","start":"2026-10-10T14:00:00+02:00","closer_email":"mark@voorbeeld.nl"}}}},"afzeggen":{"summary":"Afspraak afzeggen","value":{"campagne_id":"8b1c2d3e-4f50-4a6b-9c7d-8e9f0a1b2c3d","lead":{"telefoon":"0612345678","afspraak":{"id":"https://api.calendly.com/scheduled_events/CCC/invitees/DDD","status":"geannuleerd"}}}}}}}},"responses":{"200":{"description":"Verwerkt, maar niets nieuws: de leads bestonden al.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Aanleverantwoord"}}}},"201":{"description":"Er is minstens één lead aangemaakt of heropend, of een afspraak gepland. Een testsleutel geeft hetzelfde antwoord als een echte, met `test_modus: true`; er is dan niets weggeschreven.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Aanleverantwoord"},"example":{"ok":true,"test_modus":false,"organisatie_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","campagne_id":"8b1c2d3e-4f50-4a6b-9c7d-8e9f0a1b2c3d","lijst_id":"c4d5e6f7-0819-4a2b-8c3d-4e5f6a7b8c9d","aangemaakt":1,"heropend":0,"bestond_al":0,"geweigerd":0,"wacht_op_akkoord":0,"leads":[{"telefoon":"+31612345678","resultaat":"aangemaakt","lead_id":"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d","factor":1,"wacht_op_akkoord":false,"tarief_vastgesteld":true,"afspraak":{"resultaat":"gepland","afspraak_id":"9f8e7d6c-5b4a-4392-8170-6f5e4d3c2b1a","bevestiging_verstuurd":true}}]}}}},"400":{"description":"Een afspraak heeft een \"closer_email\" nodig: het e-mailadres waarmee de closer in Aicquisition inlogt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Een afspraak heeft een \"closer_email\" nodig: het e-mailadres waarmee de closer in Aicquisition inlogt.","veld":"lead.afspraak.closer_email"}}}},"401":{"description":"Deze sleutel werkt niet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Deze sleutel werkt niet."}}}},"403":{"description":"Deze sleutel hoort niet bij die organisatie.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Deze sleutel hoort niet bij die organisatie."}}}},"404":{"description":"Onbekende campagne voor deze sleutel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Onbekende campagne voor deze sleutel."}}}},"429":{"description":"Te veel verzoeken. Probeer het over een minuut opnieuw.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"},"example":{"error":"Te veel verzoeken. Probeer het over een minuut opnieuw."}}}}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Je sleutel: ack_live_… of, om te proberen, ack_test_…"},"sleutelHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Dezelfde sleutel, als je geen Authorization-header kunt zetten."}},"schemas":{"Aanleververzoek":{"type":"object","properties":{"organisatie_id":{"description":"Mag weg: de sleutel bepaalt de werkruimte. Staat hij erin, dan moet hij kloppen.","type":"string","format":"uuid"},"campagne_id":{"type":"string","format":"uuid","description":"Verplicht. Opzoeken met [Campagnes opvragen](/api-docs/campagnes-van-de-organisatie)."},"lijst_id":{"description":"De lijst waarin nieuwe leads landen. Zonder dit maken we er zelf een per maand en per sleutel.","type":"string","format":"uuid"},"lead":{"description":"Eén lead. Gebruik dit of \"leads\".","$ref":"#/components/schemas/AangeleverdeLead"},"leads":{"description":"Tot 100 leads in één verzoek.","minItems":1,"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/AangeleverdeLead"}}},"required":["campagne_id"]},"AangeleverdeLead":{"type":"object","properties":{"telefoon":{"type":"string","minLength":1,"description":"Verplicht. Een Nederlands nummer mag met voorloopnul (0612345678); een buitenlands nummer met landnummer (+32470123456). Hierop herkennen we een lead terug in de campagne.","examples":["0612345678"]},"voornaam":{"examples":["Iris"],"type":"string","maxLength":80},"achternaam":{"examples":["Hoek"],"type":"string","maxLength":80},"bedrijf":{"type":"string","maxLength":160},"functie":{"type":"string","maxLength":120},"email":{"description":"Nodig voor de bevestiging als je een afspraak meestuurt.","examples":["iris@voorbeeld.nl"],"type":"string","maxLength":200},"externe_id":{"description":"Jouw eigen id van deze lead. Komt terug in het antwoord.","type":"string","maxLength":200},"warmte":{"description":"Standaard koud; een lead die wordt heropend, wordt warm.","type":"string","enum":["koud","warm","heet"]},"notitie":{"description":"Komt als eerste notitie op de lead te staan.","type":"string","maxLength":2000},"fase":{"description":"Waar een nieuwe lead begint; standaard nieuwe_leads. Met een afspraak erbij standaard binnengekomen (Afspraak ingepland). Een bestaande lead houdt zijn fase.","type":"string","enum":["nieuwe_leads","gebeld_1","gebeld_2","gebeld_3","gebeld_4","niet_bereikt","follow_up","follow_up_lang","binnengekomen"]},"afspraak":{"$ref":"#/components/schemas/AangeleverdeAfspraak"}},"required":["telefoon"]},"AangeleverdeAfspraak":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":300,"description":"Verplicht. Jouw id van deze afspraak; bij Calendly de Invitee URI. Hetzelfde bericht nog eens geeft geen tweede afspraak.","examples":["https://api.calendly.com/scheduled_events/AAA/invitees/BBB"]},"start":{"description":"Verplicht bij een nieuwe of verzette afspraak. Begin met tijdzone.","examples":["2026-10-09T10:00:00+02:00"],"type":"string"},"duur_minuten":{"description":"Standaard 30.","examples":[30],"type":"integer","minimum":10,"maximum":240},"closer_email":{"description":"Verplicht bij een nieuwe of verzette afspraak. Het e-mailadres waarmee de closer in Aicquisition inlogt; opzoeken met [Team opvragen](/api-docs/het-team).","type":"string","maxLength":200},"status":{"description":"\"geannuleerd\" zegt de afspraak met deze id af; er wordt dan geen lead aangemaakt. Standaard gepland.","type":"string","enum":["gepland","geannuleerd"]},"vervangt_id":{"description":"Bij een verzetting: de id van de afspraak die deze vervangt (bij Calendly de Old Invitee). Dan blijft het dezelfde afspraak en dezelfde videolink. Leeg laten bij een nieuwe afspraak.","type":"string","maxLength":300}},"required":["id"],"description":"Een afspraak die de lead zelf boekte, bijvoorbeeld via Calendly. Aicquisition maakt de videoruimte, zet de lead op Afspraak ingepland bij de closer en mailt de bevestiging met de deelnamelink."},"LeadWijziging":{"type":"object","properties":{"fase":{"description":"Zie [Fases opvragen](/api-docs/fases). Naar verloren vraagt een verloren_reden.","type":"string","enum":["nieuwe_leads","gebeld_1","gebeld_2","gebeld_3","gebeld_4","niet_bereikt","follow_up","binnengekomen","pre_call","bevestigd","dag_van_de_call","gewonnen","follow_up_kort","follow_up_lang","verloren","cancel","no_show","reschedule"]},"warmte":{"type":"string","enum":["koud","warm","heet"]},"verloren_reden":{"type":"string","minLength":1,"maxLength":200},"volgende_actie":{"description":"Wanneer de lead weer aan de beurt is (met tijdzone), of null om het weg te halen.","examples":["2026-10-12T10:00:00+02:00"],"type":["string","null"]},"waarde_cent":{"description":"Verwachte of behaalde waarde in centen, exclusief btw.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"voornaam":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"achternaam":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"functie":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"bedrijf":{"description":"De bedrijfsnaam; bestaat hij al in de werkruimte, dan wordt die gebruikt.","anyOf":[{"type":"string","maxLength":160},{"type":"null"}]}}},"NieuweNotitie":{"type":"object","properties":{"tekst":{"type":"string","minLength":1,"maxLength":4000},"onderwerp":{"type":"string","maxLength":160}},"required":["tekst"]},"NieuweLijst":{"type":"object","properties":{"naam":{"type":"string","minLength":1,"maxLength":120,"description":"Uniek binnen de campagne.","examples":["Calendly"]},"bron":{"description":"Waar de leads vandaan komen, voor de rapportage.","type":"string","maxLength":120}},"required":["naam"]},"Fout":{"type":"object","properties":{"error":{"type":"string","description":"Wat er mis is, in gewone taal."},"veld":{"type":"string","description":"Bij een 400: welk veld."}},"required":["error"]},"Afspraakuitkomst":{"type":"object","properties":{"resultaat":{"type":"string","enum":["gepland","al_gepland","verzet","geannuleerd","niet_gevonden","geweigerd","test"],"description":"`test`: testsleutel; `reden` zegt wat er echt zou gebeuren."},"afspraak_id":{"type":"string","format":"uuid"},"reden":{"type":"string"},"bevestiging_verstuurd":{"type":"boolean"}},"required":["resultaat"]},"Leaduitkomst":{"type":"object","properties":{"externe_id":{"type":"string"},"telefoon":{"type":"string","description":"Zoals opgeslagen, met landnummer."},"resultaat":{"type":"string","enum":["aangemaakt","heropend","bestond_al","geweigerd"]},"lead_id":{"type":"string","format":"uuid"},"reden":{"type":"string"},"factor":{"type":"number","description":"Belminuten per gebelde minuut naar dit nummer."},"wacht_op_akkoord":{"type":"boolean","description":"Wacht de lead op akkoord voor een hoger tarief?"},"tarief_vastgesteld":{"type":"boolean","description":"Is het tarief al nagevraagd? Zo niet, dan wordt er nog niet gebeld."},"afspraak":{"$ref":"#/components/schemas/Afspraakuitkomst"}},"required":["telefoon"]},"Aanleverantwoord":{"type":"object","properties":{"ok":{"type":"boolean"},"test_modus":{"type":"boolean","description":"Waar bij een testsleutel: er is niets weggeschreven."},"organisatie_id":{"type":"string","format":"uuid"},"campagne_id":{"type":"string","format":"uuid"},"lijst_id":{"type":["string","null"],"format":"uuid"},"aangemaakt":{"type":"integer"},"heropend":{"type":"integer"},"bestond_al":{"type":"integer"},"geweigerd":{"type":"integer"},"wacht_op_akkoord":{"type":"integer"},"leads":{"type":"array","items":{"$ref":"#/components/schemas/Leaduitkomst"},"description":"Per lead, in de volgorde van het verzoek."}}},"Persoon":{"type":["object","null"],"properties":{"naam":{"type":["string","null"]},"email":{"type":["string","null"]}}},"Organisatie":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"naam":{"type":"string"},"land":{"type":["string","null"]},"aangemaakt":{"type":"string","format":"date-time"},"sleutel":{"type":"object","properties":{"naam":{"type":"string"},"rechten":{"type":"array","items":{"type":"string","enum":["aanleveren","lezen","wijzigen"]}},"test_modus":{"type":"boolean"}}}}},"Campagne":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"naam":{"type":"string"},"status":{"type":"string","enum":["draft","active","paused","archived"]},"omschrijving":{"type":"string"},"aangemaakt":{"type":"string","format":"date-time"},"aantal_leads":{"type":"integer"},"aantal_lijsten":{"type":"integer"}}},"CampagneDetail":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"naam":{"type":"string"},"status":{"type":"string"},"omschrijving":{"type":"string"},"aangemaakt":{"type":"string","format":"date-time"},"aantal_leads":{"type":"integer"},"per_fase":{"type":"object","additionalProperties":{"type":"integer"},"description":"Aantal leads per fase; fases zonder leads ontbreken."}}},"Lijst":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"campagne_id":{"type":"string","format":"uuid"},"naam":{"type":"string"},"bron":{"type":["string","null"]},"aangemaakt":{"type":"string","format":"date-time"},"aantal_leads":{"type":"integer"}}},"Lead":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"campagne_id":{"type":"string","format":"uuid"},"lijst_id":{"type":["string","null"],"format":"uuid"},"fase":{"type":"string","enum":["nieuwe_leads","gebeld_1","gebeld_2","gebeld_3","gebeld_4","niet_bereikt","follow_up","binnengekomen","pre_call","bevestigd","dag_van_de_call","gewonnen","follow_up_kort","follow_up_lang","verloren","cancel","no_show","reschedule"]},"fase_naam":{"type":"string","description":"Zoals hij in Aicquisition heet."},"warmte":{"type":["string","null"],"enum":["koud","warm","heet",null]},"contact":{"type":"object","properties":{"voornaam":{"type":["string","null"]},"achternaam":{"type":["string","null"]},"telefoon":{"type":["string","null"],"description":"Met landnummer."},"email":{"type":["string","null"]},"functie":{"type":["string","null"]}}},"bedrijf":{"type":["object","null"],"properties":{"naam":{"type":"string"},"plaats":{"type":["string","null"]}}},"setter":{"$ref":"#/components/schemas/Persoon"},"closer":{"$ref":"#/components/schemas/Persoon"},"pogingen":{"type":"integer","description":"Hoe vaak er gebeld is."},"laatste_poging":{"type":["string","null"],"format":"date-time"},"volgende_actie":{"type":["string","null"],"format":"date-time","description":"Wanneer de lead weer aan de beurt is."},"volgende_actie_is_afspraak":{"type":"boolean","description":"Is dat moment met de lead afgesproken?"},"waarde_cent":{"type":["integer","null"],"description":"Exclusief btw."},"verloren_reden":{"type":["string","null"]},"upsell":{"type":"boolean"},"wacht_op_akkoord":{"type":"boolean","description":"Wacht op akkoord voor een hoger beltarief."},"bron":{"type":["string","null"]},"externe_id":{"type":["string","null"]},"aangemaakt":{"type":"string","format":"date-time"},"gewijzigd":{"type":"string","format":"date-time"}}},"LeadDetail":{"allOf":[{"$ref":"#/components/schemas/Lead"},{"type":"object","properties":{"fasegeschiedenis":{"type":"array","items":{"type":"object","properties":{"van":{"type":["string","null"]},"naar":{"type":"string"},"naar_naam":{"type":"string"},"door":{"$ref":"#/components/schemas/Persoon"},"wanneer":{"type":"string","format":"date-time"}}}},"producten":{"type":"array","items":{"type":"object","properties":{"naam":{"type":["string","null"]},"aantal":{"type":"integer"},"prijs_cent":{"type":"integer","description":"Per stuk, exclusief btw."},"toegevoegd":{"type":"string","format":"date-time"}}}},"afspraken":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"closer":{"$ref":"#/components/schemas/Persoon"},"start":{"type":"string","format":"date-time"},"duur_minuten":{"type":"integer"},"status":{"type":"string","enum":["gepland","gehouden","no_show","afgezegd","verzet"]},"gehouden_seconden":{"type":["integer","null"]}}}},"gesprekken":{"type":"array","description":"De laatste vijftig.","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"beller":{"$ref":"#/components/schemas/Persoon"},"begonnen":{"type":"string","format":"date-time"},"duur_seconden":{"type":"integer"},"uitkomst":{"type":["string","null"],"enum":["no_answer","voicemail","gatekeeper","wrong_number","not_interested","callback","qualified","meeting_booked",null]},"uitkomst_naam":{"type":["string","null"]}}}}}}]},"Notitie":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"soort":{"type":"string","description":"note, call, email_sent, meeting, …"},"onderwerp":{"type":["string","null"]},"tekst":{"type":["string","null"]},"door":{"type":"string","description":"Wie of wat hem schreef: een naam, \"het systeem\" of de naam van een sleutel."},"aangemaakt":{"type":"string","format":"date-time"}}},"Gesprek":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lead_id":{"type":["string","null"],"format":"uuid"},"campagne_id":{"type":["string","null"],"format":"uuid"},"beller":{"$ref":"#/components/schemas/Persoon"},"richting":{"type":"string","enum":["uitgaand","inkomend"]},"van_nummer":{"type":"string"},"naar_nummer":{"type":"string"},"begonnen":{"type":"string","format":"date-time"},"opgenomen":{"type":["string","null"],"format":"date-time"},"beeindigd":{"type":["string","null"],"format":"date-time"},"duur_seconden":{"type":"integer"},"uitkomst":{"type":["string","null"],"enum":["no_answer","voicemail","gatekeeper","wrong_number","not_interested","callback","qualified","meeting_booked",null]},"uitkomst_naam":{"type":["string","null"]},"notitie":{"type":["string","null"]},"samenvatting":{"type":["object","null"],"description":"Alleen met met_samenvatting=true.","properties":{"tekst":{"type":"string"},"details":{"type":["object","null"]}}}}},"Afspraak":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"lead_id":{"type":["string","null"],"format":"uuid"},"campagne_id":{"type":["string","null"],"format":"uuid"},"closer":{"$ref":"#/components/schemas/Persoon"},"start":{"type":"string","format":"date-time"},"duur_minuten":{"type":"integer"},"status":{"type":"string","enum":["gepland","gehouden","no_show","afgezegd","verzet"]},"videolink":{"type":"string","description":"De deelnamelink van de gast."},"gast":{"type":"object","properties":{"naam":{"type":["string","null"]},"email":{"type":["string","null"]}}},"gehouden_seconden":{"type":["integer","null"]},"bron_id":{"type":["string","null"],"description":"De id bij de partij die hem boekte, zoals Calendly."},"aangemaakt":{"type":"string","format":"date-time"}}},"Teamlid":{"type":"object","properties":{"naam":{"type":["string","null"]},"email":{"type":"string"},"rol":{"type":"string","enum":["owner","management","manager","campaign_manager","setter","closer","sales_pro"]},"rol_naam":{"type":"string"}}},"Fase":{"type":"object","properties":{"fase":{"type":"string"},"naam":{"type":"string"},"soort":{"type":"string","enum":["setter","closer"]},"gesloten":{"type":"boolean","description":"Gewonnen of verloren."}}},"Campagnes":{"type":"object","properties":{"organisatie":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"naam":{"type":"string"}}},"test_modus":{"type":"boolean"},"campagnes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"naam":{"type":"string"},"status":{"type":"string","enum":["draft","active","paused"]},"lijsten":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"naam":{"type":"string"}}}}}}},"closers":{"type":"array","items":{"type":"object","properties":{"naam":{"type":["string","null"]},"email":{"type":"string"}}}}}}}}}