SchedulinqDocs
Naar Schedulinq

Snel aan de slag

De drie CRM-knoppen van begin tot eind met curl — plannen, uitnodigen, een teamlid aanmaken — en je eerste webhook.

Deze snelstart loopt de aanroepen achter de drie knoppen door, met curl, zodat je elk verzoek en elk antwoord ziet voordat je een regel eigen code schrijft.

Voordat je begint

  • Laat een beheerder een sleutel maken met alleen de vijf rechten die deze stappen gebruiken: services:read, users:read, planning_links:write, invitations:write, en users:write met één rol. Zie Authenticatie.
  • Zet de sleutel in je shell:
export SCHEDULINQ_API_KEY=sq_live_...

1. Controleer je sleutel

Vraag je diensten op. Een 200 betekent dat de sleutel werkt; het id van een dienst heb je later nodig.

Voorbeeldverzoek · GET /api/v1/services

curl "https://api.schedulinq.com/api/v1/services?limit=25" \
  -H "Authorization: Bearer $SCHEDULINQ_API_KEY"

Antwoord · 200

{
  "data": [
    {
      "colleagueIds": [
        "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e03"
      ],
      "createdAt": "2026-09-01T08:00:00Z",
      "durationMinutes": 60,
      "id": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e01",
      "identifier": "offertebezoek",
      "name": "Offertebezoek",
      "names": {
        "en": "Quote visit",
        "nl": "Offertebezoek"
      }
    }
  ],
  "hasMore": false,
  "nextCursor": "MjAyNi0wOS0wMVQwODowMDowMFp8M2YwYzhhNTItNmIxZS00ZDdhLTljM2UtMWEyYjNjNGQ1ZTAx"
}

2. Zoek het teamlid

Vraag je teamleden op, en kies degene voor wie het werk is.

Voorbeeldverzoek · GET /api/v1/users

curl "https://api.schedulinq.com/api/v1/users?limit=25" \
  -H "Authorization: Bearer $SCHEDULINQ_API_KEY"

Antwoord · 200

{
  "data": [
    {
      "admin": false,
      "calendarConnected": true,
      "createdAt": "2026-10-01T08:30:00Z",
      "customFields": {
        "bedrijf": "Installatiebedrijf Jansen"
      },
      "email": "sanne@installatiebedrijf-jansen.example",
      "firstName": "Sanne",
      "id": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e03",
      "invitationExpiresAt": "2026-10-08T08:30:00Z",
      "invitationId": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e05",
      "lastName": "de Vries",
      "metadata": {
        "campaignId": "C-42"
      },
      "name": "Sanne de Vries",
      "roleId": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e04",
      "schedulable": true,
      "status": "ACTIVE"
    }
  ],
  "hasMore": false,
  "nextCursor": "MjAyNi0xMC0wMVQwODozMDowMFp8M2YwYzhhNTItNmIxZS00ZDdhLTljM2UtMWEyYjNjNGQ1ZTAz"
}

3. Plan

Maak een planningslink voor de lead. Je backend doet dat op het moment dat de beller op Plan klikt:

Voorbeeldverzoek · POST /api/v1/planning-links

IDEMPOTENCY_KEY=$(uuidgen)   # once per action; to retry, run only the curl line again (same key)
curl -X POST https://api.schedulinq.com/api/v1/planning-links \
  -H "Authorization: Bearer $SCHEDULINQ_API_KEY" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "appointmentTypeId": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e01",
  "customer": {
    "id": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e06"
  },
  "metadata": {
    "campaignId": "C-42",
    "dealId": "D-123"
  },
  "returnUrl": "https://crm.example.com/deals/D-123"
}'

Antwoord · 201

{
  "customerId": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e06",
  "expiresAt": "2026-10-14T09:15:00+02:00",
  "id": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e07",
  "url": "https://app.schedulinq.com/plan-link#EXAMPLE-TOKEN",
  "userId": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e03"
}

Stuur de browser van de beller daarna meteen naar url, bijvoorbeeld met een HTTP 303 vanuit je backend. De link opent de planner van Schedulinq één keer, binnen 15 minuten.

De returnUrl uit het voorbeeld wordt geweigerd tot een beheerder de origin toevoegt onder Integraties → API → Toegestane terugkeeradressen. Zet daar de origin van je CRM, of laat returnUrl voor deze test weg. Zet in user het e-mailadres van een van je eigen teamleden. Zie Planningslinks.

4. Nodig uit

Stuur de klant een uitnodiging om bij het teamlid te boeken. Een uitnodiging noemt haar teamleden als lijst, users: zet daar hier een van je eigen teamleden in, net als bij de planningslink.

