Bonds & Funds
Beyond equities — fixed-income instruments (government bonds, T-bills, Eurobonds, commercial papers), money-market and yield funds with fund-specific redemption terms, and curated private-credit and pre-IPO opportunities. Subscribe and redeem via sub-account endpoints.
Beyond equities, the Partner API provides access to fixed-income instruments, open-ended funds, and curated private-market opportunities. All subscriptions and redemptions are handled via sub-account endpoints.
The full transition table is in Order & Money Lifecycles.
Bonds
List all available fixed-income instruments — government bonds, T-bills, Eurobonds, infrastructure
bonds, and commercial papers. Filter by ?instrumentType=TREASURY_BILL (or BOND | EUROBOND | COMMERCIAL_PAPER | INFRASTRUCTURE_BOND), ?currency=, or ?exchange=.
/bonds
List bonds & fixed income
Full endpoint documentationlistBondsReturns all available bonds, treasury bills, and fixed-income instruments. Includes coupon rate, maturity date, minimum investment, and current yield.
Parameters
instrumentTypestringquerycurrencystringqueryexchangestringqueryHeaders
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
bondsobject[]Requiredbonds[].idstringRequiredbonds[].namestring | nullRequiredbonds[].symbolstring | nullRequiredbonds[].issuerstring | nullRequiredbonds[].instrumentTypestringRequiredbonds[].assetTypestringRequiredbonds[].currencystring | nullRequiredbonds[].faceValuenumberRequiredbonds[].pricePerUnitnumberRequiredbonds[].couponRatenumber | nullRequiredPercentage points: 12.5 means 12.5%.
bonds[].currentYieldnumber | nullRequiredbonds[].yieldToMaturitynumber | nullRequiredbonds[].minInvestmentnumber | nullRequiredbonds[].maturityDatestring | nullRequiredbonds[].exchangestring | nullRequiredbonds[].statusstringRequiredbonds[].descriptionstring | nullRequiredcountintegerRequiredResponse codes
200Bond list./bonds/{id}
Bond detail
Full endpoint documentationgetBondsReturns full detail for a specific bond or fixed-income instrument.
Parameters
idstringpathRequiredBond document ID from the list endpoint.
Example: ke_tbill_91d_2026
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
idstringRequirednamestring | nullRequiredsymbolstring | nullRequiredissuerstring | nullRequiredinstrumentTypestringRequiredassetTypestringRequiredcurrencystring | nullRequiredfaceValuenumberRequiredpricePerUnitnumberRequiredcouponRatenumber | nullRequiredPercentage points: 12.5 means 12.5%.
currentYieldnumber | nullRequiredyieldToMaturitynumber | nullRequiredminInvestmentnumber | nullRequiredmaturityDatestring | nullRequiredexchangestring | nullRequiredstatusstringRequireddescriptionstring | nullRequiredResponse codes
200Bond detail.404Bond not found.Funds
The list returns active published managed funds, using the same catalogue in Sandbox and Live.
Sandbox subscriptions and balances remain virtual. Filter with category and currency, for example
GET /funds?category=SPECIAL_FUND¤cy=USD. ETFs use the separate /etfs endpoint.
pricePerUnit is in the fund currency; yieldApy is a decimal fraction (0.125 means 12.5%),
not a guaranteed return or YTD performance. region is a descriptive label, not an ISO country code.
Unavailable fields are null. Do not assume country, nav, navUsd or performance history is present.
Get the fund detail to review redemption terms: only redemptionType: "instant" credits the wallet
in the redemption call. Other terms must not be presented as instant liquidity.
/funds
List active managed funds
Full endpoint documentationlistFundsReturns active managed funds from the published catalogue. Sandbox reads the same catalogue; subscriptions and balances remain virtual. Returns pricePerUnit, yieldApy (decimal fraction, nullable), operator, region and minimum investment. Missing values remain null; region is not an ISO country code. ETFs are listed separately at /etfs. Only category and currency filters are supported.
Parameters
categoryMONEY_MARKET | SPECIAL_FUND | YIELD_FUND | OPPORTUNITY_FUNDqueryFilter by managed fund category.
currencystringqueryExample: USD
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
fundsobject[]Requiredfunds[].idstringRequiredfunds[].statusstringRequiredCurrent catalogue availability state. Only ACTIVE funds accept new subscriptions.
funds[].namestringRequiredfunds[].categorystring | nullRequiredfunds[].operatorstring | nullRequiredfunds[].regionstring | nullRequiredfunds[].pricePerUnitnumber | nullRequiredPublished unit price in the fund currency.
funds[].yieldApynumber | nullRequiredPublished APY as a decimal fraction; 0.125 means 12.5%. Not a YTD return or guaranteed return.
funds[].minInvestmentnumber | nullRequiredfunds[].currencystring | nullRequiredfunds[].descriptionstring | nullRequiredfunds[].slugstring | nullRequiredfunds[].legalStructurestring | nullRequiredfunds[].logostring | nullRequiredfunds[].createdAtstring | nullRequiredcountintegerRequiredResponse codes
200Fund list./funds/{id}
Fund detail
Full endpoint documentationgetFundsReturns full details for a specific fund or ETF.
Parameters
idstringpathRequiredExample: FUND_ID_FROM_CATALOGUE
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
idstringRequiredstatusstringRequiredCurrent catalogue availability state. Only ACTIVE funds accept new subscriptions.
namestringRequiredcategorystring | nullRequiredoperatorstring | nullRequiredregionstring | nullRequiredpricePerUnitnumber | nullRequiredPublished unit price in the fund currency.
yieldApynumber | nullRequiredPublished APY as a decimal fraction; 0.125 means 12.5%. Not a YTD return or guaranteed return.
minInvestmentnumber | nullRequiredcurrencystring | nullRequireddescriptionstring | nullRequiredslugstring | nullRequiredlegalStructurestring | nullRequiredlogostring | nullRequiredcreatedAtstring | nullRequiredResponse codes
200Fund detail.Opportunities
Curated private-credit deals and pre-IPO allocations, merged from both collections and sorted newest
first. Each deal exposes target return, minimum commitment, risk level, and funding progress. The
detail route resolves by document ID or URL slug. Subscribe via POST /users/{userId}/subscribe with
assetType: "OPPORTUNITY" or "PRE_IPO".
/opportunities
Private credit & pre-IPO
Full endpoint documentationlistOpportunitiesReturns open private credit deals and pre-IPO opportunities available to your sub-accounts. Each deal has a minimum ticket size, close date, and target return.
Parameters
typeALL | PRE_IPO | OPPORTUNITYqueryExample: ALL
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
opportunitiesobject[]Requiredopportunities[].idstringRequiredopportunities[].assetTypePRE_IPO | OPPORTUNITYRequiredopportunities[].namestring | nullRequiredopportunities[].currencystringRequiredopportunities[].expectedReturnnumber | string | nullRequiredopportunities[].minInvestmentnumber | nullRequiredopportunities[].pricePerSharenumber | nullopportunities[].minimumSharesnumber | nullopportunities[].catalogueSourcePUBLISHED | SYNTHETICSandbox only. Published catalogue information or a synthetic demonstration product.
opportunities[].simulationOnlybooleanSandbox only. Does not create a real IPO reservation.
opportunities[].commitmentCurrencyUSDopportunities[].minimumCommitmentUsdnumber | nullopportunities[].subscriptionAvailablebooleanopportunities[].subscriptionRestrictionstring | nullopportunities[].targetAmountnumber | nullRequiredopportunities[].currentRaisednumber | nullRequiredopportunities[].riskLevelstring | nullRequiredopportunities[].statusstring | nullRequiredopportunities[].descriptionstring | nullRequiredopportunities[].maturityDatestring | nullRequiredopportunities[].expectedExitDatestring | nullRequiredopportunities[].createdAtstring | nullRequiredcountintegerRequiredResponse codes
200Open opportunities./opportunities/{id}
Opportunity or pre-IPO detail
Full endpoint documentationgetOpportunityReturns full detail for a single private market deal or pre-IPO offering. Resolves from the opportunities collection first, then preIPOOfferings. Accepts document ID or slug.
Parameters
idstringpathRequiredOpportunity document ID or URL slug.
Example: acme-series-b-2026
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
idstringRequiredassetTypePRE_IPO | OPPORTUNITYnamestring | nullcurrencystringexpectedReturnnumber | string | nullminInvestmentnumber | nullpricePerSharenumber | nullminimumSharesnumber | nullcatalogueSourcePUBLISHED | SYNTHETICSandbox only. Published catalogue information or a synthetic demonstration product.
simulationOnlybooleanSandbox only. Does not create a real IPO reservation.
commitmentCurrencyUSDminimumCommitmentUsdnumber | nullsubscriptionAvailablebooleansubscriptionRestrictionstring | nulltargetAmountnumber | nullcurrentRaisednumber | nullriskLevelstring | nullstatusstring | nulldescriptionstring | nullmaturityDatestring | nullexpectedExitDatestring | nullcreatedAtstring | nullResponse codes
200Opportunity detail.404Opportunity not found./users/{userId}/subscribe
Subscribe (bond/fund/deal)
Full endpoint documentationcreateSubscribeSubscribes a sub-account to a bond, money market fund, or private credit/pre-IPO deal. Funds are escrowed from the sub-account wallet on submission. For FUND subscriptions: specify units. For OPPORTUNITY / PRE_IPO: specify amount in USD. The sub-account must be KYC-verified (kycStatus: VERIFIED).
Parameters
userIdstringpathRequiredExample: usr_abc123
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Idempotency-KeystringheaderRequiredUnique string that makes write calls safe to retry on network failure. Required for money movement, trading, KYC, subscriptions, and webhook creation. Deduplicated for 24 hours -- duplicate keys return the cached response. HTTP 409 if a concurrent request with the same key is still in progress.
Example: dep_user42_1743152580
Request body
fundingWalletCurrencystringConvert explicitly to USD before submitting an order
assetTypeBOND | FUND | OPPORTUNITY | PRE_IPORequiredAsset class to subscribe to.
Example: "FUND"
assetIdstringRequiredFirestore document ID. Obtain from the list endpoints (/bonds, /funds, /opportunities).
Example: "FUND_ID_FROM_CATALOGUE"
unitsnumberWhole units to subscribe. Required for BOND and FUND.
Example: 500
amountnumberUSD commitment amount. Required for OPPORTUNITY and PRE_IPO.
Example: 1000
Response fields
messagestringsubscriptionIdstringamountEscrowednumberResponse codes
201Subscription created.400Insufficient wallet balance.403KYC not verified.Subscribe
Subscribe a sub-account to a bond, fund, private deal, or pre-IPO. The sub-account must be
KYC-verified. Funds are escrowed immediately; the position appears in the portfolio once confirmed.
Requires an Idempotency-Key.
/users/{userId}/subscribe
Subscribe (bond/fund/deal)
Full endpoint documentationcreateSubscribeSubscribes a sub-account to a bond, money market fund, or private credit/pre-IPO deal. Funds are escrowed from the sub-account wallet on submission. For FUND subscriptions: specify units. For OPPORTUNITY / PRE_IPO: specify amount in USD. The sub-account must be KYC-verified (kycStatus: VERIFIED).
Parameters
userIdstringpathRequiredExample: usr_abc123
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Idempotency-KeystringheaderRequiredUnique string that makes write calls safe to retry on network failure. Required for money movement, trading, KYC, subscriptions, and webhook creation. Deduplicated for 24 hours -- duplicate keys return the cached response. HTTP 409 if a concurrent request with the same key is still in progress.
Example: dep_user42_1743152580
Request body
fundingWalletCurrencystringConvert explicitly to USD before submitting an order
assetTypeBOND | FUND | OPPORTUNITY | PRE_IPORequiredAsset class to subscribe to.
Example: "FUND"
assetIdstringRequiredFirestore document ID. Obtain from the list endpoints (/bonds, /funds, /opportunities).
Example: "FUND_ID_FROM_CATALOGUE"
unitsnumberWhole units to subscribe. Required for BOND and FUND.
Example: 500
amountnumberUSD commitment amount. Required for OPPORTUNITY and PRE_IPO.
Example: 1000
Response fields
messagestringsubscriptionIdstringamountEscrowednumberResponse codes
201Subscription created.400Insufficient wallet balance.403KYC not verified.Redeem
Redeem fund units back to the sub-account wallet. For funds with redemptionType: "instant", proceeds
credit immediately. Units in a lock-up period cannot be redeemed — check unlockedUnits in the
portfolio response first.
/users/{userId}/redeem
Redeem fund units
Full endpoint documentationcreateRedeemRedeems fund units back to the sub-account wallet. Proceeds are credited at the current NAV once the redemption is processed by the fund manager (typically T+1 for MMFs).
Parameters
userIdstringpathRequiredExample: usr_abc123
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Idempotency-KeystringheaderRequiredUnique string that makes write calls safe to retry on network failure. Required for money movement, trading, KYC, subscriptions, and webhook creation. Deduplicated for 24 hours -- duplicate keys return the cached response. HTTP 409 if a concurrent request with the same key is still in progress.
Example: dep_user42_1743152580
Request body
holdingIdstringRequiredSub-account fund holding doc ID (same as the fund Firestore doc ID).
Example: "FUND_ID_FROM_CATALOGUE"
unitsToRedeemnumberRequiredUnits to redeem. Must not exceed available unlocked units.
Example: 200
Response fields
messagestringredemptionIdstringunitsRedeemednumberResponse codes
200Redemption queued.Catalogue field conventions
Bonds use instrumentType, currency and exchange filters; country and type are not bond filters. Coupon, current-yield and yield-to-maturity rates are percentage points (15.8 means 15.8%). Missing values are null.
Funds use category and currency, not type. The list and detail share canonical operator, pricePerUnit, yieldApy, minInvestment, region, legalStructure and logo fields. Legacy manager and nav records are normalized without inventing returns or currency conversions. The response count is a sibling of funds.
Opportunities accept type=ALL, PRE_IPO or OPPORTUNITY; omitting the filter means ALL. Unknown types return 400. Responses use assetType, expectedReturn, maturityDate and expectedExitDate, with unknown values null. An expected return is an instrument-specific estimate, not a guaranteed return; consult the offering terms for its convention.
Sandbox subscription and redemption acceptance
Use the reference app subscription form for whole-unit bond and fund requests or USD opportunity/pre-IPO commitments. Select an ID from the corresponding environment's catalogue. Sandbox opportunities, including PRE_IPO fixtures, use the Sandbox opportunity catalogue; production PRE_IPO uses the live offerings collection.
Fund prices are converted from the stated instrument currency using configured FX. A valid explicit navUsd is already USD. Missing NAV, currency or required FX returns PRICE_UNAVAILABLE; there is no $1 fallback. Read minimums in their stated currency.
Wallet reservation and holding changes occur atomically. Concurrent requests with different idempotency keys cannot overspend the wallet. Production subscription orders remain PENDING for the existing approval workflow; they do not create filled holdings at request time. Sandbox subscriptions simulate a fill and emit order.filled.
Only available FUND units can be redeemed by this route. Sandbox redemption atomically reduces units and credits the wallet, retains proportional remaining cost basis, and emits wallet.credited. Concurrent redemptions cannot credit the same units twice. Frozen or closed accounts cannot subscribe or redeem. These simulations do not certify provider settlement or live fund terms.
Was this page useful?
Your signal helps us tighten partner onboarding docs.
Last updated on