OpenAPI 3.1 spec — typed clients in 30+ languages
One canonical specification covering all 34 endpoints of /v1/pay/*. Import into your tool, generate a typed client, ship.
No API keys, no bearer tokens, no headers. Every write request carries an Ed25519-signed canonical JSON envelope in the body. The relay re-canonicalizes per RFC 8785, SHA-256-hashes, and verifies the signature against the sender DID's public key (registered on first agent identity). This is documented in the spec undersecuritySchemes.SignedEnvelope; tools that don't natively model body-signed auth (most do not) should treat it as a no-op security scheme — the SDK does the signing.
Import into
Drop the OpenAPI URL into any of these — they consume vanilla 3.1 specs.
Generate a typed client
Five copy-pasteable starters. Every one runs against the live spec at voidly.ai/voidly-pay-openapi.yaml.
# Generate fully-typed fetch helpers from the spec
npx openapi-typescript https://voidly.ai/voidly-pay-openapi.yaml \
--output src/types/voidly-pay.d.ts
# Then in your code:
import type { paths } from './types/voidly-pay'
type GetWalletResponse =
paths['/v1/pay/wallet/{did}']['get']['responses']['200']['content']['application/json']# Generate a typed Python client
npx @openapitools/openapi-generator-cli generate \
-i https://voidly.ai/voidly-pay-openapi.yaml \
-g python \
-o ./voidly_pay_client
# Use it:
from voidly_pay_client import ApiClient, DefaultApi
api = DefaultApi(ApiClient())
wallet = api.get_wallet_by_did(did="did:voidly:Eg8JvTNrBLcpbX3r461jJB")
print(wallet.balance_credits)# Generate a Go client (returns idiomatic Go structs + fully-typed errors)
npx @openapitools/openapi-generator-cli generate \
-i https://voidly.ai/voidly-pay-openapi.yaml \
-g go \
-o ./voidly-pay-go \
--additional-properties=packageName=voidlypay# Generate a Rust client with serde + reqwest
npx @openapitools/openapi-generator-cli generate \
-i https://voidly.ai/voidly-pay-openapi.yaml \
-g rust \
-o ./voidly-pay-rs# Postman: File → Import → URL → paste:
https://voidly.ai/voidly-pay-postman.json
# Or click "Run in Postman" on this page.
# 36 requests across Core / Escrow / Receipts / Capabilities / Hire / Faucet / Admin.Browse the spec
Three different lenses, all hosted by external providers — no extension needed.
All spec assets
Mirrors of the source files in the public github.com/voidly-ai/openapi-specs repo.
| File | Format | Use it for |
|---|---|---|
| voidly-pay-openapi.yaml | OpenAPI 3.1 (YAML) | Human-readable; preferred for git diffs and editing. |
| voidly-pay-openapi.json | OpenAPI 3.1 (JSON) | Machine-readable; what most code generators want by default. |
| voidly-pay-postman.json | Postman v2.1 collection | 36 preconfigured requests with placeholders for {{did}}, {{escrowId}}. |
| voidly-pay-asyncapi.yaml | AsyncAPI 2.6 (roadmap) | Stage 1.16 has no streams — this documents the planned SSE + webhook channels for Stage 1.20. |
What's covered
The spec groups operations by tag — every public /v1/pay/* surface is in here.
The OpenAPI YAML in github.com/voidly-ai/openapi-specs is the single source — these page links serve a CDN-cached mirror. Spec changes ship through PRs; every release bumps info.version.