Personyze Wiki Personyze Wiki docs
Nederlands
Open Personyze
Docs/ Developers/ REST API: overzicht en snel aan de slag
Developers

REST API: overzicht en snel aan de slag

Het startpunt voor de REST API van Personyze: de vorm van een verzoek, HTTP-methoden, responscodes, conventies, limieten en paginering.

4 min read Updated 32 minutes ago

Met de REST API van Personyze lezen en wijzigen applicaties van derden data in je account: klantprofielen, product- en artikelcatalogi, placeholders, acties, doelgroeplijsten, dagelijkse rapportagesamenvattingen — dezelfde data waarmee de interface van Personyze werkt. Hij gebruikt standaard-HTTPS, accepteert en geeft JSON terug, en ondersteunt de vier standaardwerkwoorden (GET, POST, PUT, DELETE).

Deze pagina is het startpunt. Voor de volledige installatie-uitleg, zie Authenticatie. Voor de syntaxis van padparameters (het patroon where/columns/order_by/limit dat door elk endpoint loopt), zie Padparameters. Voor kolomlijsten per object en ondersteunde methoden, zie Naslag van objecten.

Snel aan de slag

Haal de gebruiker op met interne ID 42:

curl 'https://api:YOUR_API_KEY@app.personyze.com/rest/users/where/internal_id=42'

Dat is de hele vorm van elk verzoek:

https://api:<API_KEY>@app.personyze.com/rest/<object>[/<modifier>/<value>...]
  • Alleen HTTPS. Gewone HTTP krijgt 401 Unauthorized — zelfs voor localhost -proxy’s.
  • HTTP Basic auth met gebruikersnaam api en je API-sleutel als wachtwoord (of geef die inline mee zoals in het curl -voorbeeld hierboven).
  • Alle padargumenten worden URL-gedecodeerd voordat ze worden verwerkt — kolomwaarden met /, =, &, of % moeten procent-gecodeerd zijn.

HTTP-methoden

Methode Doel Body Geeft terug
GET lezen geen Array met records (of één record bij de vorm met één id)
POST aanmaken JSON-object Numerieke ID van het nieuwe record
PUT bijwerken JSON-object Aantal betrokken rijen
DELETE verwijderen geen Aantal betrokken rijen

POST en PUT -body’s gebruiken Content-Type: application/json. application/x-www-form-urlencoded wordt als terugval geaccepteerd voor oudere clients, maar JSON heeft de voorkeur.

Responscodes

Code Betekenis
200 OK Gelukt — de body hangt af van de methode (zie de tabel met HTTP-methoden hierboven). Kolommen van het type datum worden geserialiseerd als YYYY-MM-DD HH:MM:SS; tijdstempels zijn Unix-seconden in UTC.
400 Bad Request Je invoer is geweigerd. De body is een leesbare beschrijving in platte tekst (bijv. “Cannot do this operation on whole table: column ‘uset_id’ is not indexed.”). Veelvoorkomende oorzaken: een typefout in een kolomnaam, een ontbrekende where -clausule bij een grote tabel, een ongeldige JSON-body.
401 Unauthorized Ongeldige of ontbrekende API-sleutel, of het verzoek was geen HTTPS.
500 Internal Server Error Onverwachte fout aan de kant van de API — melding in de body. Het loont om het na een paar seconden opnieuw te proberen; blijft het, neem dan contact op met support.
503 Service Unavailable Tijdelijke fout (deadlock, verbroken databaseverbinding, enz.). Veilig om opnieuw te proberen met backoff.

Conventies voor alle endpoints

id vs internal_id

De meeste objecten hebben twee identificatoren:

  • id — de interne numerieke primaire sleutel van Personyze, automatisch toegekend bij het invoegen. Voor altijd stabiel, maar alleen betekenisvol binnen Personyze.
  • internal_id — de externe identificator die jij aanlevert (je e-commerce-SKU, je gebruikers-ID uit het CRM, enz.). Beschikbaar bij objecten waar koppelen aan een extern systeem ertoe doet: users, products, articles.

Voor de meeste integratiecode wil je internal_id gebruiken — zo blijft dezelfde code werken, ook als dezelfde data opnieuw in Personyze worden geïmporteerd met nieuwe ids.

Geïndexeerde kolommen vereist bij grote tabellen

Endpoints rond grote tabellen (users, events, sessions_archive, summary_actions, enz.) weigeren scans van de volledige tabel. Je moet een where -clausule of een order_by op een geïndexeerde kolom opnemen. Foutmeldingen noemen de beschikbare geïndexeerde kolommen/samengestelde indexen — zie Padparameters → Vereiste geïndexeerde kolom voor alle regels.

Samengestelde indexen

Samengestelde indexen verschijnen in foutmeldingen als [col1, col2, col3]. Alleen de eerste kolom van een samengestelde index is bruikbaar als filter op één kolom. De andere kolommen worden pas nuttig in combinatie met de eerste kolom.

API-sleutels gelden per account

Elk Personyze-account waartoe je toegang hebt, heeft een eigen API-sleutel — die zijn niet uitwisselbaar. Van account wisselen betekent van sleutel wisselen.

Limieten & paginering

  • Maximaal 1.000 rijen per verzoek. Gebruik limit/<count> of limit/<offset>,<count> om de paginagrootte te bepalen.
  • Cursorpaginering heeft de voorkeur boven diepe offsets. De geïndexeerde order_by -kolom doorlopen met where -voorwaarden in cursorstijl is veel sneller dan diepe offset -waarden, die alle overgeslagen rijen opnieuw lezen.

Patroon voor cursorpaginering.Doorloop de geïndexeerde kolom met where in plaats van te pagineren op offset. Na het ophalen van 1.000 gebruikers gesorteerd op last_session_time aflopend moet de volgende pagina bijvoorbeeld where/last_session_time<<last_seen_value> gebruiken in plaats van limit/1000,1000.

Verder verdiepen

🔑 AuthenticatieJe API-sleutel ophalen, de indeling van de auth-header met curl/Python/JS-voorbeelden, en toegang tot meerdere accounts. Lezen →
🧩 PadparametersDe where / columns / order_by / limit -syntaxis met alle operatoren en combinaties met AND/OR. Lezen →
📚 Naslag van objectenPagina’s per object met kolomlijsten, ondersteunde methoden en voorbeelden die klaar zijn om te kopiëren — gebruikers, producten, acties, rapportage en meer. Lezen →
🛠 Bronnen voor developersSDK’s, GitHub-repo’s en andere tools voor developers — terug naar het centrale overzicht. Lezen →
Did this page answer your question?
Thank you — that goes to whoever maintains this page.