curl -X GET "https://app.famulor.de/api/user/whatsapp/session-status?sender_id=12&recipient_phone=+1234567890" \
-H "Authorization: Bearer YOUR_API_KEY"
const params = new URLSearchParams({
sender_id: '12',
recipient_phone: '+1234567890'
});
const response = await fetch(
`https://app.famulor.de/api/user/whatsapp/session-status?${params}`,
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const data = await response.json();
if (data.session_status.can_send_freeform) {
console.log('Session is active — freeform messages allowed');
} else {
console.log('Session expired — use a template message');
}
import requests
response = requests.get(
'https://app.famulor.de/api/user/whatsapp/session-status',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={
'sender_id': 12,
'recipient_phone': '+1234567890'
}
)
data = response.json()
session = data['session_status']
if session['can_send_freeform']:
print('Session is active — freeform messages allowed')
else:
print('Session expired — use a template message')
{
"success": true,
"has_conversation": true,
"conversation_id": 1234,
"customer_name": "John Doe",
"last_customer_message_at": "2026-02-24T10:30:00+00:00",
"session_status": {
"is_open": true,
"can_send_freeform": true,
"requires_template": false,
"message": "Session open (23 hr 45 min remaining). Unlimited free-form messages allowed.",
"minutes_remaining": 1425,
"expires_at": "2026-02-25T10:30:00+00:00"
}
}
{
"success": true,
"has_conversation": true,
"conversation_id": 1234,
"customer_name": "John Doe",
"last_customer_message_at": "2026-02-22T14:00:00+00:00",
"session_status": {
"is_open": false,
"can_send_freeform": false,
"requires_template": true,
"message": "Session expired. Send a template or wait for customer to reply.",
"expired_at": "2026-02-23T14:00:00+00:00"
}
}
{
"success": true,
"has_conversation": false,
"session_status": {
"is_open": false,
"can_send_freeform": false,
"requires_template": true,
"message": "No conversation exists with this recipient. Send a template message first."
}
}
{
"success": false,
"error": "Sender not found",
"error_code": "SENDER_NOT_FOUND"
}
WhatsApp-Session-Status abrufen
Prüfen, ob das 24-Stunden-Messaging-Fenster für eine WhatsApp-Konversation über Famulor offen ist
GET
/
api
/
user
/
whatsapp
/
session-status
curl -X GET "https://app.famulor.de/api/user/whatsapp/session-status?sender_id=12&recipient_phone=+1234567890" \
-H "Authorization: Bearer YOUR_API_KEY"
const params = new URLSearchParams({
sender_id: '12',
recipient_phone: '+1234567890'
});
const response = await fetch(
`https://app.famulor.de/api/user/whatsapp/session-status?${params}`,
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const data = await response.json();
if (data.session_status.can_send_freeform) {
console.log('Session is active — freeform messages allowed');
} else {
console.log('Session expired — use a template message');
}
import requests
response = requests.get(
'https://app.famulor.de/api/user/whatsapp/session-status',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={
'sender_id': 12,
'recipient_phone': '+1234567890'
}
)
data = response.json()
session = data['session_status']
if session['can_send_freeform']:
print('Session is active — freeform messages allowed')
else:
print('Session expired — use a template message')
{
"success": true,
"has_conversation": true,
"conversation_id": 1234,
"customer_name": "John Doe",
"last_customer_message_at": "2026-02-24T10:30:00+00:00",
"session_status": {
"is_open": true,
"can_send_freeform": true,
"requires_template": false,
"message": "Session open (23 hr 45 min remaining). Unlimited free-form messages allowed.",
"minutes_remaining": 1425,
"expires_at": "2026-02-25T10:30:00+00:00"
}
}
{
"success": true,
"has_conversation": true,
"conversation_id": 1234,
"customer_name": "John Doe",
"last_customer_message_at": "2026-02-22T14:00:00+00:00",
"session_status": {
"is_open": false,
"can_send_freeform": false,
"requires_template": true,
"message": "Session expired. Send a template or wait for customer to reply.",
"expired_at": "2026-02-23T14:00:00+00:00"
}
}
{
"success": true,
"has_conversation": false,
"session_status": {
"is_open": false,
"can_send_freeform": false,
"requires_template": true,
"message": "No conversation exists with this recipient. Send a template message first."
}
}
{
"success": false,
"error": "Sender not found",
"error_code": "SENDER_NOT_FOUND"
}
WhatsApp-Session-Status abrufen
Den Status des 24-Stunden-Messaging-Fensters für eine WhatsApp-Konversation prüfenDieser Endpunkt prüft, ob ein aktives 24-Stunden-Messaging-Fenster zwischen deinem WhatsApp-Sender und einem bestimmten Empfänger besteht. Verwende ihn, um zu entscheiden, ob du Freiform-Nachrichten senden kannst oder zunächst eine Template-Nachricht nutzen musst.
Query-Parameter
integer
erforderlich
Die ID des WhatsApp-Senders (erhalten über WhatsApp-Sender abrufen)
string
erforderlich
Die Telefonnummer des Empfängers im internationalen Format (z.B.
+1234567890)Antwort-Felder
boolean
Ob die Anfrage erfolgreich war
boolean
Ob bereits eine Konversation mit diesem Empfänger existiert
integer
Die Konversations-ID (nur vorhanden, wenn
has_conversation true ist)string
Der Name des Kunden, sofern verfügbar (nur vorhanden, wenn
has_conversation true ist)string
ISO-8601-Timestamp der letzten Nachricht des Kunden (nur vorhanden, wenn
has_conversation true ist)object
Anzeigen Session-Status Eigenschaften
Anzeigen Session-Status Eigenschaften
boolean
Ob das 24-Stunden-Messaging-Fenster aktuell geöffnet ist
boolean
Ob derzeit Freiform- (nicht-Template-) Nachrichten gesendet werden können
boolean
Ob eine Template-Nachricht erforderlich ist, um diesen Empfänger zu kontaktieren
string
Menschlich lesbare Beschreibung des aktuellen Session-Status
integer
Verbleibende Minuten im 24-Stunden-Fenster (nur vorhanden, wenn die Session geöffnet ist)
string
ISO-8601-Timestamp, wann die Session abläuft (vorhanden, wenn die Session geöffnet ist oder noch keine Kundennachricht existiert)
string
ISO-8601-Timestamp, wann die Session abgelaufen ist (nur vorhanden, wenn die Session bereits abgelaufen ist)
Fehler-Antworten
curl -X GET "https://app.famulor.de/api/user/whatsapp/session-status?sender_id=12&recipient_phone=+1234567890" \
-H "Authorization: Bearer YOUR_API_KEY"
const params = new URLSearchParams({
sender_id: '12',
recipient_phone: '+1234567890'
});
const response = await fetch(
`https://app.famulor.de/api/user/whatsapp/session-status?${params}`,
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const data = await response.json();
if (data.session_status.can_send_freeform) {
console.log('Session is active — freeform messages allowed');
} else {
console.log('Session expired — use a template message');
}
import requests
response = requests.get(
'https://app.famulor.de/api/user/whatsapp/session-status',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={
'sender_id': 12,
'recipient_phone': '+1234567890'
}
)
data = response.json()
session = data['session_status']
if session['can_send_freeform']:
print('Session is active — freeform messages allowed')
else:
print('Session expired — use a template message')
{
"success": true,
"has_conversation": true,
"conversation_id": 1234,
"customer_name": "John Doe",
"last_customer_message_at": "2026-02-24T10:30:00+00:00",
"session_status": {
"is_open": true,
"can_send_freeform": true,
"requires_template": false,
"message": "Session open (23 hr 45 min remaining). Unlimited free-form messages allowed.",
"minutes_remaining": 1425,
"expires_at": "2026-02-25T10:30:00+00:00"
}
}
{
"success": true,
"has_conversation": true,
"conversation_id": 1234,
"customer_name": "John Doe",
"last_customer_message_at": "2026-02-22T14:00:00+00:00",
"session_status": {
"is_open": false,
"can_send_freeform": false,
"requires_template": true,
"message": "Session expired. Send a template or wait for customer to reply.",
"expired_at": "2026-02-23T14:00:00+00:00"
}
}
{
"success": true,
"has_conversation": false,
"session_status": {
"is_open": false,
"can_send_freeform": false,
"requires_template": true,
"message": "No conversation exists with this recipient. Send a template message first."
}
}
{
"success": false,
"error": "Sender not found",
"error_code": "SENDER_NOT_FOUND"
}
Typical Workflow
Use this endpoint as part of a message-sending flow:- Check session status before sending a message
- If
can_send_freeformistrue→ use Send Freeform Message - If
requires_templateistrue→ use Send Template Message
Notes
- The 24-hour window is based on the customer’s last inbound message timestamp.
- Each new customer message resets the 24-hour timer.
- This endpoint does not consume any balance — it’s a read-only status check.