Skip to content

ATS / PPEX

All requests require clientID and developerAPIKey parameters for authentication.

Base URL: https://api-sandboxdash.norcapsecurities.com

Endpoints


Order status values

The order status field reports where an order sits in its execution lifecycle. An order is created Pending or Live, becomes matchable when Live, and ends in one of the terminal states below. Filled quantity is always total shares − remaining shares (number_shares − shares_remaining on getOrder, shares − remainingShares on ppex/orders), regardless of status.

Status Terminal Meaning
Pending No Order created but not yet active — awaiting issuer approval before it can be matched.
Live No Order is active and open on the book, eligible for matching. No shares filled yet.
Partially Executed No Some shares have filled; the unfilled remainder is still open and eligible for further matching.
Executed Yes Fully filled — remaining shares are 0.
Cancelled Yes Order cancelled via API or admin. Usually no shares were filled, but cancelOrder also accepts Partially Executed orders, so a Cancelled order may have fills.
Partially Executed & Cancelled Yes Order was partially filled, then the unfilled remainder was cancelled (from the admin console or by automated expiry). The filled portion stands; only the open remainder was withdrawn.
Not Approved Yes Order was not approved for activation (issuer or compliance declined) and never became Live; no shares filled.

Do not rely on the status string to detect fills on a cancelled order: an order cancelled through the API after a partial fill reports Cancelled, not Partially Executed & Cancelled. To detect a partial fill on any cancelled order, compare filled vs. total shares (above).


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 Order status after the cancel request. See Order status values.

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 string 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
orderDetails object The created order (see fields below)

Each orderDetails object contains:

Field Type Description
id string Internal record ID of the created order
securityId string Security ID the order was placed for
orderId string Order ID
action string Order side: Bid (buy) or Offer (sell)
orderStatus string Initial order status, set by the system: Pending (awaiting issuer approval) or Live (active). A client-supplied status is ignored. See Order status values.
token string Caller-supplied token echoed back (present only when token was sent in the request)

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "orderDetails": {
    "id": "12345",
    "securityId": "28365032",
    "orderId": "325253233",
    "action": "Bid",
    "orderStatus": "Live",
    "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 object Market hours configured for the 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 Confirmation message (Security market hour deleted successfully.)

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "securityHoursDetails": "Security market hour deleted successfully."
}

POST /v3/getClob

Returns the consolidated limit order book (CLOB) top-of-book for a security: the best (highest) live Bid price and the best (lowest) live Offer price. Prices are drawn from orders in Live or Partially Executed status. For request-for-quote orders the price is reported as RFQ; a side with no live orders is reported as --.

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=someclientid
-d developerAPIKey=somedeveloperkey
-d securityID=77654
-d issuerID=148745

Response

Field Type Description
orderDetailsAll object Top-of-book summary for the security (see fields below)

The orderDetailsAll object contains:

Field Type Description
securityID string Security ID the book is for
orderDetailsBid string Best (highest) live Bid price per share, RFQ for a request-for-quote bid, or -- when there are no live bids
orderDetailsOffer string Best (lowest) live Offer price per share, RFQ for a request-for-quote offer, or -- when there are no live offers

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "orderDetailsAll": {
    "securityID": "77654",
    "orderDetailsBid": "90.00",
    "orderDetailsOffer": "100.00"
  }
}

POST /v3/getIssuerApprovedSecurities

Returns the list of approved, active securities (offerings) for an issuer. Only offerings whose offeringStatus is Approved and whose virtualStatus is ACTIVE are returned.

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 Array of the issuer's approved, active securities (see fields below)

Each issuerDetails element contains:

Field Type Description
SecurityName string Security (offering) name
SecurityID string Security ID (offering ID)

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "issuerDetails": [
    {
      "SecurityName": "Tesla",
      "SecurityID": "77654"
    },
    {
      "SecurityName": "Carta",
      "SecurityID": "25644"
    }
  ]
}

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

