Aan de slag

API-sleutels en authenticatie

Elk verzoek bevat een API-sleutel. Sleutels horen bij een werkruimte en gebruiken het saldo daarvan; voor elke sleutel kun je aparte limieten voor budgetten, modellen en adressen instellen.

De sleutel meesturen

Beide headers werken op elk endpoint:

Headers
Authorization: Bearer zr_live_your_key_here
# or, as Anthropic's SDKs send it:
x-api-key: zr_live_your_key_here

Sleutels beginnen met zr_live_. Je ziet de volledige sleutel maar één keer, wanneer je hem aanmaakt; we bewaren alleen een hash, dus niemand (ook wij niet) kan hem daarna nog tonen. Kwijt? Trek hem in en maak een nieuwe aan.

Een AI-agent verbinden

Een agent (OpenClaw, Hermes, Manus van je eigen agent) kan een eigen sleutel krijgen zonder dat iemand die hoeft te kopiëren: de agent vraagt een link aan, de gebruiker geeft op zurelay.com toestemming met een daglimiet en de agent haalt de sleutel op. Het werkt zoals inloggen op een tv (de device flow van OAuth, RFC 8628). Voor deze twee aanroepen is geen sleutel nodig.

POST/connect
namestring
De naam die de agent zichzelf geeft, zichtbaar op de toestemmingspagina; de sleutel krijgt dezelfde naam. Optioneel.
Een link aanvragen
curl -X POST https://api.zurelay.com/connect \
-H "Content-Type: application/json" \
-d '{"name": "OpenClaw"}'
{
"status": "pending",
"device_code": "zr_dc_…",
"user_code": "WDJB-MJHT",
"verification_uri": "https://zurelay.com/connect",
"verification_uri_complete": "https://zurelay.com/connect?code=WDJB-MJHT",
"expires_in": 900,
"interval": 2
}

Toon de gebruiker verification_uri_complete en de code. Die logt in, controleert of de code overeenkomt, kiest de werkruimte en een daglimiet, en geeft binnen 15 minuten toestemming. Houd device_code bij de agent: daarmee haalt die de sleutel op.

POST/connect/key
device_codestringverplicht
Uit POST /connect.
waitseconds
Hoe lang je op toestemming wacht voordat je pending teruggeeft, van 0 tot 25. Standaard 25.
Sleutel ophalen
curl -X POST https://api.zurelay.com/connect/key \
-H "Content-Type: application/json" \
-d '{"device_code": "zr_dc_…"}'
{
"status": "approved",
"api_key": "zr_live_…",
"key_name": "OpenClaw",
"workspace": "Acme",
"daily_limit_usd": 10,
"base_url": "https://api.zurelay.com/v1"
}
HTTPstatusBetekenis
202pendingNog geen toestemming. Probeer opnieuw; elke aanroep wacht maximaal 25 seconden.
200approvedHier is de sleutel. Als je die binnen 30 minuten na de toestemming opnieuw opvraagt, krijg je dezelfde sleutel, voor het geval een antwoord verloren is gegaan.
403deniedDe gebruiker heeft geweigerd.
410expiredNiet binnen 15 minuten goedgekeurd, of te laat opgehaald. Begin opnieuw.
410revokedDe sleutel is ingetrokken op de pagina API-sleutels.
404unknownEr is geen aanvraag met deze apparaatcode.
De sleutel is een gewone sleutel op de pagina API-sleutels, met de naam van de agent en de daglimiet die de gebruiker koos. Pas daar de regels aan, of trek de sleutel in om de agent te ontkoppelen. Agents lezen ook de installatiestappen op zurelay.com/skill.md.

Sleutels veilig bewaren

  • Bewaar sleutels in een secretmanager of omgevingsvariabelen, nooit in code of een repository.
  • Roep Zurelay aan vanaf je server. Een sleutel in een browser of mobiele app is leesbaar voor iedereen die de app heeft.
  • Gebruik één sleutel per app of omgeving (bijvoorbeeld production en staging), zodat je er één kunt intrekken zonder de andere te beïnvloeden.
  • Geef elke sleutel alleen wat nodig is: een budget, de modellen die hij aanroept en de adressen waarvandaan hij wordt gebruikt. Zie Limieten en regels voor sleutels.
  • Als een sleutel uitlekt, trek je die in onder API-sleutels. Verzoeken met die sleutel worden binnen 15 seconden geblokkeerd.

Wat je voor een sleutel kunt beperken

Monthly budgetUSD
Toegestane uitgaven per kalendermaand (UTC).
Daily budgetUSD
Toegestane uitgaven per dag (UTC).
Rate limitverzoeken / minuut
Verzoeken per minuut; extra verzoeken worden geweigerd met 429.
Expirydate
Daarna werkt de sleutel niet meer.
Allowed modelslist
Alleen deze modellen; alle andere worden geweigerd met 403.
Allowed IP addresseslist
Alleen verzoeken vanaf deze adressen of adresbereiken.
Smart routingsetting
Wat er gebeurt als een model niet beschikbaar is: zie Slimme routering.

Authenticatiefouten

StatusCodeBetekenis
401missing_api_keyGeen sleutel in het verzoek.
401invalid_api_keyDe sleutel bestaat niet of is ingetrokken.
401expired_api_keyDe sleutel is verlopen.
403ip_not_allowedDe sleutel werkt alleen vanaf andere adressen.
403model_not_allowedDe sleutel mag dit model niet gebruiken.
402insufficient_quotaHet saldo van de werkruimte, min het bedrag dat voor lopende verzoeken is gereserveerd, is niet voldoende voor dit verzoek.
Elk antwoord op een chat-, afbeeldings- of videoverzoek bevat een x-request-id-header. Stuur die mee als je contact opneemt met support, dan kunnen we het verzoek binnen enkele seconden vinden.

Vragen, of ontbreekt er iets? Vraag het ons supportteam en je krijgt antwoord per e-mail, meestal binnen een minuut.