Crewplanning Inloggen Start gratis
Voor ICT'ers

Koppelen met Crewplanning

Gebruik je Crewplanning gewoon via de site, dan heb je deze pagina niet nodig. Dit is voor wie Crewplanning wil koppelen aan een planningssysteem of eigen software; geef de link door aan je ICT'er.

Alles is JSON over HTTPS. Datums zijn JJJJ-MM-DD, tijden vrije tekst zoals 08:00-18:00. Er is geen versiebeheer buiten /v1; wat hier staat blijft werken.

Twee sleutels

Als freelancer gebruik je je API-sleutel uit Instellingen → API, als Authorization: Bearer cp_…. Daarmee zie je je hele agenda en kun je opties bevestigen of afwijzen.

Als opdrachtgever gebruik je het token uit de link die je van de freelancer kreeg: https://crewplanning-nl.pages.dev/k/<token> wordt https://crewplanning-nl.pages.dev/api/v1/k/<token>/…. Je ziet precies wat je op die pagina ook ziet, niet meer.

Opdrachtgever

GET /api/v1/k/:token/agenda?van=&tot=

Per dag een kleur: vrij, optie (jouw optie), bevestigd (voor jou), deels (een deel van de dag is bezet, met bezet_tijden), bezet, verleden. Zonder van/tot: vandaag tot 60 dagen vooruit.

curl "https://crewplanning-nl.pages.dev/api/v1/k/<token>/agenda?van=2026-11-10&tot=2026-11-16"

{ "freelancer": { "naam": "Sam de Vries" }, "klant": { "naam": "Rotterdam Ahoy", "planner": null },
  "dagen": [
    { "datum": "2026-11-10", "kleur": "bezet",  "eigen": [], "bezet_tijden": [] },
    { "datum": "2026-11-11", "kleur": "deels",  "eigen": [], "bezet_tijden": ["14:00-23:00"] },
    { "datum": "2026-11-12", "kleur": "optie",  "eigen": [ { "id": 81, "status": "optie", … } ], "bezet_tijden": [] },
    { "datum": "2026-11-13", "kleur": "vrij",   "eigen": [], "bezet_tijden": [] } ] }

POST /api/v1/k/:token/opties

Optie leggen. Alleen van is verplicht. Overlapt het met een bevestigde dienst, dan krijg je 409 met de reden. De freelancer krijgt bericht.

curl -X POST https://crewplanning-nl.pages.dev/api/v1/k/<token>/opties -H "Content-Type: application/json" \
  -d '{ "van": "2026-11-13", "tot": "2026-11-13", "tijden": "08:00-18:00", "locatie": "Ahoy, Rotterdam",
        "contact": "Piet Bakker 010-2933300", "parkeren": "P Zuid", "info": "Call 07:45 bij expeditie",
        "link": "https://…/callsheet.pdf", "uiterlijk": "2026-11-08" }'

201 { "aanvraag": { "id": 82, "status": "optie", "van": "2026-11-13", "tot": "2026-11-13", "vervalt_op": "2026-11-08", … } }

GET /api/v1/k/:token/opties · GET …/opties/:id · DELETE …/opties/:id

Je eigen aanvragen, de status van één aanvraag, of een optie intrekken. Statussen: optie, bevestigd, afgewezen, vervallen, geannuleerd.

Toont de freelancer zijn tarief, dan staat in elke aanvraag tarief_akkoord (de tariefregel waarmee je bij het leggen akkoord ging) en tarief_bedrag (indicatie ex btw). Bij één aanvraag zie je ook bijlagen (callsheet, rider) met een url die alleen met jouw token werkt; uploaden gaat via de pagina, niet via de API.

Freelancer

GET /api/v1/agenda?van=&tot=

Alles in je agenda: diensten, opties en blokkades, per dag, met kleur vrij, optie, deels, bezet of verleden.

curl https://crewplanning-nl.pages.dev/api/v1/agenda?van=2026-11-10&tot=2026-11-16 -H "Authorization: Bearer cp_…"

GET /api/v1/opties

Alle openstaande opties, oudste datum eerst.

POST /api/v1/opties/:id/bevestig · …/afwijs · …/annuleer

Zelfde regels als in de agenda: bevestigen kan niet bij een harde overlap (409), annuleren alleen bij een bevestigde dienst. Body optioneel: { "reden": "…" }. Beide kanten krijgen bericht.

curl -X POST https://crewplanning-nl.pages.dev/api/v1/opties/82/bevestig -H "Authorization: Bearer cp_…"

Webhook

Zet in Instellingen → API een URL, en bij elke statuswissel krijg je één POST met JSON. Header X-Crewplanning-Event bevat de gebeurtenis: optie_ingediend, bevestigd, afgewezen, vervallen, geannuleerd, ingetrokken, gewijzigd. Antwoord met 2xx. Mislukt de aflevering, dan zie je dat onder Berichten; er wordt niet opnieuw geprobeerd.

{ "gebeurtenis": "bevestigd", "tijdstip": "2026-11-05T09:12:44.000Z",
  "aanvraag": { "id": 82, "status": "bevestigd", "klant": { "id": 3, "naam": "Rotterdam Ahoy" }, "planner": "Piet Bakker",
                "van": "2026-11-13", "tot": "2026-11-13", "tijden": "08:00-18:00", "locatie": "Ahoy, Rotterdam", … } }

Agenda-feeds

Geen API nodig: elke agenda heeft een iCal-adres voor Google Agenda, Outlook en Apple Agenda. Jij vindt het onder je agenda, elke opdrachtgever op zijn eigen pagina.

Grenzen