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.
| Veld | Betekenis |
|---|---|
id | Stabiele UUID voor dit contact. |
contactType | lead of member. Een geconverteerd lid wordt nooit meer een lead. |
membershipStatus | active, pending, inactive of null voor een lead of tombstone. |
subscription* | Huidig lidmaatschapsplan en de start-/eindtimestamps. |
firstMembershipStartedAt | Vroegste kwalificerende lidmaatschapsstart; verschuift nooit naar later. |
version | Monotoon oplopende contactversie. |
updatedAt | Timestamp voor incrementele synchronisatie. |
deletedAt | Niet-null betekent tombstone; verwijder lokaal opgeslagen persoonsgegevens. |
Endpoints
Beide publieke endpoints vereisen een contacts:read-key.
| Methode | Pad | Doel |
|---|---|---|
GET | /v1/contacts | Geeft een stabiele pagina contacten terug. |
GET | /v1/contacts/{contactId} | Leest één contact binnen de geauthenticeerde tenant. |
Lijstparameters
| Parameter | Betekenis |
|---|---|
updatedAfter | Exclusief RFC 3339 UTC-checkpoint, bijvoorbeeld 2026-09-25T12:05:00Z. |
contactType | Optioneel filter lead of member. |
limit | Paginagrootte van 1 tot en met 500; standaard 100. |
cursor | Ondoorzichtige 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.
- Start met GET /v1/contacts en optionele filters, of met de laatst opgeslagen updatedAfter-watermark.
- Upsert ieder item op id. Negeer een item als version niet hoger is dan de lokaal opgeslagen versie.
- Als page.nextCursor gevuld is, vraag je uitsluitend ?cursor=... op en herhaal je dit totdat hasMore false is.
- Controleer dat sync.watermark op iedere pagina in de reeks gelijk blijft.
- Sla sync.watermark pas op nadat de laatste pagina succesvol is verwerkt.
- Gebruik de opgeslagen watermark als updatedAfter voor de volgende run.
- 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.
| Status | Actie voor developer |
|---|---|
400 | Corrigeer het request of start na een ongeldige cursor opnieuw vanaf de laatste watermark. |
401 | Stop en vervang de ontbrekende, verlopen of ingetrokken API-key. |
403 | De key mist de scope contacts:read. |
404 | Het contact bestaat niet binnen de geauthenticeerde tenant. |
429 | Wacht gedurende Retry-After voordat je opnieuw probeert. |
500/503 | Probeer 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.