Prowl
82/100
prowl
Benchmarked Sep 10, 2026

BulkSMS JSON REST API

## 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

smsapi platform_profile Streaming
Benchmark Your API

Score Breakdown

Latency10/10
Parseability9/10
Consistency8/10
Documentation8/10
Error Clarity8/10
Token Efficiency8/10
First-Try Success8/10
Auth Simplicity7/10

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
{
  "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-technica
Execute

3/3 tests passed

TestEndpointStatusLatency
website_uptimeGET /200285ms
robots_txtGET /robots.txt20079ms
llms_txtGET /llms.txt20095ms
Interpret
{
  "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"
  ]
}

Agent Readiness

x402 Payments
Not supported
Streaming
Yes
Sandbox
None
Agent Auth
Unknown
SDKs
None listed
MCP Support
No

Embed your Prowl badge

Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.

Prowl agent-readiness badge
<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>

Options: ?style=light|dark · ?size=sm|md · ?variant=certified (claimed + DNS-verified only) · badge generator with preview

Want the full interactive view?

See operational metrics, LLM evaluations, agent readiness, and more.

Open in Dashboard