Prerequisites

In order to use the SMS API, you need the following.

Basic request format

Sending an SMS is done with a simple POST request to the API. There are three mandatory parameters: from, to, and message.

import requests

requests.post(
    "https://api.46elks.com/a1/SMS",
    auth = (API_USERNAME, API_PASSWORD),
    data = {
        "from": "ElkCo",
        "to": "+46766861004",
        "message": "It's cold outside, bring a sweater!"
    }
)

The from parameter should be either an E.164 formatted number or a Text Sender ID. The to parameter should be the E.164 formatted number of the recipient.

Message splitting

Messages that don't fit in a single SMS part will be split into multiple parts automatically by the API. The recipient will still see this as a single, coherent, SMS, so you don't really need to worry about it.

Delivery reports

You can specify a webhook URL that we'll post to whenever the delivery status of your message changes. This is done by setting the whendelivered parameter in the API request.

import requests

requests.post(
    "https://api.46elks.com/a1/SMS",
    auth = (API_USERNAME, API_PASSWORD),
    data = {
        "from": "ElkCo",
        "to": "+46766861004",
        "message": "It's cold outside, bring a sweater!",
        "whendelivered": "http://yourapp.io/elks/dlrs"
    }
)

This will result in a x-www-form-urlencoded HTTP POST request to the given URL in the following format, whenever the delivery status of your message changes.

Parameter Type Description
id string The unique id of the message in our systems.
status string Either ”delivered” or ”failed”.
delivered string The delivery time in UTC. Only included if status is set to delivered.

For full details, see the API reference.

Pricing

We bill you (and are billed ourselves by the operators) per SMS part sent. Messages that don't fit in a single part will be split up into several parts and you'll be billed for each part. Our engineers have written a comprehensive Knowledge Base article that covers all the details, but a good rule of thumb is:

This is just a rough estimate — the actual number of characters that fit may be more or less than that (it's an encoding thing). Again, be sure to read the Knowledge Base article if this is important to you or get in touch.

Up-to-date prices can be found on our pricing page. We offer volume discounts to customers that send more than 50 000 SMS / month.

Coverage

You can use 46elks to send SMS to almost anywhere in the world. The flags below represent all 219 countries and provinces we currently have coverage in. Our numbers team is really good so don't hestiate to reach out to support if you have special needs — if there's a telco out there, they'll find a way to reach it.

🇦🇫 🇦🇱 🇩🇿 🇦🇩 🇦🇴 🇦🇮 🇦🇬 🇦🇷 🇦🇲 🇦🇼 🇦🇺 🇦🇹 🇦🇿 🇧🇸 🇧🇭 🇧🇩 🇧🇧 🇧🇾 🇧🇪 🇧🇿 🇧🇯 🇧🇲 🇧🇹 🇧🇴 🇧🇶 🇧🇦 🇧🇼 🇧🇻 🇧🇷 🇮🇴 🇧🇳 🇧🇬 🇧🇫 🇧🇮 🇰🇭 🇨🇲 🇨🇦 🇨🇻 🇰🇾 🇨🇫 🇹🇩 🇨🇱 🇨🇳 🇨🇽 🇨🇨 🇨🇴 🇰🇲 🇨🇩 🇨🇩 🇨🇰 🇨🇷 🇭🇷 🇨🇺 🇨🇾 🇨🇿 🇨🇮 🇩🇰 🇩🇯 🇩🇲 🇩🇴 🇪🇨 🇪🇬 🇸🇻 🇬🇶 🇪🇪 🇪🇹 🇫🇰 🇫🇴 🇫🇯 🇫🇮 🇫🇷 🇬🇫 🇹🇫 🇬🇦 🇬🇲 🇬🇪 🇩🇪 🇬🇭 🇬🇮 🇬🇷 🇬🇱 🇬🇩 🇬🇵 🇬🇺 🇬🇹 🇬🇬 🇬🇳 🇬🇼 🇬🇾 🇭🇹 🇭🇲 🇭🇳 🇭🇰 🇭🇺 🇮🇸 🇮🇳 🇮🇩 🇮🇷 🇮🇶 🇮🇪 🇮🇲 🇮🇱 🇮🇹 🇯🇲 🇯🇵 🇯🇪 🇯🇴 🇰🇿 🇰🇪 🇰🇼 🇰🇬 🇱🇦 🇱🇻 🇱🇧 🇱🇸 🇱🇷 🇱🇾 🇱🇮 🇱🇹 🇱🇺 🇲🇴 🇲🇰 🇲🇬 🇲🇼 🇲🇾 🇲🇻 🇲🇱 🇲🇹 🇲🇶 🇲🇷 🇲🇺 🇾🇹 🇲🇽 🇲🇩 🇲🇳 🇲🇪 🇲🇸 🇲🇦 🇲🇿 🇳🇦 🇳🇵 🇳🇱 🇳🇿 🇳🇮 🇳🇪 🇳🇬 🇳🇴 🇴🇲 🇵🇰 🇵🇸 🇵🇦 🇵🇬 🇵🇾 🇵🇭 🇵🇱 🇵🇹 🇵🇷 🇶🇦 🇷🇴 🇷🇺 🇷🇼 🇷🇪 🇧🇱 🇰🇳 🇱🇨 🇻🇨 🇼🇸 🇸🇲 🇸🇹 🇸🇦 🇸🇳 🇷🇸 🇸🇨 🇸🇱 🇸🇬 🇸🇰 🇸🇮 🇸🇧 🇸🇴 🇿🇦 🇬🇸 🇰🇷 🇸🇸 🇪🇸 🇱🇰 🇸🇩 🇸🇷 🇸🇯 🇸🇿 🇸🇪 🇨🇭 🇸🇾 🇹🇼 🇹🇯 🇹🇿 🇹🇭 🇹🇱 🇹🇬 🇹🇴 🇹🇹 🇹🇳 🇹🇷 🇹🇲 🇹🇨 🇺🇬 🇺🇦 🇦🇪 🇬🇧 🇺🇸 🇺🇾 🇺🇿 🇻🇪 🇻🇳 🇻🇬 🇻🇮 🇾🇪 🇿🇲 🇿🇼 🇦🇽

Throughput

Default maximum throughput is 100 SMS per minute per account. Additional messages will be queued and sent in-order. Contact support if you require additional throughput.

More info

Get in touch with our support and we'll help you out.