Input & Output
The shared config-key pattern across every operation, and the standard result envelope
Shared Input Pattern
Every operation on this node takes the same three top-level config keys, plus its own operation-specific fields:
| Key | Required | Description |
|---|---|---|
resource | ✓ Yes | One of assets, attestations, chains, limits, status, tickers. |
operation | ✓ Yes | The camelCase operation within that resource, e.g. getPrice. |
credentialID | ✓ Yes | Vault reference resolved to a Bearer token for every call — see Configuration. |
Everything else is specific to the chosen resource + operation pair — see that resource's page for the exact field list.
Standard Output Envelope
A successful call always returns the same wrapper, with the operation-specific fields nested
under result:
{
"status": "success",
"result": { /* operation-specific fields — see that operation's page */ },
"timestamp": "2026-07-29T14:00:00Z"
}
A failed call routes to the node's error output port with this shape:
{
"status": "error",
"errorCode": "VAL_MISSING_SYMBOL",
"resource": "assets",
"operation": "getPrice",
"message": "Symbol is required (e.g., 'AAPLon')"
}
The "Closed Market" Result
Three operations — attestations.createAttestation,
attestations.createAttestationQuote, and limits.getTradingLimits — have a
third outcome besides plain success/error: status: "closed_market" with error code
MARKET_CLOSED, returned when the relevant market isn't open for that action. Treat this
as a distinct, expected branch in your workflow rather than a generic failure.
How Errors Surface
| Situation | What happens |
|---|---|
Missing/invalid credentialID |
Fails fast with AUTH_MISSING_KEY before any HTTP call is made. |
Missing required operation field (e.g. symbol) |
Fails fast with a VAL_MISSING_* code before any HTTP call is made — see each operation's fields table. |
| Ondo API returns 4xx/5xx | Mapped to a semantic error code — see the table on Configuration. |
| Ondo API rate limiting (429) | Retried automatically (3 attempts, exponential backoff) before surfacing RATE_LIMIT_EXCEEDED — see Troubleshooting. |
assets, chains, status, and tickers is a
read — safe to call repeatedly. attestations.createAttestation mints a new signed,
time-limited attestation on every call, so calling it twice produces two distinct attestations,
not a cached repeat of the first.