| Header | Description |
|---|---|
Authorization | Bearer <API_KEY> |
X-MeshQu-Tenant-Id | Your tenant UUID |
API keys
API keys are created via the/v1/api-keys endpoint (requires the api-keys:admin scope) or through the MeshQu Console.
When you create a key, the plaintext value is returned exactly once. Store it securely — it cannot be retrieved again. The API stores only a hashed representation.
Each key has:
- Name — a human-readable label for audit trails.
- Scopes — the set of permissions the key grants (see below).
- Expiry (optional) — an
expires_attimestamp after which the key is rejected. - Prefix/suffix — a safe fragment (e.g.
mqk_abc...xyz) shown in dashboards for identification.
Revoking a key
Scopes
Each API key carries one or more scopes that control what it can access:| Scope | Grants access to |
|---|---|
policies:read | List and read policies, versions, groups |
policies:write | Create, update, deactivate policies and groups |
decisions:evaluate | Evaluate decisions (dry-run) |
decisions:read | List and read recorded decisions |
decisions:write | Record decisions (evaluate + persist) |
alerts:read | List and read alerts |
alerts:write | Acknowledge alerts, manage webhook subscriptions |
audit:read | Read audit events |
audit:admin | Verify audit log integrity |
api-keys:admin | Create, list, and revoke API keys |
decisions:evaluate — not api-keys:admin.
Multi-tenancy
All data in MeshQu is isolated per tenant. TheX-MeshQu-Tenant-Id header determines which tenant’s data is accessed. The API key must belong to the specified tenant; a mismatch returns 403 Forbidden.
Rate limits
MeshQu applies two tiers of rate limiting:| Tier | Scope | Default limit |
|---|---|---|
| Pre-authentication | Per IP address | 10,000 requests/minute |
| Post-authentication | Per tenant + API key | 1,000 requests/minute |
429 Too Many Requests with a Retry-After header.
Standard rate-limit headers are included on every response:
Example: creating an API key
key value immediately — it will not be returned again.