Introduction
Comprehensive API documentation for WhatsApp Marketing SaaS platform. Manage campaigns, contacts, bot flows, and WhatsApp integrations.
Welcome to WhatsApp Marketing SaaS API
This API provides a powerful set of tools for integrating WhatsApp marketing capabilities into your applications. With our API, you can:
- Manage contacts and contact groups
- Send templated messages and interactive messages
- Create and manage WhatsApp bots
- Track message delivery and responses
- Automate customer journeys
Getting Started
Follow these steps to quickly integrate with our API:
Step 1: Create an Account
Before you can use the API, you need to:
- Register for an account at our website
- Verify your email address
- Set up your tenant subdomain
- Generate your API credentials from the dashboard
Step 2: Authentication
This API uses Bearer token authentication. You can obtain your token by making a POST request to the login endpoint:
curl -X POST https://prontus.cloud/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "your-email@example.com", "password": "your-password"}'
The response will include your access token:
{
"access_token": "YOUR_ACCESS_TOKEN",
"token_type": "Bearer",
"expires_in": 3600
}
Include this token in all subsequent requests:
Authorization: Bearer YOUR_ACCESS_TOKEN
Step 3: Tenant Context
All API endpoints that handle tenant-specific data require a subdomain in the URL path:
https://prontus.cloud/api/v1/{your-subdomain}/contacts
Replace {your-subdomain} with your actual tenant subdomain.
Step 4: Making API Requests
Once authenticated, you can start making API calls. Here's an example of listing all contacts:
curl -X GET https://prontus.cloud/api/v1/your-subdomain/contacts \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"
API Features
- RESTful Design: Our API follows RESTful principles for predictable resource-oriented URLs
- JSON Responses: All API responses are returned in JSON format
- Pagination: List endpoints support pagination for handling large datasets
- Error Handling: Clear error messages with appropriate HTTP status codes
- Rate Limiting: 100 requests per minute per API key
Important Notes
- Base URL: All API requests should be made to:
https://prontus.cloud/api/v1/{subdomain}/ - Content Type: Use
application/jsonfor request and response bodies - Date Format: All dates are in ISO 8601 format (e.g.,
2025-07-22T14:30:00Z) - Rate Limits: Check the
X-RateLimit-Remainingheader to monitor your usage - Errors: Error responses include
statusandmessagefields to help troubleshoot issues
Authenticating requests
Authentication Process
The WhatsApp Marketing SaaS API uses JWT (JSON Web Tokens) for authentication. Follow these steps to authenticate your requests:
1. Obtain an Access Token
Make a POST request to the login endpoint with your credentials:
curl -X POST https://prontus.cloud/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "your-email@example.com", "password": "your-password"}'
2. Store the Token
The response will include your access token:
{
"status": "success",
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
"token_type": "Bearer",
"expires_in": 3600
}
This token is valid for 1 hour (3600 seconds) by default.
3. Use the Token
Include the token in the Authorization header with all API requests:
Authorization: Bearer {YOUR_ACCESS_TOKEN}
Replace {YOUR_ACCESS_TOKEN} with the actual token you received.
Token Expiration & Refresh
When your token expires, you'll receive a 401 Unauthorized response. You can either:
- Generate a new token with the login endpoint
- Use the refresh token endpoint (if refresh tokens are enabled):
curl -X POST https://prontus.cloud/api/auth/refresh \
-H "Authorization: Bearer {YOUR_EXPIRED_TOKEN}"
Security Best Practices
- Keep your API tokens secure and never share them publicly
- Use HTTPS for all API requests to encrypt token transmission
- Implement token refresh logic in your application
- Create separate API tokens for different integrations
- Revoke tokens that are no longer needed
All authenticated endpoints in this documentation are marked with a requires authentication badge.
Contact Management
APIs for managing contacts within the tenant context
Create Contact
requires authentication
Create a new contact or lead in the system.
Example request:
curl --request POST \
"https://prontus.cloud/api/v1/architecto/contacts" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"firstname\": \"John\",
\"lastname\": \"Doe\",
\"company\": \"Acme Corp\",
\"type\": \"lead\",
\"email\": \"john@example.com (must be unique)\",
\"phone\": \"+911234567890 (must be unique)\",
\"status_id\": 1,
\"source_id\": 1,
\"description\": \"Potential client from website\"
}"
const url = new URL(
"https://prontus.cloud/api/v1/architecto/contacts"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"firstname": "John",
"lastname": "Doe",
"company": "Acme Corp",
"type": "lead",
"email": "john@example.com (must be unique)",
"phone": "+911234567890 (must be unique)",
"status_id": 1,
"source_id": 1,
"description": "Potential client from website"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/contacts';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'firstname' => 'John',
'lastname' => 'Doe',
'company' => 'Acme Corp',
'type' => 'lead',
'email' => 'john@example.com (must be unique)',
'phone' => '+911234567890 (must be unique)',
'status_id' => 1,
'source_id' => 1,
'description' => 'Potential client from website',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/contacts'
payload = {
"firstname": "John",
"lastname": "Doe",
"company": "Acme Corp",
"type": "lead",
"email": "john@example.com (must be unique)",
"phone": "+911234567890 (must be unique)",
"status_id": 1,
"source_id": 1,
"description": "Potential client from website"
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (201, success):
{
"status": "success",
"message": "Contact created successfully",
"data": {
"id": 1,
"firstname": "John",
"lastname": "Doe",
"email": "john@example.com",
"created_at": "2024-02-08 10:00:00"
}
}
Example response (422, validation error):
{
"status": "error",
"message": "Validation failed",
"errors": {
"email": [
"The email field must be a valid email address."
],
"phone": [
"The phone field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List Contacts
requires authentication
Get a paginated list of contacts. You can filter by type and other parameters.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/contacts?type=lead&source_id=1&status_id=1&page=1&per_page=15" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/contacts"
);
const params = {
"type": "lead",
"source_id": "1",
"status_id": "1",
"page": "1",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/contacts';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'type' => 'lead',
'source_id' => '1',
'status_id' => '1',
'page' => '1',
'per_page' => '15',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/contacts'
params = {
'type': 'lead',
'source_id': '1',
'status_id': '1',
'page': '1',
'per_page': '15',
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, success):
{
"status": "success",
"data": [
{
"id": 1,
"firstname": "John",
"lastname": "Doe",
"company": "Demo Company",
"type": "lead",
"email": "john@example.com",
"phone": "+1234567890",
"created_at": "2024-02-08 10:00:00",
"updated_at": "2024-02-08 10:00:00"
}
],
"meta": {
"current_page": 1,
"total": 100,
"per_page": 15
}
}
Example response (401, unauthenticated):
{
"status": "error",
"message": "Invalid API token"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Contact Details
requires authentication
Get detailed information about a specific contact.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/contacts/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/contacts/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/contacts/1';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/contacts/1'
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, success):
{
"status": "success",
"data": {
"id": 1,
"firstname": "John",
"lastname": "Doe",
"company": "Demo Company",
"type": "lead",
"email": "john@example.com",
"phone": "+1234567890",
"created_at": "2024-02-08 10:00:00",
"updated_at": "2024-02-08 10:00:00"
}
}
Example response (404, not found):
{
"status": "error",
"message": "Contact not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Contact
requires authentication
Update an existing contact's information.
Example request:
curl --request PUT \
"https://prontus.cloud/api/v1/architecto/contacts/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"firstname\": \"John\",
\"lastname\": \"Doe\",
\"company\": \"Acme Corp\",
\"type\": \"lead\",
\"email\": \"john@example.com (must be unique)\",
\"phone\": \"+911234567890 (must be unique)\",
\"status_id\": 1,
\"source_id\": 1,
\"description\": \"Potential client from website\"
}"
const url = new URL(
"https://prontus.cloud/api/v1/architecto/contacts/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"firstname": "John",
"lastname": "Doe",
"company": "Acme Corp",
"type": "lead",
"email": "john@example.com (must be unique)",
"phone": "+911234567890 (must be unique)",
"status_id": 1,
"source_id": 1,
"description": "Potential client from website"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/contacts/1';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'firstname' => 'John',
'lastname' => 'Doe',
'company' => 'Acme Corp',
'type' => 'lead',
'email' => 'john@example.com (must be unique)',
'phone' => '+911234567890 (must be unique)',
'status_id' => 1,
'source_id' => 1,
'description' => 'Potential client from website',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/contacts/1'
payload = {
"firstname": "John",
"lastname": "Doe",
"company": "Acme Corp",
"type": "lead",
"email": "john@example.com (must be unique)",
"phone": "+911234567890 (must be unique)",
"status_id": 1,
"source_id": 1,
"description": "Potential client from website"
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200, success):
{
"status": "success",
"message": "Contact updated successfully",
"data": {
"id": 1,
"firstname": "John",
"lastname": "Doe",
"email": "john@example.com",
"updated_at": "2024-02-08 11:00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Contact
requires authentication
Remove a contact from the system.
Example request:
curl --request DELETE \
"https://prontus.cloud/api/v1/architecto/contacts/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/contacts/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/contacts/1';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/contacts/1'
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (200, success):
{
"status": "success",
"message": "Contact deleted successfully"
}
Example response (404):
{
"status": "error",
"message": "Contact not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Status Management
APIs for managing contact statuses within the tenant context
Create Status
requires authentication
Create a new status in the system.
Example request:
curl --request POST \
"https://prontus.cloud/api/v1/architecto/statuses" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Pending\",
\"color\": \"#FF0000\",
\"isdefault\": false
}"
const url = new URL(
"https://prontus.cloud/api/v1/architecto/statuses"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Pending",
"color": "#FF0000",
"isdefault": false
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/statuses';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Pending',
'color' => '#FF0000',
'isdefault' => false,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/statuses'
payload = {
"name": "Pending",
"color": "#FF0000",
"isdefault": false
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (201, success):
{
"status": "success",
"message": "Status created successfully",
"data": {
"id": 1,
"name": "Pending",
"color": "#FF0000",
"isdefault": false,
"created_at": "2024-02-08 10:00:00"
}
}
Example response (422, validation error):
{
"status": "error",
"message": "Validation failed",
"errors": {
"name": [
"The name field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List Statuses
requires authentication
Get a list of statuses with optional pagination.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/statuses?page=1&per_page=15" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/statuses"
);
const params = {
"page": "1",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/statuses';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
'per_page' => '15',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/statuses'
params = {
'page': '1',
'per_page': '15',
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, success):
{
"status": "success",
"data": [
{
"id": 1,
"name": "Active",
"color": "#00FF00",
"isdefault": true,
"created_at": "2024-02-08 10:00:00",
"updated_at": "2024-02-08 10:00:00"
}
],
"meta": {
"current_page": 1,
"total": 10,
"per_page": 15
}
}
Example response (401, unauthenticated):
{
"status": "error",
"message": "Invalid API token"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Status Details
requires authentication
Get detailed information about a specific status.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/statuses/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/statuses/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/statuses/1';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/statuses/1'
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, success):
{
"status": "success",
"data": {
"id": 1,
"name": "Active",
"color": "#00FF00",
"isdefault": true,
"created_at": "2024-02-08 10:00:00",
"updated_at": "2024-02-08 10:00:00"
}
}
Example response (404, not found):
{
"status": "error",
"message": "Status not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Status
requires authentication
Update an existing status's information.
Example request:
curl --request PUT \
"https://prontus.cloud/api/v1/architecto/statuses/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"In Progress\",
\"color\": \"#0000FF\",
\"isdefault\": true
}"
const url = new URL(
"https://prontus.cloud/api/v1/architecto/statuses/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "In Progress",
"color": "#0000FF",
"isdefault": true
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/statuses/1';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'In Progress',
'color' => '#0000FF',
'isdefault' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/statuses/1'
payload = {
"name": "In Progress",
"color": "#0000FF",
"isdefault": true
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200, success):
{
"status": "success",
"message": "Status updated successfully",
"data": {
"id": 1,
"name": "In Progress",
"color": "#0000FF",
"updated_at": "2024-02-08 11:00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Status
requires authentication
Remove a status from the system.
Example request:
curl --request DELETE \
"https://prontus.cloud/api/v1/architecto/statuses/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/statuses/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/statuses/1';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/statuses/1'
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (400):
{
"status": "error",
"message": "Cannot delete the default status"
}
Example response (404, success):
{
"status": "success",
"message": "Status deleted successfully"
}
* @response {
"status": "error",
"message": "Status not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Source Management
APIs for managing contact sources within the tenant context
Create Source
requires authentication
Create a new source in the system.
Example request:
curl --request POST \
"https://prontus.cloud/api/v1/architecto/sources" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Referral\"
}"
const url = new URL(
"https://prontus.cloud/api/v1/architecto/sources"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Referral"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/sources';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Referral',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/sources'
payload = {
"name": "Referral"
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (201, success):
{
"status": "success",
"message": "Source created successfully",
"data": {
"id": 1,
"name": "Referral",
"created_at": "2024-02-08 10:00:00"
}
}
Example response (422, validation error):
{
"status": "error",
"message": "Validation failed",
"errors": {
"name": [
"The name field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List Sources
requires authentication
Get a list of sources with optional pagination.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/sources?page=1&per_page=15" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/sources"
);
const params = {
"page": "1",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/sources';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
'per_page' => '15',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/sources'
params = {
'page': '1',
'per_page': '15',
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, success):
{
"status": "success",
"data": [
{
"id": 1,
"name": "Website",
"created_at": "2024-02-08 10:00:00",
"updated_at": "2024-02-08 10:00:00"
}
],
"meta": {
"current_page": 1,
"total": 10,
"per_page": 15
}
}
Example response (401, unauthenticated):
{
"status": "error",
"message": "Invalid API token"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Source Details
requires authentication
Get detailed information about a specific source.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/sources/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/sources/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/sources/1';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/sources/1'
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, success):
{
"status": "success",
"data": {
"id": 1,
"name": "Website",
"created_at": "2024-02-08 10:00:00",
"updated_at": "2024-02-08 10:00:00"
}
}
Example response (404, not found):
{
"status": "error",
"message": "Source not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Source
requires authentication
Update an existing source's information.
Example request:
curl --request PUT \
"https://prontus.cloud/api/v1/architecto/sources/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Referral Program\"
}"
const url = new URL(
"https://prontus.cloud/api/v1/architecto/sources/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Referral Program"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/sources/1';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Referral Program',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/sources/1'
payload = {
"name": "Referral Program"
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200, success):
{
"status": "success",
"message": "Source updated successfully",
"data": {
"id": 1,
"name": "Referral Program",
"updated_at": "2024-02-08 11:00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Source
requires authentication
Remove a source from the system.
Example request:
curl --request DELETE \
"https://prontus.cloud/api/v1/architecto/sources/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/sources/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/sources/1';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/sources/1'
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (200, success):
{
"status": "success",
"message": "Source deleted successfully"
}
Example response (404):
{
"status": "error",
"message": "Source not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Group Management
APIs for managing contact groups within the tenant context
List Groups
requires authentication
Get a list of Groups with optional pagination.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/groups?page=1&per_page=15" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/groups"
);
const params = {
"page": "1",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/groups';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
'per_page' => '15',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/groups'
params = {
'page': '1',
'per_page': '15',
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, success):
{
"status": "success",
"data": [
{
"id": 19,
"tenant_id": 13,
"name": "group2",
"created_at": "2025-07-14T06:53:01.000000Z",
"updated_at": "2025-07-14T06:53:01.000000Z"
}
]
}
Example response (401, unauthenticated):
{
"status": "error",
"message": "Invalid API token"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Groups Details
requires authentication
Get detailed information about a specific Groups.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/groups/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/groups/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/groups/1';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/groups/1'
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, success):
{
"status": "success",
"data": {
"id": 19,
"tenant_id": 13,
"name": "group2",
"created_at": "2025-07-14T06:53:01.000000Z",
"updated_at": "2025-07-14T06:53:01.000000Z"
}
}
Example response (404, not found):
{
"status": "error",
"message": "Groups not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Template Management
APIs for managing WhatsApp templates within the tenant context
List Templates
requires authentication
Get a list of Templates with optional pagination.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/templates?page=1&per_page=15" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/templates"
);
const params = {
"page": "1",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/templates';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
'per_page' => '15',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/templates'
params = {
'page': '1',
'per_page': '15',
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, success):
{
"status": "success",
"data": [
{
"id": 1,
"tenant_id": 2,
"template_id": 510070465356446,
"template_name": "welcome_to_prontuscloud",
"language": "en",
"status": "APPROVED",
"category": "MARKETING",
"header_data_format": "IMAGE",
"header_data_text": null,
"header_params_count": 0,
"body_data": "Welcome to ProntusCloud - WhatsApp Marketing, Bot & Chat Module for Perfex CRM Support! 😊\n\nYou can explore and interact with our module in multiple ways:\n\n1️⃣ *Buy Module*: If you want to purchase the module 🛒.\n\n3️⃣ *Explore All Features*: To read detailed documentation and explore all features, on our online documentation 📚.",
"body_params_count": 0,
"footer_data": null,
"footer_params_count": 0,
"buttons_data": "[{\"type\":\"URL\",\"text\":\"Buy Module\",\"url\":\"https:\\/\\/codecanyon.net\\/item\\/whatsbot-whatsapp-marketing-bot-chat-module-for-perfex-crm\\/53052338\"},{\"type\":\"URL\",\"text\":\"Watch youtube Demo\",\"url\":\"https:\\/\\/youtu.be\\/tihN9GyXuzI\"},{\"type\":\"QUICK_REPLY\",\"text\":\"more\"}]",
"created_at": "2025-07-12T10:44:50.000000Z",
"updated_at": "2025-07-12T10:44:50.000000Z"
}
]
}
Example response (401, unauthenticated):
{
"status": "error",
"message": "Invalid API token"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Templates Details
requires authentication
Get detailed information about a specific Templates.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/templates/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/templates/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/templates/1';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/templates/1'
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, success):
{
"status": "success",
"data": {
"id": 1,
"tenant_id": 2,
"template_id": 510070465356446,
"template_name": "welcome_to_whatsbot",
"language": "en",
"status": "APPROVED",
"category": "MARKETING",
"header_data_format": "IMAGE",
"header_data_text": null,
"header_params_count": 0,
"body_data": "Welcome to WhatsBot - WhatsApp Marketing, Bot & Chat Module for Perfex CRM Support! 😊\n\nYou can explore and interact with our module in multiple ways:\n\n1️⃣ *Buy Module*: If you want to purchase the module 🛒.\n\n3️⃣ *Explore All Features*: To read detailed documentation and explore all features, on our online documentation 📚.",
"body_params_count": 0,
"footer_data": null,
"footer_params_count": 0,
"buttons_data": "[{\"type\":\"URL\",\"text\":\"Buy Module\",\"url\":\"https:\\/\\/codecanyon.net\\/item\\/whatsbot-whatsapp-marketing-bot-chat-module-for-perfex-crm\\/53052338\"},{\"type\":\"URL\",\"text\":\"Watch youtube Demo\",\"url\":\"https:\\/\\/youtu.be\\/tihN9GyXuzI\"},{\"type\":\"QUICK_REPLY\",\"text\":\"more\"}]",
"created_at": "2025-07-12T10:44:50.000000Z",
"updated_at": "2025-07-12T10:44:50.000000Z"
}
}
Example response (404, not found):
{
"status": "error",
"message": "Template not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Template Bot Management
APIs for managing WhatsApp template bots within the tenant context
List TemplateBot
requires authentication
Get a list of TemplateBot with optional pagination.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/templatebots?page=1&per_page=15" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/templatebots"
);
const params = {
"page": "1",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/templatebots';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
'per_page' => '15',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/templatebots'
params = {
'page': '1',
'per_page': '15',
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, success):
{
"status": "success",
"data": [
{
"id": 1,
"tenant_id": 2,
"name": "tbot1",
"rel_type": "lead",
"template_id": 510070465356446,
"header_params": "[]",
"body_params": "[]",
"footer_params": "[]",
"filename": "tenant/2/template-bot/CTzitrN1GbYUu6qbbaMElkOlv3qTaZTXPVyNXDAM.png",
"trigger": "heloo",
"reply_type": 1,
"is_bot_active": 1,
"created_at": "2025-07-12T11:16:01.000000Z",
"updated_at": "2025-07-12T11:16:01.000000Z",
"sending_count": 0
}
],
"meta": {
"current_page": 1,
"total": 10,
"per_page": 15
}
}
Example response (401, unauthenticated):
{
"status": "error",
"message": "Invalid API token"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get TemplateBot Details
requires authentication
Get detailed information about a specific TemplateBot.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/templatebots/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/templatebots/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/templatebots/1';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/templatebots/1'
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, success):
{
"status": "success",
"data": {
"id": 1,
"tenant_id": 2,
"name": "tbot1",
"rel_type": "lead",
"template_id": 510070465356446,
"header_params": "[]",
"body_params": "[]",
"footer_params": "[]",
"filename": "tenant/2/template-bot/CTzitrN1GbYUu6qbbaMElkOlv3qTaZTXPVyNXDAM.png",
"trigger": "heloo",
"reply_type": 1,
"is_bot_active": 1,
"created_at": "2025-07-12T11:16:01.000000Z",
"updated_at": "2025-07-12T11:16:01.000000Z",
"sending_count": 0
}
}
Example response (404, not found):
{
"status": "error",
"message": "Template bot not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Message Bot Management
APIs for managing WhatsApp message bots within the tenant context
List Messagebots
requires authentication
Get a list of Messagebots
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/messagebots?page=1&per_page=15" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/messagebots"
);
const params = {
"page": "1",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/messagebots';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
'per_page' => '15',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/messagebots'
params = {
'page': '1',
'per_page': '15',
}
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, success):
{
"status": "success",
"data": [
{
"id": 3,
"tenant_id": 2,
"name": "mbot3",
"rel_type": "lead",
"reply_text": "hello from reply text",
"reply_type": 1,
"trigger": "mbot3",
"bot_header": null,
"bot_footer": null,
"button1": null,
"button1_id": null,
"button2": null,
"button2_id": null,
"button3": null,
"button3_id": null,
"button_name": null,
"button_url": null,
"addedfrom": 1,
"is_bot_active": true,
"sending_count": 0,
"filename": null,
"created_at": "2025-07-12T12:18:33.000000Z",
"updated_at": "2025-07-12T12:18:33.000000Z"
}
],
"meta": {
"current_page": 1,
"total": 10,
"per_page": 15
}
}
Example response (401, unauthenticated):
{
"status": "error",
"message": "Invalid API token"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Messagebots Details
requires authentication
Get detailed information about a specific Messagebots.
Example request:
curl --request GET \
--get "https://prontus.cloud/api/v1/architecto/messagebots/1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://prontus.cloud/api/v1/architecto/messagebots/1"
);
const headers = {
"Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://prontus.cloud/api/v1/architecto/messagebots/1';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://prontus.cloud/api/v1/architecto/messagebots/1'
headers = {
'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, success):
{
"status": "success",
"data": {
"id": 1,
"tenant_id": 2,
"name": "messagebot 1",
"rel_type": "lead",
"reply_text": "hello from message bot testing",
"reply_type": 1,
"trigger": "hello",
"bot_header": null,
"bot_footer": null,
"button1": null,
"button1_id": null,
"button2": null,
"button2_id": null,
"button3": null,
"button3_id": null,
"button_name": null,
"button_url": null,
"addedfrom": 2,
"is_bot_active": true,
"sending_count": 0,
"filename": null,
"created_at": "2025-07-12T11:44:58.000000Z",
"updated_at": "2025-07-12T11:44:58.000000Z"
}
}
Example response (404, not found):
{
"status": "error",
"message": "Message bot not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.