Status: the sandbox runs today live, and so does POST /v1/quotes live. Every other call on this page is planned planned.
Docs
API reference
One SDK, one REST API and two on-chain calls. Each row says whether it's live or planned.
SDK: @verafy/asc (TypeScript), verafy_asc (Python)
| Call | Does | Status | Docs |
|---|---|---|---|
asc.draft({ text }) | Compiles an .asc.md into steps, runs the loophole check, and returns a draft with a report. | planned | Publish an ASC |
asc.publish(draft, { signer }) | Publishes the signed-off draft on Solana and returns { id, version, url }. | planned | Publish an ASC |
asc.requestRuling({ asc, action, evidence, jury, ... }) | Asks a jury to rule and returns a Ruling. | planned | Request a ruling |
asc.getRuling(id) | Reads a ruling. | planned | Request a ruling |
asc.dispute(rulingId, { reason }) | Sends a ruling to a second jury. | planned | Disputes |
asc.certify({ repo, commit, standards, jury }) | Reviews a commit and returns a Certificate. | planned | Standards and certification |
asc.quote(request) | Prices any requestRuling or certify call without running it. Until the SDK ships, use POST /v1/quotes. | planned | Credits and pricing |
REST
Each call takes the same body as the SDK call, with auth by API key. Quotes are free and need no key.
| Endpoint | Same as | Status | Docs |
|---|---|---|---|
POST /v1/ascs | asc.draft | planned | Publish an ASC |
POST /v1/ascs/:id/publish | asc.publish | planned | Publish an ASC |
POST /v1/rulings | asc.requestRuling | planned | Request a ruling |
GET /v1/rulings/:id | asc.getRuling | planned | Request a ruling |
POST /v1/rulings/:id/dispute | asc.dispute | planned | Disputes |
POST /v1/certifications | asc.certify | planned | Standards and certification |
GET /v1/certifications/:id | reads a certificate | planned | Standards and certification |
POST /v1/quotes | asc.quote | live | Credits and pricing |
GET /v1/standards | lists the standards | planned | Standards and certification |
POST /v1/quotesshelllive
curl -X POST https://asc.verafy.ai/v1/quotes \
-H 'content-type: application/json' \
-d '{"kind":"ruling","jury":{"size":7,"tier":"standard"}}'
# {"kind":"ruling","unit":"credits","proposed":true,"charged":0,"credits":35,
# "jury":{"size":7,"tier":"standard"},"detail":"7 jurors, standard tier"}Quotes use the proposed prices. The fast and frontier tiers return tier_price_not_set until their prices are set.
On chain
| Chain | Call | Status | Docs |
|---|---|---|---|
| Solana | verify_ruling(&asc, &action, &instructions) -> Outcome | planned | Enforce a ruling |
| EVM | requestRuling(ascId, action, jury) → requestId | planned | Enforce a ruling |
| EVM | verifyRuling(requestId, attestations) → Outcome | planned | Enforce a ruling |
Hard caps stay in the contract's own code. The jury can only pick a listed outcome.