Naar de inhoud
Door de developerdocumentatie bladeren

Developer-API · v1

CRM Contacts API

Synchroniseer leads en leden van één RxApp-affiliate naar een CRM via een tenantgebonden, read-only API.

Laatst gecontroleerd op 25 september 2026

Overzicht

De Contacts API is bedoeld voor server-to-server CRM-integraties. De API exporteert contact- en lidmaatschapsstatus, maar accepteert geen writes.

De API-key bepaalt de affiliate. Stuur geen affiliate-ID mee: een key kan alleen contacten uit de eigen tenant lezen.

  • Productie-base-URL: https://api.rxapp.io
  • API-versie: v1
  • Scope: contacts:read
  • Formaten: JSON-requests en -responses; RFC 3339 UTC-timestamps

Authenticatie

Een RxApp-affiliate-eigenaar of RxApp-support verstrekt een tenantspecifieke API-key. Stuur deze bij ieder request als Bearer-token mee.

Bewaar de key in een server-side secret manager. Plaats hem nooit in browsercode, mobiele bundels, source control, URL's of applicatielogs.

Authorization: Bearer rx_live_...

Eerste request

Vraag de eerste pagina contacten op:

curl "https://api.rxapp.io/v1/contacts?limit=100" \
  -H "Authorization: Bearer $RXAPP_CRM_API_KEY"

Voorbeeldresponse met fictieve gegevens:

{
  "items": [
    {
      "id": "11111111-1111-4111-8111-111111111111",
      "contactType": "member",
      "firstName": "Alex",
      "lastName": "Example",
      "email": "alex@example.com",
      "membershipStatus": "active",
      "subscriptionPlanCode": "unlimited",
      "subscriptionPlanName": "Unlimited",
      "subscriptionStartedAt": "2026-09-01T00:00:00.000Z",
      "subscriptionEndsAt": null,
      "firstMembershipStartedAt": "2026-09-01T00:00:00.000Z",
      "version": 3,
      "updatedAt": "2026-09-25T12:00:00.000Z",
      "deletedAt": null
    }
  ],
  "page": {
    "nextCursor": null,
    "hasMore": false
  },
  "sync": {
    "watermark": "2026-09-25T12:05:00.000Z"
  }
}

Contactmodel

Gebruik id als externe identiteit en version om verouderde updates te negeren. Interne RxApp-user-ID's worden nooit getoond.

VeldBetekenis
idStabiele UUID voor dit contact.
contactTypelead of member. Een geconverteerd lid wordt nooit meer een lead.
membershipStatusactive, pending, inactive of null voor een lead of tombstone.
subscription*Huidig lidmaatschapsplan en de start-/eindtimestamps.
firstMembershipStartedAtVroegste kwalificerende lidmaatschapsstart; verschuift nooit naar later.
versionMonotoon oplopende contactversie.
updatedAtTimestamp voor incrementele synchronisatie.
deletedAtNiet-null betekent tombstone; verwijder lokaal opgeslagen persoonsgegevens.

Endpoints

Beide publieke endpoints vereisen een contacts:read-key.

MethodePadDoel
GET/v1/contactsGeeft een stabiele pagina contacten terug.
GET/v1/contacts/{contactId}Leest één contact binnen de geauthenticeerde tenant.

Lijstparameters

ParameterBetekenis
updatedAfterExclusief RFC 3339 UTC-checkpoint, bijvoorbeeld 2026-09-25T12:05:00Z.
contactTypeOptioneel filter lead of member.
limitPaginagrootte van 1 tot en met 500; standaard 100.
cursorOndoorzichtige vervolgcursor. Dit moet de enige queryparameter zijn.

Vraag één contact op via de geëxporteerde UUID:

curl "https://api.rxapp.io/v1/contacts/11111111-1111-4111-8111-111111111111" \
  -H "Authorization: Bearer $RXAPP_CRM_API_KEY"

Veilig synchroniseren

Een watermark is het checkpoint van een volledig verwerkte paginareeks. Schuif deze nooit op na een gedeeltelijke synchronisatie.

  1. Start met GET /v1/contacts en optionele filters, of met de laatst opgeslagen updatedAfter-watermark.
  2. Upsert ieder item op id. Negeer een item als version niet hoger is dan de lokaal opgeslagen versie.
  3. Als page.nextCursor gevuld is, vraag je uitsluitend ?cursor=... op en herhaal je dit totdat hasMore false is.
  4. Controleer dat sync.watermark op iedere pagina in de reeks gelijk blijft.
  5. Sla sync.watermark pas op nadat de laatste pagina succesvol is verwerkt.
  6. Gebruik de opgeslagen watermark als updatedAfter voor de volgende run.
  7. Verwijder een verlopen cursor en begin opnieuw vanaf de laatst opgeslagen watermark.

Fouten en rate limits

Foutresponses bevatten een stabiele code en X-Request-Id. Bewaar het request-ID wanneer je contact opneemt met support.

StatusActie voor developer
400Corrigeer het request of start na een ongeldige cursor opnieuw vanaf de laatste watermark.
401Stop en vervang de ontbrekende, verlopen of ingetrokken API-key.
403De key mist de scope contacts:read.
404Het contact bestaat niet binnen de geauthenticeerde tenant.
429Wacht gedurende Retry-After voordat je opnieuw probeert.
500/503Probeer begrensd opnieuw met exponential backoff; meld blijvende fouten met X-Request-Id.

Geauthenticeerde responses bevatten X-RateLimit-Limit, X-RateLimit-Remaining en X-RateLimit-Reset. Limieten worden per key ingesteld; ga niet uit van een vaste waarde.

Downloads en support

De Postman-collectie bevat uitsluitend read-only requests. Vul crmApiKey alleen als lokale Current value in en exporteer geen ingevulde collectie.

Mail voor toegang of integratieondersteuning naar support@rxapp.io.