Skip to main content

SMSEdge API package for Python development

Project description

SmsEdge API Python

Pip package for interacting SMSEdge API functions. You can browse our documentation for more details: https://developers.smsedge.io/v1/reference

Installation

  • Please install cerberus package by pip to your project
pip install cerberus

Initialization

Use the API Key from your account (https://app.smsedge.io/users/) to create a new SmsEdgeApi instance.


from src.sms_edge_api import SmsEdgeApi
  • To use date please import datetime library
import datetime
  • Make an object from the class.
api = SmsEdgeApi('') # api_key is required, For example: K_xGA286GbLxGf7zWM
  • Then you can use the API.

SMS

Send A single SMS

# Params details:

# Required params:
# from, The sender of the SMS (11 characters max)
# to, SMS receiver phone number, in international format (f.e 12127678347 - US number)
# text, Text of SMS

# Optional params:
# name, Value for custom name variable in text provided
# email, Value for custom email variable in text provided
# country_id, ID of country. Recommended to specify this parameter if phone number provided in local format
# reference, Unique value per message, to prevent double submission
# shorten_url, If true will search for a URL (http:#example.com) in the message and will shorten it so it’ll be click trackable. Will short the first URL in the text
# list_id, Phone number of recipient can be added to list with this ID
# transactional, show Label for transactional messages
# preferred_route_id, Use this param if you want to send SMS via specific Route
# delay, If you want to delay sending, set this parameter (in seconds)

fields = {
    'from': 'SNDR_ID',
    'to': 12127678347,
    'text': 'Lorem Ipsum is simply dummy text of the printing and typesetting industry',
    'name': 'John Doe',
    'email': 'johndoe@email.com',
    'country_id': 1,  # List of countries on get_countries() function.
    'reference': 'some_string',
    'shorten_url': True,  # By default false.
    'list_id': 1,
    'transactional': 1,
    'preferred_route_id': 1,  # List of routes on get_routes() function.
    'delay': 10  # Delay by seconds
}

sms = api.send_single_sms(fields)
print(sms)

Result:
{
  "success": true,
  "data": {
    "id": 19591,
    "created": "2018-02-14 17:35:40",
    "from": "smsapi",
    "to": 6598943560,
    "country_id": 192,
    "country_name": "Singapore",
    "verify_local": 1,
    "shorten_url": 1,
    "list_id": 2070,
    "parts": 1,
    "reference": null,
    "clicked": false,
    "text": "Dear John (john@test.com), please visit my page http:#page.com/",
    "status": "sent"
  },
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 17:35:40"
  },
  "api": {
    "version": "v1",
    "module": "sms",
    "function": "send-single"
  },
  "user": {
    "id": 64
  }
}

Bulk SMS Sending

# Params details:

# Required params:
# list_id, Messages will be sent to all good numbers from list with this ID
# from, The sender of the SMS (11 characters max)

# text, Text of SMS -> Usage of custom variables in text: name, lname, email, custom1, custom2, custom3, custom4, custom5
# For example: Hello, {{{name}}} {{{lname}}}! Please visit my site: http:#smsedge.io/

# Optional params:
# shorten_url, If true will search for a URL (http:#example.com) in the message and will shorten it so it’ll be click trackable. Will short the first URL in the text
# preferred_route_id, Use this param if you want to send SMS via specific Route

fields = {
    'list_id': 1,
    'from': 'SNDR_ID',
    'text': 'Lorem Ipsum is simply dummy text of the printing and typesetting industry',
    'preferred_route_id': 1  # List of routes on get_routes() function.
}

list_messages = api.send_list(fields)
print(list_messages)

Result:

{
  "success": true,
  "data": [
    "7 message(s) have been sent"
  ],
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 17:46:08"
  },
  "api": {
    "version": "v1",
    "module": "sms",
    "function": "send-list"
  },
  "user": {
    "id": 64
  }
}

Get SMS Information

# Params details:

# Required params:
# ids, Comma-separated SMS ids

fields = {
    'ids': '1,4,27'
}

sms_info = api.get_sms_info(fields)
print(sms_info)

Result:

