Market Instruments
Set BASE_URL and ACCESS_TOKEN as described in Your first request.
The Instrument catalogue contains equity, fixed-coupon debt, and zero-coupon debt Instruments that are in the active trading lifecycle and visible to the Profile mapped to your credential. Retail Profiles cannot see professional-only Instruments. A temporary halt or suspension does not remove an Instrument from the catalogue.
ISIN is the canonical resource identifier. Responses always use its uppercase form and never expose Portfolio Exchange database identifiers.
List Instruments
curl --request GET \
--url "${BASE_URL%/}/v1/market/instruments?type=EQUITY¤cy=EUR&query=energy&limit=50" \
--header 'Accept: application/json' \
--header "Authorization: Bearer ${ACCESS_TOKEN}"
The API applies all supplied filters with AND logic:
| Parameter | Meaning |
|---|---|
type | EQUITY, FIXED_COUPON_DEBT, or ZERO_COUPON_DEBT |
currency | An uppercase ISO 4217 currency code, such as EUR |
tradingStatus | TRADABLE, HALTED, SUSPENDED, or NOT_TRADABLE |
query | A case-insensitive literal substring of the name, ISIN, or Trading Code; maximum 100 trimmed characters |
A parameter with valid syntax but an invalid value produces 422 validation-failed with a violation for each invalid parameter. A value that the API cannot parse as the declared parameter type produces 400 invalid-request.
The InstrumentTradingStatus enum includes NOT_TRADABLE, but the active catalogue does not. Filtering by NOT_TRADABLE returns an empty page. The global market status does not change an Instrument's status.
Results are ordered by name, then ISIN, both ascending. See Pagination for page size, response metadata and cursor continuation.
{
"items": [
{
"isin": "ES0875759518",
"tradingCode": "ALP",
"name": "Alpha Energy",
"type": "EQUITY",
"currency": "EUR",
"issuer": {
"name": "Alpha Energy SA",
"lei": "529900T8BM49AURSDO55"
},
"professionalOnly": false,
"tradingStatus": "TRADABLE",
"quantityDecimals": 4,
"priceDecimals": 2,
"observedAt": "2026-09-15T14:30:00.123456Z"
}
],
"page": {
"nextCursor": "eyJraWQiOiJhY3RpdmUiLC4uLn0",
"hasMore": true
}
}
Retrieve an Instrument
Use the ISIN returned by the catalogue. Lowercase letters in the path are accepted and normalized for lookup.
curl --request GET \
--url "${BASE_URL%/}/v1/market/instruments/es0875759518" \
--header 'Accept: application/json' \
--header "Authorization: Bearer ${ACCESS_TOKEN}"
An equity response contains the catalogue summary, current terms, and trading data:
{
"instrument": {
"isin": "ES0875759518",
"tradingCode": "ALP",
"name": "Alpha Energy",
"type": "EQUITY",
"currency": "EUR",
"issuer": {
"name": "Alpha Energy SA",
"lei": "529900T8BM49AURSDO55"
},
"professionalOnly": false,
"tradingStatus": "TRADABLE",
"quantityDecimals": 4,
"priceDecimals": 2,
"observedAt": "2026-09-15T14:30:00.123456Z"
},
"issuerDescription": "Renewable energy producer.",
"description": "Ordinary registered shares.",
"tradingStartDate": "2026-02-01",
"maturityDate": null,
"tradingRules": {
"tickSize": {
"amount": "0.0100",
"currency": "EUR"
},
"warningThresholds": {
"quantity": "100.0000",
"totalOrderAmount": {
"amount": "50000.00",
"currency": "EUR"
}
}
},
"referencePrice": {
"amount": "12.3400",
"currency": "EUR"
},
"lastPrice": {
"amount": "12.3500",
"currency": "EUR"
},
"accruedInterest": null,
"terms": {
"type": "EQUITY",
"issuedQuantity": "1000.2500"
}
}
Debt fields differ from equity fields:
| Instrument type | Price fields | Required term fields |
|---|---|---|
| Fixed-coupon debt | referencePrice, lastPrice, accruedInterest, and tradingRules.tickSize are exact percentage strings. | maturityDate, currentNominalValue, fixedCouponPercentage, couponPeriodicity, dayCountConvention, accrualDayType, and initialAccrualDate are required. firstCouponDate may be null. |
| Zero-coupon debt | referencePrice, lastPrice, accruedInterest, and tradingRules.tickSize are exact percentage strings. | maturityDate and currentNominalValue are required. |
See the generated fixed-coupon debt schema and zero-coupon debt schema for the complete field definitions.
lastPrice is the current trading baseline. It equals the approved reference price until the first matched trade, then the most recent matched price. Warning thresholds indicate when an acknowledgement is required. They are not hard maximums.
A malformed ISIN produces 400 invalid-request. A well-formed ISIN produces 404 not-found if it is unknown, outside the active trading lifecycle, not visible to the Mapped Profile, unsupported, or missing required approved trading data. These cases return the same response.