Authentication
Personal Access Tokens, scopes, and how to authenticate every Qyvo API and MCP request.
Qyvo uses Laravel Passport Personal Access Tokens for all API and MCP traffic. There is one token type — the same value works for the REST API and the MCP server.
Token format
Tokens are opaque strings — typically 60+ characters of hex. They are scoped to:
- the user that created them (their tenant resolves automatically)
- the
mcpscope, which authorizes both REST and MCP calls
There is no service account or organization token. Each token is owned by an individual user. Revoking the user revokes their tokens.
Generate a token
- Sign in to qyvo.io
- Open Settings → API Tokens
- Click Create token, give it a name describing the use case (
Claude Desktop,n8n production,support script, …) - Copy the value once — Qyvo shows the plaintext for 90 seconds, then permanently masks it
If you lose a token, generate a new one and revoke the old one. Qyvo cannot recover the plaintext.
Use a token
Attach it as a Bearer header on every request:
Authorization: Bearer YOUR_TOKEN_HERE
A minimal smoke test in your language of choice:
curl https://www.qyvo.io/api/v1/me \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
const res = await fetch('https://www.qyvo.io/api/v1/me', {
headers: { Authorization: `Bearer ${process.env.QYVO_TOKEN}` },
});
const me = await res.json();
use Illuminate\Support\Facades\Http;
$me = Http::withToken(env('QYVO_TOKEN'))
->get('https://www.qyvo.io/api/v1/me')
->json();
import os, httpx
me = httpx.get(
'https://www.qyvo.io/api/v1/me',
headers={'Authorization': f"Bearer {os.environ['QYVO_TOKEN']}"},
).json()
All four return the authenticated user and tenant. See GET /v1/me.
Scopes
Currently every token is issued with the single scope mcp. It grants access to:
- All
/api/v1/*REST endpoints - The MCP server at
/mcp
There is no narrower scope today. If you need to restrict a token to a subset of endpoints, run an integration server in your own stack and proxy only the calls you want to expose.
Revoke a token
In Settings → API Tokens, click the Revoke action next to the token. Revocation takes effect immediately — in-flight requests using that token fail with 401.
Security best practices
- Never commit tokens. Use environment variables or a secret manager (1Password, Doppler, AWS Secrets Manager, GitHub Actions secrets).
- One token per integration. It makes auditing and rotation surgical — revoking
n8n productiondoesn't break the support script. - Rotate periodically. Quarterly is a reasonable default. Generate the new token, deploy it, then revoke the old one.
- Don't ship tokens in client-side code. Tokens grant full workspace access; treat them like a database password. For browser/widget contexts, proxy through a server you control.
- Use HTTPS only. Qyvo will redirect any HTTP request, but tokens leaked over plain HTTP should be considered compromised — revoke immediately.
Common errors
| Status | Meaning |
|---|---|
401 Unauthenticated |
Header missing, token misspelled, token revoked, or token has no mcp scope |
404 Personal access client not found |
Server-side install issue — contact support |
422 No workspace configured for this account. |
The user behind the token has no tenant — re-check workspace setup |
See the full Errors catalogue.
