Every error from the API has the same shape:
{ "data": null, "success": false, "errorMessage": "Lens not found", "errorCode": 404 }
success
false
data
null
errorCode
errorMessage
A successful answer is { "data": { … }, "success": true }.
{ "data": { … }, "success": true }
The delivery API checks a request in this order and answers with the first problem it finds:
401
403
400
404
200
X-Api-Key
429
500
5xx
Delivery calls have no per-minute rate limit. A 429 from a delivery route always means the monthly limit.
Plan for errors from the start:
If your workspace's plan has a monthly limit on delivery calls, this is how it works:
The less often your server resolves, the further your limit goes. A pinned version's files never change, so once your server has checked them, it doesn't need to ask about that version again.
Limits on layers, images and package size are checked in the editor when you validate and publish, not by the delivery API. See Rules and keep-out zones.