Returns the PPEX global weekday market hours (Monday through Friday). Each day reports whether the market is closed and its opening and closing hours and minutes (US Eastern time). Saturday and Sunday are reported separately by getMarketHolidays.

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getMarketHours
 -d clientID=someclientid
 -d developerAPIKey=somedeveloperkey

Response

Field Type Description
globalMarketHours object PPEX global weekday market hours (see fields below)

The globalMarketHours object contains, for each weekday mondayfriday:

Field Type Description
{day}closed string Yes if the market is closed that day, otherwise No
{day}StartHours string Opening hour (0–23)
{day}StartMins string Opening minute (0–59)
{day}CloseHours string Closing hour (0–23)
{day}CloseMins string Closing minute (0–59)

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

Returns the details of a single matched trade (the pairing of a Bid order against an Offer order) identified by its match/trade ID, including the two order IDs that were matched.

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 object The matched trade (see fields below)

The matchedTradeDetails object contains:

Field Type Description
executionTime string Trade creation/execution timestamp (YYYY-MM-DD HH:MM:SS)
numberOfShares string Total shares matched in the trade
Price string Execution price per share
ordersMatched object The two order IDs matched against each other (see below)

The ordersMatched object contains:

Field Type Description
askOrderId string Order ID of the sell (Offer) side
bidOrderId string Order ID of the buy (Bid) side

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "matchedTradeDetails": {
    "executionTime": "2026-03-24 14:30:00",
    "numberOfShares": "56",
    "Price": "8.000000",
    "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 array Array of order objects. For a single orderid request the array contains one element; for a token request it contains one element per order sharing that token.

Each orderDetails element contains:

Field Type Description
memberID string Investor account ID associated with the order. Always carries the same value as accountID on this endpoint.
accountID string Investor account ID associated with the order (same value as memberID)
security_id string Security ID the order is for
security_name string Security name
order_Id string Order ID
order_type string Order side: Bid (buy) or Offer (sell)
number_shares string Total share quantity on the order
shares_remaining string Shares still unfilled
price_per_share string Limit price per share, or RFQ for request-for-quote orders
total_amount string Total order amount
PND string Price Not Displayed flag (Yes / No)
Contingencies string Order contingencies
MinimumThreshold string Minimum quantity threshold for execution
Solicited string Whether the order was solicited (Yes / No)
status string Order status. See Order status values for the full set and their meanings.
token string Caller-supplied token echoed back
createdDate string Order creation timestamp
updateDate string Last update timestamp
createdIPAddress string IP address recorded when the order was created
matchedOrders array Fills matched against this order (empty when there are no fills)

Each matchedOrders element contains:

Field Type Description
matchid string ID of the matched (opposing) order
executedPrice string Execution price per share
executedQuantity string Executed share quantity
executedTotal Commitment string Executed total amount (the key contains a literal space)
createdDate string Fill creation timestamp
updateDate string Fill update timestamp
createdIPAddress string IP address recorded for the fill

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "orderDetails": [
    {
      "memberID": "A04834434",
      "accountID": "A04834434",
      "security_id": "28365032",
      "security_name": "ABCD",
      "order_Id": "2482",
      "order_type": "Offer",
      "number_shares": "100",
      "shares_remaining": "0",
      "price_per_share": "4.53",
      "total_amount": "453.00",
      "PND": "No",
      "Contingencies": "All",
      "MinimumThreshold": "0",
      "Solicited": "No",
      "status": "Executed",
      "token": "b8s0zjstfaf",
      "createdDate": "2026-03-24 11:24:59",
      "updateDate": "2026-03-24 14:30:00",
      "createdIPAddress": "0.0.0.0",
      "matchedOrders": [
        {
          "matchid": "2483",
          "executedPrice": "4.53",
          "executedQuantity": "100",
          "executedTotal Commitment": "453.00",
          "createdDate": "2026-03-24 14:30:00",
          "updateDate": "2026-03-24 14:30:00",
          "createdIPAddress": "0.0.0.0"
        }
      ]
    }
  ]
}

POST /v3/getOrderBook

