Send SMS
curl --request POST \
--url https://app.famulor.de/api/user/sms \
--header 'Content-Type: application/json' \
--data '
{
"from": 123,
"to": "<string>",
"body": "<string>"
}
'import requests
url = "https://app.famulor.de/api/user/sms"
payload = {
"from": 123,
"to": "<string>",
"body": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({from: 123, to: '<string>', body: JSON.stringify('<string>')})
};
fetch('https://app.famulor.de/api/user/sms', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.famulor.de/api/user/sms",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'from' => 123,
'to' => '<string>',
'body' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.famulor.de/api/user/sms"
payload := strings.NewReader("{\n \"from\": 123,\n \"to\": \"<string>\",\n \"body\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.famulor.de/api/user/sms")
.header("Content-Type", "application/json")
.body("{\n \"from\": 123,\n \"to\": \"<string>\",\n \"body\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.de/api/user/sms")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"from\": 123,\n \"to\": \"<string>\",\n \"body\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "SMS sent successfully",
"data": {
"sms_id": "SMS_67890",
"from": "+4912345678",
"to": "+4915123456789",
"body": "Hello! This is a test SMS from Famulor.",
"segments": 1,
"cost": 0.05,
"currency": "EUR",
"status": "sent"
}
}
{
"message": "Invalid phone number format"
}
{
"message": "Insufficient balance to send SMS"
}
{
"message": "Phone number is not SMS-capable"
}
{
"message": "From number not found"
}
{
"message": "Failed to send SMS",
"error": "SMS service temporarily unavailable"
}
SMS
Send SMS
Send an SMS message using your Famulor phone number via API. Trigger transactional or follow-up texts after AI voice calls, lead capture or campaigns.
POST
/
api
/
user
/
sms
Send SMS
curl --request POST \
--url https://app.famulor.de/api/user/sms \
--header 'Content-Type: application/json' \
--data '
{
"from": 123,
"to": "<string>",
"body": "<string>"
}
'import requests
url = "https://app.famulor.de/api/user/sms"
payload = {
"from": 123,
"to": "<string>",
"body": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({from: 123, to: '<string>', body: JSON.stringify('<string>')})
};
fetch('https://app.famulor.de/api/user/sms', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.famulor.de/api/user/sms",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'from' => 123,
'to' => '<string>',
'body' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.famulor.de/api/user/sms"
payload := strings.NewReader("{\n \"from\": 123,\n \"to\": \"<string>\",\n \"body\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.famulor.de/api/user/sms")
.header("Content-Type", "application/json")
.body("{\n \"from\": 123,\n \"to\": \"<string>\",\n \"body\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.de/api/user/sms")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"from\": 123,\n \"to\": \"<string>\",\n \"body\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "SMS sent successfully",
"data": {
"sms_id": "SMS_67890",
"from": "+4912345678",
"to": "+4915123456789",
"body": "Hello! This is a test SMS from Famulor.",
"segments": 1,
"cost": 0.05,
"currency": "EUR",
"status": "sent"
}
}
{
"message": "Invalid phone number format"
}
{
"message": "Insufficient balance to send SMS"
}
{
"message": "Phone number is not SMS-capable"
}
{
"message": "From number not found"
}
{
"message": "Failed to send SMS",
"error": "SMS service temporarily unavailable"
}
Famulor 1.0 API (legacy). This page applies only to Famulor 1.0 (
app.famulor.de) and is retained for legacy compatibility. For the current platform, use the Famulor 2.0 API reference.Request Body
integer
required
The ID of your phone number from which the SMS will be sent (must be SMS-capable)
string
required
The recipient’s phone number in international format (e.g., “+4915123456789”)
string
required
The SMS message content (max. 300 characters)
Response Fields
string
Success message confirming that the SMS was sent
object
Additional data about the sent SMS
Error Responses
object
Show Error Details
Show Error Details
string
Error message describing the issue (invalid phone number, insufficient balance, etc.)
object
Notes
- The sender phone number must belong to the authenticated user
- The sender phone number must be SMS-capable
- The phone number subscription must be active (not expired)
- Sufficient account balance is required to cover SMS costs
- Phone numbers are automatically formatted to E.164 format
- SMS costs vary depending on the destination country and are charged per segment
- Long messages can be split into multiple segments, increasing the cost
- The recipient phone number must comply with international standards
{
"message": "SMS sent successfully",
"data": {
"sms_id": "SMS_67890",
"from": "+4912345678",
"to": "+4915123456789",
"body": "Hello! This is a test SMS from Famulor.",
"segments": 1,
"cost": 0.05,
"currency": "EUR",
"status": "sent"
}
}
{
"message": "Invalid phone number format"
}
{
"message": "Insufficient balance to send SMS"
}
{
"message": "Phone number is not SMS-capable"
}
{
"message": "From number not found"
}
{
"message": "Failed to send SMS",
"error": "SMS service temporarily unavailable"
}
Related pages: Introduction and Authentication Guide, and API Integration Examples.