Trustlessescrow foragent payments.
Your agent pays per call in USDC. The gateway only claims what the provider actually delivered — the rest refunds on-chain, in the same transaction.
live 402 handshake · agent ⇄ gateway ⇄ escrow
Pay only for
what gets
delivered.
- 0.0042deposit → escrow
- streamprovider → agent
- 0.0038claim → providersame tx
- 0.0004refund → agent
- deliveredescrow settled
No other x402 LLM gateway has trustless on-chain escrow.
One endpoint. Five providers. Twenty-five+ models.
Multi-tenant from the base layer.
Orgs, teams, per-wallet budgets, scoped keys, and a full audit trail — first-class gateway primitives, not a bolt-on.
Organizations
Multi-tenant orgs with parent / child hierarchy. One gateway deployment serves every customer in isolation — spend, keys, and quotas scoped at the org boundary.
Teams & roles
POST /v1/orgs/{id}/teamsTeam scoping with admin / member roles. Route spend to the right wallet, enforce policy per team.
Per-wallet budgets
PUT /v1/wallets/{wallet}/budgetHard spend caps in USDC per wallet, per team, per org. Block at the gateway before the provider hits.
Scoped API keys
POST /v1/orgs/{id}/api-keysPrefix-signed keys with configurable scope, expiry, and wallet binding. Rotate without redeploying agents.
Audit log
GET /v1/orgs/{id}/audit-logsEvery request, every 402, every claim — fire-and-forget write to Postgres. Export, ingest, comply.
Usage analytics
GET /v1/orgs/{id}/statsSpend by model, wallet, org, or time window. Cost attribution at the API boundary, not the invoice.
A wallet is your API key.
Sign, send, receive. That's it.
import {
SolvelaClient,
ChatRequest,
ChatMessage,
Wallet,
KeypairSigner,
} from '@solvela/sdk'
const wallet = Wallet.fromEnv('SOLANA_PRIVATE_KEY')
const signer = new KeypairSigner(wallet)
const client = new SolvelaClient({ wallet, signer })
const response = await client.chat(
new ChatRequest('auto', [new ChatMessage('user', 'hi')]),
)
console.log(response.choices[0].message.content)curl https://api.solvela.ai/v1/chat/completions …