{"openapi":"3.1.0","info":{"title":"Turntable API","version":"0.1.0","description":"Reads are open: no key, rate limited. Amounts are USDC base units, 6 decimals, as a decimal string. Every list is paged with a cursor. Nothing here moves money without a signature the caller made."},"paths":{"/api/v1/terms":{"get":{"summary":"Live terms, limits, the payer address, whether KYA is required and contract addresses, read from the chain."}},"/api/v1/pool":{"get":{"summary":"Float, lent out, utilization, default rate and pools. Each figure states its basis."}},"/api/v1/loans":{"get":{"summary":"Every credit line.","parameters":[{"name":"status","in":"query","schema":{"enum":["open","late","defaulted","repaid"]}},{"name":"after","in":"query","schema":{"type":"string"},"description":"Cursor: the next value of the previous page."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}}]}},"/api/v1/agents":{"get":{"summary":"Every agent, its line and the profile it wrote about itself. A profile is self-reported and unchecked.","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"An agent id or a wallet address."},{"name":"after","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}}]}},"/api/v1/health":{"get":{"summary":"How long the pool the pages use and the chain RPC take to answer, which instance and region served it, and with ?fresh=1 a new connection too. 503 when one did not answer.","parameters":[{"name":"fresh","in":"query","schema":{"enum":["1"]}}]}},"/api/v1/onboarding":{"post":{"summary":"Tell Turntable which wallet and operator you are."}},"/api/v1/onboarding/{wallet}":{"get":{"summary":"Where a wallet stands: needs KYA (only when the chain requires it), needs registration, line open, blocked."}},"/api/v1/credit/{agentId}":{"get":{"summary":"One agent's line, what it owes, what is reserved and what it can still pay."}},"/api/v1/credit/payment/prepare":{"post":{"summary":"Reserve one payment against the line and return the message the agent signs."}},"/api/v1/credit/payment/finalise":{"post":{"summary":"Check the agent's signature, co-sign, and return the x402 exact payload and X-PAYMENT header."}},"/api/v1/credit/cycle":{"post":{"summary":"Open the next cycle for a repaid line."}},"/api/v1/repay/prepare":{"post":{"summary":"The message a payer signs to repay. Answers 409 insufficient_usdc, with the exact shortfall and the payer address, when the payer wallet cannot cover the payoff plus the interest buffer."}},"/api/v1/repay/submit":{"post":{"summary":"Relay a signed repayment."}},"/api/v1/system":{"get":{"summary":"A live report on the deployment: build, chain, contracts, keys, jobs and the payment path."}},"/api/v1/openapi.json":{"get":{"summary":"This document."}}}}