Returns the open order book for a security: every live order resting on the book (status Live or Partially Executed). Each entry reports the order side as Buy or Sell, the remaining (unfilled) share quantity, and the price. Request-for-quote orders report RFQ for both share_per_price and total_amount.

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=someclientid
-d developerAPIKey=somedeveloperkey
-d securityID=28365032
-d issuerID=148745

Response

Field Type Description
orderDetailsAll array Array of open orders on the book (see fields below)

Each orderDetailsAll element contains:

Field Type Description
security_name string Security name
Action string Order side: Buy (Bid) or Sell (Offer)
number_shares string Remaining (unfilled) share quantity
share_per_price string Price per share, or RFQ for request-for-quote orders
total_amount string Remaining shares × price, or RFQ for request-for-quote orders

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.0000"
    }
  ]
}

POST /v3/getOrdersForADay

Deprecated

Use ppex/orders with a createdDate filter instead. See Filtering orders by date for an example.


POST /v3/getSecurityInformation

Returns descriptive information for an approved, active security (offering): issuer, name, ticker, CUSIP, industry, security type, and description. Only offerings whose offeringStatus is Approved and whose virtualStatus is ACTIVE are returned.

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=977654
 -d issuerID=148745

Response

Field Type Description
SecurityDetails array Array of matching securities (see fields below)

Each SecurityDetails element contains:

Field Type Description
securityID string Security ID (offering ID)
IssuerName string Issuer name
SecurityName string Security (offering) name
Ticker string Ticker symbol
CUSIP string CUSIP identifier
Industries string Industry / offering text
SecurityType string Security type (e.g. CommonEquity)
Description string Company / security description

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "SecurityDetails": [
    {
      "securityID": "977654",
      "IssuerName": "Carta",
      "SecurityName": "Carta",
      "Ticker": "CRTA",
      "CUSIP": "14575E105",
      "Industries": "Financial Technology",
      "SecurityType": "CommonEquity",
      "Description": "Company bio"
    }
  ]
}

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 object Market hours configured for the 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 object Latest settlement notification recorded for the trade

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
deleted string No Set to include records whose deleted state is DELETED

Example Request

curl -k -X GET "https://api-sandboxdash.norcapsecurities.com/v3/ppex/orders?offset=0&limit=10" \
 -H "clientID: someclientid" \
 -H "developerAPIKey: somedeveloperkey"

Response

Field Type Description
ppex_orders array Array of order objects (see fields below)
pagination object Pagination metadata (see below)

Each ppex_orders element contains:

Field Type Description
securityId string Security ID the order is for
securityName string Security name
expirationType string Expiration type
expirationDate string Expiration date
memberId string Member (account owner) ID that placed the order
orderId string Order ID
accountId string Investor account ID associated with the order
accountName string Account name
securityType string Order side: Bid (buy) or Offer (sell)
shares string Total share quantity on the order
remainingShares string Shares still unfilled
sharePrice string Price per share, or RFQ for request-for-quote orders
amount string Total order amount
priceNotDisplayed string Price Not Displayed flag (Yes / No)
allOrNone string All-or-none flag (Yes / No)
status string Order status. See Order status values for the full set and their meanings.
type string Quote type (e.g. RFQ, LIMIT)
tradeStatus string Trade settlement status
orderStatus string Coarse order lifecycle status: Pending / Completed / Cancelled
tradeOrderStatus string Trade order status (e.g. CREATED)
negotiationStatus string RFQ negotiation status
deleted string Record state (Active / DELETED)
createdDate string Order creation timestamp
updatedBy string User ID that last updated the order (0 if never updated by a user)
updatedDate string Last update timestamp
executionTime string Execution time
contingencies string Order contingencies
solicited string Whether the order was solicited (Yes / No)
minimumQuantity string Minimum quantity threshold for execution
operationHrStatus string Operating-hours status flag
origination string Order origination (e.g. platform)
cancelDate string Cancellation timestamp (when applicable)
cancelExecutionTime string Cancellation execution time (when applicable)
token string Caller-supplied token echoed back

The pagination object contains:

