ATS / PPEX
All requests require clientID and developerAPIKey parameters for authentication.
Base URL: https://api-sandboxdash.norcapsecurities.com
Endpoints
POST /v3/cancelOrder
Cancel the order
Parameters
| Parameter | Type | Required | Description |
orderid | string | Yes | orderid |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/cancelOrder
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d orderid=41994
Response
| Field | Type | Description |
orderStatus | string | Pending / Live / Rejected / Cancelled / Partially Executed |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"orderStatus": "Cancelled"
}
POST /v3/createOrder
Create the Order
Parameters
| Parameter | Type | Required | Description |
memberid | string | Yes | Member ID |
issuerid | sting | Yes | PPEX Issuer ID |
accountid | string | No | Investor placing the order |
securityid | string | Yes | Security ID |
type | conditional | Yes | Limit / RFQ |
action | conditional | Yes | Buy / Sell |
quantity | integer | Yes | Number of shares |
price | decimal | Yes | Price per share |
expiration | conditional | Yes | GTC / Day / Other |
expirationDate | date | No | Date if "Other" is selected |
disclosePrice | conditional | Yes | Yes / No, if "no" is selected, price is not shown on order book |
contingencies | conditional | No | All or None / Minimum Quantity / "" or None, if All or None, order cannot be partially executed, if Minimum Quantity, order will not execute unless threshold is met, if blank or none - no contingencies |
minimumThreshold | integer | No | Minimum Quantity of Shares required for the trade to execute |
solicited | string | Yes | Solicited / Unsolicited |
token | string | No | Value for identifying the responses |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/createOrder
-d clientID=someClient Id
-d developerAPIKey=somedeveloperAPIKey
-d memberid=memberid
-d issuerid=issuerid
-d accountid=accountid
-d securityid= securityid
-d type=type
-d action=action
-d quantity=quantity
-d price=price
-d expiration=expiration
-d expirationDate=expirationDate
-d disclosePrice=disclosePrice
-d contingencies=All or None
-d minimumThreshold=
-d solicited=Unsolicited
-d token=some value
Response
| Field | Type | Description |
orderid | string | Order ID |
orderStatus | string | Pending / Live / Rejected / Cancelled / Partially Executed / Executed |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"orderid": "325253233",
"orderStatus": "orderStatus",
"token": "some value"
}
POST /v3/createSecurityMarketHours
Parameters
| Parameter | Type | Required | Description |
securityId | string | Yes | Security ID |
mondayClosed | string | No | "yes" if the market is closed, null if hours are specified |
mondayHoursStart | string | No | specified time (EST) |
mondayHoursEnd | string | No | specified time (EST) |
tuesdayClosed | string | No | "yes" if the market is closed, null if hours are specified |
tuesdayHoursStart | string | No | specified time (EST) |
tuesdayHoursEnd | string | No | specified time (EST) |
wednesdayClosed | string | No | "yes" if the market is closed, null if hours are specified |
wednesdayHoursStart | string | No | specified time (EST) |
wednesdayHoursEnd | string | No | specified time (EST) |
thursdayClosed | string | No | "yes" if the market is closed, null if hours are specified |
thursdayHoursStart | string | No | specified time (EST) |
thursdayHoursEnd | string | No | specified time (EST) |
fridayClosed | string | No | "yes" if the market is closed, null if hours are specified |
fridayHoursStart | string | No | specified time (EST) |
fridayHoursEnd | string | No | specified time (EST) |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/createSecurityMarketHours
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d securityId=94216
-d mondayHoursStart=06:01
-d mondayHoursEnd=16:01
-d mondayClosed=no
-d tuesdayHoursStart=06:01
-d tuesdayHoursEnd=16:01
-d tuesdayClosed=no
-d wednesdayHoursStart=06:01
-d wednesdayHoursEnd=16:01
-d wednesdayClosed=no
-d thursdayHoursStart=06:01
-d thursdayHoursEnd=16:01
-d thursdayClosed=no
-d fridayHoursStart=06:01
-d fridayHoursEnd=16:01
-d fridayClosed=no
Response
| Field | Type | Description |
securityHoursDetails | string | Array of details of the hours for security ID |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"securityHoursDetails": {
"securityId": "94216",
"mondayClosed": "No",
"mondayStartHours": "6",
"mondayStartMins": "1",
"mondayCloseHours": "23",
"mondayCloseMins": "59",
"tuesdayClosed": "No",
"tuesdayStartHours": "5",
"tuesdayStartMins": "15",
"tuesdayCloseHours": "23",
"tuesdayCloseMins": "59",
"wednesdayClosed": "No",
"wednesdayStartHours": "3",
"wednesdayStartMins": "0",
"wednesdayCloseHours": "23",
"wednesdayCloseMins": "59",
"thursdayClosed": "No",
"thursdayStartHours": "0",
"thursdayStartMins": "0",
"thursdayCloseHours": "23",
"thursdayCloseMins": "59",
"fridayClosed": "No",
"fridayStartHours": "0",
"fridayStartMins": "0",
"fridayCloseHours": "23",
"fridayCloseMins": "59"
}
}
POST /v3/deleteSecurityMarketHours
Parameters
| Parameter | Type | Required | Description |
securityId | string | Yes | Security ID |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/deleteSecurityMarketHours
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d securityId=94216
Response
| Field | Type | Description |
securityHoursDetails | string | Success |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"securityHoursDetails": "Security market hour deleted successfully."
}
POST /v3/getClob
Parameters
| Parameter | Type | Required | Description |
securityID | string | Yes | Security ID for PPEX/ATS |
issuerID | integer | Yes | Issuer ID for PPEX/ATS |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getClob
-d clientID=someClient Id
-d developerAPIKey=somedeveloperAPIKey
-d securityID= securityID
-d issuerID= issuerID
Response
| Field | Type | Description |
orderDetailsAll | array | Array of CLOB details |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"orderDetailsAll":"{
"securityID": "77654",
"orderDetailsBid": "90.00",
"orderDetailsOffer": "100.00",
}
}
POST /v3/getIssuerApprovedSecurities
Parameters
| Parameter | Type | Required | Description |
issuerID | string | Yes | Issuer ID |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getIssuerApprovedSecurities
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d issuerID=77654
Response
| Field | Type | Description |
issuerDetails | array | An array of issuer approved securities list |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"issuerDetails": [{
"SecurityID": "77654",
"SecurityName": "Tesla",
},{
"SecurityID": "25644",
"SecurityName": "Carta",
}]
}
POST /v3/getMarketHolidays
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getMarketHolidays
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"globalMarketHolidays": {
"saturdayclosed": "Yes",
"saturdayStartHours": "0",
"saturdayStartMins": "0",
"saturdayCloseHours": "0",
"saturdayCloseMins": "0",
"sundayclosed": "Yes",
"sundayStartHours": "0",
"sundayStartMins": "0",
"sundayCloseHours": "0",
"sundayCloseMins": "0"
}
}
POST /v3/getMarketHours
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getMarketHours
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
Response
| Field | Type | Description |
globalMarketHours | string | Array of details for the PPEX global market hours |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"globalMarketHours": {
"mondayclosed": "No",
"mondayStartHours": "6",
"mondayStartMins": "0",
"mondayCloseHours": "23",
"mondayCloseMins": "59",
"tuesdayclosed": "No",
"tuesdayStartHours": "5",
"tuesdayStartMins": "15",
"tuesdayCloseHours": "23",
"tuesdayCloseMins": "59",
"wednesdayclosed": "No",
"wednesdayStartHours": "1",
"wednesdayStartMins": "0",
"wednesdayCloseHours": "23",
"wednesdayCloseMins": "59",
"thursdayclosed": "No",
"thursdayStartHours": "0",
"thursdayStartMins": "0",
"thursdayCloseHours": "23",
"thursdayCloseMins": "59",
"fridayclosed": "No",
"fridayStartHours": "0",
"fridayStartMins": "0",
"fridayCloseHours": "23",
"fridayCloseMins": "59"
}
}
POST /v3/getMatchedTrade
Parameters
| Parameter | Type | Required | Description |
matchId | string | Yes | Match/Trade ID |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getMatchedTrade
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d matchId=232242322
Response
| Field | Type | Description |
matchedTradeDetails | string | Array of trade details |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"matchedTradeDetails": [
{
"executionTime": 1621589083.2639,
"numberOfShares": 56,
"Price": 8,
"OrdersMatched": [
{
"askOrderId": 23467891,
"bidOrderId": 130486295
}
]
}
]
}
POST /v3/getOrder
Parameters
| Parameter | Type | Required | Description |
orderid | string | Yes | Order ID |
token | string | No | Value for identifying the responses |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getOrder
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d orderid=232242322
Response
| Field | Type | Description |
orderDetails | string | Array of order includes all information of the matched order |
POST /v3/getOrderBook
Parameters
| Parameter | Type | Required | Description |
securityID | string | Yes | Security ID for the PPEX/ATS |
issuerID | integer | Yes | Issuer ID |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getOrderBook
-d clientID=someClient Id
-d developerAPIKey=somedeveloperAPIKey
-d securityID= securityID
-d issuerID= issuerID
Response
| Field | Type | Description |
orderDetailsAll | string | Get security order details array |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"orderDetailsAll":"[{
"security_name":"Instacart",
"Action":"Buy",
"number_shares":18",
"share_per_price":"RFQ",
"total_amount":"RFQ",
},
{"security_name":"Instacart",
"Action":"Buy",
"number_shares":33",
"share_per_price":"RFQ",
"total_amount":"RFQ",
},
{"security_name":"Instacart",
"Action":"Sell",
"number_shares":15",
"share_per_price":"15.0",
"total_amount":"225.00",
}]"
}
POST /v3/getOrdersForADay
POST /v3/getSecurityInformation
Parameters
| Parameter | Type | Required | Description |
securityID | string | Yes | Security ID for the ATS/PPEX |
issuerID | integer | Yes | Issuer ID |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getSecurityInformation
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d securityID=658656
-d issuerID= issuerID
Response
| Field | Type | Description |
securityDetails | string | Array of security information |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"SecurityDetails": {
"securityID": "977654",
"IssuerName": "Carta",
"SecurityName": "Carta",
"Ticker": "Ticker",
"CUSIP": "CUSIP",
"Industries": "Industries",
"SecurityType": "CommonEquity",
"Description": "CompanyBio
}
}
POST /v3/getSecurityMarketHours
Parameters
| Parameter | Type | Required | Description |
securityId | string | Yes | Security ID |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getSecurityMarketHours
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d securityId=94216
Response
| Field | Type | Description |
securityHoursDetails | string | Array of details of the hours for security ID |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"securityHoursDetails": {
"securityId": "94216",
"mondayClosed": "No",
"mondayStartHours": "6",
"mondayStartMins": "1",
"mondayCloseHours": "23",
"mondayCloseMins": "59",
"tuesdayClosed": "No",
"tuesdayStartHours": "5",
"tuesdayStartMins": "15",
"tuesdayCloseHours": "23",
"tuesdayCloseMins": "59",
"wednesdayClosed": "No",
"wednesdayStartHours": "3",
"wednesdayStartMins": "0",
"wednesdayCloseHours": "23",
"wednesdayCloseMins": "59",
"thursdayClosed": "No",
"thursdayStartHours": "0",
"thursdayStartMins": "0",
"thursdayCloseHours": "23",
"thursdayCloseMins": "59",
"fridayClosed": "No",
"fridayStartHours": "0",
"fridayStartMins": "0",
"fridayCloseHours": "23",
"fridayCloseMins": "59"
}
}
POST /v3/getSettlementStatus
Parameters
| Parameter | Type | Required | Description |
tradeID | string | Yes | Matched Trade ID from PPEX |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getSettlementStatus
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d tradeID=77654
Response
| Field | Type | Description |
tradeDetails | string | Array of trade details |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"tradeDetails": {
"memberid": 123,
"issuerid": 123,
"tradeID": 1235,
"tradeStatus": "SETTLED"
}
}
POST /v3/notifySettlement
Parameters
| Parameter | Type | Required | Description |
memberid | string | Yes | PPEX Member ID |
issuerid | string | Yes | Issuer ID |
tradeID | string | Yes | Trade ID (same as Match ID) |
tradeStatus | string | Yes | Settled/Canceled |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/notifySettlement
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d memberid=123456
-d issuerid=489651
-d tradeID=5474684246
-d tradeStatus=Settled
Response
| Field | Type | Description |
tradeStatus | string | Status as entered from the tradeStatus |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"tradeStatus": "Settled"
}
GET /v3/ppex/orders
Retrieves a paginated list of PPEX orders with support for filtering, sorting, and optional trade inclusion. This endpoint replaces the deprecated getOrdersForADay.
Parameters
| Parameter | Type | Required | Description |
offset | integer | No | Starting index for pagination. Default: 0 |
limit | integer | No | Number of records to return. Default: 10 |
filter | JSON | No | Filter criteria (see Filtering orders by date) |
sort | string | No | Sort field and direction |
include | string | No | Set to trades to include matched trades nested within each order |
Example Request
curl -k -X GET "https://api-sandboxdash.norcapsecurities.com/v3/ppex/orders?offset=0&limit=10" \
-H "clientID: someclientid" \
-H "developerAPIKey: somedeveloperkey"
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"ppex_orders": [
{
"securityId": "28365032",
"securityName": "ABCD",
"expirationType": "1",
"expirationDate": "2025-06-14",
"memberId": "777",
"orderId": "2482",
"accountId": "A04834434",
"accountName": "Retirement A/C",
"securityType": "Offer",
"shares": "359.430914",
"remainingShares": "953.744306",
"sharePrice": "4.530231",
"amount": "460186.965273",
"priceNotDisplayed": "No",
"allOrNone": "No",
"status": "Inactive",
"type": "Yes",
"tradeStatus": "Pending",
"orderStatus": "Pending",
"tradeOrderStatus": "CREATED",
"negotiationStatus": "Pending",
"deleted": "Active",
"createdDate": "2024-12-10 00:00:00",
"updatedBy": "0",
"updatedDate": "2022-08-28 00:00:00",
"executionTime": "5.45",
"contingencies": "All",
"solicited": "No",
"minimumQuantity": "87.741240",
"operationHrStatus": "1",
"origination": "platform",
"cancelDate": "2025-02-10 22:08:45",
"cancelExecutionTime": "0",
"token": "b8s0zjstfaf"
}
],
"pagination": {
"totalRecords": 142,
"startIndex": 0,
"endIndex": 9
}
}
Filtering orders by date
To replicate the deprecated getOrdersForADay behavior, use the filter parameter with createdDate and include=trades:
curl -k -X GET "https://api-sandboxdash.norcapsecurities.com/v3/ppex/orders?include=trades&limit=100&filter=%7B%22createdDate%22%3A%222026-03-24%22%7D" \
-H "clientID: someclientid" \
-H "developerAPIKey: somedeveloperkey"
The filter parameter is a URL-encoded JSON object:
{"createdDate": "2026-03-24"}
When include=trades is set, each order includes a trades array with matched trade details:
{
"statusCode": "101",
"statusDesc": "Ok",
"ppex_orders": [
{
"orderId": "2482",
"securityId": "28365032",
"securityName": "ABCD",
"securityType": "Offer",
"shares": "359.430914",
"sharePrice": "4.530231",
"status": "Live",
"createdDate": "2026-03-24 11:24:59",
"trades": [
{
"tradeId": "81",
"transactionType": "BUY",
"shares": "100.000000",
"sharePrice": "4.530231",
"amount": "453.023100",
"status": "SETTLED",
"createdDate": "2026-03-24 14:30:00"
}
]
}
],
"pagination": {
"totalRecords": 15,
"startIndex": 0,
"endIndex": 14
}
}
POST /v3/ppex/orders/{id}
This endpoint retrieves a single PPEX order.
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"ppex_order": {
"securityId": "28365032",
"securityName": "AAPL",
"expirationType": "1",
"expirationDate": "2025-06-14",
"memberId": "777",
"orderId": "2482",
"accountId": "A04834434",
"accountName": "Retirement A/C",
"securityType": "Offer",
"shares": "359.430914",
"remainingShares": "953.744306",
"sharePrice": "4.530231",
"amount": "460186.965273",
"priceNotDisplayed": "No",
"allOrNone": "No",
"status": "Inactive",
"type": "Yes",
"tradeStatus": "Pending",
"orderStatus": "Pending",
"tradeOrderStatus": "CREATED",
"negotiationStatus": "Pending",
"deleted": "Active",
"createdDate": "2024-12-10 00:00:00",
"updatedBy": "0",
"updatedDate": "2022-08-28 00:00:00",
"executionTime": "5.45",
"contingencies": "All",
"solicited": "No",
"minimumQuantity": "87.741240",
"operationHrStatus": "1",
"origination": "platform",
"cancelDate": "2025-02-10 22:08:45",
"cancelExecutionTime": "0",
"token": "b8s0zjstfaf"
}
}
This endpoint retrieves a list of PPEX trades. It supports pagination, filtering, and sorting capabilities.
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"ppex_trades": [
{
"memberId": "777",
"askId": "180",
"bidId": "126",
"offeringId": "549119",
"accountId": "ACCpiyiqzn0",
"partyType": "SELLER",
"tradeId": "81",
"transactionType": "BUY",
"amount": "2906.113302",
"sharePrice": "83.307155",
"shares": "564.183958",
"status": "PENDING",
"reportingStatus": "FAILED",
"createdDate": "2024-12-10 00:00:00",
"deleted": "0",
"executionTime": "485",
"updatedDate": "2022-02-13 00:00:00"
}
],
"pagination": {
"totalRecords": 100,
"startIndex": 0,
"endIndex": 0
}
}
This endpoint retrieves a single PPEX trade.
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"ppex_trade": {
"memberId": "777",
"askId": "180",
"bidId": "126",
"offeringId": "549119",
"accountId": "ACCpiyiqzn0",
"partyType": "SELLER",
"tradeId": "81",
"transactionType": "BUY",
"amount": "2906.113302",
"sharePrice": "83.307155",
"shares": "564.183958",
"status": "PENDING",
"reportingStatus": "FAILED",
"createdDate": "2024-12-10 00:00:00",
"deleted": "0",
"executionTime": "485",
"updatedDate": "2022-02-13 00:00:00"
}
}
POST /v3/sendOrderAttestation
Parameters
| Parameter | Type | Required | Description |
memberId | string | Yes | Member ID on PPEX |
issuerId | string | Yes | Issuer ID |
orderID | string | Yes | Order ID |
approval | string | Yes | Yes/No |
signature | string | No | Investor Typed Digital Signature |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/sendOrderAttestation
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d memberId=A55473
-d issuerId=148745
-d orderID=465325641
-d approval=Yes/No
-d signature=tesst
Response
| Field | Type | Description |
orderAttestationDetails | string | Array of orderAttestationDetails |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"orderAttestationDetails": {
"Order Id": "611587001",
"Approval": "Yes",
"Signature": "test",
"Attestation Timestamp": "2021-08-10 05:59:56",
"IP address": "103.114.208.58"
}
}
POST /v3/updateSecurityMarketHours
Parameters
| Parameter | Type | Required | Description |
securityId | string | Yes | Security ID |
mondayHoursStart | string | No | specified time (EST) |
mondayHoursEnd | string | No | specified time (EST) |
mondayClosed | string | No | "yes" if the market is closed, null if hours are specified |
tuesdayHoursStart | string | No | specified time (EST) |
tuesdayHoursEnd | string | No | specified time (EST) |
tuesdayClosed | string | No | "yes" if the market is closed, null if hours are specified |
wednesdayHoursStart | string | No | specified time (EST) |
wednesdayHoursEnd | string | No | specified time (EST) |
wednesdayClosed | string | No | "yes" if the market is closed, null if hours are specified |
thursdayHoursStart | string | No | specified time (EST) |
thursdayHoursEnd | string | No | specified time (EST) |
thursdayClosed | string | No | "yes" if the market is closed, null if hours are specified |
fridayHoursStart | string | No | specified time (EST) |
fridayHoursEnd | string | No | specified time (EST) |
fridayClosed | string | No | "yes" if the market is closed, null if hours are specified |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/updateSecurityMarketHours
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d securityId=94216
-d mondayHoursStart=06:01
-d mondayHoursEnd=16:01
-d mondayClosed=no
-d tuesdayHoursStart=06:01
-d tuesdayHoursEnd=16:01
-d tuesdayClosed=no
-d wednesdayHoursStart=06:01
-d wednesdayHoursEnd=16:01
-d wednesdayClosed=no
-d thursdayHoursStart=06:01
-d thursdayHoursEnd=16:01
-d thursdayClosed=no
-d fridayHoursStart=06:01
-d fridayHoursEnd=16:01
-d fridayClosed=no
Response
| Field | Type | Description |
securityHoursDetails | string | Array of details of the hours for security ID |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"securityHoursDetails": {
"securityId": "94216",
"mondayClosed": "No",
"mondayStartHours": "6",
"mondayStartMins": "1",
"mondayCloseHours": "23",
"mondayCloseMins": "59",
"tuesdayClosed": "No",
"tuesdayStartHours": "5",
"tuesdayStartMins": "15",
"tuesdayCloseHours": "23",
"tuesdayCloseMins": "59",
"wednesdayClosed": "No",
"wednesdayStartHours": "3",
"wednesdayStartMins": "0",
"wednesdayCloseHours": "23",
"wednesdayCloseMins": "59",
"thursdayClosed": "No",
"thursdayStartHours": "0",
"thursdayStartMins": "0",
"thursdayCloseHours": "23",
"thursdayCloseMins": "59",
"fridayClosed": "No",
"fridayStartHours": "0",
"fridayStartMins": "0",
"fridayCloseHours": "23",
"fridayCloseMins": "59"
}
}
GET /v3/ppex/market/holidays
Returns market holidays within a date range from the holiday calendar. Defaults to the current date through year-end if no range is specified.
Parameters
| Parameter | Type | Required | Description |
startDate | string | No | Start of date range (YYYY-MM-DD). Defaults to today |
endDate | string | No | End of date range (YYYY-MM-DD). Defaults to Dec 31 of current year |
Example Request
curl -k https://api-sandboxdash.norcapsecurities.com/v3/ppex/market/holidays \
-H "Authorization: Bearer someclientid:somedeveloperkey" \
-G -d startDate=2026-01-01 \
-d endDate=2026-12-31
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"marketHolidays": [
{
"date": "2026-01-01",
"description": "New Year's Day"
},
{
"date": "2026-01-19",
"description": "Martin Luther King Jr. Day"
},
{
"date": "2026-07-03",
"description": "Independence Day (Observed)"
}
]
}
Error Responses
| Status Code | Condition | Example statusDesc |
1400 | startDate or endDate not in YYYY-MM-DD format | Bad request: startDate must be in YYYY-MM-DD format |
{
"statusCode": "1400",
"statusDesc": "Bad request: startDate must be in YYYY-MM-DD format"
}
GET /v3/ppex/market/hours
Returns the weekly trading schedule (Monday–Sunday). If a securityId is provided, returns security-specific custom hours when configured; otherwise returns the global market schedule.
Parameters
| Parameter | Type | Required | Description |
securityId | string | No | Security ID for security-specific hours |
Example Request
curl -k https://api-sandboxdash.norcapsecurities.com/v3/ppex/market/hours \
-H "Authorization: Bearer someclientid:somedeveloperkey"
Response
| Field | Type | Description |
marketHours.timezone | string | Always America/New_York |
marketHours.hoursSource | string | global or security |
marketHours.schedule | array | Array of 7 day entries |
schedule[].day | string | Day name (monday–sunday) |
schedule[].dayOfWeek | integer | ISO day number (1=Monday, 7=Sunday) |
schedule[].closed | boolean | Whether the market is closed this day |
schedule[].open | string | Opening time (HH:MM) or null if closed |
schedule[].close | string | Closing time (HH:MM) or null if closed |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"marketHours": {
"timezone": "America/New_York",
"hoursSource": "global",
"schedule": [
{
"day": "monday",
"dayOfWeek": 1,
"closed": false,
"open": "06:00",
"close": "17:00"
},
{
"day": "tuesday",
"dayOfWeek": 2,
"closed": false,
"open": "06:00",
"close": "17:00"
},
{
"day": "saturday",
"dayOfWeek": 6,
"closed": true,
"open": null,
"close": null
}
]
}
}
GET /v3/ppex/market/schedule
Returns a date-by-date merged schedule combining weekly trading hours with holiday closures. Maximum range is 90 days. If no endDate is provided, defaults to 30 days from startDate.
Parameters
| Parameter | Type | Required | Description |
securityId | string | No | Security ID for security-specific hours |
startDate | string | No | Start date (YYYY-MM-DD). Defaults to today |
endDate | string | No | End date (YYYY-MM-DD). Defaults to startDate + 30 days. Max 90 days from startDate |
Example Request
curl -k https://api-sandboxdash.norcapsecurities.com/v3/ppex/market/schedule \
-H "Authorization: Bearer someclientid:somedeveloperkey" \
-G -d startDate=2026-03-23 \
-d endDate=2026-03-27
Response
| Field | Type | Description |
marketSchedule.timezone | string | Always America/New_York |
marketSchedule.hoursSource | string | global or security |
marketSchedule.startDate | string | Start date of the range |
marketSchedule.endDate | string | End date of the range |
marketSchedule.dates | array | Array of per-date entries |
dates[].date | string | Date (YYYY-MM-DD) |
dates[].day | string | Day name |
dates[].open | string | Opening time (HH:MM) or null if closed |
dates[].close | string | Closing time (HH:MM) or null if closed |
dates[].closed | boolean | Whether the market is closed |
dates[].closedReason | string | holiday, weekend, day_closed, or null |
dates[].holidayDescription | string | Holiday name (only present for holidays) |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"marketSchedule": {
"timezone": "America/New_York",
"hoursSource": "global",
"startDate": "2026-03-23",
"endDate": "2026-03-27",
"dates": [
{
"date": "2026-03-23",
"day": "monday",
"open": "06:00",
"close": "17:00",
"closed": false,
"closedReason": null
},
{
"date": "2026-03-25",
"day": "wednesday",
"open": "06:00",
"close": "17:00",
"closed": false,
"closedReason": null
},
{
"date": "2026-03-27",
"day": "friday",
"open": null,
"close": null,
"closed": true,
"closedReason": "holiday",
"holidayDescription": "Good Friday"
}
]
}
}
Error Responses
| Status Code | Condition | Example statusDesc |
1400 | startDate or endDate not in YYYY-MM-DD format | Bad request: startDate must be in YYYY-MM-DD format |
1400 | Range exceeds 90 days from startDate | Bad request: range must be within 90 days of startDate |
1400 | endDate is before startDate | Bad request: endDate must be on or after startDate |
{
"statusCode": "1400",
"statusDesc": "Bad request: endDate must be on or after startDate"
}
GET /v3/ppex/market/status
Returns whether the PPEX market is currently open or closed, including the reason for closure. Checks holidays first, then the weekly schedule for the current day.
Parameters
| Parameter | Type | Required | Description |
securityId | string | No | Security ID for security-specific hours |
Example Request
curl -k https://api-sandboxdash.norcapsecurities.com/v3/ppex/market/status \
-H "Authorization: Bearer someclientid:somedeveloperkey"
Response
| Field | Type | Description |
marketStatus.isOpen | boolean | Whether the market is currently open |
marketStatus.currentTime | string | Current time in ISO 8601 format |
marketStatus.timezone | string | Always America/New_York |
marketStatus.openTime | string | Today's opening time (HH:MM) or null |
marketStatus.closeTime | string | Today's closing time (HH:MM) or null |
marketStatus.hoursSource | string | global or security; null only when closedReason is holiday |
marketStatus.closedReason | string | holiday, weekend, day_closed, outside_hours, or null if open. outside_hours indicates a normal trading weekday outside today's open/close window. |
Example Response (Open)
{
"statusCode": "101",
"statusDesc": "Ok",
"marketStatus": {
"isOpen": true,
"currentTime": "2026-03-24T10:30:00-04:00",
"timezone": "America/New_York",
"openTime": "06:00",
"closeTime": "17:00",
"hoursSource": "global",
"closedReason": null
}
}
Example Response (Closed — Holiday)
{
"statusCode": "101",
"statusDesc": "Ok",
"marketStatus": {
"isOpen": false,
"currentTime": "2026-01-01T12:00:00-05:00",
"timezone": "America/New_York",
"openTime": null,
"closeTime": null,
"hoursSource": null,
"closedReason": "holiday"
}
}