Errors
HTTP status codes
| Status | Meaning |
|---|---|
200 | Success |
201 | Created (domain, payment) |
204 | No content (logout, delete) |
400 | Bad request — check request body |
401 | Unauthorized — invalid or expired JWT |
403 | Forbidden — insufficient permissions |
404 | Not found — domain or resource doesn’t exist |
409 | Conflict — e.g. email already registered |
429 | Too many requests — rate limit exceeded |
500 | Internal server error |
Error response format
Common errors
401 Unauthorized
Your JWT access token has expired. Refresh it:404 on domain endpoint
The{id} in /api/domains/{id} is the domain’s UUID (the id field from GET /api/domains), not the domain name.
Webhook not being received
- Check that your endpoint returns a
2xxresponse within 1 second - Check that your endpoint is publicly accessible (HTTPS required)
- Verify the webhook URL is registered: check
callbackfield inGET /api/domains - Check your server logs for the incoming POST
Score always 0
If your webhook always returnsScore: 0, check:
- STUN is completing successfully (check browser console for WebRTC errors)
- Your CSP includes
connect-src blob: wss://*.shieldlabs.ai - The snippet is loading without errors (
import()resolved)