{
  "success": true,
  "data": [
    {
      "id": 18839,
      "created": "2018-02-11 10:14:30",
      "from": "smsapi",
      "to": 972535000000,
      "country_id": 104,
      "country_name": "Israel",
      "verify_local": 1,
      "shorten_url": 1,
      "list_id": null,
      "parts": 1,
      "reference": "some-external-id-1",
      "clicked": false,
      "cost": 0.006,
      "original_url": "http:#page.com/",
      "shortened_url": "http:#sho.rt/1ei4h",
      "text": "Please visit my page: http:#sho.rt/1ei4h",
      "status": "sent",
      "dlr_status": "DELIVERED"
    },
    {
      "id": 18875,
      "created": "2018-02-13 11:52:17",
      "from": "smsapi",
      "to": 972535000001,
      "country_id": 104,
      "country_name": "Israel",
      "verify_local": 1,
      "shorten_url": 1,
      "list_id": 2065,
      "parts": 1,
      "reference": "some-external-id-1",
      "clicked": false,
      "cost": 0.006,
      "original_url": "http:#page.com/",
      "shortened_url": "http:#sho.rt/1ei4h",
      "text": "Please visit my page: http:#sho.rt/1ei4h",
      "status": "waiting",
      "dlr_status": "QUEUED"
    }
  ],
  "errors": [
    "SMS with specified id [905] was not found"
  ],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 17:10:30"
  },
  "api": {
    "version": "v1",
    "module": "sms",
    "function": "get"
  },
  "user": {
    "id": 64
  }
}

LISTS OF NUMBERS

Create A New List

# Params details:

# Required params:
# name, Name of the new list

fields = {
    'name': 'My list Python'
}

created_list = api.create_list(fields)
print(created_list)

Result:

  "success": true,
  "data": {
    "id": 2071,
    "name": "Test List",
    "description": null,
    "status": "Finished",
    "created": "2018-02-14 15:39:39"
  },
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 15:39:39"
  },
  "api": {
    "version": "v1",
    "module": "lists",
    "function": "create"
  },
  "user": {
    "id": 64
  }
}

Delete A List

# Params details:

# Required params:
# id, ID of list that wanted to be deleted

fields = {
    'id': 46502
}

delete_list = api.delete_list(fields)
print(delete_list)

Result:

{
  "success": true,
  "data": {
    "message": "List [2071] has been deleted successfully"
  },
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 15:43:00"
  },
  "api": {
    "version": "v1",
    "module": "lists",
    "function": "delete"
  },
  "user": {
    "id": 64
  }
}

Get List Information

# Params details:

# Required params:
# id, ID of requested list

fields = {
    'id': 1
}

list_resource = api.get_list_info(fields)
print(list_resource)

Result:

{
  "success": true,
  "data": {
    "id": 2065,
    "name": "Test List",
    "description": null,
    "status": "Finished",
    "created": "2018-02-11 10:19:28",
    "counts": [
      {
        "country_id": "13",
        "country_name": "Australia",
        "numbers_total": "39",
        "numbers_good": "11",
        "numbers_bad": "3",
        "numbers_clickers": "0",
        "numbers_sent": "0",
        "numbers_hlr_progress": "0",
        "numbers_waiting": "0"
      },
      {
        "country_id": "226",
        "country_name": "United States",
        "numbers_total": "7",
        "numbers_good": "0",
        "numbers_bad": "0",
        "numbers_clickers": "0",
        "numbers_sent": "0",
        "numbers_hlr_progress": "0",
        "numbers_waiting": "0"
      }
    ]
  },
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 15:40:59"
  },
  "api": {
    "version": "v1",
    "module": "lists",
    "function": "info"
  },
  "user": {
    "id": 64
  }
}

Get All Lists

lists = api.get_all_lists()
print(lists)

Result:

{
  "success": true,
  "data": [
    {
      "id": 2070,
      "name": "Test List 1",
      "description": null,
      "status": "Finished",
      "created": "2018-02-12 14:49:37"
    },
    {
      "id": 2069,
      "name": "Test List 2",
      "description": null,
      "status": "Finished",
      "created": "2018-02-12 10:46:31"
    }
  ],
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 15:44:10"
  },
  "api": {
    "version": "v1",
    "module": "lists",
    "function": "getall"
  },
  "user": {
    "id": 64
  }
}

PHONE NUMBERS

Add A Number To List

# Params details:

