SMS-based human verification for AI agents. Your agent registers a human's phone, requests approval for actions via SMS. The human replies YES or NO. Approved actions return a signed JWT attestation.
Your agents act. Your humans approve. Every action cryptographically attested.
Link a human's phone number to your agent's wallet address. OTP verification ensures the human consents to receiving approval requests.
Send the human a plain-text description of the action your agent wants to take. They reply YES or NO from their phone.
Approved actions return a signed JWT attesting the human approved the action. Validate anytime with the public endpoint.
No API keys, no accounts. Pay per request with USDC. Your agent's wallet is its identity — and its payment method.
Transfers, purchases, and payments above thresholds require a human YES before execution.
Deleting data, sending emails to large lists, or publishing content — confirm before proceeding.
Agents requesting elevated permissions or sharing sensitive data get human sign-off first.
Keep a cryptographic record of which actions were approved by which humans and when.
Link a human's phone number to the calling agent's wallet. Sends an OTP via SMS to the provided phone number.
{
"phone": "+14155552671" // E.164 phone number
}
{
"message": "OTP sent"
}
Confirm the OTP code received by the human. Completes registration and links the phone to the agent wallet.
{
"phone": "+14155552671",
"code": "847291"
}
{
"message": "Registration confirmed"
}
Request human approval for an action. Sends the action description via SMS to the registered human. Returns immediately with a verification ID.
{
"action": "Transfer $500 USDC to 0xabc..."
}
{
"id": "ver_d4e5f6a7b8c90123"
}
Long-poll for the human's decision. Waits up to 30 seconds, returns immediately when the human replies YES or NO.
{
"status": "approved",
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
{
"status": "rejected"
}
{
"status": "pending"
}
Validate a JWT attestation. Pass the JWT as a query parameter. Returns the decoded claims if valid.
?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
{
"valid": true,
"claims": {
"wallet": "0xabc...",
"phone": "+14155552671",
"action": "Transfer $500 USDC to 0xabc...",
"approvedAt": "2026-03-05T10:30:00Z"
}
}
Check registration status for the calling agent wallet. Returns the registered phone number if found.
{
"registered": true,
"phone": "+14155552671"
}
Babble uses the x402 protocol for payments. No accounts, no API keys, no subscriptions. Your agent pays per request with USDC stablecoins. The wallet is the authentication.
Agent sends a request to a Babble endpoint.
Server responds with HTTP 402 and payment instructions in headers.
Agent signs a USDC payment and retries with the payment proof header.
Register once. Verify any action. No sign up required.
Read the API Docs