Skip to content

API-integratie

Krijg programmatisch toegang tot je MyCompanyDesk-gegevens via de REST API.

INFO

API-toegang is onderdeel van het Pro-abonnement.

Overzicht

De MyCompanyDesk API stelt je in staat om:

  • Facturen, uitgaven en klanten aan te maken en op te halen
  • Facturatieworkflows te automatiseren
  • Te integreren met andere bedrijfstools
  • Aangepaste rapportages te bouwen
  • Gegevens te synchroniseren met externe systemen

Authenticatie

Stuur je API-sleutel mee in de X-API-Key request-header:

bash
curl -X GET "https://api.mycompanydesk.com/api/invoices" \
  -H "X-API-Key: mcd_live_xxxxx"

De header Authorization: Bearer is alleen voor browsersessies. API-sleutels horen altijd in X-API-Key.

Een API-sleutel aanmaken

  1. Ga naar Instellingen > API-sleutels
  2. Klik op API-sleutel maken
  3. Geef de sleutel een beschrijvende naam en kies de rechten
  4. Kopieer de sleutel direct, deze wordt maar een keer getoond

Bij het aanmaken van een sleutel kun je instellen:

  • Rechten: Lezen (gegevens bekijken), Schrijven (aanmaken, bijwerken en verwijderen) en Beheer (volledige toegang)
  • IP-allowlist (optioneel): beperk de sleutel tot specifieke IP-adressen
  • Vervaldatum (optioneel): 30 dagen, 90 dagen, 1 jaar of nooit

Je kunt een sleutel op elk moment intrekken vanaf dezelfde pagina. Ingetrokken sleutels verliezen direct hun toegang.

WARNING

Bewaar je API-sleutel veilig. Commit deze nooit naar versiebeheer en deel hem niet publiekelijk.

Basis-URL

Alle API-endpoints zijn beschikbaar op:

https://api.mycompanydesk.com/api

Belangrijke endpoints

Klanten

MethodeEndpointBeschrijving
GET/customersAlle klanten ophalen
POST/customersEen klant aanmaken
GET/customers/:idEen klant ophalen
PUT/customers/:idEen klant bijwerken
DELETE/customers/:idEen klant verwijderen

Facturen

MethodeEndpointBeschrijving
GET/invoicesAlle facturen ophalen
POST/invoicesEen factuur aanmaken
GET/invoices/:idEen factuur ophalen
PUT/invoices/:idEen factuur bijwerken
DELETE/invoices/:idEen factuur verwijderen
GET/invoices/:id/pdfDe factuur-PDF downloaden
POST/invoices/:id/emailDe factuur per e-mail versturen
POST/invoices/:id/reminderEen betalingsherinnering versturen
POST/invoices/:id/duplicateEen factuur dupliceren
POST/invoices/:id/credit-noteEen creditfactuur aanmaken

Uitgaven

MethodeEndpointBeschrijving
GET/expensesAlle uitgaven ophalen
POST/expensesEen uitgave aanmaken
GET/expenses/:idEen uitgave ophalen
PUT/expenses/:idEen uitgave bijwerken
DELETE/expenses/:idEen uitgave verwijderen

Projecten

MethodeEndpointBeschrijving
GET/projectsAlle projecten ophalen
POST/projectsEen project aanmaken
GET/projects/:idEen project ophalen
PUT/projects/:idEen project bijwerken
DELETE/projects/:idEen project verwijderen

Zoeken

MethodeEndpointBeschrijving
GET/search?q=term&type=entityZoeken over alle entiteiten

Filteren

Lijst-endpoints ondersteunen queryparameters om te filteren:

GET /api/invoices?status=sent&customer_id=123&limit=50

Veelgebruikte filters:

  • status: filteren op status
  • customer_id: filteren op klant
  • search: vrije zoekterm
  • date_from / date_to: filteren op datumbereik
  • limit: aantal resultaten
  • offset: paginering-offset

Snelheidslimieten

API-verzoeken zijn beperkt tot 200 verzoeken per minuut. Elke respons bevat de headers X-RateLimit-Limit, X-RateLimit-Remaining en X-RateLimit-Reset. Bij het overschrijden van de limiet krijg je een 429 Too Many Requests-respons met een Retry-After-header, dus bouw een retry-strategie in je integratie in.

Foutafhandeling

De API retourneert standaard HTTP-statuscodes:

CodeBeschrijving
200Succes
201Aangemaakt
400Ongeldig verzoek (controleer je parameters)
401Niet geautoriseerd (ongeldige API-sleutel)
403Verboden (onvoldoende rechten)
404Niet gevonden
429Snelheidslimiet bereikt
500Serverfout

Foutresponsen bevatten een JSON-body:

json
{
  "error": "Beschrijving van wat er mis ging"
}

Webhooks

Webhooks informeren je systemen realtime wanneer er iets gebeurt in je account. Stel ze in via Instellingen > Webhooks: geef de webhook een naam en een URL en kies de gebeurtenissen die je wilt ontvangen.

Beschikbare gebeurtenissen:

  • invoice.created, invoice.updated, invoice.paid, invoice.overdue
  • expense.created, expense.updated, expense.deleted
  • customer.created, customer.updated
  • inbox.thread.received, inbox.message.received
  • test.ping (om je endpoint te testen)

Elke levering is een HTTP POST met een JSON-body:

json
{
  "id": "event id",
  "type": "invoice.paid",
  "company_id": 123,
  "created_at": "2026-07-02T12:00:00.000Z",
  "data": { }
}

Leveringen verifiëren

Elke webhook heeft een signing secret dat eenmalig wordt getoond bij het aanmaken (je kunt het later roteren). Elke levering bevat een X-MCD-Signature-header met een HMAC-SHA256-hash (hex) van de ruwe request-body, berekend met jouw signing secret. Bereken de hash aan jouw kant opnieuw en vergelijk deze met de header voordat je de payload vertrouwt. De headers X-MCD-Event-Type, X-MCD-Event-Id en X-MCD-Delivery-Id identificeren de levering.

Nieuwe pogingen

Mislukte leveringen worden automatisch opnieuw geprobeerd met oplopende tussenpozen. Een endpoint dat blijft falen wordt automatisch uitgeschakeld; schakel het weer in op de webhooks-pagina zodra je endpoint weer gezond is.

Tips

  • Gebruik paginering voor grote datasets
  • Cache responsen waar mogelijk om het aantal API-aanroepen te verminderen
  • Implementeer retry-logica met exponential backoff voor snelheidslimieten
  • Gebruik webhooks in plaats van polling voor realtime updates

MyCompanyDesk — Accounting made simple.