Taskport API

Taskport API Reference

Publieke developer reference voor externe systemen die met Taskport willen integreren. Deze pagina bevat alle informatie die nodig is om opdrachten naar Taskport te schrijven en wijzigingen vanuit Taskport terug te lezen.

Basis-URL https://taskport.nl
Authenticatie Bearer token
Incoming POST /api/contractor_incoming_api.php
Outbound GET /api/outbound_sync_api.php

Introductie

Taskport biedt een JSON API voor integraties met externe systemen zoals CRM-, planning-, ticketing-, backoffice- of partnerplatformen. De publieke API bestaat uit twee hoofdflows:

  • Incoming API: opdrachten en contractor-interne berichten naar Taskport schrijven
  • Outbound Sync API: wijzigingen vanuit Taskport ophalen via een cursor-based event feed
1 publieke reference Incoming + outbound JSON over HTTPS

Basis-URL

https://taskport.nl

Dataformaat

Taskport gebruikt JSON voor request payloads en responses.

Header Waarde
Content-Typeapplication/json
Acceptapplication/json

HTTP-methodes

Methode Gebruik
POSTIncoming API voor create, update en internal messaging
GETOutbound Sync API voor read-only event synchronisatie

Authenticatie

Incoming
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
Accept: application/json
Outbound
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json
Deze API’s zijn bruikbaar voor elke partij met een geldige bearer-token die de juiste rechten heeft voor de betreffende route.

Rechten

  • Voor outbound moet de token outbound-rechten hebben, technisch: can_use_outbound_api = 1.
  • Voor incoming is een actieve token voldoende, tenzij incoming-scopes actief zijn; dan moet can_use_incoming_api = 1 op de token staan.
  • Dezelfde token mag incoming en outbound combineren als beide rechten op die token aanwezig zijn.

Rate limits

Bucket Limiet Periode
Unauthenticated requests per IP20per 60 seconden
Authenticated requests per token60per 60 seconden
Authenticated requests per IP90per 60 seconden
Bij 429 Too Many Requests stuurt Taskport ook een Retry-After-header terug.

Fouten

Authenticatie en rechten
missing_api_tokenGeen bearer-token meegestuurd
invalid_api_tokenOngeldig API-token
forbidden_scopeToken heeft niet de juiste rechten
token_misconfiguredToken is niet volledig geconfigureerd
rate_limitedTe veel verzoeken, probeer later opnieuw
Incoming validatie
invalid_jsonRequest body is geen geldige JSON
create_identifier_requiredBij create ontbreekt zowel my_id als idempotency_key
missing_required_fieldsVerplichte create-velden ontbreken
customer_create_failedKlant aanmaken mislukt
site_create_failedSite aanmaken mislukt
job_create_failedOpdracht aanmaken mislukt
message_store_failedBericht opslaan mislukt
internal_server_errorOnverwachte interne fout
HTTP-statuscodes
200Succesvolle create, update, message append of outbound read
400Ongeldige request, JSON of queryparameter
401Niet geauthenticeerd
403Token heeft onvoldoende rechten
404Niet gevonden waar van toepassing
405Methode niet toegestaan
429Rate limit overschreden
500Interne fout
Let op: de incoming API retourneert op dit moment bij een succesvolle create of update ook gewoon 200 OK, niet 201 Created.

Quick start

  1. Gebruik een actieve integration bearer-token. Voor outbound moet die token outbound-rechten hebben.
  2. Maak of update opdrachten via POST /api/contractor_incoming_api.php. Klantgegevens en opdrachtgegevens gaan samen in dezelfde request.
  3. Lees wijzigingen terug via GET /api/outbound_sync_api.php en bewaar steeds de nieuwste next_cursor.
Er is in deze publieke reference geen aparte klant-create endpoint. Een nieuwe opdracht wordt aangemaakt inclusief klantgegevens in dezelfde incoming request.

Incoming API

De incoming API is bedoeld voor externe systemen die opdrachten of contractor-interne berichten naar Taskport willen sturen.

Ondersteunde URL
POST https://taskport.nl/api/contractor_incoming_api.php
Alternatieve URL
POST https://taskport.nl/api/intercom_incoming_api.php
Beide URLs doen functioneel hetzelfde. Je kunt dus dezelfde incoming API via beide routes benaderen.

Opdracht aanmaken / bijwerken

POST /api/contractor_incoming_api.php

Deze route wordt gebruikt om nieuwe opdrachten aan te maken of bestaande opdrachten bij te werken. Taskport gebruikt hiervoor my_id als externe sleutel.

Aanmaken

Bij een nieuwe opdracht worden klantgegevens en opdrachtgegevens samen ingestuurd.

Bijwerken

Bij een update zoekt Taskport eerst op my_id en werkt daarna de bestaande opdracht bij.

Velden bij aanmaken

Verplicht bij aanmaken:

  • name
  • street
  • house_number
  • zipcode
  • city
  • mobile
  • email
  • serial_number
  • title
  • problem_description
  • urgency
  • sla
  • my_id of idempotency_key

Velden bij bijwerken

Verplicht bij bijwerken:

  • my_id
Bestaat my_id al, dan werkt Taskport de bestaande opdracht bij. Als my_id bij create ontbreekt, voorkomt idempotency_key dubbele opdrachten bij retries.

Interne notitie toevoegen

POST /api/contractor_incoming_api.php

Gebruik hetzelfde endpoint om contractor-interne notities aan een bestaande opdracht toe te voegen.

