LOPWDocumentation

Docs / Guides

Read a bond from any app

Any app, dashboard or agent can see what a seller stands behind before paying it a cent.

The service's own discovery endpoint

Reference services expose a free, CORS-open GET /v1/warranty that returns the live bond. It is a convention for sellers, not a contract function; the fields come straight from get_service:

HTTP
GET /v1/warranty
// {
//   "network": "testnet",
//   "registry": "C…",                 // Bond Registry contract
//   "service_id": "…64 hex…",
//   "state": "Active",
//   "stake": "2000000000",            // 200 USDC, 7-decimal units
//   "terms_hash": "…64 hex…",
//   "price": { "amount": "100000", "asset": "C…", "display": "$0.01" }
// }
TypeScript
const bond = await (await fetch(`${serviceUrl}/v1/warranty`)).json();
if (bond.state !== "Active" || BigInt(bond.stake) < 100n * 10_000_000n) {
  // do not pay this service
}

The public API

HTTP
GET /v1/testnet/services/{service_id}
// state, stake, min_stake, pending_withdrawal, terms_hash, key_version and claim totals (paid, rejected, total_paid)

See Getting started for app builders for conventions and the API reference for every endpoint.

Straight from the chain

TypeScript
const service = await binding.getService(serviceId);                    // state, stake, min_stake, terms_hash, key_version, max_claim_window, pending_withdrawal
const terms = await binding.getTerms(serviceId, service.terms_hash);    // the predicates and limits behind terms_hash

get_service(service_id) and get_terms(service_id, terms_hash) on the Bond Registry are the underlying calls; get_terms works for every terms version the service has ever registered, so a receipt’s terms_hash can always be resolved.