Send SMS
curl --request POST \
--url https://app.famulor.de/api/user/sms \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"from": 123,
"to": "<string>",
"body": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', '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));import requests
url = "https://app.famulor.de/api/user/sms"
payload = {
"from": 123,
"to": "<string>",
"body": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?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 => [
"Authorization: Bearer <token>",
"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("Authorization", "Bearer <token>")
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))
}{
"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": "Twilio service temporarily unavailable"
}
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 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"from": 123,
"to": "<string>",
"body": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', '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));import requests
url = "https://app.famulor.de/api/user/sms"
payload = {
"from": 123,
"to": "<string>",
"body": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?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 => [
"Authorization: Bearer <token>",
"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("Authorization", "Bearer <token>")
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))
}{
"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": "Twilio service temporarily unavailable"
}
This endpoint allows you to send SMS messages via your purchased phone numbers. The SMS is sent through Twilio, and the costs are automatically deducted from your account balance.
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": "Twilio service temporarily unavailable"
}
Related pages: Introduction and Authentication Guide, and API Integration Examples.