Data Consistency
The Odus API is designed for high throughput and low latency. To achieve this, certain read endpoints use optimized database connections that may reflect data with a slight delay after a write operation. This page explains how consistency works across different endpoint types.
Strongly consistent endpoints
All write operations (create, update, authorize, capture, reverse, etc.) return the latest state of the resource in the response body. The returned object always reflects the most recent changes.
Retrieve-by-ID endpoints (e.g. GET /payments/:id) are also strongly consistent and always return the latest state.
POST /payments/:id/authorize → Returns the up-to-date Payment object
GET /payments/:id → Always returns the latest state
Eventually consistent endpoints
List endpoints (e.g. GET /payments, GET /customers, GET /subscriptions) are optimized for high-volume read traffic. Under normal operating conditions, data is available on list endpoints within a few hundred milliseconds of a write. In rare cases during high load, propagation may take up to one second.
GET /payments → May have a brief delay after a write
GET /transactions → May have a brief delay after a write
GET /subscriptions → May have a brief delay after a write
This applies to all paginated list endpoints across all resources.
Best practices
-
Use the write response as the source of truth. After creating or updating a resource, use the response body — don't immediately poll the list endpoint.
-
Don't rely on list endpoints for read-after-write flows. If you need to confirm a payment was authorized, use the response from
POST /payments/:id/authorizeor retrieve it by ID withGET /payments/:id. -
Webhooks deliver the latest state. If you receive a webhook event and need the full resource, use the retrieve-by-ID endpoint (
GET /payments/:id) which is always strongly consistent.
Summary
| Endpoint type | Consistency | Example |
|---|---|---|
| Write operations | Strong | POST /payments, POST /payments/:id/authorize |
| Retrieve by ID | Strong | GET /payments/:id |
| List (paginated) | Eventual (< 1s) | GET /payments |