# Required params:
# number, Phone number of recipient
# list_id, Number will be added to list with this ID

# Optional params:
# country_id, ID of country. Recommended to specify this parameter if phone number provided in local format
# name, Name of recipient
# email, E-mail of recipient

fields = {
    'number': '',
    'list_id': 1,
    'country_id': 1,
    'name': 'John Doe',
    'email': 'john_doe@email.com'
}

created_number = api.create_number(fields)
print(created_number)

Result:

{
  "success": true,
  "data": {
    "id": 31014558,
    "number": "61449980000",
    "number_normalized": "61449980000",
    "list_id": 2070,
    "country_id": 13,
    "country_name": "Australia",
    "created": "2018-02-14 15:53:00",
    "status": "good"
  },
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 15:53:00"
  },
  "api": {
    "version": "v1",
    "module": "numbers",
    "function": "create"
  },
  "user": {
    "id": 64
  }
}

Delete A Number

# Params details:

# Required params:
# ids, Comma-separated IDs of numbers to be deleted

fields = {
    'ids': '1,32,27'
}

deleted_numbers = api.delete_numbers(fields)
print(deleted_numbers)

Result:

{
  "success": true,
  "data": {
    "message": "1 number(s) have been deleted successfully"
  },
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 16:11:07"
  },
  "api": {
    "version": "v1",
    "module": "numbers",
    "function": "delete"
  },
  "user": {
    "id": 64
  }
}

Get Numbers

# Params details:

# Optional params:
# list_id, Numbers from list with this id will be return
# ids, Comma-separated IDs of numbers
# limit, Limit of numbers to be returned per request. Max: 1000
# offset, By specifying offset, you retrieve a subset of records starting with the offset value.

# At least one of parameters: List ID or IDs of numbers should be specified!.

fields = {
    'list_id': 1,
    'limit': 1000
}

numbers = api.get_numbers(fields)
print(numbers)

Result:

{
  "success": true,
  "data": [
    {
      "id": 31012550,
      "number": "9093190000",
      "number_normalized": "19093190000",
      "list_id": 2065,
      "country_id": 226,
      "country_name": "United States",
      "created": "2018-02-11 10:25:20",
      "created_via_api": true,
      "status": "bad"
    },
    {
      "id": 31012551,
      "number": "9093190000",
      "number_normalized": "19093190000",
      "list_id": 2065,
      "country_id": 226,
      "country_name": "United States",
      "created": "2018-02-11 10:25:26",
      "created_via_api": true,
      "status": "bad"
    }
  ],
  "errors": [],
  "pagination": {
    "limit": 2,
    "offset": 0,
    "total": 46
  },
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 15:59:35"
  },
  "api": {
    "version": "v1",
    "module": "numbers",
    "function": "get"
  },
  "user": {
    "id": 64
  }
}

Get Unsubscribers

unsubscribers = api.get_unsubscribers()
print(unsubscribers)

Result:

{
  "success": true,
  "data": [
    {
      "number": 123456789012,
      "unsubscribed": "2018-04-10 14:33:27"
    },
    {
      "number": 123456789013,
      "unsubscribed": "2018-04-10 15:51:08"
    },
    {
      "number": 123456789014,
      "unsubscribed": "2018-04-15 10:36:39"
    }
  ],
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-04-15 11:37:24"
  },
  "api": {
    "version": "v1",
    "module": "numbers",
    "function": "unsubscribers"
  },
  "user": {
    "id": 278
  }
}

ROUTES

Get All Routes

routes = api.get_routes()
print(routes)

Result: 

{
  "success": true,
  "data": [
    {
      "id": "119",
      "name": "Route 121",
      "country_id": "13",
      "country_name": "Australia",
      "price": 0.033
    },
    {
      "id": "119",
      "name": "Route 121",
      "country_id": "226",
      "country_name": "United States",
      "price": 0.012
    }
  ],
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-03-20 12:16:59"
  },
  "api": {
    "version": "v1",
    "module": "routes",
    "function": "getall"
  },
  "user": {
    "id": 64
  }
}

AUXILIARY TOOLS

Number Simple Verification

# Params details:

# Required params:
# number, Phone number that should be verified

# Optional params:
# country_id, ID of country. Recommended to specify this parameter if phone number provided in local format

