> For the complete documentation index, see [llms.txt](https://noiho.gitbook.io/noiho/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://noiho.gitbook.io/noiho/developers/api-consumers/status-and-retries.md).

# Status, errors and safe retries

Poll owned orders and retry API requests without creating another financial transaction.

| Route                     | Access                              | Purpose                                                          |
| ------------------------- | ----------------------------------- | ---------------------------------------------------------------- |
| GET /v1/orders/{id}       | Owner session or authorized partner | Private details by API UUID.                                     |
| GET /v1/status?txHash=... | Owner session or authorized partner | Lookup by registered EVM request hash, not any transaction hash. |
| GET /v1/chain-orders/{id} | Public when enabled                 | Sanitized chain status by numeric contract order ID.             |

An API orderId is a UUID; chainOrderId is a different, numeric identifier. Native XMR clients retain the API UUID. A public ID or deposit address does not grant private access or recovery authority.

Read state, status, substatus, terminal, attentionRequired, actual output and transactions together. status is PENDING, ACTION\_REQUIRED or DONE. terminal describes workflow activity, not a refund. EXPIRED can be resumed; REFUND\_REVIEW\_REQUIRED remains financially unresolved.

Prefer pollAfterSeconds, currently 15 seconds. depositObservedAt shows the age of durable observations. Active-order reads do not add wallet RPC calls. Terminal deposit observations can be cached for 15 seconds. Amounts can decrease after reorgs or dropped pool transactions.

All /v1 HTTP errors include error, code, message, retryable and requestId. X-Request-Id correlates support logs. Responses use Cache-Control: no-store. Never cache private responses in a shared cache.

| HTTP code                  | Meaning                                                        | Action                                                      |
| -------------------------- | -------------------------------------------------------------- | ----------------------------------------------------------- |
| 401                        | Invalid or expired credentials; wallet access disabled         | Renew valid access; do not silently retry anonymously.      |
| 403 / 404                  | Invalid signature / unavailable or foreign resource            | Check authorization and ownership.                          |
| 409 / 410 / 422            | Conflict / expired unused quote / invalid terms or transaction | Reconcile the existing order and correct the cause.         |
| 429 / 503                  | Quota / disabled admission or temporary dependency failure     | Use exponential backoff. Respect Retry-After and retryable. |
| 202 on transaction binding | The transaction is not confirmed                               | Retry registration with the same hash.                      |

> **Warning: Retry the request, not the payment**
>
> Reuse the same key, body and transaction hash when retrying. An unchanged chain state does not prove LP operational health. FAILED, CANCELLED or EXPIRED never imply an automatic XMR refund.

Limits count accepted requested amounts, including unpaid orders. Public rolling and pending ceilings cover all integration traffic, including partners. Wallet, IP and signer limits also apply. Read deployment controls instead of treating historical bootstrap limits as permanent terms.
