Skip to main content

Netgsm Python SDK

Official Python SDK for Netgsm SMS API. With this SDK, you can send SMS, cancel sent SMS, query reports, and more.

Installation

pip install netgsm-sms

Usage

from netgsm import Netgsm

# Initialize the SDK
netgsm = Netgsm(
    username="YOUR_USERNAME",   # Your Netgsm username
    password="YOUR_PASSWORD",   # Your Netgsm password
    appname="YOUR_APP_NAME"     # Optional, your application name 
)

# Send SMS
response = netgsm.sms.send(
    msgheader="HEADER",
    messages=[
        {
            "msg": "Hello, this is a test message.",
            "no": "5XXXXXXXXX"
        }
    ]
)

print(response)

Features

  • SMS sending and cancellation
  • SMS report querying
  • SMS header listing
  • IYS filtering support
  • Advanced error handling

Documentation

For more detailed usage examples and complete API reference, see the documentation directory.

Examples

For more examples, see the examples directory.

Example Usage

from netgsm import Netgsm

netgsm = Netgsm(
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    appname="YOUR_APP_NAME"  # Optional
)

# Send SMS
response = netgsm.sms.send(
    msgheader="HEADER",
    messages=[
        {
            "msg": "Hello world!",
            "no": "5XXXXXXXXX"
        }
    ]
)

print(response)

Using Environment Variables (.env)

In the examples that come with the SDK, user credentials are read from the .env file. To run the example applications, create a .env file in the project root directory and add the following information:

NETGSM_USERNAME=YOUR_USERNAME
NETGSM_PASSWORD=YOUR_PASSWORD
NETGSM_MSGHEADER=YOUR_SMS_HEADER
NETGSM_APPNAME=YOUR_APP_NAME

You can start by copying the .env.example file:

cp .env.example .env

Then update the .env file with your own information.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Error Handling

The SDK provides an advanced error handling mechanism to manage various error conditions that the Netgsm API may return.

Error Types

from netgsm.exceptions.api_exception import (
    ApiException,           # Base API exception class
    HttpException,          # Base class for HTTP errors
    BadRequestException,    # HTTP 400 errors
    UnauthorizedException,  # HTTP 401 errors
    ForbiddenException,     # HTTP 403 errors
    NotFoundException,      # HTTP 404 errors
    NotAcceptableException, # HTTP 406 errors (Netgsm errors usually return this way)
    TimeoutException,       # Timeout errors
    ConnectionException,    # Connection errors
    ServerException         # HTTP 5XX server errors
)

Example Usage

from netgsm import Netgsm
from netgsm.exceptions.api_exception import ApiException, NotAcceptableException

# Initialize Netgsm client
netgsm = Netgsm(username="user", password="pass")

try:
    # Send SMS
    response = netgsm.sms.send(
        msgheader="HEADER",
        messages=[
            {
                "msg": "Test message",
                "no": "5XXXXXXXXX"
            }
        ]
    )
    print(f"SMS sent. JobID: {response.get('jobid')}")
except NotAcceptableException as e:
    # Error returned by Netgsm
    print(f"Netgsm error: {e.message}")
    print(f"HTTP status: {e.http_status}")
    print(f"Error code: {e.code}")
except ApiException as e:
    # General API error
    print(f"API error: {e.message}")

HTTP Status Codes

  • HTTP 200 (OK): Operation successful
  • HTTP 406 (Not Acceptable): Netgsm API errors (e.g., invalid JobID, invalid header)

Netgsm API Error Codes

The Netgsm API may return the following error codes with HTTP 406 status code:

Code Description
20 Could not be sent due to a problem in the message text or exceeded the standard maximum message character count
30 Invalid username, password or no API access permission. If IP restriction exists, request may have been made from an unauthorized IP
40 Message header (sender name) is not defined in the system
50 IYS controlled submissions cannot be made with your subscriber account
51 No IYS Brand information found for your subscription
60 Specified JobID not found
70 Invalid query. One of the parameters is incorrect or a required field is missing
80 Sending limit exceeded
85 Duplicate sending limit exceeded. Cannot create more than 20 tasks for the same number within 1 minute

The SDK automatically recognizes these error codes and includes the relevant description in the NotAcceptableException. If the error code is not found in the table above, it is reported as "Undefined error code".

Error Codes Example

For an example of how to catch and handle different error codes, see the Error Codes Example.

try:
    response = netgsm.sms.send(...)
except NotAcceptableException as e:
    if e.code == "40":
        print("Message header is not defined!")
    elif e.code == "30":
        print("Invalid credentials or no API access!")
    else:
        print(f"Netgsm error: {e.message}")

For more detailed information, see the Error Handling Example.

Metadata

Release files for netgsm-sms 1.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for netgsm-sms 1.1.2
File Size Uploaded
netgsm_sms-1.1.2.tar.gz 24.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for netgsm-sms 1.1.2
File Interpreter ABI Platform
netgsm_sms-1.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 35.9 kB

Release files / netgsm_sms-1.1.2.tar.gz

Download URL netgsm_sms-1.1.2.tar.gz
Size 24.7 kB
Tags Source
SHA-256 checksum
How to use checksums
5a27427ecc05af3a6f86a114fa0e25586721f95619decf3950a3a485be9e8992
BLAKE2b-256 checksum
How to use checksums
342f54c0893106153b4c8516ada830d02fa3c0892eb507f9cd5d3fb5a9be76a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.4

Release files / netgsm_sms-1.1.2-py3-none-any.whl

Download URL netgsm_sms-1.1.2-py3-none-any.whl
Size 11.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9e7dba40bca09f6f47c0686d28249dc2bb091c882e932f24f4af436e1a02fb25
BLAKE2b-256 checksum
How to use checksums
34c611e0d8f9ea007cb19a7754c0f0ec6e83813ebf63b50a4e4eb286b99617e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.4

Release history Release notifications | RSS feed

This release

1.1.2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page