Field Type Description
totalRecords integer Total number of records matching the query
startIndex integer Zero-based index of the first record returned
endIndex integer Zero-based index of the last record returned

When include=trades is set, each order additionally contains a trades array; see Filtering orders by date for the trades element fields.

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": "Live",
      "type": "RFQ",
      "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": [
        {
          "memberId": "777",
          "askId": "2482",
          "bidId": "2483",
          "offeringId": "28365032",
          "accountId": "A04834434",
          "partyType": "SELLER",
          "tradeId": "81",
          "transactionType": "BUY",
          "amount": "453.023100",
          "sharePrice": "4.530231",
          "shares": "100.000000",
          "status": "SETTLED",
          "reportingStatus": "REPORTED",
          "createdDate": "2026-03-24 14:30:00",
          "deleted": "ACTIVE",
          "executionTime": "485",
          "updatedDate": "2026-03-24 14:30:00"
        }
      ]
    }
  ],
  "pagination": {
    "totalRecords": 15,
    "startIndex": 0,
    "endIndex": 14
  }
}

Each trades element is a full trade object with the same fields as a ppex/trades array element.


GET /v3/ppex/orders/{id}

This endpoint retrieves a single PPEX order.

Response

Field Type Description
ppex_order object A single order object. Its fields are identical to a ppex/orders array element. When include=trades is set, it also contains a trades array.

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": "Live",
    "type": "RFQ",
    "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"
  }
}

GET /v3/ppex/trades

Retrieves a paginated list of PPEX trades (matched/settling executions). Supports pagination, filtering, and sorting. A trade is the pairing of a Bid order against an Offer order; the bidId and askId fields identify the two underlying orders.

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 as a JSON object. Supports the response field names, plus bidId / askId to filter by either underlying order
sort string No Sort field and direction
deleted string No Set to include records whose deleted state is DELETED

Example Request

curl -k -X GET "https://api-sandboxdash.norcapsecurities.com/v3/ppex/trades?offset=0&limit=10" \
 -H "clientID: someclientid" \
 -H "developerAPIKey: somedeveloperkey"

Response

Field Type Description
ppex_trades array Array of trade objects (see fields below)
pagination object Pagination metadata (see below)

Each ppex_trades element contains:

Field Type Description
memberId string Member (account owner) ID associated with the trade
askId string Order ID of the sell (Offer) side, or null
bidId string Order ID of the buy (Bid) side, or null
offeringId string Offering (security) ID the trade is for
accountId string Investor account ID associated with the trade
partyType string Party role for the account on this trade (e.g. SELLER, BUYER)
tradeId string Trade ID
transactionType string Trade side (BUY / SELL)
amount string Total trade amount
sharePrice string Execution price per share
shares string Share quantity for the trade
status string Trade status (CREATED, FUNDED, SETTLED, CANCELED, REJECTED, PENDING)
reportingStatus string Regulatory reporting status (e.g. REPORTED, FAILED)
createdDate string Trade creation timestamp
deleted string Record state (ACTIVE / DELETED)
executionTime string Execution time
updatedDate string Last update timestamp

The pagination object contains:

Field Type Description
totalRecords integer Total number of records matching the query
startIndex integer Zero-based index of the first record returned
endIndex integer Zero-based index of the last record returned

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": "ACTIVE",
      "executionTime": "485",
      "updatedDate": "2022-02-13 00:00:00"
    }
  ],
  "pagination": {
    "totalRecords": 100,
    "startIndex": 0,
    "endIndex": 0
  }
}

GET /v3/ppex/trades/{id}

Retrieves a single PPEX trade by its trade ID.

Response

Field Type Description
ppex_trade object A single trade object. Its fields are identical to a ppex/trades array element.

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": "ACTIVE",
    "executionTime": "485",
    "updatedDate": "2022-02-13 00:00:00"
  }
}

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 object Market hours configured for the 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 and endDate must be in YYYY-MM-DD format
{
  "statusCode": "1400",
  "statusDesc": "Bad request: startDate and endDate 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: Date range cannot exceed 90 days
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"
  }
}