Error Responses
All Magne API errors follow a consistent JSON format:
{
"error": "Human-readable error message"
}
Status Codes
| Code | Name | Description |
|---|
400 | Bad Request | Invalid input, missing required fields, or validation failure |
401 | Unauthorized | Missing or invalid authentication token |
403 | Forbidden | Authenticated but insufficient permissions for the action |
404 | Not Found | The requested resource does not exist |
409 | Conflict | Resource already exists (e.g., duplicate username or email) |
429 | Too Many Requests | Rate limit exceeded — see Rate Limits |
500 | Internal Server Error | Unexpected server error. The response message will always be "Internal server error" regardless of the actual cause. |
Examples
400 — Validation Error
{
"error": "Username must be 3-32 characters"
}
401 — Invalid Credentials
{
"error": "Invalid username or password"
}
403 — Missing Permission
{
"error": "Missing required permission: MANAGE_WEBHOOKS"
}
404 — Resource Not Found
{
"error": "Channel not found in this server"
}
409 — Conflict
{
"error": "Username already taken"
}
429 — Rate Limited
{
"error": "Too many requests. Please try again later."
}
Headers: Retry-After: 45
500 — Server Error
{
"error": "Internal server error"
}
500 errors never expose internal details. The actual error is logged
server-side only. If you encounter persistent 500 errors, contact support with
the endpoint and approximate timestamp.