Personyze Wiki Personyze Wiki docs
Nederlands
Open Personyze
Docs/ Developers/ REST API: authenticatie
Developers

REST API: authenticatie

Hoe je verzoeken aan de REST API van Personyze authenticeert: waar je je API-sleutel vindt, hoe je die meestuurt, foutcodes, meerdere accounts en snelheidslimieten.

4 min read Updated 32 minutes ago

Elk verzoek aan de REST API van Personyze moet worden geauthenticeerd met een API-sleutel, verstuurd via HTTPS. Er zijn geen openbare endpoints zonder authenticatie.

Heb je het nog niet gelezen, begin dan met REST API: overzicht & snel aan de slag voor de vorm van elk verzoek op hoofdlijnen.

Waar je je API-sleutel vindt

Ga in de beheerinterface van Personyze naar Instellingen → Integraties → API. Elk Personyze-account waartoe je toegang hebt, heeft een eigen sleutel — die zijn niet uitwisselbaar.

API-sleutels zijn gevoelige inloggegevens.Behandel de API-sleutel als een wachtwoord — iedereen die hem heeft, kan je accountdata lezen en wijzigen. Houd hem uit code aan de clientkant, openbare repo’s, screenshots en gedeelde logbestanden. Lekt een sleutel uit, genereer hem dan meteen opnieuw op dezelfde instellingenpagina.

Zo stuur je de sleutel mee

Gebruik HTTP Basic Authentication met gebruikersnaam api en de sleutel als wachtwoord. Twee gebruikelijke manieren om dat te doen:

Curl-snelkoppeling — inloggegevens in de URL

Handig om snel iets te testen en voor shellscripts:

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

Authorization-header — de voorkeur voor productiecode

De meeste HTTP-clientbibliotheken verwerken user:pass@host uit URL’s niet betrouwbaar, en inloggegevens in de URL lekken uit naar de logbestanden van webservers en de browsergeschiedenis. Bouw voor productiecode de Authorization -header expliciet op:

Authorization: Basic <base64("api:" + API_KEY)>

Curl met expliciete header

curl https://app.personyze.com/rest/users/where/internal_id=42 \
     -H "Authorization: Basic $(printf 'api:%s' YOUR_API_KEY | base64)"

Python (requests)

import requests

r = requests.get(
    'https://app.personyze.com/rest/users/where/internal_id=42',
    auth=('api', YOUR_API_KEY),
)
r.raise_for_status()
data = r.json()

JavaScript (fetch)

const r = await fetch(
    'https://app.personyze.com/rest/users/where/internal_id=42',
    { headers: { Authorization: 'Basic ' + btoa('api:' + API_KEY) } }
);
const data = await r.json();

Roep de REST API nooit aan vanuit browsercode met je hoofd-API-sleutel.De REST API rechtstreeks vanuit een webbrowser aanroepen stelt je API-sleutel bloot aan iedereen die de paginabron of het netwerktabblad bekijkt. Gebruik voor personalisatie in de browser in plaats daarvan de JavaScript-tracker / SDK — die gebruiken openbare inloggegevens per account, niet je hoofd-API-sleutel.

Foutcodes bij authenticatie

Status Body / betekenis
401 Unauthorized Please, log in — helemaal geen Authorization -header, of de header is ongeldig.
401 Unauthorized De API-sleutel is onbekend, is ingetrokken, of hoort bij een ander account dan het account waarop de URL is gericht.
401 Unauthorized Het verzoek is verstuurd via gewone http://. HTTPS is verplicht — zelfs voor localhost -proxy’s en ontwikkelomgevingen.
400 Bad Request Invalid API key — de sleutel was syntactisch in orde maar paste bij geen enkel account.

Toegang tot meerdere accounts / tenants

De API-sleutel bepaalt op welk Personyze-account het verzoek werkt. De URL van het endpoint noemt het account nooit — dat wordt afgeleid uit de sleutel. Om vanuit dezelfde client met meerdere accounts te werken, houd je één sleutel per account bij en kies je vóór elk verzoek de juiste.

Object-ID’s gelden ook per account: actie 42 in account A heeft niets te maken met actie 42 in account B. Slaat je code Personyze-ID’s op naast je eigen data, sla dan ook de account-ID op (of op zijn minst welke API-sleutel ze heeft aangemaakt), zodat je later verzoeken tegen het juiste account kunt doen.

Patroon voor bureaus en organisaties met meerdere merken.Werk je met Personyze in veel accounts (bureaus, organisaties met meerdere merken), bewaar je API-sleutels dan in een kluis voor inloggegevens, geordend op accountnaam. Elk verzoek begint met een opzoeking als ‘geef de sleutel voor account X’ in plaats van vastgelegde inloggegevens. Zo breekt het vernieuwen van een sleutel in één account je code niet — en lekt een gecompromitteerd bestand met inloggegevens niet in één keer de sleutels van alle accounts.

Snelheidslimieten & time-outs

  • Snelle verzoeken van tracker / SDK krijgen een budget van 10 seconden uitvoertijd. Langere verzoeken worden geforceerd verbroken met een fout die voor 503 in aanmerking komt. De meeste aanroepen van de REST API vallen niet onder dit snelle pad, maar houd er rekening mee dat complexe query’s op grote tabellen zorgvuldige indexering nodig kunnen hebben om onder de limiet te blijven.
  • POST /rest/users wordt per account beperkt: hooguit één lopende insert tegelijk. Na een wachttijd van 1 seconde in de rij worden verzoeken geweigerd met 400 Too many simultaneous requests. Probeer opnieuw met exponentiële backoff. (Dit staat verder beschreven op de pagina over het object users.)
  • Andere endpoints hebben op dit moment geen snelheidslimiet op applicatieniveau — maar behandel de API als een gedeelde bron en bestook hem niet vanuit veel parallelle processen als opeenvolgende aanroepen ook volstaan.

Volgende stappen

🧩 Syntaxis van padparametersNu de authenticatie werkt, leer je de where/columns/order_by/limit -syntaxis die bij elk endpoint hetzelfde is. Lezen →
📚 Naslag van objectenKolomlijsten per object, ondersteunde methoden en volledige voorbeelden voor elk endpoint. Lezen →
Did this page answer your question?
Thank you — that goes to whoever maintains this page.