Verplicht voor een bericht:

  • my_id
  • messaging.message
  • messaging.external_message_id

Optioneel:

  • messaging.message_type
  • messaging.created_at
Een bericht via deze koppeling is altijd contractor-intern en niet zichtbaar voor de klant.

Veldreference

Veld Type Omschrijving
namestringKlantnaam
streetstringStraat
house_numberstringHuisnummer
zipcodestringPostcode
citystringWoonplaats
mobilestringMobiel nummer
emailstringE-mailadres
serial_numberstringSerienummer
titlestringKorte opdrachttitel
problem_descriptionstringUitgebreide probleemomschrijving
urgencystringUrgentie
slastringSLA-label
my_idstringExterne opdrachtreferentie
idempotency_keystringIdempotency-sleutel voor create-retries
price_exnumberOptionele API-prijs exclusief btw
api_price_exnumberAlternatieve veldnaam voor price_ex
purchase_exnumberAlternatieve veldnaam voor price_ex
calculated_pricenumberAlternatieve veldnaam voor price_ex
source_urlstringLink naar het bronrecord
intercom_urlstringAlternatieve veldnaam voor source_url

Voorbeeld: opdracht aanmaken

curl -X POST "https://taskport.nl/api/contractor_incoming_api.php" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  --data-raw '{
    "name": "Jane Example",
    "street": "Harbor Lane",
    "house_number": "14A",
    "zipcode": "1012AB",
    "city": "Amsterdam",
    "mobile": "+31612345678",
    "email": "jane.example@example.test",
    "my_id": "SRC-90010001",
    "serial_number": "SRC_009001",
    "title": "kWh meter defect",
    "problem_description": "Customer reports that the charger no longer registers meter values.",
    "urgency": "normal",
    "sla": "standard_24h"
  }'
{
  "ok": true,
  "action": "job_created",
  "job_id": 60001,
  "my_id": "SRC-90010001"
}

Voorbeeld: opdracht bijwerken

curl -X POST "https://taskport.nl/api/contractor_incoming_api.php" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  --data-raw '{
    "my_id": "SRC-90010001",
    "title": "kWh meter defect - revisie 2",
    "urgency": "high"
  }'
{
  "ok": true,
  "action": "job_updated",
  "job_id": 60001,
  "my_id": "SRC-90010001"
}
Voeg je in dezelfde request ook messaging toe, dan kan de response extra velden bevatten zoals message_action, thread_id en message_id. Bij een dubbel external_message_id wordt message_action = duplicate_ignored teruggegeven.
{
  "ok": true,
  "action": "job_updated",
  "job_id": 60001,
  "my_id": "SRC-90010001",
  "message_action": "message_added",
  "thread_id": 123,
  "message_id": 456
}

Outbound Sync API

De outbound sync API is bedoeld voor externe systemen die wijzigingen vanuit Taskport willen uitlezen. Deze API is read-only en werkt via een cursor-based event feed.

Sync-events ophalen

GET /api/outbound_sync_api.php

Gebruik deze route om wijzigingen uit Taskport op te halen.

  1. haal events op vanaf een cursor
  2. verwerk ze in het eigen systeem
  3. bewaar next_cursor
  4. gebruik die cursor bij de volgende run

Queryparameters

Parameter Type Verplicht Omschrijving
cursorstringNeeLaatst verwerkte eventcursor, bijvoorbeeld evt_0000000123
limitintegerNeeAantal items, standaard 100, minimum 1, maximum 500
typesstringNeeKomma-gescheiden lijst van event types
entity_typesstringNeeKomma-gescheiden lijst van entity types
sincestringNeeISO datetime fallback als er nog geen cursor is

Event-object

Veld Type Omschrijving
event_idstringUnieke eventcursor
event_typestringType event
entity_typestringLogische entity
occurred_atdatetimePublicatiemoment in UTC
integration_idintegerInterne koppeling
contractor_idintegerInterne contractor-id
company_idintegerInterne company-id
taskport_idintegerInterne Taskport-id
external_idstringExterne referentie, meestal my_id
payloadobjectEvent-specifieke data

Event types

Belangrijkste event types
  • customer_updated
  • job_created
  • job_updated
  • workorder_updated
  • message_added
  • job_planned
  • job_status_changed
Belangrijkste entity types
  • customer
  • job
  • workorder
  • job_message
  • job_planning
  • job_status

Voorbeeldresponse

curl -X GET "https://taskport.nl/api/outbound_sync_api.php?cursor=evt_0000000123&limit=100" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
{
  "ok": true,
  "items": [
    {
      "event_id": "evt_0000001024",
      "event_type": "job_created",
      "entity_type": "job",
      "occurred_at": "2026-03-18T12:41:30+00:00",
      "integration_id": 17,
      "contractor_id": 4,
      "company_id": 1,
      "taskport_id": 51425,
      "external_id": "EXT-1001",
      "payload": {
        "customer_name": "Demo Klant",
        "serial_number": "EXT_1001",
        "title": "kWh meter defect",
        "status": "created"
      }
    }
  ],
  "next_cursor": "evt_0000001024",
  "has_more": false,
  "count": 1
}
De outbound response kan ook deze headers bevatten: X-Taskport-Integration-Id, X-Taskport-Event-Count en, als er een volgende pagina is, X-Taskport-Next-Cursor.

Request IDs

Gebruik bij support of troubleshooting altijd de request-id uit de response headers.

X-Taskport-Request-Id: <request-id>
Dit document is de enige publieke API-pagina die extern gedeeld hoeft te worden.