What it means
tampered, malformed, or filters changed mid-page.
How to handle it
Discard the cursor and restart the listing with unchanged filters, sort, and order.
Wire contract
| Code | invalid_cursor |
|---|---|
| Class | invalid_request |
| HTTP status | 400 |
| Meta keys | reason |
| Raised | Yes |
The response uses the standard {"error": {…}} envelope. Branch on error.code, not the human-readable message. Preserve request_id when reporting a failure.