GET /v1/models) has to be authenticated with a Bearer token. The tokens are called API keys and you manage them from the portal, under Settings > API keys (app.ryvo.so/developers). The API is available from the Starter plan up.
Header format
Create an API key
- Go to app.ryvo.so/developers.
- Click New API key.
- Give it a descriptive name (for example
n8n production,my-crm-staging). - Tick the scopes it needs (see below). A read-only key is enough for most reporting integrations.
- Copy the full token. It is shown only once, so store it in a secret manager.
Scopes
Each key carries a list of scopes in the formresource:action, chosen when you create it. Every endpoint requires exactly one scope, listed on its page in the API reference as x-scope. Calling an endpoint with a key that lacks it returns 403 insufficient_scope, and the message names the missing scope.
Integrations, team and billing are read-only by design.
GET /v1/me needs no scope and tells you which ones the key carries.
Revoke an API key
If a key leaks (say you committed it to a public repo), go to app.ryvo.so/developers, find the key in the list and click Revoke. From that moment on, any request with that key returns401 unauthorized. The action is immediate and irreversible: there is no grace period.
How we store keys
- We never store the token in the clear. We only keep an HMAC-SHA-256 hash plus a server-side pepper.
- In the portal you only see the prefix (
ryvo_live_abc123…) and the last time it was used. - Even if somebody got access to our database, the keys stay safe: the pepper lives only in environment variables and the hash cannot be reversed.
Best practices
One key per environment and per integration
One key per environment and per integration
Create a separate key for each CRM, n8n workflow or environment (staging vs production). If one is compromised, you revoke just that one without touching the rest.
Environment variables, never code
Environment variables, never code
Load the token from
process.env.RYVO_API_KEY or the equivalent. Never write it straight into your source code.Server-side only
Server-side only
API keys should only be used from your server. If you expose them to the frontend (browser, mobile app), any user can read them with DevTools.
Rotate on a schedule
Rotate on a schedule
Every 90 days, create a new key, update the integration and revoke the old one. If you suspect an incident, rotate right away.
Check that your key works
- If the key is valid, you get
200with your account, your plan and the scopes the key carries. - If the key is wrong or revoked, you get
401 unauthorized. - If you get a
401, check that the header is written correctly (Bearerwith a space) and that the key has not been revoked in the portal.