Skip to content

Authentication and API keys

Every Data API endpoint uses a company API key. Send the key in the Authorization header on every request:

Authorization: Bearer rz_live_xxx

A console session (cookie) doesn’t work on these endpoints, and the console’s own endpoints don’t accept API keys.

TypeFormatWhereWhat it can do
Secretrz_live_ + 32 charactersOnly on your serverAll Data API endpoints within the scopes you choose
Publishablerz_pub_ + 32 charactersIn the browser, on your siteOnly calls:request: the embeddable button’s endpoints, only from allowed domains

A publishable key gets 403 publishable_key_not_allowed everywhere except the button, and cannot start a call on its own; every request needs a one-time token issued by your server. Button →

  1. Settings → API keys → New key (admins and owners; plan: Data API or Call-me button).
  2. Key type: Secret (on your server) or Public (button). For a publishable key, enter the allowed domains, one per line (https://www.example.com; no path or query; http only for localhost and *.test).
  3. For a secret key, choose the permissions (scopes). At least one is required.
  4. Create key. The key is shown only once: copy it right away and store it safely.

The key isn’t stored in plain text; only its SHA-256 hash and last four characters are kept. If you lose it, revoke it and create a new one. Create a separate key per system so you can revoke them individually. The list shows each key’s last used time. Your plan’s API keys limit counts active (not revoked) secret and publishable keys together.

Revoke takes effect immediately: systems using the key lose access at once.

ScopeEndpoints it allows
ingest:catalogPUT /api/v1/catalog/products, DELETE /api/v1/catalog/products/{item_ref}, PUT /api/v1/catalog/categories, DELETE /api/v1/catalog/categories/{kategori_id}
ingest:ordersPUT /api/v1/orders
ingest:kbPUT /api/v1/kb/articles
ingest:cartsPUT /api/v1/sepetler, DELETE /api/v1/sepetler/{dis_id}
read:cartsGET /api/v1/sepetler
ingest:customersPUT /api/v1/musteriler, DELETE /api/v1/musteriler/{dis_id}
read:requestsGET /api/v1/requests
calls:readGET /api/v1/cagrilar, GET /api/v1/cagrilar/{call_id}, GET /api/v1/konular/istatistik, GET /api/v1/aramalar/{arama_id}
calls:read:transcripttranscript in the GET /api/v1/cagrilar/{call_id} response. Also covers calls:read (added to the key automatically)
calls:writePOST /api/v1/aramalar, GET /api/v1/aramalar/{arama_id}, GET /api/v1/amaclar, POST /api/v1/buton-token
webhooksReserved; no endpoint uses it today
calls:requestPublishable keys only; the button’s browser endpoints

GET /api/v1/me needs no scope; it returns whether the key is valid and its scopes. Use it as a connection test:

Terminal window
curl -s "$RZ_API/api/v1/me" -H "Authorization: Bearer $RZ_KEY"
# {"org": "firma", "key_name": "Site integration", "scopes": ["ingest:catalog", "ingest:orders"]}

Endpoints depend on your company’s plan. Endpoints of a feature that is off return 404 not_found (as if they didn’t exist):

EndpointsFeature needed
me, catalog/*, kb/articles, ordersnone — on in every plan
requests, cagrilarData API
konular/istatistikData API + Topic analytics
aramalar, amaclarData API + Outbound calls
sepetler, musterilerData API + Carts
buton-tokenCall-me button (Outbound calls must also be on)