pixelsms.vercel.app
This is the entire API on one page. Grab your key, call the endpoint, and start sending. Backed by Textbelt under the hood, wrapped with PixelSMS best practices.
PIXELSMS_API_KEY on your server.TEXTBELT_API_KEY to your Textbelt key.https://www.pixelsms.vercel.app/api/sms with your message.Send your PixelSMS key in either header:
Authorization: Bearer YOUR_PIXELSMS_API_KEYx-api-key: YOUR_PIXELSMS_API_KEYKeep keys server-side. Optional: lock origins via PIXELSMS_ALLOWED_ORIGINS.
Minimal request. Works worldwide. Message capped at 1000 chars.
curl -X POST https://www.pixelsms.vercel.app/api/sms \
-H "Authorization: Bearer YOUR_PIXELSMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+12025550100",
"message": "Hello from PixelSMS",
"replyWebhookUrl": "https://yourapp.com/webhooks/sms-replies",
"webhookData": "metadata echoed back",
"testMode": false
}'Response example (Textbelt-backed):
{
"success": true,
"summary": { "requested": 1, "sent": 1, "failed": 0 },
"results": [
{
"to": "+12025550100",
"success": true,
"status": "queued",
"messageId": "textbelt-abc123",
"quotaRemaining": 41,
"provider": "textbelt"
}
]
}Pass an array of recipients; we de-dupe and fan out safely.
curl -X POST https://www.pixelsms.vercel.app/api/sms \
-H "x-api-key: YOUR_PIXELSMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": ["+12025550100", "+442071838750"],
"message": "Launch day! Thanks for being here.",
"testMode": false
}'Partial failures return HTTP 207 with per-recipient results.
// JavaScript / TypeScript
await fetch("https://www.pixelsms.vercel.app/api/sms", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_PIXELSMS_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
to: "+12025550100",
message: "Hello from PixelSMS",
replyWebhookUrl: "https://yourapp.com/webhooks/sms-replies",
webhookData: "metadata echoed back",
testMode: false,
}),
});# Python
import requests
response = requests.post(
"https://www.pixelsms.vercel.app/api/sms",
headers={
"Authorization": "Bearer YOUR_PIXELSMS_API_KEY",
"Content-Type": "application/json",
},
json={
"to": "+12025550100",
"message": "Hello from PixelSMS",
"replyWebhookUrl": "https://yourapp.com/webhooks/sms-replies",
"webhookData": "metadata echoed back",
"testMode": False,
},
)
print(response.json())Use the returned messageId.
curl -X GET "https://www.pixelsms.vercel.app/api/sms/status?messageId=textbelt-abc123" \ -H "Authorization: Bearer YOUR_PIXELSMS_API_KEY"
Returns Textbelt status payload so you can reconcile delivery.
replyWebhookUrl for inbound replies; must be http(s).webhookData (≤100 chars) is echoed back in reply webhooks.quotaRemaining.PIXELSMS_API_KEY – key your customers use.TEXTBELT_API_KEY – your upstream provider key.PIXELSMS_ALLOWED_ORIGINS – optional CORS allowlist (comma separated).Email support@pixelsms.vercel.app. For status updates check status.pixelsms.com.