Legacy HTTP
The sendtmsg.php interface for existing integrations. This API has been available since 2009 and remains fully supported for backwards compatibility.
Tip
For new integrations, we recommend using the modern REST API with JSON responses and Bearer token authentication. See REST API.
Endpoint
URL
https://www.teammessage.de/mbr/sendtmsg.php
Supports both GET and POST requests. GET is common for simple integrations; POST is recommended for longer messages or when URL length limits apply.
Required Parameters
| Parameter | Description | Example |
|---|---|---|
tm |
Team ID (customer number) | 100042 |
tn |
Team list email address | myteam@tmsg.de |
msg |
Message text (URL-encoded) | Server+alert |
Optional Parameters
| Parameter | Description | Example |
|---|---|---|
tsms |
Recipient phone number(s), comma-separated | +4917012345678 |
fsms |
Sender ID (alphanumeric max. 11 chars, or numeric max. 16 digits) | ALERT |
fm |
Sender email for authentication (if authorized senders configured) | server@example.com |
ky |
Keyword for authentication (if configured for the team list) | secret123 |
date |
Scheduled send date (DD.MM.YY or YYYY-MM-DD) | 25.12.25 |
time |
Scheduled send time (HH:MM) | 08:00 |
test |
Test mode – validates parameters without sending (set to 1) | 1 |
utf |
Message is UTF-8 encoded (set to 1) | 1 |
flash |
Send as flash SMS (displays immediately, set to 1) | 1 |
Response Codes
The API returns a plain text response with a status code:
| Code | Meaning |
|---|---|
+1 |
Success – SMS accepted for delivery |
-1 |
Invalid team ID (tm parameter) |
-2 |
Invalid team name (tn parameter) |
-3 |
Invalid sender email (fm parameter) |
-4 |
Message too short |
-5 |
No message provided |
-10 |
Account not found (check tm, tn, ky) |
-11 |
SMS sending locked or invalid phone number |
-12 |
IP address not in whitelist |
Examples
Basic SMS
Send to team list
curl "https://www.teammessage.de/mbr/sendtmsg.php?tm=100042&tn=myteam@tmsg.de&msg=Server+alert"
Direct to Phone Number
Send to specific recipient
curl "https://www.teammessage.de/mbr/sendtmsg.php?tm=100042&tn=myteam@tmsg.de&tsms=+4917012345678&msg=Direct+message"
With Authentication
Using keyword authentication
curl "https://www.teammessage.de/mbr/sendtmsg.php?tm=100042&tn=myteam@tmsg.de&ky=secret123&msg=Authenticated+message"
Scheduled Sending
Send at specific date and time
curl "https://www.teammessage.de/mbr/sendtmsg.php?tm=100042&tn=myteam@tmsg.de&msg=Reminder&date=25.12.25&time=08:00"
Multiple Recipients
Comma-separated phone numbers
curl "https://www.teammessage.de/mbr/sendtmsg.php?tm=100042&tn=myteam@tmsg.de&tsms=+4917012345678,+4917098765432&msg=Group+alert"
Custom Sender ID
Alphanumeric sender
curl "https://www.teammessage.de/mbr/sendtmsg.php?tm=100042&tn=myteam@tmsg.de&tsms=+4917012345678&fsms=ALERT&msg=Server+down"
Test Mode
Validate without sending
curl "https://www.teammessage.de/mbr/sendtmsg.php?tm=100042&tn=myteam@tmsg.de&msg=Test&test=1"
Phone Number Format
Phone numbers can be provided in various formats. They are normalized automatically:
| Input | Normalized |
|---|---|
+4917012345678 |
004917012345678 |
004917012345678 |
004917012345678 |
017012345678 |
004917012345678 |
0170-123 456 78 |
004917012345678 |
Note
Spaces, dashes, and parentheses are automatically removed. Numbers without country code are assumed to be German (+49).
Character Encoding
By default, messages are expected in ISO-8859-15 encoding. For special characters or non-Latin scripts:
- Use the utf=1 parameter for UTF-8 encoded messages
- URL-encode special characters (e.g., ä → %C3%A4 for UTF-8)
- The system auto-detects UTF-8 in most cases
UTF-8 message with umlauts
curl "https://www.teammessage.de/mbr/sendtmsg.php?tm=100042&tn=myteam@tmsg.de&msg=M%C3%BCnchen+Gr%C3%BC%C3%9Fe&utf=1"
IP Whitelist
For security, you can restrict API access to specific IP addresses. Configure the whitelist in your team list settings.
Supported formats:
- Single IP:
192.168.1.100 - CIDR notation:
192.168.1.0/24 - Subnet mask:
10.0.0.0/255.255.255.0 - Multiple entries:
192.168.1.100, 10.0.0.0/24
Note
If a whitelist is configured and your IP is not included, you receive error -12.
Integration Examples
Shell Script (Nagios/Icinga)
#!/bin/bash
TEAM_ID="100042"
TEAM_NAME="monitoring@tmsg.de"
RECIPIENT="$CONTACTPAGER$"
MESSAGE="$NOTIFICATIONTYPE$: $HOSTALIAS$ $SERVICEDESC$ is $SERVICESTATE$"
curl -s "https://www.teammessage.de/mbr/sendtmsg.php?tm=${TEAM_ID}&tn=${TEAM_NAME}&tsms=${RECIPIENT}&msg=$(echo -n "$MESSAGE" | jq -sRr @uri)"
Python
import requests
from urllib.parse import urlencode
params = {
'tm': '100042',
'tn': 'myteam@tmsg.de',
'tsms': '+4917012345678',
'msg': 'Alert from Python script'
}
response = requests.get(
'https://www.teammessage.de/mbr/sendtmsg.php',
params=params
)
if '+1' in response.text:
print('SMS sent successfully')
else:
print(f'Error: {response.text}')
PHP
<?php
$params = http_build_query([
'tm' => '100042',
'tn' => 'myteam@tmsg.de',
'tsms' => '+4917012345678',
'msg' => 'Alert from PHP'
]);
$response = file_get_contents(
"https://www.teammessage.de/mbr/sendtmsg.php?{$params}"
);
if (strpos($response, '+1') !== false) {
echo "SMS sent successfully\n";
} else {
echo "Error: {$response}\n";
}
Migration to REST API
Consider migrating to the modern REST API for:
- JSON responses for easier parsing
- Bearer token authentication (more secure)
- IPv6 support
- OpenAPI/Swagger documentation
- Additional endpoints (delivery status, credit balance)
See REST API for the modern API documentation.