SMS API Documentation

This document provides in-depth instructions on how to send & receive text messages using the TextBetter API. We make it easy with flexible end points, on-demand reports, and instant integration capabilities. Ready to dig in?
Incoming Messages (V2)Outgoing Messages (V2)

Incoming SMS Messages

POST      Incoming SMS V2


Introduction

Incoming Messages are sent to Customer’s Endpoint

Metadata

Method POST
Payload Location / Type Body / JSON
URL This is provided to us by you

Body

KEY 

TYPE 

DESCRIPTION 

id 

String 

Our unique identifier for a message 

to 

String 

Your phone number the message was sent to. Usual Format: [Country Code][Area Code][Number] 

from 

String 

Who sent you the message. Usual Format: [Country Code][Area Code][Number] 

timestamp 

Integer 

EPOCH UTC time of when we received the message 

type 

String 

ENUM <SMS/MMS> 

text 

String 

The body of the message 

contentTypes 

String Array 

The MIME Type of image(s)      [“image/jpeg”,”image/jpeg”] 

images 

StringArray 

A base64 string of image(s)  [“base64 image”,” base64  image”] 

filename 

String Array 

an array of image names      [“testfile.jpeg”,”testfile2.jpeg”] 

Sample Payloads

SMS

 { 
        "id": "123", 
        "to": "18003221112", 
        "from": "14077773456", 
        "timestamp": "1666798041", 
        "type": "SMS", 
        "text": "Hello World" 
    }

MMS

      { 
        "id": "123", 
        "to": "18003221112", 
        "from": "14077773456", 
        "timestamp": "1666798041", 
        "type": "MMS", 
        "text": "", 
        "images": [ 
            { 
                "Base64": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=", 
                "type": "image/png" 
            } 
        ] 
    }

Response Requirements

We do not read your response body but we do require a status code response of 200 to mark it successfully sent on our side.

Outgoing SMS Messages

POST      Send SMS V2

Metadata

Method  POST 
Payload Location / Type  Body / JSON 
URL  https://outgoingapi.azurewebsites.net/api/SendOutgoingMessages 

 

URL Parameters

Code  hr1oXwI06ECDoqvGKgaGnc60OyoSFQU7sFII5o1DDy5mAzFuGTeLHQ== 
  Static code to access Azure Function; will not change unless IT tells you it has

 

Body

fromNumber    Your text enabled phone number you want the message sent from. Format: [Country Code][Area Code][Number] 
toNumber  Array  Array<String> of phone numbers you wish to send your message to. 
toNumber[n]  String  The phone number you want the message sent to. Usual Format: [Country Code][Area Code][Number] 
body  String  The body of the message 
APIKey  String  Enter the API Key our team provided you 
filenames  String Array  An array of objects containing a list of images sent . Ex:  [“testfile.jpeg”,”testfile2.jpeg”]  
images  String Array  A base64 encoded string of the image. Ex: [“base64 image”,” base64 image”] 
contentTypes  String Array  The MIME Type of the image. Ex: [“image/jpeg”,”image/jpeg”]   

Sample Payloads

SMS

curl --location 'https://outgoingapi.azurewebsites.net/api/SendOutgoingMessages?code=hr1oXwI06ECDoqvGKgaGnc60OyoSFQU7sFII5o1DDy5mAzFuGTeLHQ%3D%3D' \
--header 'Content-Type: application/json' \
--data '{
    "fromNumber": "15166565110",
    "toNumber": ["13195199900"],
    "body": "This is a V2 Test G",
    "APIKey": "x_notrealapikey"
}

MMS

curl --location 'https://outgoingapi.azurewebsites.net/api/SendOutgoingMessages?code=hr1oXwI06ECDoqvGKgaGnc60OyoSFQU7sFII5o1DDy5mAzFuGTeLHQ%3D%3D' \
--header 'Content-Type: application/json' \
--data '{
    "fromNumber": "15166565110",
    "toNumber": ["13195199900"],
    "body": "This is a V2 Test F",
    "APIKey": "x_notrealapikey",
    "filenames": ["testimg.jpg"],
    "images": ["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"
    ],
    "contentTypes": ["image/jpeg"]
}

Payload Response

We do not read your response body but we do require a status code response of 200 to mark it successfully sent on our side.

SUCCESSFULLY SENT

Successfully sent status code: 201

    { 
        "message": "Valid Message" 
    }

FAILURE OUTCOME

Failure outcome status code: 404

  { 
        "message": "missing parameter:toNumber" 
    }

Example Error Response

These messages will appear in the JSON response key of “message”.

missing parameter:toNumber 
missing parameter:fromNumber 
missing parameter:body 
missing parameter:APIKey 
Invalid KEY 
Invalid DID 
Invalid To Number 
Invalid Message 
Opt-Out 
Invalid Key/Company Combination