fields = {
    'number': '12127678347',
    'country_id': 1
}

simple_verify = api.number_simple_verify(fields)
print(simple_verify)

Result:

{
  "success": true,
  "data": {
    "normalized_number": "61411390000",
    "national_number": "411390000",
    "country_id": 13,
    "country_name": "Australia"
  },
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-12 14:04:49"
  },
  "api": {
    "version": "v1",
    "module": "verify",
    "function": "number-simple"
  },
  "user": {
    "id": 64
  }
}

Number HLR Verification

# Params details:

# Required params:
# number, Phone number that should be verified

# Optional params:
# country_id, ID of country. Recommended to specify this parameter if phone number provided in local format


fields = {
    'number': '12127678347',
    'country_id': 1
}

hlr_verify = api.number_hlr_verify(fields)
print(hlr_verify)

Result: 

{
  "success": true,
  "data": {
    "normalized_number": "4799900000",
    "national_number": "99900000",
    "country_id": 160,
    "country_name": "Norway",
    "hlr": {
      "status": "bad",
      "operator": "",
      "raw_response": {
        "error": 0,
        "errorDescription": "No errors",
        "id": "470400000",
        "brand": "",
        "brand_name": "",
        "reference": "l4799900000",
        "msisdn": 4799900000,
        "network": "",
        "status": "failed",
        "details": {
          "imsi": "",
          "ported": 0
        }
      },
      "stage": "finished"
    }
  },
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 13:32:13"
  },
  "api": {
    "version": "v1",
    "module": "verify",
    "function": "number-hlr"
  },
  "user": {
    "id": 64
  }
}

Text Analyzing

# Params details:

# Required params:
# text, Text of SMS you want to verify before sending

fields = {
    'text': 'Lorem Ipsum is simply dummy text of the printing and typesetting industry'
}

text = api.text_analyzing(fields)
print(text)

Result:

{
  "success": true,
  "data": {
    "text": "My SMS text can be verified using this function. Please visit http:#smsedge.io/",
    "encoding": "GSM_7BIT",
    "current_length": 80,
    "max_length": 160,
    "messages_number": 1,
    "url_detected": true,
    "urls": [
      "http:#smsedge.io/"
    ]
  },
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 13:26:31"
  },
  "api": {
    "version": "v1",
    "module": "text",
    "function": "analyze"
  },
  "user": {
    "id": 64
  }
}

REPORTS

Sending Process Report

# Params details:

# Optional params:
# status, Filter result by SMS sending status. Available values: sent, waiting, failed
# date_from, Filter results by minimum date
# date_to, Filter results by maximum date
# limit, Limit of items to be returned per request. Max: 1000
# offset, By specifying offset, you retrieve a subset of records starting with the offset value.

fields = {
    'status': 'sent',
    'date_from': datetime.datetime(2018, 8, 11),
    'date_to': datetime.datetime(2018, 8, 19),
    'limit': 1000
}

process_report = api.get_sending_report(fields)
print(process_report)

Result:

{
  "success": true,
  "data": [
    {
      "id": 19581,
      "created": "2018-02-12 15:27:21",
      "from": "smsapi",
      "to": 6598800000,
      "country_id": 192,
      "country_name": "Singapore",
      "verify_local": 0,
      "shorten_url": 1,
      "list_id": 154,
      "parts": 1,
      "reference": null,
      "clicked": false,
      "cost": 0.0135,
      "original_url": "http:#page.com/",
      "shortened_url": "http:#sho.rt/1ei",
      "text": "Joe, visit http:#sho.rt/1ei",
      "status": "sent"
    },
    {
      "id": 19580,
      "created": "2018-02-12 15:29:21",
      "from": "smsapi",
      "to": 6598795001,
      "country_id": 192,
      "country_name": "Singapore",
      "verify_local": 0,
      "shorten_url": 1,
      "list_id": 154,
      "parts": 1,
      "reference": null,
      "clicked": false,
      "cost": 0.0135,
      "original_url": "http:#page.com/",
      "shortened_url": "http:#sho.rt/1ei",
      "text": "Ann, visit http:#sho.rt/1ei",
      "status": "waiting"
    }
  ],
  "errors": [],
  "pagination": {
    "limit": 2,
    "offset": 10,
    "total": 750
  },
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 13:14:55"
  },
  "api": {
    "version": "v1",
    "module": "reports",
    "function": "sending"
  },
  "user": {
    "id": 64
  }
}

