Reference (md5)

Reference

Identifiers, md5 generation, patterns and the conventions every response follows.

Token identifiers

Every {id} parameter accepts any of these.

FormatDescription
md532-char hex hash
slugissuer-currency (e.g. rhcyBrowwApgNonehKBj8Po5z4gTyRknaU-VGB)
issuer_currencyissuer_currencyHex (40-char hex currency, underscore separator)
mptmpt-<48-char mptIssuanceID> (MPT slug form)
xrpNative XRP: use the literal "XRP" (or its canonical md5 84e5efeb89c4eae8f68188982dc290d8). Works everywhere a token {id} is accepted, e.g. /token/XRP, /stats/rates?token1=XRP&token2={md5}, /ohlc/XRP.

MD5 generation

md5 = md5(issuer + '_' + currency)
// md5 of issuer + "_" + currency (3-character code or 40-character hex)
// JavaScript (Node)
require('crypto').createHash('md5').update(`${issuer}_${currency}`).digest('hex');
// Python
hashlib.md5(f"{issuer}_{currency}".encode()).hexdigest()

// rsoLo2S1kiGeCcn6hCUXVrCpGMWLrRrLZz_534F4C4F00000000000000000000000000000000
// → 0413ca7cfc258dfaf698c02fe304e607

Currency hex

Currency codes longer than 3 characters are stored as 40-character hex.

SOLO → 534F4C4F00000000000000000000000000000000 Buffer.from('SOLO').toString('hex').toUpperCase().padEnd(40, '0')

Patterns

ValuePattern
md5^[a-f0-9]{32}$
account^r[1-9A-HJ-NP-Za-km-z]{24,34}$
NFTokenID64-char hex
tx hash64-char hex

Conventions

TopicRule
tookServer-side processing time: integer MILLISECONDS as a JSON number, on every endpoint. Excludes network transfer.
countAndTotalOne meaning everywhere: count = rows in THIS response; total (also pagination.total / meta.total) = rows matching the query pre-pagination. Exception: on single-resource + metrics responses (/stats, /stats/rates, /token/{id}), the envelope's total is the count of all indexed tokens — a platform stat, not pagination. A few older endpoints use length; its meaning is stated per endpoint.
clampingOut-of-range numeric params are clamped, not rejected (limit above max -> max, negative offset -> 0, non-numeric -> default); the effective value is echoed in the response. Invalid enum values fall back to the documented default (e.g. an unknown range/interval/sort). An unknown tag returns 200 with 0 rows and empty tagName — check tagName to distinguish a typo from genuinely no data.
numericStringsVery-high-precision amounts (amount, supply, usd, exch on some endpoints, sparkline prices) are serialized as STRINGS on purpose — XRPL token amounts exceed IEEE-754 float precision. Parse with a decimal library if you need exact math.
timestampsUnix milliseconds (13 digits) unless a field is explicitly documented otherwise.
attributionSuccessful responses on the tiers that pay nothing (anonymous, free, partner) carry an `attribution` string right after `success`, restating the requirement in usagePolicy. It is informational — safe to ignore in code, but not optional to comply with. Paid tiers omit it and owe the same attribution.
cachingResponses are live. When one carries a Cache-Control header, honour it.