Skip to main content

POST /v1/quotes

The main endpoint. Price an optional pool of ad-hoc instruments plus a list of quotes that reference instruments by id (pooled ad-hoc or stored). Returns a batch — one entry per quote, each with its own status.

Request body

{
"instruments": [ /* optional ad-hoc pool; each item needs an id */ ],
"quotes": [ /* one or more quotes */ ]
}

Quote fields

FieldRequiredDescription
instrument_idyesid of a pooled ad-hoc instrument or a stored one
input_kindyesyield · clean_price · dirty_price · transacted
input_valueyesthe yield (decimal) or price (per 100), or transacted cash
amount_kindnonominal or transacted (trade size)
amount_valuenorequired (> 0) when amount_kind is set
settlement_datenoISO date; defaults to today
optionsnosee below

input_kind

ValueYou supplyemrgex returns
yielda yieldthe price + metrics
clean_pricea clean pricethe solved yield + metrics
dirty_pricea dirty pricethe solved yield + metrics
transacteda dirty cash amount (needs amount_kind: nominal)derives the price, then solves

options

OptionTypeDescription
roundint (0–12)round money/rate outputs to N decimals
with_cashflowsboolinclude the full discounted cashflow schedule
yield_worstboolcompute yield-to-worst for callable bonds
coupon_typeFIXED/ACCRUALper-quote override of the coupon mechanic (what-if)
index_rationumberpublished index nominal (VNA) for index-linked bonds; every money output is multiplied by index_ratio/100

Response — batch envelope

{
"data": [
{
"index": 0,
"id": "MH12034",
"status": "ok",
"data": {
"instrument_id": "MH12034",
"convention": "NOMINAL · ACT/ACT.DRMH",
"calculation_code": "ACT/ACT.DRMH|NOMINAL",
"coupon_type": "ACCRUAL",
"settlement_date": "2026-06-09T00:00:00Z",
"metrics": { "yield": 0.1, "dirty_price": 112.547645, "clean_price": 107.853124, "...": "..." },
"next_coupon": { "date": "...", "interest": 5.75, "total": 5.75, "present_value": 5.7 }
}
}
],
"warnings": []
}
  • Each item has status: "ok" with a data payload, or status: "failed" with an RFC 7807 error object — one bad quote never fails the whole batch.
  • A non-convergent price→yield solve returns a per-item 422.

The five input scenarios

input_kind × amount_kind cover the traded combinations:

input_kindamount_kindUse
yieldnominalyield + face → price & settlement cash
yieldtransactedyield + cash → implied nominal
clean_pricenominalprice + face → yield & cash
clean_pricetransactedprice + cash → yield & nominal
transactednominalcash + face → price & yield

See Examples for full request bodies.