curl --request GET \
--url https://partners-api.sandbox.securitize.io/stocks/v1/stocks/realtime-price \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://partners-api.sandbox.securitize.io/stocks/v1/stocks/realtime-price', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://partners-api.sandbox.securitize.io/stocks/v1/stocks/realtime-price"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"symbol": "AAPL/USD",
"mid": "231.235000000000000000",
"bestBid": "231.220000000000000000",
"bestAsk": "231.250000000000000000",
"lastPrice": "231.240000000000000000",
"lastSize": 100,
"bidSize": 300,
"askSize": 200,
"marketIdentificationCode": "XNAS",
"bidMarketIdentificationCode": "XNAS",
"askMarketIdentificationCode": "ARCX",
"lastMarketIdentificationCode": "XNAS",
"bidTime": "2026-10-16T14:17:40.118Z",
"askTime": "2026-10-16T14:17:40.118Z",
"marketStatus": "OPEN",
"reason": null,
"validFrom": "2026-10-16T14:17:40.118Z",
"validUntil": "2026-10-16T14:17:42.118Z",
"staleness": 0,
"signedPrice": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzeW1ib2wiOiJBQVBML1VTRCJ9.c2lnbmF0dXJl"
}{
"statusCode": 400,
"message": [
"amount must match /^\\d+$/ regular expression"
],
"error": "Bad Request"
}{
"message": "No API key found in request"
}{
"statusCode": 403,
"message": "UNAUTHORIZED_INVESTOR",
"error": "Forbidden"
}{
"statusCode": 404,
"message": "SYMBOL_NOT_FOUND",
"error": "Not Found"
}{
"statusCode": 429,
"message": "ThrottlerException: Too Many Requests"
}Get a real-time price to trade against
The real-time price for one investor, with the signedPrice an order needs. Call it for the order ticket and the confirmation screen, on a fixed cadence while the ticket is open rather than on every keystroke.
Real-time data is entitled per investor: each call names an eligible investor, counts against that investor’s limit (one a second, sixty an hour) and is recorded against them. The investor must be verified with a verified suitability, and, in the European Economic Area, a passed DLT test; Securitize checks this on every call.
Two expiries with two jobs: validUntil is how long the quote is current, about 2 seconds, so refresh what you show by then. signedPrice is what the order is checked against: it expires about 20 seconds after it is issued, and the order is priced at the quote it signed. Prepare the order before then, or fetch a new price.
curl --request GET \
--url https://partners-api.sandbox.securitize.io/stocks/v1/stocks/realtime-price \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://partners-api.sandbox.securitize.io/stocks/v1/stocks/realtime-price', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://partners-api.sandbox.securitize.io/stocks/v1/stocks/realtime-price"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"symbol": "AAPL/USD",
"mid": "231.235000000000000000",
"bestBid": "231.220000000000000000",
"bestAsk": "231.250000000000000000",
"lastPrice": "231.240000000000000000",
"lastSize": 100,
"bidSize": 300,
"askSize": 200,
"marketIdentificationCode": "XNAS",
"bidMarketIdentificationCode": "XNAS",
"askMarketIdentificationCode": "ARCX",
"lastMarketIdentificationCode": "XNAS",
"bidTime": "2026-10-16T14:17:40.118Z",
"askTime": "2026-10-16T14:17:40.118Z",
"marketStatus": "OPEN",
"reason": null,
"validFrom": "2026-10-16T14:17:40.118Z",
"validUntil": "2026-10-16T14:17:42.118Z",
"staleness": 0,
"signedPrice": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzeW1ib2wiOiJBQVBML1VTRCJ9.c2lnbmF0dXJl"
}{
"statusCode": 400,
"message": [
"amount must match /^\\d+$/ regular expression"
],
"error": "Bad Request"
}{
"message": "No API key found in request"
}{
"statusCode": 403,
"message": "UNAUTHORIZED_INVESTOR",
"error": "Forbidden"
}{
"statusCode": 404,
"message": "SYMBOL_NOT_FOUND",
"error": "Not Found"
}{
"statusCode": 429,
"message": "ThrottlerException: Too Many Requests"
}Authorizations
Query Parameters
Response
The real-time price and its signed form.