{"components":{"parameters":{"CovenantId":{"description":"Lowercase 32-byte covenant id","in":"path","name":"id","required":true,"schema":{"$ref":"#/components/schemas/CovenantId"}},"Network":{"description":"Indexed Kaspa network","in":"path","name":"network","required":true,"schema":{"enum":["mainnet","testnet-10"],"type":"string"}}},"schemas":{"AddressResponse":{"description":"Address-centric covenant, token, trade, and external identity view.","properties":{"address":{"description":"Canonical address re-encoded for the requested network.","maxLength":120,"type":"string"},"covenants":{"items":{"type":"object"},"type":"array"},"covenants_total":{"minimum":0,"type":"integer"},"generated_at_ms":{"format":"int64","minimum":0,"type":"integer"},"kns":{"$ref":"#/components/schemas/KnsIdentity"},"network":{"enum":["mainnet","testnet-10"],"type":"string"},"pubkey":{"description":"The 32-byte Schnorr or 33-byte compressed ECDSA public-key payload.","pattern":"^(?:[0-9a-f]{64}|[0-9a-f]{66})$","type":"string"},"tip_at_ms":{"format":"int64","minimum":0,"type":["integer","null"]},"tip_daa":{"anyOf":[{"$ref":"#/components/schemas/DaaScore"},{"type":"null"}]},"token_holdings":{"items":{"type":"object"},"type":"array"},"trades":{"items":{"type":"object"},"type":"array"}},"required":["network","generated_at_ms","tip_daa","tip_at_ms","address","pubkey","kns","covenants_total","covenants","token_holdings","trades"],"type":"object"},"CovenantId":{"pattern":"^[0-9a-f]{64}$","type":"string"},"DaaScore":{"format":"int64","minimum":0,"type":"integer"},"ExactAmount":{"description":"Exact on-chain integer amount; never a floating-point display value","format":"int64","type":"integer"},"ExactPrice":{"properties":{"base_amount":{"format":"int64","type":"integer"},"quote_sompi":{"format":"int64","type":"integer"}},"required":["quote_sompi","base_amount"],"type":"object"},"KnsIdentity":{"description":"External KNS reverse identity. Verified names are accepted only when the KNS indexer marks the domain verified and repeats the exact canonical owner address. Kascov does not independently replay KNS inscriptions.","properties":{"display_name":{"description":"The primary name, or the shortest verified owned name with a lexical tie-break.","maxLength":520,"type":["string","null"]},"display_name_source":{"enum":["primary","verified_owned_fallback",null],"type":["string","null"]},"primary_name":{"description":"The official verified KNS primary name, when configured.","maxLength":520,"type":["string","null"]},"source":{"const":"kns-indexer","type":"string"},"status":{"description":"partial means one KNS lookup failed; unavailable means both failed. Neither status fails the address request.","enum":["resolved","not_found","partial","unavailable"],"type":"string"},"verified_names":{"items":{"maxLength":520,"type":"string"},"maxItems":100,"type":"array","uniqueItems":true},"verified_names_complete":{"description":"True only when the KNS owned-name lookup succeeded and fit in its first 100-name page.","type":"boolean"}},"required":["status","source","primary_name","display_name","display_name_source","verified_names","verified_names_complete"],"type":"object"},"TokenOwner":{"description":"An exact token-state owner. Bare hex is an x-only public key; non-wallet owner types are never silently coerced to an address.","pattern":"^(?:[0-9a-f]{64}|(?:script|covenant|presence):[0-9a-f]{64})$","type":"string"},"TransferAttribution":{"properties":{"movements":{"items":{"$ref":"#/components/schemas/TransferMovement"},"type":"array"},"owner_from":{"$ref":"#/components/schemas/TokenOwner"},"reason":{"type":"string"},"status":{"enum":["exact","self","ambiguous"],"type":"string"}},"required":["status","movements"],"type":"object"},"TransferDelta":{"description":"One proven output-cell delta. Amount is that cell's absolute token balance, encoded as an exact decimal string; it is not automatically a transferred amount.","properties":{"accepting_daa":{"$ref":"#/components/schemas/DaaScore"},"amount":{"$ref":"#/components/schemas/TransferExactAmount"},"delta_idx":{"minimum":0,"type":"integer"},"event_kind":{"type":"string"},"owner_from":{"$ref":"#/components/schemas/TokenOwner"},"owner_to":{"$ref":"#/components/schemas/TokenOwner"},"seq":{"minimum":0,"type":"integer"},"token_kind":{"enum":["transfer","split","merge"],"type":"string"},"tx_index":{"minimum":0,"type":"integer"},"txid":{"pattern":"^[0-9a-f]{64}$","type":"string"}},"required":["seq","delta_idx","token_kind","event_kind","accepting_daa","txid"],"type":"object"},"TransferEvent":{"properties":{"accepting_daa":{"$ref":"#/components/schemas/DaaScore"},"attribution":{"$ref":"#/components/schemas/TransferAttribution"},"deltas":{"items":{"$ref":"#/components/schemas/TransferDelta"},"minItems":1,"type":"array"},"event_kind":{"type":"string"},"kind":{"enum":["transfer","split","merge"],"type":"string"},"market_activity":{"properties":{"kind":{"const":"trade","type":"string"},"market_id":{"$ref":"#/components/schemas/CovenantId"},"side":{"enum":["buy","sell"],"type":"string"}},"required":["kind","side","market_id"],"type":"object"},"seq":{"minimum":0,"type":"integer"},"token_id":{"$ref":"#/components/schemas/CovenantId"},"tx_index":{"minimum":0,"type":"integer"},"txid":{"pattern":"^[0-9a-f]{64}$","type":"string"},"verified_market":{"description":"The token's current verified market binding. This does not claim the ownership event itself was a market trade; market_activity is present only for an exact admitted trade row.","properties":{"build":{"type":"string"},"market_id":{"$ref":"#/components/schemas/CovenantId"},"program_hash":{"pattern":"^[0-9a-f]{64}$","type":"string"}},"required":["market_id","build","program_hash"],"type":"object"}},"required":["token_id","seq","kind","event_kind","accepting_daa","txid","verified_market","attribution","deltas"],"type":"object"},"TransferExactAmount":{"description":"Exact non-negative on-chain integer encoded as a decimal string so JavaScript cannot round it","pattern":"^[0-9]+$","type":"string"},"TransferFeed":{"properties":{"generated_at_ms":{"minimum":0,"type":"integer"},"network":{"enum":["mainnet","testnet-10"],"type":"string"},"next_before_daa":{"$ref":"#/components/schemas/DaaScore"},"next_before_seq":{"minimum":0,"type":"integer"},"next_before_token":{"$ref":"#/components/schemas/CovenantId"},"order":{"const":"desc","type":"string"},"scope":{"const":"verified_market_tokens","type":"string"},"semantics":{"type":"object"},"transfers":{"items":{"$ref":"#/components/schemas/TransferEvent"},"type":"array"}},"required":["network","generated_at_ms","order","scope","semantics","transfers"],"type":"object"},"TransferMovement":{"properties":{"amount":{"$ref":"#/components/schemas/TransferExactAmount"},"owner_from":{"$ref":"#/components/schemas/TokenOwner"},"owner_to":{"$ref":"#/components/schemas/TokenOwner"}},"required":["owner_from","owner_to","amount"],"type":"object"}}},"info":{"description":"Open, keyless Kaspa covenant and verified token-market data. Exact monetary values are JSON integers; prices are numerator/denominator pairs. Vesting scores are DAA scores, not timestamps.","title":"KasCov API","version":"0.1.0"},"openapi":"3.1.0","paths":{"/data/price.json":{"get":{"operationId":"price","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read the KAS reference price feed"}},"/data/{network}-live.json":{"get":{"operationId":"live","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read the small live network snapshot. A recent event that is a vprog exit claim carries `exit_claim: true` (absent otherwise): its `kind` stays structural, but it retires nothing."}},"/data/{network}.json":{"get":{"operationId":"coins","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Maximum rows","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Exclusive compound cursor DAA","in":"query","name":"after_daa","required":false,"schema":{"$ref":"#/components/schemas/DaaScore"}},{"description":"Exclusive compound cursor covenant id","in":"query","name":"after_id","required":false,"schema":{"$ref":"#/components/schemas/CovenantId"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Page through covenant summaries"}},"/data/{network}/activity.json":{"get":{"operationId":"activity","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"1h, 6h, 24h, 48h, or all","in":"query","name":"range","required":false,"schema":{"enum":["1h","6h","24h","48h","all"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read activity buckets. A vprog exit claim counts as a move, not a burn."}},"/data/{network}/addr/{address}.json":{"get":{"operationId":"address","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Kaspa address or public key","in":"path","name":"address","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressResponse"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Covenants, token balances, trades, and fail-soft KNS identity for an address or public key. KNS fields come from the external KNS indexer and are owner-matched, not independently chain-replayed by Kascov. Each token_holdings[] row carries the unforgeable derived `name`, the exact on-chain `balance`, and separate optional `listed_*` and `claimed_*` identity tiers. A row that is a pool's LP-share token additionally carries `lp_of_market`, `lp_pool_skeleton`, `lp_of_token` (the traded token's id — the one to pass to /icon), and fail-soft `lp_of_token_ticker`/`lp_of_token_name`, so a wallet can render it as the pool position it is; the link is read from the verified pool program's own bytes, and `balance` remains SHARES, never an amount of the underlying token."}},"/data/{network}/address/{address}/balance":{"get":{"operationId":"addressBalance","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"A bech32 Kaspa address on this network","in":"path","name":"address","required":true,"schema":{"maxLength":96,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Live KAS balance of one address in sompi, read from the node's own utxo index — a statement about the UTXO set right now, never a history (Kaspa prunes; per-address KAS history needs an archival explorer)"}},"/data/{network}/artifact/{artifact_id}.json":{"get":{"operationId":"artifact","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"BLAKE2b-256 of the artifact bytes as submitted, 64 hex characters","in":"path","name":"artifact_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"One submitted artifact: app, generator, every template with its declared ABI, and up to 50 covenants bound to each template"}},"/data/{network}/artifacts":{"post":{"operationId":"submitArtifact","parameters":[{"$ref":"#/components/parameters/Network"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Submit an argentc artifact.json; every template hash is recomputed from the artifact's own bytes before anything is stored, and the artifact is refused whole if one does not reproduce"}},"/data/{network}/artifacts.json":{"get":{"operationId":"artifacts","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List submitted argentc artifacts, newest first, with each template's hash, actor, contract and on-chain instances"}},"/data/{network}/blocks":{"get":{"operationId":"dagBlocks","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"The last minute of blocks as the node's GHOSTDAG placed them: short ids (first 8 bytes, hex), direct parents, selected parent, blue score, DAA score, header timestamp, the time the worker received each block, and each block's own mergeset split into blues and reds. Asking starts the node feed if it is idle; `connected` says whether it is up."}},"/data/{network}/blocks/stream":{"get":{"operationId":"dagBlockStream","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"text/event-stream":{"schema":{"type":"string"}}},"description":"Live server-sent event stream"},"400":{"description":"Malformed filter"},"404":{"description":"Unknown network"}},"summary":"Stream every block the node adds, in the same shape as /blocks, for the DAGKnight page's live DAG"}},"/data/{network}/c/{id}.json":{"get":{"operationId":"coin","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Get one covenant's full indexed story. Over the event cap the answer keeps its first indexed event (its birth when the lineage is complete) and its newest events (`events_truncated`, each event's `kind_n` its place among events of its kind); the rest page through /c/{id}/events. A vprog's settlements and exit claims carry `vprog`, what each transaction's witness states, and a settlement kascov has re-run also carries `recheck`: the whole transaction rebuilt (it must hash to its txid), the anchor block's commitment taken from a header whose hash was recomputed, and the input run through the script engine with its proof (`pass` true or false; null when the check could not run, `verdict` says why; absent until it runs). The covenant carries a `vprog` summary, including `rechecked_settlements` and `recheck_failures`."}},"/data/{network}/c/{id}/events":{"get":{"operationId":"coinEvents","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"},{"description":"Exclusive cursor: the seq of the last event already read","in":"query","name":"after_seq","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Maximum events (1 to 500, default 200)","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"vprog: only events that took a vprog step","in":"query","name":"only","required":false,"schema":{"enum":["vprog"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Page through one covenant's whole event history, oldest first, in the detail answer's event shape (payloads over 512 bytes replaced by `payload_len`, vprog steps and their `recheck` attached, settlements numbered over the whole history). `only=vprog` keeps the events that took a vprog step: a vprog's settlement and exit history. Feed `next_after_seq` back as `after_seq` to keep walking."}},"/data/{network}/coins":{"get":{"operationId":"coinsBatch","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Comma-separated covenant ids","in":"query","name":"ids","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Get a batch of covenant summaries"}},"/data/{network}/compile":{"post":{"operationId":"compile","parameters":[{"$ref":"#/components/parameters/Network"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Compile a supported covenant template"}},"/data/{network}/compilers.json":{"get":{"operationId":"compilers","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read which compiler generations this server runs, with the revision each was built from"}},"/data/{network}/consistency.json":{"get":{"operationId":"consistency","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read independent consistency checks"}},"/data/{network}/debug/{txid}":{"get":{"operationId":"debug","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Transaction id","in":"path","name":"txid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Replay and explain one covenant transaction"}},"/data/{network}/deploy":{"post":{"operationId":"deploy","parameters":[{"$ref":"#/components/parameters/Network"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Build a deployment transaction"}},"/data/{network}/digest.json":{"get":{"operationId":"digest","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read the recent network digest. A vprog exit claim counts as a move, not a burn."}},"/data/{network}/events":{"get":{"operationId":"events","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Maximum events","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Cursor DAA","in":"query","name":"after_daa","required":false,"schema":{"$ref":"#/components/schemas/DaaScore"}},{"description":"Rows consumed at the cursor DAA","in":"query","name":"after_seq","required":false,"schema":{"minimum":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Page through chain-wide covenant events"}},"/data/{network}/families.json":{"get":{"operationId":"families","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List covenant families"}},"/data/{network}/galaxy.json":{"get":{"operationId":"galaxy","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read the whole-network covenant graph"}},"/data/{network}/index.json":{"get":{"operationId":"index","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Discover the machine-readable API surface"}},"/data/{network}/inscriptions.json":{"get":{"operationId":"inscriptions","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List inscriptions"}},"/data/{network}/lane":{"get":{"operationId":"lanePolicy","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read holder-lane policy"}},"/data/{network}/lane/mint":{"post":{"operationId":"laneMint","parameters":[{"$ref":"#/components/parameters/Network"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Mint a capacity lane token"}},"/data/{network}/lane/{ns}":{"get":{"operationId":"lane","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Eight-hex lane namespace","in":"path","name":"ns","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read one payload lane"}},"/data/{network}/lanes.json":{"get":{"operationId":"lanes","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read lane analytics"}},"/data/{network}/lifespans.json":{"get":{"operationId":"lifespans","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read covenant lifespan analytics"}},"/data/{network}/market-build/{slug}.json":{"get":{"operationId":"marketBuild","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Pinned market-build slug","in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Get one reproducible market-build proof dossier"}},"/data/{network}/market-builds.json":{"get":{"operationId":"marketBuilds","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List reproducible market-build proof dossiers"}},"/data/{network}/market/{id}":{"get":{"operationId":"market","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Get one verified market"}},"/data/{network}/markets":{"get":{"operationId":"markets","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Maximum markets","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Exclusive market-id cursor","in":"query","name":"after_id","required":false,"schema":{"$ref":"#/components/schemas/CovenantId"}},{"description":"Market phase","in":"query","name":"phase","required":false,"schema":{"enum":["bonding","graduated"],"type":"string"}},{"description":"Require or exclude an admitted price","in":"query","name":"priced","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List verified-token market relationships; unknown programs stay read-only and unpriced"}},"/data/{network}/names/address/{address}":{"get":{"operationId":"namesAddress","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"A bech32 Kaspa address on this network","in":"path","name":"address","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Every name an address owns across the name services kascov reads, each with the covenant cell that proves the ownership. Explorer ownership, not payment resolution"}},"/data/{network}/names/owners":{"get":{"operationId":"namesOwners","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Comma-separated bech32 addresses on this network, at most 200","in":"query","name":"addresses","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Names beside up to 200 owner addresses in one request, for tables: answered from cache, warmed in the background on a miss, and marked pending until warm. Explorer ownership, not payment resolution"}},"/data/{network}/names/resolve/{name}":{"get":{"operationId":"namesResolve","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"A name such as example.kas, example.kaspa or example.k","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Who owns a name (.kas, .kaspa or .k), with the covenant cell that proves it. Explorer ownership, not payment resolution"}},"/data/{network}/pending":{"get":{"operationId":"pending","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read pending indexing work"}},"/data/{network}/pool/{id}":{"get":{"operationId":"pool","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Get one verified pool"}},"/data/{network}/pools":{"get":{"operationId":"pools","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Maximum pools","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Exclusive pool-id cursor","in":"query","name":"after_id","required":false,"schema":{"$ref":"#/components/schemas/CovenantId"}},{"description":"Require or exclude an admitted price","in":"query","name":"priced","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List verified graduated pools"}},"/data/{network}/preflight":{"post":{"operationId":"preflight","parameters":[{"$ref":"#/components/parameters/Network"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Preflight a transaction"}},"/data/{network}/prove-holding":{"post":{"operationId":"proveHolding","parameters":[{"$ref":"#/components/parameters/Network"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Build a privacy-preserving holding proof"}},"/data/{network}/publish":{"post":{"operationId":"publish","parameters":[{"$ref":"#/components/parameters/Network"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Publish supported metadata"}},"/data/{network}/registry.json":{"get":{"operationId":"registry","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read chain-checked launchpad registry claims"}},"/data/{network}/reorgs.json":{"get":{"operationId":"reorgs","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List handled chain reorgs"}},"/data/{network}/search":{"get":{"operationId":"search","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Search text","in":"query","name":"q","required":false,"schema":{"maxLength":128,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Search indexed covenants"}},"/data/{network}/simulate":{"post":{"operationId":"simulate","parameters":[{"$ref":"#/components/parameters/Network"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Simulate a covenant action"}},"/data/{network}/stream":{"get":{"operationId":"stream","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Optional exact covenant-id filter","in":"query","name":"covenant","required":false,"schema":{"$ref":"#/components/schemas/CovenantId"}}],"responses":{"200":{"content":{"text/event-stream":{"schema":{"type":"string"}}},"description":"Live server-sent event stream"},"400":{"description":"Malformed filter"},"404":{"description":"Unknown network"}},"summary":"Stream live covenant events"}},"/data/{network}/subscribe":{"post":{"operationId":"subscribe","parameters":[{"$ref":"#/components/parameters/Network"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Create a subscription"}},"/data/{network}/template/{hash}.json":{"get":{"operationId":"template","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Template hash","in":"path","name":"hash","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Get one verified KCC-1 template"}},"/data/{network}/templates.json":{"get":{"operationId":"templates","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List template analytics"}},"/data/{network}/token/{id}":{"get":{"operationId":"token","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"},{"description":"Embedded holder limit","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Embedded event limit","in":"query","name":"events_limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Oldest-first event cursor","in":"query","name":"after_seq","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Newest-first event cursor","in":"query","name":"before_seq","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Event order","in":"query","name":"order","required":false,"schema":{"enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Get one token with validation, holders, events, and market"}},"/data/{network}/token/{id}/book":{"get":{"operationId":"tokenBook","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List open resting orders, served as decoded facts with an explicit not-verified provenance note"}},"/data/{network}/token/{id}/candles":{"get":{"operationId":"tokenCandles","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"},{"description":"Candle source duration; 1m retains a bounded 30-day view with an explicit omission note. Clients may aggregate larger intervals","in":"query","name":"bucket","required":false,"schema":{"enum":["1m","15m","1h","4h","1d"],"type":"string"}},{"description":"Market phase view; all connects the curve and pool eras","in":"query","name":"phase","required":false,"schema":{"default":"all","enum":["all","curve","pool"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Get connected OHLC candles across the token's newest contiguous verified market history. Curve and pool trades are checked and priced with their own historical program constants. If an older phase cannot be verified or falls beyond the bounded scan, scope is verified_suffix and history_note identifies the omitted prefix; the current market always remains fail-closed. Every candle opens at the previous close, quiet buckets are flat zero-volume carries marked carried:true through the current bucket, and traded buckets carry txids so every candle is replayable"}},"/data/{network}/token/{id}/cells":{"get":{"operationId":"tokenCells","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"},{"description":"Maximum cells","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Filter by owner key: identifier_type || owner_identifier","in":"query","name":"owner","required":false,"schema":{"pattern":"^[0-9a-f]{66}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List the token's live KCC-20 cells with the committed program bytes to reveal; each program is reconstructed and only served when its blake2b matches the utxo's committed hash"}},"/data/{network}/token/{id}/curve-cell":{"get":{"operationId":"tokenCurveCell","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Everything a page needs to build a trade against the live curve cell: outpoint, value, committed script, economics, and the base program bytes to reveal (the page splices the reserve and verifies the hash)"}},"/data/{network}/token/{id}/events":{"get":{"operationId":"tokenEvents","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"},{"description":"Maximum event deltas","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Oldest-first event cursor","in":"query","name":"after_seq","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Newest-first event cursor","in":"query","name":"before_seq","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Event order","in":"query","name":"order","required":false,"schema":{"enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Page through classified token events"}},"/data/{network}/token/{id}/holders":{"get":{"operationId":"tokenHolders","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"},{"description":"Maximum holders","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Exclusive compound cursor balance","in":"query","name":"after_balance","required":false,"schema":{"type":"integer"}},{"description":"Opaque exclusive compound cursor owner returned by the previous page","in":"query","name":"after_owner","required":false,"schema":{"pattern":"^[0-9a-f]{66}$","type":"string"}},{"description":"Optional cursor leg for tokens with fungibility classes: the class hex returned as next_after_class, defaulting to the empty (classless) leg. A balance is per (owner, class); rows carry a `class` field only when the token has classes, and cells of different classes cannot be consolidated.","in":"query","name":"after_class","required":false,"schema":{"pattern":"^([0-9a-f]{64})?$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Page through hash-proven token holders"}},"/data/{network}/token/{id}/market":{"get":{"operationId":"tokenMarket","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Resolve a token to its verified market"}},"/data/{network}/token/{id}/trades":{"get":{"operationId":"tokenTrades","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"},{"description":"Maximum trades","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Exclusive newest-first trade cursor","in":"query","name":"before_seq","required":false,"schema":{"minimum":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Page through one token's admitted trades"}},"/data/{network}/token/{id}/trades.json":{"get":{"operationId":"tokenTradesJson","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"},{"description":"Maximum trades","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Exclusive newest-first trade cursor","in":"query","name":"before_seq","required":false,"schema":{"minimum":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read or page through one token's admitted trades"}},"/data/{network}/tokens.json":{"get":{"operationId":"tokens","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Maximum rows; any query opts into pagination","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Exclusive compound cursor DAA","in":"query","name":"after_daa","required":false,"schema":{"$ref":"#/components/schemas/DaaScore"}},{"description":"Exclusive compound cursor covenant id","in":"query","name":"after_id","required":false,"schema":{"$ref":"#/components/schemas/CovenantId"}},{"description":"Validation or liveness status","in":"query","name":"status","required":false,"schema":{"enum":["verified","invalid","unvalidated","active","burned"],"type":"string"}},{"description":"Verified market phase","in":"query","name":"phase","required":false,"schema":{"enum":["bonding","graduated"],"type":"string"}},{"description":"Directory row kind","in":"query","name":"kind","required":false,"schema":{"enum":["token","minter"],"type":"string"}},{"description":"Case-insensitive id, name, ticker, or template search","in":"query","name":"q","required":false,"schema":{"maxLength":128,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List derived KCC20 tokens and minters"}},"/data/{network}/trades":{"get":{"operationId":"trades","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Maximum trades","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Filter by token","in":"query","name":"token_id","required":false,"schema":{"$ref":"#/components/schemas/CovenantId"}},{"description":"Filter by market","in":"query","name":"market_id","required":false,"schema":{"$ref":"#/components/schemas/CovenantId"}},{"description":"Filter by side","in":"query","name":"side","required":false,"schema":{"enum":["buy","sell"],"type":"string"}},{"description":"Compound cursor DAA","in":"query","name":"before_daa","required":false,"schema":{"$ref":"#/components/schemas/DaaScore"}},{"description":"Compound cursor token","in":"query","name":"before_token","required":false,"schema":{"$ref":"#/components/schemas/CovenantId"}},{"description":"Compound cursor token-local trade sequence","in":"query","name":"before_seq","required":false,"schema":{"minimum":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Page through admitted trades across all tokens"}},"/data/{network}/transfers":{"get":{"operationId":"transfers","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Maximum complete ownership events (default 100, maximum 200)","in":"query","name":"limit","required":false,"schema":{"maximum":200,"minimum":1,"type":"integer"}},{"description":"Filter by exact token covenant id","in":"query","name":"token_id","required":false,"schema":{"$ref":"#/components/schemas/CovenantId"}},{"description":"Match an indexed source or destination owner. Bare 64-hex means a public key; script, covenant, and presence owners require their explicit prefix. Multi-owner merge sources are unavailable by design.","in":"query","name":"owner","required":false,"schema":{"$ref":"#/components/schemas/TokenOwner"}},{"description":"Cell-topology classification","in":"query","name":"kind","required":false,"schema":{"enum":["transfer","split","merge"],"type":"string"}},{"description":"Exclusive compound cursor DAA; supply all three cursor fields together","in":"query","name":"before_daa","required":false,"schema":{"$ref":"#/components/schemas/DaaScore"}},{"description":"Exclusive compound cursor token; supply all three cursor fields together","in":"query","name":"before_token","required":false,"schema":{"$ref":"#/components/schemas/CovenantId"}},{"description":"Exclusive compound cursor token-local event sequence; supply all three cursor fields together","in":"query","name":"before_seq","required":false,"schema":{"minimum":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferFeed"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Page through complete ownership events for tokens bound to verified supported markets. Raw deltas are absolute output-cell balances; exact movements remove same-owner change, while multi-owner sources remain explicitly ambiguous."}},"/data/{network}/tx/{txid}.json":{"get":{"operationId":"transaction","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Transaction id","in":"path","name":"txid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Get covenants moved by one transaction. An event that is a vprog exit claim carries `exit_claim: true` (absent otherwise)."}},"/data/{network}/unsubscribe":{"post":{"operationId":"unsubscribe","parameters":[{"$ref":"#/components/parameters/Network"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Remove a subscription"}},"/data/{network}/verification.json":{"get":{"operationId":"verification","parameters":[{"$ref":"#/components/parameters/Network"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read derivation and audit status"}},"/data/{network}/verified/{hash}":{"get":{"operationId":"verifiedSource","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Program hash","in":"path","name":"hash","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Get byte-identical verified source"}},"/data/{network}/vesting":{"get":{"operationId":"vesting","parameters":[{"$ref":"#/components/parameters/Network"},{"description":"Maximum schedules","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}},{"description":"Exclusive token-id cursor","in":"query","name":"after_id","required":false,"schema":{"$ref":"#/components/schemas/CovenantId"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List commitment-proven vesting schedules"}},"/data/{network}/vesting/{id}":{"get":{"operationId":"vestingDetail","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Get a proven vesting schedule and states"}},"/data/{network}/vesting/{id}/claims":{"get":{"operationId":"vestingClaims","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"List commitment-proven vesting claims"}},"/data/{network}/zk-verify":{"post":{"operationId":"zkVerify","parameters":[{"$ref":"#/components/parameters/Network"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Verify a supported zero-knowledge proof"}},"/health":{"get":{"operationId":"health","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Check indexer health"}},"/img/{network}/{id}":{"get":{"operationId":"tokenImage","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"}],"responses":{"200":{"content":{"image/png":{"schema":{"format":"binary","type":"string"}}},"description":"Image bytes"},"404":{"description":"No image at this tier for this token"}},"summary":"Hash-proven token art: the image whose bytes reproduce the hash the genesis payload committed. 404 when the token committed none (most launches)."}},"/listed-img/{network}/{id}":{"get":{"operationId":"listedImage","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"}],"responses":{"200":{"content":{"image/png":{"schema":{"format":"binary","type":"string"}}},"description":"Image bytes"},"404":{"description":"No image at this tier for this token"}},"summary":"The token's logo from the signed list, reserved and served as bytes so a wallet never fetches the deployer's own image host. 404 when the token is unlisted or the entry carries no image."}},"/og/{network}/{id}":{"get":{"operationId":"ogCard","parameters":[{"$ref":"#/components/parameters/Network"},{"$ref":"#/components/parameters/CovenantId"}],"responses":{"200":{"content":{"image/png":{"schema":{"format":"binary","type":"string"}}},"description":"Image bytes"},"404":{"description":"No image at this tier for this token"}},"summary":"The 1200x630 social share card for a token or covenant."}},"/openapi.json":{"get":{"operationId":"openapi","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Successful JSON response"},"400":{"description":"Malformed path or query input"},"404":{"description":"Resource not found"},"503":{"description":"Index temporarily unavailable"}},"summary":"Read this OpenAPI document"}}},"servers":[{"url":"https://kascov.io"}]}