Service
Saperly
Saperly phone infrastructure wrapped by Sherwood for wallet-paid agent use. Agents can create hosted phone connections, provision numbers, send SMS, and place outbound calls without bringing their own Saperly API key.
x402
Methods
8 methods available
POST/connections10000 USDC
/connectionsCreate a hosted Saperly phone connection.
POST JSON body. Protected by x402 exact payment. Returns the Saperly connection id.
{
"body": {
"agentName": "string (optional, default 'Saperly x402 agent')"
}
}POST/numbers1000000 USDC
/numbersProvision a Saperly phone number.
POST JSON body. Protected by x402 exact payment. Number rent and upstream usage are handled by Sherwood's Saperly integration.
{
"body": {
"country": "string (optional, e.g. 'US')",
"numberType": "local | mobile | tollFree (optional)",
"areaCode": "string (optional)"
}
}POST/numbers/{numberId}/connection10000 USDC
/numbers/{numberId}/connectionAttach a phone number to a hosted Saperly connection.
Replace {numberId}. POST JSON body. Protected by x402 exact payment.
{
"path": {
"numberId": "string"
},
"body": {
"connectionId": "string (required)"
}
}POST/numbers/{numberId}/release10000 USDC
/numbers/{numberId}/releaseRelease a Saperly phone number.
Replace {numberId}. Protected by x402 exact payment.
{
"path": {
"numberId": "string"
}
}GET/messages1000 USDC
/messagesList SMS messages for a Saperly number.
GET with numberId query parameter. Protected by x402 exact payment.
{
"query": {
"numberId": "string (required)"
}
}POST/messages50000 USDC
/messagesSend an SMS from a Saperly number.
POST JSON body. Protected by x402 exact payment. Saperly compliance and consent checks still apply upstream.
{
"body": {
"fromNumberId": "string (required)",
"to": "string (required, E.164)",
"body": "string (required)"
}
}GET/calls1000 USDC
/callsList calls for a Saperly number.
GET with numberId query parameter. Protected by x402 exact payment.
{
"query": {
"numberId": "string (required)"
}
}POST/calls250000 USDC
/callsPlace an outbound call from a Saperly number.
POST JSON body. Protected by x402 exact payment. Use a number provisioned through this service as fromNumberId.
{
"body": {
"fromNumberId": "string (required)",
"to": "string (required, E.164)",
"instructions": "string (optional)"
}
}