not_modified (Python) / notModified (TypeScript), and selected response headers. APIError exposes status, problem code, request ID, structured problem and safe headers. Configuration/transport/protocol failures raise ClientError. No client automatically retries, logs a key or includes a raw response body in a transport exception.
Transport timeouts or disconnects have an unknown delivery outcome. A completed data page may have been charged. Check free account usage by request ID where available; do not silently retry or create a fresh billing mutation UUID. Refunds and payment invoices are separate from API credit counters.
Conditional requests
Explicitly bounded pages
Usemeta.next_cursor unchanged with the same filters. Cursors bind query, scope, namespace and semantic data. A 409 requires an explicit fresh traversal; the client never restarts it automatically. The helpers below stop at the requested bound, propagate errors, and detect cursor cycles. Each successful page costs one credit.
X-Oddswire-Credits-*, X-Oddswire-Credit-Cost, X-Oddswire-Usage-State and X-Request-ID are admission/delivery metadata; free usage introspection is the final account authority.