Error response format
All API errors return a JSON body:HTTP status codes
| Status | Description |
|---|---|
200 | Success |
401 | Unauthorized — invalid or missing API key (must be valid UUID) |
404 | Not found — resource does not exist |
422 | Validation error — request parameters failed validation |
426 | Upgrade required — WebSocket endpoint called via HTTP |
429 | Rate limited — exceeded 100 requests/minute |
500 | Internal server error |
Rate limiting
The MM API enforces 100 requests/minute per client API key. When rate limited, the API returns429 Too Many Requests. Implement exponential backoff in your retry logic (wait 1s, 2s, 4s, etc.).
Common errors
Authentication (401)
Your API key is missing, invalid, or not in UUID format.Not found (404)
The requested resource doesn’t exist:Validation errors (422)
Required query parameters are missing or have invalid values. Check theloc field to identify the problematic parameter.
WebSocket upgrade (426)
If you call the WebSocket endpoint via HTTP instead of upgrading to a WebSocket connection, you receive a426 Upgrade Required.
WebSocket errors
When subscribing to the WebSocket, these error messages may be returned:| Error | Description |
|---|---|
api_key required | No api_key field in subscribe message |
Invalid api_key format | Not a valid UUID |
Invalid API key | Key not found or client inactive |
Connection limit exceeded | Already at 5 active connections for this key |