Quick Start
Send your first message in 3 minutes. Choose your channel and follow the example for your preferred language.
Prerequisites
- Active Qlara account
- API key (find it in your account dashboard)
Send SMS
Endpoint: POST https://lora-api.agiletelecom.com/api/message-server/sms/send
SMS is universal reach. No templates or approvals needed.
- cURL
- Python
- Node.js
curl -X POST https://lora-api.agiletelecom.com/api/message-server/sms/send \
-H "Content-Type: application/json" \
-H "X-Api-Key: your_api_key_here" \
-d '{
"phoneNumber": "+393901234567",
"message": "Hello! This is your first SMS via Qlara.",
"senderName": "Qlara"
}'
import requests
url = "https://lora-api.agiletelecom.com/api/message-server/sms/send"
headers = {
"Content-Type": "application/json",
"X-Api-Key": "your_api_key_here"
}
payload = {
"phoneNumber": "+393901234567",
"message": "Hello! This is your first SMS via Qlara.",
"senderName": "Qlara"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const axios = require('axios');
const url = 'https://lora-api.agiletelecom.com/api/message-server/sms/send';
const headers = {
'Content-Type': 'application/json',
'X-Api-Key': 'your_api_key_here'
};
const payload = {
phoneNumber: '+393901234567',
message: 'Hello! This is your first SMS via Qlara.',
senderName: 'Qlara'
};
axios.post(url, payload, { headers })
.then(response => console.log(response.data))
.catch(error => console.error(error));
Send RCS
Endpoint: POST https://lora-api.agiletelecom.com/api/message-server/rcs/send
RCS delivers rich media on Android. Requires an approved template.
- cURL
- Python
- Node.js
curl -X POST https://lora-api.agiletelecom.com/api/message-server/rcs/send \
-H "Content-Type: application/json" \
-H "X-Api-Key: your_api_key_here" \
-d '{
"phoneNumber": "+393901234567",
"templateId": "template_123",
"variables": {
"name": "John"
}
}'
import requests
url = "https://lora-api.agiletelecom.com/api/message-server/rcs/send"
headers = {
"Content-Type": "application/json",
"X-Api-Key": "your_api_key_here"
}
payload = {
"phoneNumber": "+393901234567",
"templateId": "template_123",
"variables": {
"name": "John"
}
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const axios = require('axios');
const url = 'https://lora-api.agiletelecom.com/api/message-server/rcs/send';
const headers = {
'Content-Type': 'application/json',
'X-Api-Key': 'your_api_key_here'
};
const payload = {
phoneNumber: '+393901234567',
templateId: 'template_123',
variables: {
name: 'John'
}
};
axios.post(url, payload, { headers })
.then(response => console.log(response.data))
.catch(error => console.error(error));
Send WhatsApp
Endpoint: POST https://lora-api.agiletelecom.com/api/message-server/whatsapp/send
WhatsApp messages must use Meta-approved templates. Free-form messages are allowed within 24 hours of customer interaction.
- cURL
- Python
- Node.js
curl -X POST https://lora-api.agiletelecom.com/api/message-server/whatsapp/send \
-H "Content-Type: application/json" \
-H "X-Api-Key: your_api_key_here" \
-d '{
"phoneNumber": "+393901234567",
"templateId": "template_456",
"variables": {
"name": "John",
"code": "ABC123"
}
}'
import requests
url = "https://lora-api.agiletelecom.com/api/message-server/whatsapp/send"
headers = {
"Content-Type": "application/json",
"X-Api-Key": "your_api_key_here"
}
payload = {
"phoneNumber": "+393901234567",
"templateId": "template_456",
"variables": {
"name": "John",
"code": "ABC123"
}
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const axios = require('axios');
const url = 'https://lora-api.agiletelecom.com/api/message-server/whatsapp/send';
const headers = {
'Content-Type': 'application/json',
'X-Api-Key': 'your_api_key_here'
};
const payload = {
phoneNumber: '+393901234567',
templateId: 'template_456',
variables: {
name: 'John',
code: 'ABC123'
}
};
axios.post(url, payload, { headers })
.then(response => console.log(response.data))
.catch(error => console.error(error));
Response Format
All channels return the same response structure:
{
"messageId": "msg_1234567890",
"customerMessageId": "your_reference_id",
"simulation": false,
"results": [
{
"phoneNumber": "+393901234567",
"accepted": true,
"channel": "sms",
"statusCode": 200
}
]
}
Key Fields:
- messageId: Unique identifier for this message (use for tracking)
- customerMessageId: Your reference ID (if provided in the request)
- accepted:
truemeans the message was accepted for sending, not delivered. Delivery happens asynchronously. - channel: The channel used for delivery
- statusCode: HTTP status of the request (200 = success)
Important: Accepted ≠ Delivered
When accepted: true, the message entered the sending queue. It has not been delivered yet. Use webhooks or polling to monitor actual delivery status.
Next Steps
- Configure Webhooks — Receive real-time delivery notifications
- Set Up Templates — Pre-approve messages for RCS and WhatsApp
- Implement Fallback — Let the API automatically try alternate channels
- Authentication — Secure your API key properly
Need detailed reference docs? See the API Reference for all parameters and error codes.