{"openapi":"3.1.0","info":{"title":"Corbanu Index API","version":"2.3.0","description":"Agents use their existing Corbanu account bearer key to create, poll, retrieve and reweight private index previews. No browser session, Origin header, wallet connection or separate model-provider key is required. Read /v1/account for prepaid balance and /v2/indexes/catalog for current index pricing and capabilities. Website requests explicitly set publish_on_completion=true and automatically lock and publish completed indexes. API requests omit it or set false to remain private. Wallet claims are optional and separate from publication."},"servers":[{"url":"https://api.corbanu.com"}],"components":{"securitySchemes":{"CorbanuKey":{"type":"http","scheme":"bearer","description":"Full cbn_… Corbanu account API key. The same key authenticates /v1/account and index operations. Agents use this bearer scheme; no cookie or Origin header is needed."},"IndexSession":{"type":"apiKey","in":"cookie","name":"__Host-corbanu_index","description":"Optional Corbanu website cookie. Agents should use CorbanuKey instead."},"FelixSession":{"type":"apiKey","in":"header","name":"X-Felix-Session"}},"schemas":{"PreviewRequest":{"type":"object","additionalProperties":false,"required":["mandate","prompt_id","deterministic","external_funds","weighting","relevance_cutoff","disclosure"],"properties":{"mandate":{"type":"object","required":["title","phrase"],"properties":{"title":{"type":"string"},"phrase":{"type":"string"}}},"model":{"type":"string","enum":["corbanu/deepseek-v4.1-flash","corbanu/glm-5.3","corbanu/glm-5.3-flash"]},"prompt_id":{"type":"string","enum":["thematic_v1","custom"]},"prompt":{"type":"string"},"deterministic":{"type":"boolean"},"external_funds":{"type":"boolean"},"reasoning_effort":{"type":"string","enum":["low","high","max"]},"weighting":{"type":"string","enum":["market_cap","market_cap_rank"]},"relevance_cutoff":{"type":"integer","minimum":0,"maximum":100,"description":"Explicit minimum relevance score, not confidence. Holdings qualify at score >= this integer."},"user_inputs":{"type":"object","additionalProperties":{"type":"string"}},"transcript_selection":{"type":"object"},"disclosure":{"$ref":"#/components/schemas/Disclosure","description":"Current disclosure version/hash plus authorized acceptance and stated conflicts. Do not infer acceptance from possession of an API key."},"publish_on_completion":{"type":"boolean","default":false,"description":"When true, completion durably queues automatic lock and public IPFS publication using the accepted disclosure, without a wallet claim. Website sends true; API omission/false stays private. Inputs, holdings and scoring explanations become public. Failed/needs_data jobs are not published."}}},"Disclosure":{"type":"object","additionalProperties":false,"required":["version","sha256","accepted","conflicts"],"properties":{"version":{"type":"string"},"sha256":{"type":"string"},"accepted":{"const":true},"conflicts":{"type":"string"}}},"SignedIndex":{"type":"object","required":["schema","payload","public_key","signature","signing_authority"],"properties":{"payload":{"type":"object","properties":{"id":{"type":"string"},"request":{"type":"object","description":"Normalized saved definition, including the authoritative relevance_cutoff, weighting and workflow settings."},"scores":{"type":"array","items":{"type":"object","properties":{"security_id":{"type":"string"},"ticker":{"type":"string"},"score":{"type":"integer","minimum":0,"maximum":100},"confidence":{"type":"integer","minimum":0,"maximum":100},"reasoning_block":{"type":"array","items":{"type":"string"}}},"required":["security_id","score","confidence","reasoning_block"]}},"construction":{"type":"object","properties":{"weights":{"type":"array","items":{"type":"object","properties":{"security_id":{"type":"string"},"ticker":{"type":"string"},"weight_units":{"type":"integer","format":"int64","description":"Exact portfolio units; completed basket weights sum to 1000000000000. Divide by 10000000000 for percentage."},"representation":{"type":"object"}}}},"excluded":{"type":"array","items":{"type":"object"}}}},"validity":{"type":"object"}}},"schema":{"const":"corbanu.signed-index.v1"},"public_key":{"type":"string","description":"Hex Ed25519 public key"},"signature":{"type":"string","description":"Hex signature over canonical payload JSON"},"signing_authority":{"type":"string"}}},"ApiBalance":{"type":"object","properties":{"balanceMicrousd":{"type":"string","description":"Integer microusd string; 1 USD = 1000000 microusd"},"reservedMicrousd":{"type":"string","description":"Integer microusd string; 1 USD = 1000000 microusd"},"availableMicrousd":{"type":"string","description":"Integer microusd string; 1 USD = 1000000 microusd"},"balanceUsd":{"type":"string","description":"USD decimal string"},"reservedUsd":{"type":"string","description":"USD decimal string"},"availableUsd":{"type":"string","description":"USD decimal string"}},"required":["balanceMicrousd","reservedMicrousd","availableMicrousd","balanceUsd","reservedUsd","availableUsd"]},"Account":{"type":"object","properties":{"walletAddress":{"type":"string"},"corbanuApi":{"$ref":"#/components/schemas/ApiBalance"},"legacy":{"type":["object","null"]}},"required":["walletAddress","corbanuApi"]},"IndexPricing":{"type":"object","properties":{"currency":{"const":"USD"},"preview_charge_microusd":{"type":"string"},"reweight_charge_microusd":{"type":"string"},"lock_charge_microusd":{"type":"string"},"balance_endpoint":{"const":"/v1/account"}},"required":["currency","preview_charge_microusd","reweight_charge_microusd","lock_charge_microusd","balance_endpoint"]},"Catalog":{"type":"object","properties":{"models":{"type":"array","items":{"type":"string"}},"prompts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"}},"required":["id","label"]}},"reasoning_efforts":{"type":"array","items":{"enum":["low","high","max"]}},"deterministic_default_model":{"type":"string"},"deterministic_available":{"type":"boolean"},"pricing":{"$ref":"#/components/schemas/IndexPricing"},"disclosure":{"type":"object","description":"Read all current disclosure text before recording user acceptance."},"disclosure_sha256":{"type":"string"}},"required":["models","prompts","reasoning_efforts","deterministic_available","pricing","disclosure","disclosure_sha256"]},"IndexStatus":{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["queued","running","completed","needs_data","failed"]},"phase":{"type":"string","description":"Preparation/scoring phase; status determines whether the job is terminal."},"progress":{"type":"object","properties":{"scored":{"type":"integer"},"total":{"type":"integer"}},"required":["scored","total"]},"relevance_cutoff":{"type":"integer","minimum":0,"maximum":100},"model":{"type":"string"},"weighting":{"enum":["market_cap","market_cap_rank"]},"reasoning_effort":{"enum":["low","high","max"]},"preview_sha256":{"type":["string","null"]},"preview":{"$ref":"#/components/schemas/SignedIndex"},"derivation":{"type":["object","null"]},"error":{"type":["string","null"],"description":"May describe a previous failure while queued/running; continue polling according to status."},"transaction":{"type":"object","description":"Contains charge_microusd and charged_microusd integer strings; current workflow previews charge zero."},"publication":{"type":"object","properties":{"requested":{"type":"boolean"},"status":{"type":"string","enum":["private","waiting_for_completion","publishing","published"]},"page_url":{"type":["string","null"]},"public_cid":{"type":["string","null"]}}}},"required":["id","status","progress","relevance_cutoff","model","weighting","error"]},"PreviewAccepted":{"allOf":[{"$ref":"#/components/schemas/IndexStatus"},{"type":"object","properties":{"created":{"type":"boolean"},"status_url":{"type":"string","description":"Relative path on https://api.corbanu.com; poll with the same bearer key."}},"required":["created","status_url"]}]},"IndexError":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}},"paths":{"/v2/indexes/catalog":{"get":{"summary":"Models, prompts, creator disclosure and trading capabilities","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Catalog"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"operationId":"getIndexCatalog"}},"/v2/indexes":{"get":{"summary":"List the authenticated account’s saved indexes (latest 100)","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"operationId":"listMyIndexes"}},"/v2/indexes/published":{"get":{"summary":"Browse published indexes (latest 100)","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"operationId":"listPublishedIndexes"}},"/v2/indexes/published/{id}":{"get":{"summary":"Public signed index artifact","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getPublishedIndex"}},"/v2/indexes/previews":{"post":{"summary":"Start an idempotent asynchronous preview","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"responses":{"202":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"402":{"description":"Available Corbanu balance is below the quoted charge; current workflow charge is zero","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"503":{"description":"Required workflow or deterministic replay capability unavailable; do not silently downgrade"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewRequest"}}}},"parameters":[{"name":"X-Corbanu-Request-Id","in":"header","required":true,"schema":{"type":"string"}}],"operationId":"createIndexPreview"}},"/v2/indexes/previews/{id}":{"get":{"summary":"Poll progress; completed response includes preview and preview_sha256","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexStatus"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getIndexPreview"}},"/v2/indexes/previews/{id}/result":{"get":{"summary":"Download the completed signed index JSON","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedIndex"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getIndexPreviewResult"}},"/v2/indexes/{id}":{"get":{"summary":"Read the owner’s locked index","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getLockedIndex"}},"/v2/indexes/{id}/lock":{"post":{"summary":"Confirm exact preview hash and pin encrypted index to IPFS","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["preview_sha256"],"properties":{"preview_sha256":{"type":"string"}}}}}},"operationId":"lockIndex"}},"/v2/indexes/{id}/claim-x":{"post":{"summary":"Claim creator identity with X OAuth2 and PKCE","description":"Creator authentication required. Returns an authorization URL and sets a ten-minute HttpOnly browser-state cookie. Open the URL in the same browser and authorize X. The Task Node callback relays signed state to Corbanu, which stores the verified stable X ID and signed index-bound receipt. This does not attach a payout wallet or activate revenue settlement.","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"redirect_url and expires_at; browser state cookie"},"401":{"description":"Creator authentication required"},"409":{"description":"Index not locked or already X-claimed"},"503":{"description":"X claiming unavailable"}}}},"/v2/indexes/{id}/claim-challenge":{"post":{"summary":"Request creator payout-wallet ownership challenge","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["wallet"],"properties":{"wallet":{"type":"string"}}}}}},"operationId":"createIndexClaimChallenge"}},"/v2/indexes/{id}/claim":{"post":{"summary":"Verify creator wallet signature","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"}}}}}},"operationId":"claimIndex"}},"/v2/indexes/{id}/publish":{"post":{"summary":"Publish the locked index (wallet claim optional) with explicit public-data consent; other investors require replay verification","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Disclosure"}}}},"operationId":"publishIndex"}},"/v2/indexes/{id}/estimate":{"post":{"summary":"Indicative basket estimate; never signable","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["amount_usdc_atomic","slippage_bps"],"properties":{"amount_usdc_atomic":{"type":"string"},"slippage_bps":{"type":"integer","minimum":0,"maximum":10000}}}}}},"operationId":"estimateIndex"}},"/v2/indexes/{id}/felix-handoff":{"post":{"summary":"Exact allocation targets and native Felix market links","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["amount_usdc_atomic"],"properties":{"amount_usdc_atomic":{"type":"string"}}}}}},"operationId":"getFelixHandoff"}},"/v2/indexes/{id}/felix-quotes":{"post":{"summary":"Obtain one ABI-validated firm quote for a holding in the locked basket","security":[{"CorbanuKey":[],"FelixSession":[]},{"IndexSession":[],"FelixSession":[]},{"FelixSession":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["amount_usdc_atomic","security_id","wallet"],"properties":{"amount_usdc_atomic":{"type":"string"},"security_id":{"type":"string"},"wallet":{"type":"string"}}}}}},"description":"Felix-only authentication applies to published, replay-verified indexes with external funds enabled. Private indexes require their Corbanu owner. Amount is the total basket budget, not the individual leg budget. Quotes do not send a transaction.","operationId":"createFelixQuote"}},"/v2/indexes/{id}/felix-orders/report":{"post":{"summary":"Report an already broadcast Ethereum transaction to Felix","security":[{"CorbanuKey":[],"FelixSession":[]},{"IndexSession":[],"FelixSession":[]},{"FelixSession":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Missing, expired or revoked credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Record not found for this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"State conflict, incomplete result or invalid quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"502":{"description":"Upstream operation failed; inspect error before retry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["report_token","tx_hash"],"properties":{"report_token":{"type":"object"},"tx_hash":{"type":"string"}}}}}},"description":"Retrying this operation cannot broadcast another purchase. report_token comes from the firm quote and expires after 24 hours.","operationId":"reportFelixOrder"}},"/v2/indexes/previews/{id}/reweight":{"post":{"summary":"Change cutoff or weighting using all saved scores; no new inference","description":"Creates a separate private preview from the exact source preview. Preserves its mandate, model, reasoning, source packet and scoring receipts. Optional weighting changes the construction method; omitted weighting preserves the source method. The original preview and any locked basket remain unchanged. Poll status_url for reconstructed signed JSON.","security":[{"CorbanuKey":[]},{"IndexSession":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Corbanu-Request-Id","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["preview_sha256","relevance_cutoff"],"properties":{"weighting":{"type":"string","enum":["market_cap","market_cap_rank"],"description":"Optional; preserves the source weighting when omitted."},"preview_sha256":{"type":"string","minLength":64,"maxLength":64},"relevance_cutoff":{"type":"integer","minimum":0,"maximum":100},"publish_on_completion":{"type":"boolean","default":false,"description":"When true, completion durably queues automatic lock and public IPFS publication using the accepted disclosure, without a wallet claim. Website sends true; API omission/false stays private. Inputs, holdings and scoring explanations become public. Failed/needs_data jobs are not published."}}}}}},"responses":{"202":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewAccepted"}}}},"400":{"description":"Invalid cutoff, hash or request ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"402":{"description":"Available Corbanu balance is below the quoted charge; current workflow charge is zero","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"404":{"description":"Source not owned by this account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"409":{"description":"Source unfinished, changed or missing complete checkpoints; or request ID conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexError"}}}},"503":{"description":"Required workflow or deterministic replay capability unavailable; do not silently downgrade"}},"operationId":"reweightIndexPreview"}},"/v1/account":{"get":{"operationId":"getCorbanuAccount","summary":"Check the Corbanu balance associated with this API key","security":[{"CorbanuKey":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}}},"401":{"description":"Missing, invalid or revoked key"},"404":{"description":"Record not found for this account"}}}}},"externalDocs":{"description":"Agent quickstart and resumable Python example","url":"https://corbanu.com/api/indexes.md"}}