Endpoints
Routes, response fields, limits and errors.
Routes
Every route takes GET under the base URL and returns JSON. List routes return a plain array. {assetId} is the UUID from /assets.
| Route | Returns |
|---|---|
/assets | Every published asset, complete. |
/assets/{assetId} | One complete asset. |
/prices | Prices for every published asset. |
/prices/{assetId} | Prices for one asset. |
/corporate-actions | Actions for every published asset, newest processing date first. |
/assets/{assetId}/corporate-actions | One asset’s actions, or an empty array if it has none. |
Assets
GET /assets returns an array of these objects. GET /assets/{assetId} returns one.
{
"id": "f49ead25-94bf-47db-a2b4-4ff1c475a09f",
"status": "active",
"logoUri": "https://assets.edel.finance/tokens/QQQe/logo-cfd106bf4706287fa946efe95433081813e756c3b802bc79c2a4826c3724f56a.svg",
"instrument": {
"id": "QQQe",
"admin": "edel-registrar::122085b19d439b7e68abf7c94c3d9949f9e23aef3f1d4835ccbcb0993ed96fb53432"
},
"underlying": {
"ticker": "QQQ",
"name": "Invesco QQQ"
},
"prices": {
"currency": "USD",
"underlying": "692.305",
"implied": "692.7901612803811827545"
},
"multiplier": {
"value": "1.000700791241405425"
},
"generatedAt": "2026-10-31T00:44:37.777024710Z"
}| Field | Type | Meaning |
|---|---|---|
id | UUID | Stable public ID of the asset. |
status | String | active, inactive or unspecified. It does not say where a token trades. |
logoUri | URL | Edel-hosted logo. |
instrument.id | String | Canton instrument ID, such as QQQe. |
instrument.admin | String | Canton instrument admin. Use it together with instrument.id. |
underlying.ticker | String | Ticker of the stock or ETF. |
underlying.name | String | Name of the stock or ETF. |
prices.currency | String | Currently always USD. |
prices.underlying | Decimal string | Reference price per share of the stock or ETF. |
prices.implied | Decimal string | Indicative value of one token, with the multiplier already applied. |
multiplier.value | Decimal string | Current exposure multiplier. |
generatedAt | Timestamp | When the upstream price was generated. |
Prices
GET /prices returns an array of these objects. GET /prices/{assetId} returns one. prices and generatedAt have the same meaning as on an asset.
{
"id": "f49ead25-94bf-47db-a2b4-4ff1c475a09f",
"prices": {
"currency": "USD",
"underlying": "692.305",
"implied": "692.7901612803811827545"
},
"generatedAt": "2026-10-31T00:46:22.545760620Z"
}Corporate actions
Both routes return an array of these objects. Read how to interpret them before building on this data.
{
"assetId": "cd04948a-e52a-4611-901b-bc9c51987642",
"type": "cash_dividend",
"status": "in_progress",
"processDate": "2026-10-30",
"details": {
"rate": "1.888834",
"currency": "USD"
},
"multiplier": null
}| Field | Type | Meaning |
|---|---|---|
assetId | UUID | The asset’s id. |
type | String | Event type, such as cash_dividend, stock_dividend or split. Expect other values too. |
status | String | in_progress or completed. |
processDate | Date or null | Source processing date, if supplied. |
details | Object of strings | Event details. The fields depend on type. |
multiplier | Object or null | before, after and effectiveAt, only when the effect is independently verified. Otherwise null. |
Corporate action details
All values in details are strings. Unlisted event types keep their published fields.
| Type | Details |
|---|---|
cash_dividend | rate in USD per share, and currency. |
stock_dividend | rate in shares per share. |
split | oldRate and newRate. |
Limits and refresh
Each IP address can make 100 requests per minute. Responses carry x-ratelimit-limit, x-ratelimit-remaining and x-ratelimit-reset, the seconds until the window resets.
Any origin can call the API, and responses use Cache-Control: no-store. Polling faster than the intervals below returns the same data.
| Data | Refreshes every |
|---|---|
| Prices, on every route | 15 seconds |
| Published list, status and multiplier | 60 seconds |
| Corporate actions | 1 hour |
Errors
Errors return JSON with a code and a message. A list route fails as a whole if one published asset cannot be served, so a successful list is always complete.
| Status | Code | Meaning |
|---|---|---|
400 | invalid_request | assetId is not a UUID. |
404 | asset_not_found | The UUID is unknown, or the asset is not published. |
404 | not_found | The route or method does not exist. |
429 | rate_limited | Too many requests. Wait for the window to reset. |
503 | data_unavailable | Source data cannot be served right now. Retry later and show your last values as stale. |