Skip to Content
Python

Python

Welcome to the ReSMS Python integration guide.

This guide explains how you can quickly and securely send SMS messages using the ReSMS API in your Python applications.

Features

  • Send SMS: Send text messages to phone numbers.
  • Send OTP: Generate and send one-time passwords (OTP) for user verification.
  • Verify OTP: Validate OTP codes entered by users.

Installation

First, install our official ReSMS Python SDK:

pip install @resms/sdk

Setup

You need to get an API key on ReSMS Dashboard. Then import the package and set your API key.

import resms resms.api_key = "re_12345" # Replace with your actual API key

Send SMS

Here’s a minimal example to send an SMS:

import resms resms.api_key = "re_12345" resms.sms.send(to="+33612345678", message="Welcome to ReSMS!")

Parameters

Possible parameters for sending an SMS:

FieldTypeRequiredDescription
toStringThe phone number of the recipient, in international format (E.164)
messageStringThe SMS content (160 characters max)
sender_idStringThe alphanumeric sender name displayed

Response

Success Response

The sms.send() method returns a dictionary when the SMS has been successfully sent. The response format is:

{ "data": { "messageId": "string" } }

Error Response

In case of an error, the SDK raises an HTTP exception with the error details. You can handle errors like this:

import resms import requests try: resms.sms.send(to="+33612345678", message="Welcome to ReSMS!") except requests.exceptions.HTTPError as e: print(f"Error: {e.response.json()}")

The sms.send() method may return the following errors:

NameMessage
COUNTRY_DETECTION_FAILEDUnable to detect country code from phone number
PHONE_NUMBER_PARSING_FAILEDInvalid phone number
INSUFFICIENT_SMS_QUOTAFailed to update message status
MESSAGE_STATUS_UPDATE_FAILEDFailed to update message status

Send OTP

Here is a minimal example to send an OTP verification code to a phone number:

import resms resms.api_key = "re_12345" resms.otp.send( to="+33612345678", message="Your OTP code is {CODE}", )

Parameters

Possible parameters for sending an OTP:

FieldTypeRequiredDescriptionDefault Value
toStringThe phone number of the recipient, in international format (E.164)
messageStringThe SMS content (160 characters max). It must contain {CODE}.
sender_idStringThe alphanumeric sender name displayed
code_typeString ("numeric"| "alpha")The type of OTP code to generate"numeric"
code_lengthintThe length of the OTP code6
validity_minutesintThe validity period of the OTP in minutes.5

Response

Success Response

The otp.send() method returns a dictionary when the OTP has been successfully sent. The response format is:

{ "data": { "phoneNumber": "string", "expiresAt": "string" } }

Error Response

In case of an error, the SDK raises an HTTP exception with the error details. You can handle errors like this:

import resms import requests try: resms.otp.send(to="+33612345678", message="Your OTP code is {CODE}") except requests.exceptions.HTTPError as e: print(f"Error: {e.response.json()}")

The otp.send() method may return the following errors:

CodeHTTP StatusMessage
INVALID_MESSAGE_TEMPLATE400Message template must contain {CODE} placeholder
INVALID_CODE_LENGTH400Code length must be between 4 and 16
INVALID_VALIDITY_DURATION400Validity duration must be between 1 minute and 1440 minutes (24 hours)
TOO_MANY_OTP_REQUESTS429Too many OTP requests for this phone number

Verify OTP

To verify an OTP code entered by the user:

import resms resms.api_key = "re_12345" response = resms.otp.verify( to="+33612345678", code="123456" ) print(f"OTP verified successfully: {response['data']['otpId']}")

Parameters

Possible parameters for verifying an OTP:

FieldTypeRequiredDescription
toStringThe phone number the OTP was sent to, in international format (E.164)
codeStringThe verification code entered by the user

Response

Success Response

The otp.verify() method returns a dictionary indicating whether the OTP is valid or not. The response format is:

{ "data": { "otpId": "string", "phoneNumber": "string", "verifiedAt": "string" } }

Error Response

In case of an error, the SDK raises an HTTP exception with the error details. You can handle errors like this:

import resms import requests try: response = resms.otp.verify(to="+33612345678", code="123456") print(f"OTP verified successfully: {response['data']['otpId']}") except requests.exceptions.HTTPError as e: print(f"Error: {e.response.json()}")

The otp.verify() method may return the following errors:

CodeHTTP StatusMessage
OTP_NOT_FOUND404OTP not found
OTP_INVALID400OTP is invalid
OTP_EXPIRED400OTP has expired
OTP_ALREADY_VERIFIED400OTP already verified
INVALID_OTP_CODE400Invalid OTP code

Have feedback, found a bug, or want to suggest a feature?

Last updated on