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.
Price feeds
/api/v2/price-feeds/compositesPurpose and usage
Register an owner-scoped, DataStream-backed composite from two through eight verified direct provider mappings without granting publication or trading authority.
When to use it
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
Use the deployed OpenAPI for exact parameters, schemas and security requirements. The tables below provide integration guidance.
Open this operation in OpenAPIRequest and response
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-10-02T23:27:55.510Z. Authentication, tenant, feature, venue, and market policy still apply.
Verify the exact production OpenAPI operation Return to the V2 directory