## Overview The JSON REST API allows you to submit and receive [BulkSMS](https://www.bulksms.com/) messages. You can also get access to past messages and see your account profile. The base URL to us
Full LLM thinking from the 4-phase benchmark pipeline.
{
"service_type": "platform",
"base_url": "https://bulksms.com",
"auth_method": "api_key",
"auth_config": {
"type": "http_basic_or_token",
"notes": "BulkSMS JSON REST API uses HTTP Basic authentication with a username (API token ID) and password (API token secret). Tokens are created in the BulkSMS web account under 'API Tokens'.",
"documentation": "https://www.bulksms.com/developer/json/v1/"
},
"endpoints": [
{
"name": "Send SMS messages",
"method": "POST",
"path": "/messages",
"description": "Submit one or more SMS messages for delivery. Supports scheduling, sender ID overrides, delivery reports, and Unicode messages."
},
{
"name": "List sent messages",
"method": "GET",
"path": "/messages",
"description": "Retrieve previously submitted messages with filtering by date, status, and other query parameters."
},
{
"name": "Get message by ID",
"method": "GET",
"path": "/messages/{id}",
"description": "Retrieve details and delivery status for a specific message."
},
{
"name": "List received messages",
"method": "GET",
"path": "/received",
"description": "Retrieve inbound SMS messages received on a two-way number."
},
{
"name": "List delivery reports",
"method": "GET",
"path": "/messages/{id}/deltas",
"description": "Retrieve delivery status transitions for a message (queued, sent, delivered, failed)."
},
{
"name": "Account profile",
"method": "GET",
"path": "/profile",
"description": "Get account profile details including credits and account info."
},
{
"name": "List webhooks",
"method": "GET",
"path": "/webhooks",
"description": "List configured webhooks for inbound messages and delivery reports."
},
{
"name": "Create webhook",
"method": "POST",
"path": "/webhooks",
"description": "Configure a webhook to receive inbound messages or delivery reports via HTTP callback."
},
{
"name": "Delete webhook",
"method": "DELETE",
"path": "/webhooks/{id}",
"description": "Remove a configured webhook."
},
{
"name": "List sender IDs",
"method": "GET",
"path": "/sender-ids",
"description": "List the sender IDs available on the account."
},
{
"name": "Credit balance",
"method": "GET",
"path": "/profile/credits",
"description": "Check the current credit balance on the account."
},
{
"name": "Pricing bundle (public)",
"method": "GET",
"path": "https://www.bulksms.com/pricing/{currency}.json",
"description": "Public per-message pricing by destination in EUR, USD, GBP, or ZAR. No auth required."
},
{
"name": "Country coverage JSON (public)",
"method": "GET",
"path": "https://www.bulksms.com/coverage/countries/list/",
"description": "Public list of supported countries. No auth required."
},
{
"name": "Destination coverage / credit cost (public)",
"method": "GET",
"path": "https://www.bulksms.com/coverage/country/?destinationCountry={ISO2}&customerCurrency={CURRENCY}",
"description": "Public per-destination coverage and credit cost lookup."
},
{
"name": "VAT rates (public)",
"method": "GET",
"path": "https://www.bulksms.com/pricing/vat-rates.json",
"description": "Public VAT rate lookup by country."
}
],
"pricing_model": {
"type": "subscription",
"details": {
"model": "Pay-per-message with prepaid credits (no monthly subscription fee)",
"billing": "Prepaid credit balance; per-message rates vary by destination country",
"currencies": ["EUR", "USD", "GBP", "ZAR"],
"vat": "VAT applied based on customer billing country; rates published as JSON",
"pricing_docs": "https://www.bulksms.com/pricing/",
"pricing_json": "https://www.bulksms.com/pricing/{currency}.json"
}
},
"rate_limits": {
"documented": false,
"notes": "Public documentation does not state explicit per-second rate limits. Throughput is generally governed by account credit balance and destination operator throughput. Enterprise arrangements may apply."
},
"capabilities": [
"Send SMS messages to 200+ countries",
"Two-way SMS messaging with dedicated numbers",
"Message scheduling",
"Custom sender IDs",
"Unicode / multi-language SMS support",
"Delivery reports (per-message status transitions)",
"Inbound message retrieval",
"Webhooks for inbound messages and delivery status",
"Email-to-SMS integration",
"SMS landing pages",
"REST JSON API with HTTP Basic auth",
"OpenAPI specification and Postman collection",
"Pre-built integrations via Integration Gateway (Zapier, HubSpot, Salesforce, ActiveCampaign, Freshdesk, Mailchimp, Zoho)",
"Web app (Web to SMS) for non-technica3/3 tests passed
| Test | Endpoint | Status | Latency |
|---|---|---|---|
| website_uptime | GET / | 200 | 285ms |
| robots_txt | GET /robots.txt | 200 | 79ms |
| llms_txt | GET /llms.txt | 200 | 95ms |
{
"overall": 74,
"dimensions": {
"token_efficiency": 8.5,
"first_try_success": 8.0,
"response_parseability": 9.0,
"error_clarity": 7.5,
"doc_quality": 8.0,
"auth_simplicity": 7.0,
"latency": 9.5,
"consistency": 8.0
},
"pricing_normalized": {
"model": "pay_per_message_prepaid",
"monthly_subscription": false,
"currencies": ["EUR", "USD", "GBP", "ZAR"],
"public_pricing_json": "https://www.bulksms.com/pricing/{currency}.json",
"vat": "country-based, published as JSON"
},
"issues": [
"Auth uses HTTP Basic (API token/ID + secret) rather than modern OAuth or magic-link — slightly higher onboarding friction for agents",
"No llms.txt-specific API auth guidance surfaced; agent onboarding still requires account/credit setup",
"robots.txt disallows /pricing/all/ and /coverage/country-data/ which may block crawlers, though per-currency JSON endpoints remain accessible",
"No security headers observed on homepage responses",
"Prepaid credit model requires balance top-up before first successful send, adding a step to first-try success"
],
"recommendations": [
"Highlight the no-auth public pricing/coverage JSON endpoints prominently as agent-friendly discovery targets",
"Document a quickstart with a sandbox/test credit to enable a successful first API call without funding",
"Consider offering SSO or magic-link auth alongside HTTP Basic to reduce signup friction",
"Add security headers (HSTS, CSP) to improve trust signals",
"Expose a machine-readable OpenAPI reference directly in llms.txt for faster agent integration"
]
}Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.
<a href="https://prowl.world/service/bulksms-json-rest-api">
<img src="https://prowl.world/badge/bulksms-json-rest-api.svg" height="56" alt="Agent-readiness on Prowl">
</a>
See operational metrics, LLM evaluations, agent readiness, and more.
Open in Dashboard