Voorbeeldverzoek · POST /api/v1/invitations

IDEMPOTENCY_KEY=$(uuidgen)   # once per action; to retry, run only the curl line again (same key)
curl -X POST https://api.schedulinq.com/api/v1/invitations \
  -H "Authorization: Bearer $SCHEDULINQ_API_KEY" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "address": {
    "city": "Amsterdam",
    "country": "NL",
    "line1": "Keizersgracht 100",
    "postalCode": "1015 AA"
  },
  "appointmentTypeId": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e01",
  "customer": {
    "id": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e06"
  },
  "metadata": {
    "campaignId": "C-42",
    "dealId": "D-123"
  },
  "users": [
    {
      "id": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e03"
    }
  ]
}'

Antwoord · 201

{
  "address": {
    "city": "Amsterdam",
    "country": "NL",
    "line1": "Keizersgracht 100",
    "postalCode": "1015 AA"
  },
  "bookingPageClosed": false,
  "bookingUrl": "https://schedulinq.com/i/EXAMPLE-INVITATION",
  "colleagues": [
    {
      "id": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e01",
      "name": "Offertebezoek"
    }
  ],
  "createdAt": "2026-10-01T09:00:00+02:00",
  "customerId": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e06",
  "id": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e08",
  "initialEmailDeferred": false,
  "lineageRootId": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e09",
  "location": {
    "id": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e01",
    "name": "Offertebezoek"
  },
  "locationMode": "VIDEO",
  "metadata": {
    "campaignId": "C-42",
    "dealId": "D-123"
  },
  "rescheduledFromAppointmentId": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e09",
  "service": {
    "id": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e01",
    "name": "Offertebezoek"
  },
  "status": "PENDING",
  "updatedAt": "2026-10-01T09:00:00+02:00",
  "validUntil": "2026-10-31"
}

De uitnodiging gaat weg via je communicatiestappen. Bewaar bookingUrl als je hem nodig hebt: die staat alleen in dit antwoord. Zie Uitnodigingen.

5. Maak een koper aan

Nodig een nieuw teamlid uit met een van de rollen die je sleutel mag toewijzen (GET /api/v1/roles). De Idempotency-Key maakt de aanroep veilig om te herhalen; zie Idempotentie.

Voorbeeldverzoek · POST /api/v1/users

IDEMPOTENCY_KEY=$(uuidgen)   # once per action; to retry, run only the curl line again (same key)
curl -X POST https://api.schedulinq.com/api/v1/users \
  -H "Authorization: Bearer $SCHEDULINQ_API_KEY" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "customFields": {
    "bedrijf": "Loodgieter Bakker"
  },
  "email": "piet+ov@loodgieter-bakker.example",
  "firstName": "Piet",
  "lastName": "Bakker",
  "locale": "nl",
  "metadata": {
    "campaignId": "C-42"
  },
  "roleId": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e04"
}'

Een nieuwe uitnodiging antwoordt met 201, en de uitnodigingsmail is onderweg:

Antwoord · 201

{
  "admin": false,
  "createdAt": "2026-10-01T09:12:00Z",
  "customFields": {
    "bedrijf": "Loodgieter Bakker"
  },
  "email": "piet+ov@loodgieter-bakker.example",
  "firstName": "Piet",
  "invitationExpiresAt": "2026-10-08T09:12:00Z",
  "invitationId": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e05",
  "lastName": "Bakker",
  "metadata": {
    "campaignId": "C-42"
  },
  "name": "Piet Bakker",
  "roleId": "3f0c8a52-6b1e-4d7a-9c3e-1a2b3c4d5e04",
  "status": "INVITED"
}

Voer dezelfde aanroep nog eens uit met een nieuwe Idempotency-Key en het antwoord is een 200 met INVITED: het adres is al uitgenodigd, en er wordt niets twee keer verstuurd. Zie Teamleden.

6. Je eerste webhook

  1. Voeg in het dashboard een endpoint toe onder Integraties → API → Webhooks, en vink de gebeurtenissen aan die je wilt. Zie Webhooks.
  2. Klik op Testbericht versturen. Je endpoint ontvangt een ping.
  3. Controleer de handtekening met het ondertekeningsgeheim van het endpoint; zie De handtekening controleren.

Je endpoint moet via https op een openbaar adres bereikbaar zijn: gewone http, localhost en privé-adressen worden geweigerd. Gebruik voor lokale ontwikkeling een tunneldienst die je computer een openbaar https-adres geeft.

Volgende stappen

Laatst bijgewerkt op 4 oktober 2026