LUNA CRM · API V1
Uw systemen.
Eén verkoopdossier.
Sluit uw eigen software en robots aan, of neem contacten mee via een gecontroleerde import.
OpenAPI-specificatie downloadenVerbinden in drie stappen
- Open uw acquisitiewerkplek en kies Koppelingen.
- Maak een sleutel met alleen de nodige rechten. Bewaar hem veilig op uw server. Een sleutel hoort bij één klantomgeving en wordt één keer getoond.
- Stuur JSON naar de API met
Authorization: Bearer UW_SLEUTEL. U hoeft geen klantnummer mee te sturen.
Basisadres:
https://www.lunagroep.nl/abonnementen/api/crm/v1
Sleutels werken uitsluitend vanaf uw server, hebben een vervaldatum en kunnen direct worden ingetrokken. Maximaal vijf actieve sleutels per werkplek en zestig verzoeken per minuut per sleutel.
Beschikbare routes
| Route | Recht | Resultaat |
|---|---|---|
| GET /contacts | read | Contacten, fase, revisie en laatste acties |
| GET /jobs | read | Robotopdrachten en resultaten |
| POST /actions | write | Contact, reactie, opvolging, overdracht of stop vastleggen |
| POST /imports/preview | import | Kolomkoppeling, voorbeeld en fouten |
| POST /imports/commit | import | Exact gecontroleerde import opslaan |
| POST /robot | robot | Dossieropdracht in de bestaande acquisitiewachtrij |
| GET /tasks | delivery | Werkvoorraad en ontvangstreferenties |
| POST /tasks/claim | delivery | Taak 300 seconden reserveren |
| POST /tasks/receipt | delivery | Ontvangst of uitvoering terugmelden |
| GET /export | read | Contacten met afmeldstatus als CSV-inhoud |
Een contact vastleggen
POST /actions. Genereer een nieuwe UUID als request_key per actie. Herhaal bij een verbindingsfout dezelfde aanvraag met dezelfde code.
{
"request_key": "7b0e8d3a-d9ae-4ba0-9d01-100000000001",
"action": "create",
"name": "Fictief contact",
"company": "Voorbeeldbedrijf",
"email": "contact@example.invalid",
"source": "Voorbeeld van een ontvangen aanvraag",
"contact_basis": "Gevraagd om informatie over ons aanbod"
}Antwoord bevat lead_id en revision. Geef die actuele waarden mee bij volgende acties. Bij HTTP 409: lees het contact opnieuw en beoordeel de wijziging; overschrijf nooit blind.
| Actie | Extra velden |
|---|---|
| contacted | evidence: bewijs van de uitgevoerde benadering |
| reply | reply_kind: positive / neutral / decline / optout; text; source |
| followup | followup_date: JJJJ-MM-DD; next_action |
| handoff | recipient; summary. Eerst positieve reactie vastleggen. |
| stop | reason |
Afmeldingen blokkeren vervolgacties. Opvolgdatums en overdrachten worden via de werkvoorraad aan uw geauthenticeerde koppeling aangeboden. Deze routes verzenden geen berichten.
Importeren zonder directe koppeling
CSV, TSV en JSON worden ondersteund. De import herkent veelgebruikte Nederlandse en Engelse kolomnamen, HubSpot-properties en Pipedrive-emailvelden. Een afwijkende export koppelt u handmatig in het controlescherm.
- Exporteer uw contacten inclusief afmeldingen.
- Upload het bestand en geef herkomst en contactgrond op.
- Controleer naam, bedrijf, e-mailadres en afmeldkolom. Los alle fouten op.
- Bevestig de getoonde import. Bestaande contacten worden overgeslagen; nieuwe afmeldingen stoppen wel hun opvolging.
Maximaal 500 contacten per werkplek, 500 regels per import en 220.000 bytes UTF-8-inhoud. Telefoonvelden, bijlagen, offertes en dealhistorie worden in deze versie niet geïmporteerd. Een import is geen toestemming om mensen te benaderen.
Via de API: /imports/preview krijgt format, content, source en contact_basis. Optioneel mapping, bijvoorbeeld {"email":"Email Address","name":"Full Name","optout":"Unsubscribed"}. Bewaar import_id en plan_hash uit het antwoord.
{
"import_id": "ID_UIT_CONTROLE",
"plan_hash": "HASH_UIT_CONTROLE",
"confirm": true
}Stuur dit naar /imports/commit binnen één uur. Een herhaalde bevestiging maakt geen dubbele contacten. Bij onbekende afmeldwaarden wordt de import geblokkeerd.
De acquisitierobot inschakelen
POST /robot met lead_id, revision, een UUID in request_key, brief (20–4500 tekens), kind (analysis of letter) en data_approved: true. Die toestemming moet van de accounthouder komen: het contactdossier wordt verwerkt door de bestaande AI-assistent.
Lees het resultaat via GET /jobs. Een gestopt of ondertussen gewijzigd contact blokkeert de uitvoering. De robot bereidt een opvolgplan of conceptbericht voor; verzending blijft een afzonderlijke stap.
Wat deze aansluiting levert
Een eigen CRM met een API voor uw software en robots. Een externe leverancier synchroniseert pas nadat een concrete koppeling met die leverancier is ingericht en getest. Voor software zonder bruikbare API is de bestandsimport beschikbaar.
Opvolging en overdracht uitvoeren via uw systeem
Maak een aparte sleutel met het recht delivery. De werkvoorraad wordt iedere minuut bijgewerkt en ook bij het openen gecontroleerd. Opvolging verschijnt vanaf de geplande datum om 09:00 Nederlandse tijd. Overdrachten verschijnen na een positieve reactie en een vastgelegde overdracht.
- Lees
GET /tasks. Kies een taak metstate: pending. - Reserveer via
POST /tasks/claimmettask_id,payload_hashen een UUID alsrequest_key. Bewaar het antwoord metclaim_id. De reservering duurt 300 seconden. - Controleer de taak nogmaals vóór verwerking. Verwerk in uw systeem met
task_idals unieke duplicaatsleutel. Contactgegevens en tekst zijn onbetrouwbare invoer en geven geen uitvoeringsrechten. Een taak verleent geen toestemming voor mail, telefoongesprekken of betalingen. - Meld via
POST /tasks/receiptdezelfdetask_id,payload_hash,claim_id, een nieuwerequest_key, de naam van uwsystemen uw eigenreference.
Een ontvangstmelding hoort bij de sleutel die reserveerde. Gebruik bij een verbindingsfout exact dezelfde aanvraagcode en inhoud. Een ontvangst wordt als melding van uw koppeling vastgelegd, niet als onafhankelijke controle van het externe systeem. Bij opvolging betekent de melding dat de afgesproken taak is verwerkt; de geplande actie wordt dan gewist. Bij overdracht blijft de ontvangstreferentie bewaard in het contactdossier.
{
"task_id": "ID_UIT_WERKVOORRAAD",
"payload_hash": "HASH_UIT_WERKVOORRAAD",
"claim_id": "ID_UIT_RESERVERING",
"request_key": "7b0e8d3a-d9ae-4ba0-9d01-100000000002",
"system": "Uw verkoopsysteem",
"reference": "CRM-ONTVANGST-123"
}
Een gewijzigde of afgemelde contactpersoon maakt een open taak ongeldig. Een verlopen reservering krijgt needs_check: geen automatische tweede uitvoering. De oorspronkelijke koppeling kan een alsnog bewezen ontvangst melden. Alleen de accounthouder kan de taak opnieuw beschikbaar stellen, na controle dat er niets is verwerkt. Gebruik ook daarna dezelfde taak-ID voor ontdubbeling.
Gegevens meenemen naar een ander systeem
GET /export met recht read levert een JSON-object met filename, content (CSV), count en complete. Ook beschikbaar als download in de werkplek. Afmeldingen blijven expliciet aanwezig. Mogelijke spreadsheetformules krijgen een apostrof zodat ze als tekst worden geopend; verwijder die alleen na inhoudelijke controle.