OUTCOME · Create or advance
What changes
When promoted, creates a private DataStream-backed aggregate feed, aggregation policy, ordered provider mappings, and metered custom-feed usage evidence. It does not enable publication or trading ingress.
v2Price feeds
/api/v2/price-feeds/compositesPURPOSE + BUSINESS CONTEXT
WHEN THIS CALL IS USEFUL
After discovering canonical instruments and live provider coverage, use this planning contract to define a private workspace-owned aggregate with explicit source, freshness, outlier, quorum, and failover policy.
OUTCOME · Create or advance
When promoted, creates a private DataStream-backed aggregate feed, aggregation policy, ordered provider mappings, and metered custom-feed usage evidence. It does not enable publication or trading ingress.
WHY IT MATTERS
ISOLATION + AUTHORITY
Instrument, provider, observation, signature, hash-chain, aggregation, composite owner, subscription, delivery, billing, valuation, market, and trading boundaries remain distinct. A feed, snapshot, replay, plan, or subscription supplies data only and grants no oracle-finality, valuation approval, publisher, order, matching, settlement, or trading authority.
BEFORE YOU CALL
WHAT TO DO NEXT
AGENT GUIDANCE
The exact deployed parameters, schemas, responses, security requirements, and Hybrid-Chain agent metadata are authoritative at this operation's production OpenAPI JSON Pointer. The readable tables below add integration guidance; the deployed OpenAPI controls if guidance and the machine contract ever differ.
Open the authoritative production contract ↗EXTENDED INTEGRATION GUIDANCE
Examples illustrate integration intent; the referenced OpenAPI operation and component schemas define the executable shape.
PARAMETERS
AuthorizationheaderRequiredBearer tokenCredential containing the pricing:write scope.EXAMPLEBearer hc_live_…
Idempotency-KeyheaderRequiredASCII string · 1–128Caller-generated key reused for every retry of the same logical mutation.EXAMPLEcomposite-btc-usd-treasury-v1
Content-TypeheaderRequiredapplication/jsonSigned mutations accept canonical JSON only.EXAMPLEapplication/json
Content-DigestheaderRequiredRFC 9530 SHA-256 digestDigest of the exact transmitted body bytes.EXAMPLEsha-256=:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=:
Signature-InputheaderRequiredRFC 9421 signature parametersCovers @method, @path, content-digest, content-type, and idempotency-key; includes keyid, nonce, created, and expires.EXAMPLEsig1=("@method" "@path" "content-digest" "content-type" "idempotency-key");created=1786582800;expires=1786583100;nonce="01J…";keyid="machine-prod"
SignatureheaderRequiredEd25519 HTTP Message SignatureSignature made by an active public key registered to the authenticated client.EXAMPLEsig1=:base64-signature:
namebodyRequiredstring · 1–120Workspace-visible private composite name.EXAMPLETreasury BTC / USD reference
instrument_uuidbodyRequired32-character hexadecimal identifierActive canonical instrument covered by every selected direct provider mapping.EXAMPLE56a00e46cfbd4a09a4b087d052fd64be
sourcesbodyRequiredobject[] · 2–8 unique providersOrdered mappings. Each requires provider_uuid and a 1–64 character provider_symbol; optional finite weight is 0.000001–100 and defaults to 1. Array order becomes source priority.EXAMPLE[{"provider_uuid":"0aadf922185145e48e7c87cf3d2759ec","provider_symbol":"BTCUSD","weight":1},{"provider_uuid":"a754639436a644cf8437da4cfab94242","provider_symbol":"XBT/USD","weight":1}]
methodbodyOptionalWEIGHTED_MEDIAN | MEDIAN | WEIGHTED_MEANAggregation method; defaults to WEIGHTED_MEDIAN.EXAMPLEWEIGHTED_MEDIAN
cadence_msbodyOptionalinteger · 100–60000Target cadence; defaults to 1000 milliseconds.EXAMPLE1000
staleness_threshold_msbodyOptionalinteger · 500–120000Maximum source age admitted by the aggregate; defaults to 5000.EXAMPLE5000
min_sourcesbodyOptionalinteger · 1–selected source countHealthy-source quorum; defaults to 2.EXAMPLE2
max_deviation_bpsbodyOptionalinteger · 1–5000Outlier threshold in basis points; defaults to 100.EXAMPLE100
failover_modebodyOptionalALLOW_SINGLE | STRICTFeed degradation behavior; defaults to ALLOW_SINGLE and never replaces consumer fitness policy.EXAMPLESTRICT
REQUEST
{
"name": "Treasury BTC / USD reference",
"instrument_uuid": "56a00e46cfbd4a09a4b087d052fd64be",
"sources": [
{
"provider_uuid": "0aadf922185145e48e7c87cf3d2759ec",
"provider_symbol": "BTCUSD",
"weight": 1
},
{
"provider_uuid": "a754639436a644cf8437da4cfab94242",
"provider_symbol": "XBT/USD",
"weight": 1
}
],
"method": "WEIGHTED_MEDIAN",
"cadence_ms": 1000,
"staleness_threshold_ms": 5000,
"min_sources": 2,
"max_deviation_bps": 100,
"failover_mode": "STRICT"
}RESPONSES
{
"feed_id": "76ac1ff82d8c479cae399011db10ac4f",
"name": "Treasury BTC / USD reference",
"instrument": "BTC-USD",
"mode": "AGGREGATED",
"source_count": 2
}{
"code": "price_feed_instrument_not_found",
"message": "The selected canonical instrument is unavailable."
}price_feed_instrument_not_found{
"code": "invalid_credentials",
"message": "The bearer credential is missing, expired, or invalid."
}invalid_credentials{
"code": "insufficient_scope",
"message": "The credential lacks pricing:write or the selected resource is outside the authenticated workspace."
}insufficient_scope{
"code": "price_feed_conflict",
"message": "The Idempotency-Key conflicts with another request or the requested lifecycle transition is forbidden."
}price_feed_conflict{
"code": "invalid_price_feed_command",
"message": "An identifier, field, source mapping, policy bound, action, or Idempotency-Key is invalid."
}invalid_price_feed_command{
"code": "price_feeds_unavailable",
"message": "The authoritative Core pricing mutation boundary is unavailable."
}price_feeds_unavailableOPERATIONAL NOTES
This route is implemented in canonical gateway source and appears in the production OpenAPI snapshot observed 2026-09-11T06:35:11.572Z. Authentication, tenant, feature, venue, and market policy still apply.
Verify the exact production OpenAPI operation ↗Return to the V2 directory ↗