What your token can read
Access is granted per data type, and separately for current and historical data — so a token can be set up to read today’s rental prices without being able to read last year’s./latest and /metadata return current values. /as-of and /history return historical data.
Two things worth knowing:
- Aggregated Transactions is historical by nature. A settled deal is an event, so there is no
“current value” to read — see Migrating from v1 if you are
moving across from
/v1/txn-aggregate. - Indices are granted index by index. Your token may cover some indices and not others;
/metadatalists the ones you hold, and anidyou do not hold returns404rather than403.
403 means your token does not cover what you asked for. Contact us and we will adjust it.
Access to v2 is enabled per token. If you already call v1, your existing data access carries
across, but v2 has to be switched on before your first call will succeed. Ask us and we will
enable it.
How far back you can read
Your organisation may be licensed to a particular depth of history. You never have to guess where that limit is:/metadatareports it ashistory_starts_at/historytrims a window that starts earlier, and says so inmeta.window.clamped/as-ofat a date before your limit returns an error rather than a different date’s answer
Rate limits
Tokens are Pro unless a different tier is agreed for your organisation.
Limits are enforced on a sliding window, so there is no reset instant to wait for and no fresh
allowance at the top of the minute — budget regrows continuously as your earlier requests age out
of the window.
Every response tells you where you stand, in the
X-RateLimit-Limit, X-RateLimit-Remaining and
X-RateLimit-Reset headers — read those and pace your requests rather than waiting for a 429.
X-RateLimit-Reset is the seconds until the next single request frees up, not until your full
allowance returns, so honour it one request at a time: a client that treats it as a restored quota
and fires a burst gets one request through and the rest rejected. A 429 repeats the same figure
in Retry-After.
Errors
Errors are RFC 9457 problem details, served asapplication/problem+json, with a code you can branch on. Match on code, not on detail —
detail is written for people and its wording may change.
request_id matches the X-Request-Id response header and is repeated in the body so it survives
being logged or pasted — quote it when you contact us about a failing request.
Where it helps, an error carries extra fields — anchors above lists exactly what would make the
request valid, so your code can correct itself without a trip to these docs.
v1 returns a different error shape, and is unchanged.