Statistics

# Params details:

# Required Params:
# country_id, ID of Country
# date_from, Filter results by minimum date
# date_to, Filter results by maximum date. Maximal period - 7 days

# Optional params:
# route_id, ID of Route

fields = {
    'country_id': 1,  # List of countries on getCountries() function.
    'date_from': datetime.datetime(2018, 8, 11),
    'date_to': datetime.datetime(2018, 8, 19),
    'route_id': 1  # List of routes on getRoutes() function.
}

statistics = api.get_sending_stats(fields)
print(statistics)

Result:

{
    "success": true,
    "data": {
        "clicks": 0,
        "sent": 5,
        "ctr": 0,
        "cost": 0.06
    },
    "errors": [],
    "response": {
        "code": 200,
        "description": "OK",
        "date": "2019-07-11 10:33:02"
    },
    "api": {
        "version": "v1",
        "module": "reports",
        "function": "stats"
    },
    "user": {
        "id": 1000
    }
}

USER

User Details

user = api.get_user_details()
print(user)

Result:

{
  "success": true,
  "data": {
    "id": 64,
    "username": "api-client",
    "email": "api-client@smsedge.io",
    "balance": "191.721",
    "registered": "2017-04-26 14:46:33",
    "optout_link": "https:#goo.gl/6KsQT7"
  },
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 13:06:36"
  },
  "api": {
    "version": "v1",
    "module": "user",
    "function": "details"
  },
  "user": {
    "id": 64**
  }
}

REFERENCES

Getting All Available API Functions

functions = api.get_functions()
print(functions)

Result:

{
  "success": true,
  "data": [
    {
      "module": "lists",
      "function": "create",
      "url": "/v1/lists/create/"
    },
    {
      "module": "numbers",
      "function": "create",
      "url": "/v1/numbers/create/"
    },
    {
      "module": "sms",
      "function": "send-single",
      "url": "/v1/sms/send-single/"
    }
  ],
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 13:04:25"
  },
  "api": {
    "version": "v1",
    "module": "references",
    "function": "functions"
  },
  "user": {
    "id": 9
  }
}

Getting All HTTP Response Status Codes

http_statues = api.get_http_statuses()
print(http_statues)

Result:

{
  "success": true,
  "data": [
    {
      "code": 200,
      "description": "OK"
    },
    {
      "code": 401,
      "description": "Authentication Failure"
    },
    {
      "code": 404,
      "description": "Resource Not Found"
    }
  ],
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 13:00:42"
  },
  "api": {
    "version": "v1",
    "module": "references",
    "function": "statuses"
  },
  "user": {
    "id": 9
  }
}

Getting List Of Countries

countries = api.get_countries()
print(countries)

Result:

{
  "success": true,
  "data": [
    {
      "id": 44,
      "code_iso_aplha_2": "CN",
      "code_iso_aplha_3": "CHN",
      "code_phone": 86,
      "name": "China"
    },
    {
      "id": 226,
      "code_iso_aplha_2": "US",
      "code_iso_aplha_3": "USA",
      "code_phone": 1,
      "name": "United States"
    }
  ],
  "errors": [],
  "response": {
    "code": 200,
    "description": "OK",
    "date": "2018-02-14 12:57:07"
  },
  "api": {
    "version": "v1",
    "module": "references",
    "function": "countries"
  },
  "user": {
    "id": 152
  }
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smsedge_api_python-SMSEdge-1.1.0.tar.gz (11.8 kB view details)

Uploaded Source

File details

Details for the file smsedge_api_python-SMSEdge-1.1.0.tar.gz.

File metadata

  • Download URL: smsedge_api_python-SMSEdge-1.1.0.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3

File hashes

Hashes for smsedge_api_python-SMSEdge-1.1.0.tar.gz
Algorithm Hash digest
SHA256 5e4314cd26489df89bc9efcbffab76b328b296b1e904cb2a112aaeadf4adeec4
MD5 3bca0ed1c7fb436ff14d0b2a74a522ff
BLAKE2b-256 3dbcf867982dda72ff7d010d1d3413256ae6d9760fded266c206ed8b891bec01

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page