BotSailor API Documentation
BotSailor API lets developers connect external applications, CRMs, eCommerce platforms, automation systems, and custom software with BotSailor. Using the BotSailor REST API, you can send WhatsApp messages, manage subscribers, trigger chatbot flows, manage users and reseller accounts, work with WhatsApp catalogs, assign labels and sequences, and integrate BotSailor AI into external applications. The API uses versioned endpoints under /api/v1/ and API-key authentication—this documentation includes endpoint references, parameters, request examples, and sample responses.
Send WhatsApp messages through API
Send images, video, documents and interactive messages
Trigger WhatsApp chatbot flows
Create and manage subscribers
Assign labels, sequences and custom fields
Manage team members and users
Manage WhatsApp catalogs and orders
Integrate BotSailor AI
Build custom CRM, eCommerce and SaaS integrations
BotSailor API Reference
Endpoint references, parameters, request examples, and sample responses for the BotSailor REST API.
- My Info
- Usage Log
- User List
- Team Member List
- Create User
- Update User
- Package List
- Module List
- Logout User
- Transaction List
User API
- Connect Account
- Send Text Message/Template
- Send Interactive Buttons
- Send Media
- Upload Media
- Conversation
- PostBack List
- Message Delivery Status
- Bot Template
- Create Template
- Template Status
- Bot Flow List
- Trigger Bot Flow
- Subscriber
- Subscribers List
- Create Subscriber
- Update Subscriber
- Delete Subscriber
- Reset User Input Flow
- Assign Subscriber Chat to Team Member
- Mark Conversation Status
- Assign Subscriber Custom Fields
- Custom Fields List
- Assign Labels
- Remove Labels
- Sequence List
- Assign Sequence
- Remove Sequence
- Add Notes To Subscriber
- Notes Of Subscriber
- CRM Overview
- Update CRM Overview
- Label List
- Label Create
WhatsApp API
Subscriber API
Label API
User API
User API, create,update,list...
User API : My Information
My Information
API End-point : GET/POST
https://botsailor.com/api/v1/user/myInfo- String|RequiredapiTokenYour api key
GET Request Example
https://botsailor.com/api/v1/user/myInfo?apiToken=API-KEYPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/myInfo' \
-d 'apiToken=API-KEY' Sample Response
{"status": "1", "message": { "user_id": 114, "user_type": "Member", "name": "Member", "email": "member@gmail.com", "mobile": "3555757", "package_name": "Premium1", "expired_date": "2025-07-02 00:00:00", "created_at": "2022-03-26 10:55:29", "status": "1", "last_login_at": "2024-07-24 11:59:58", "last_login_ip": "127.0.0.1", "agent_has_ppu": "0", "agent_ppu_remaining": -1, "bot_subscriber_data": { "limit": "5000", "count": "1" }, "message_credit_data": { "limit": "unlimited", "used": 0 }, "whatsapp_bots_details": [ { "display_phone_number": "+91 97031 XXXX", "phone_number_id": "11906XXXXX40020", "whatsapp_business_account_id": "10039XXXX785XX", "whatsapp_business_name": "BotSailor" }] }}User API : Usage Log
Usage Log
API End-point : GET/POST
https://botsailor.com/api/v1/user/usage/log- String|RequiredapiTokenYour api key
GET Request Example
https://botsailor.com/api/v1/user/usage/log?apiToken=API-KEYPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/usage/log' \
-d 'apiToken=API-KEY' Sample Response
{"status": "1", "message": { "modules": [ { "module_name": "End-user", "limit": 500, "used": 1 }, { "module_name": "Connect Account", "limit": 0, "used": 0 }, { "module_name": "Message Credit", "limit": 1458, "used": 0 }, { "module_name": "Subscribers", "limit": 0, "used": 0 }, { "module_name": "Bot Message Insight", "limit": 0, "used": 0 }, { "module_name": "Bot Conditional Reply", "limit": 0, "used": 0 }, { "module_name": "Bot AI Token", "limit": 0, "used": 0 }, { "module_name": "Input Flow Campaign", "limit": 0, "used": 0 }, { "module_name": "Live Chat", "limit": 0, "used": 0 }, { "module_name": "Live Chat - Advanced", "limit": 0, "used": 0 }, { "module_name": "Live Chat - Translator", "limit": 0, "used": 0 }, { "module_name": "Sequence Campaign", "limit": 0, "used": 0 }, { "module_name": "WhatsApp - Flows", "limit": 0, "used": 0 }, { "module_name": "WhatsApp - eCommerce Catalog", "limit": 0, "used": 0 }, { "module_name": "WhatsApp - Webhook Workflow", "limit": 0, "used": 0 }, { "module_name": "Webchat Bot", "limit": 0, "used": 0 }, { "module_name": "WhatsApp - WordPress/Shopify Integration", "limit": 0, "used": 0 }, { "module_name": "Team Member", "limit": 0, "used": 0 }, { "module_name": "API Developer", "limit": 0, "used": 0 }, { "module_name": "Live Chat Restriction", "limit": 0, "used": 0 } ], "package_name": "Premium1", "total_modules": 20 }}User API : User List
List of Users
API End-point : GET/POST
https://botsailor.com/api/v1/user/list- String|RequiredapiTokenYour api key
- Integer|OptionalidSingle User data can be fetched using both User ID or Email
- Number|OptionallimitFetch number of users. Default 1000, max 1000
- Number|OptionaloffsetPage number of pagination. Default 1
GET Request Example
https://botsailor.com/api/v1/user/list?apiToken=API-KEY&id=USER-ID-OR-EMAIL&limit=1000&offset=1POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/list' \
-d 'apiToken=API-KEY' \
-d 'id=USER-ID-OR-EMAIL' \
-d 'limit=1000' \
-d 'offset=1' Sample Response(All list)
{"status":"1","message":[{"user_id":114,"name":"Member","email":"member@gmail.com","mobile":"017XXXXXXXX","package_name":"Premium2","expired_date":"2023-08-05 00:00:00","created_at":"2022-03-26 10:55:29","last_login_at":"2023-08-06 08:55:13","last_login_ip":"127.0.0.1"}],"nextOffset":2}Sample Response(Single User)
{"status": "1", "message": { "user_id": 114, "user_type": "Member", "name": "Member", "email": "member@gmail.com", "mobile": "3555757","package_id":1, "package_name": "Premium1", "expired_date": "2025-07-02 00:00:00", "created_at": "2022-03-26 10:55:29", "status": "1", "last_login_at": "2024-07-24 11:59:58", "last_login_ip": "127.0.0.1", "agent_has_ppu": "0", "agent_ppu_remaining": -1, "bot_subscriber_data": { "limit": "5000", "count": "1" }, "message_credit_data": { "limit": "unlimited", "used": 0 }, "whatsapp_bots_details": [ { "display_phone_number": "+91 97031 XXXX", "phone_number_id": "11906XXXXX40020", "whatsapp_business_account_id": "10039XXXX785XX", "whatsapp_business_name": "BotSailor" }] }}Sample Response (Not found)
{"status":"0","message":"No user found"}User API : Team Member List
List of Team Members
API End-point : GET/POST
https://botsailor.com/api/v1/user/team-member/list- String|RequiredapiTokenYour api key
GET Request Example
https://botsailor.com/api/v1/user/team-member/list?apiToken=API-KEYPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/team-member/list' \
-d 'apiToken=API-KEY' Sample Response
{"status":"1","message":[{"id":205,"name":"Support Agent","email":"support@example.com","role_id":7490,"role":"Sales Agent","status":"1"},{"id":206,"name":"Sales Agent","email":"sales@example.com","role_id":7491,"role":"Support Agent","status":"0"}]}Sample Response (Not found)
{"status":"0","message":"No team member found"}User API : User Create
Create an new User
API End-point : POST
https://botsailor.com/api/v1/user/create- String|RequiredapiTokenYour api key
- String|RequirednameName of your user
- Email|RequiredemailEmail of your user
- String|OptionalmobileUser phone number
- String|RequiredpasswordUser password
- Integer|Requiredpackage_idPackage Id
- String|Requiredexpired_datePcakage Expired date like (2023-09-12)
GET Request Example
https://botsailor.com/api/v1/user/create?apiToken=API-KEY&name=NAME&email=EMAIL&mobile=MOBILE&password=PASSWORD&package_id=NAME&expired_date=EXPIRED-DATEPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/create' \
-d 'apiToken=API-KEY' \
-d 'name=NAME' \
-d 'email=EMAIL' \
-d 'mobile=MOBILE' \
-d 'password=PASSWORD' \
-d 'package_id=NAME' \
-d 'expired_date=EXPIRED-DATE' Sample Response
{"status":"1","mesasge":"User Created Successfully.","id":192}
{"status":"0","message":"Subscriber limit has been exceeded. You cannot have more subscribers."}User API : User Update
Update a Existing User
API End-point : POST
https://botsailor.com/api/v1/user/update- String|RequiredapiTokenYour api key
- Integer|RequiredidUser can be updated using both User ID or Email
- String|OptionalnameName of your user
- Email|OptionalemailEmail of your user
- String|OptionalmobileUser phone number
- String|OptionalpasswordUser password
- Integer|Optionalpackage_idPackage Id
- String|Optionalexpired_datePackage Expired date like (2023-09-12)
- String|OptionalstatusStatus of user active(1) inactive(0)
- String|Optionalreset_monthly_usageReset current month`s usage log of user reset(1) keep(0)
- String|Optionalreset_ai_token_usageReset AI token usage log of user reset(1) keep(0)
GET Request Example
https://botsailor.com/api/v1/user/update?apiToken=API-KEY&id=USER-ID-OR-EMAIL&name=NAME&email=EMAIL&mobile=MOBILE&password=PASSWORD&package_id=NAME&expired_date=EXPIRED-DATE&status=STATUS&reset_monthly_usage=RESET-MONTHLY-USAGE&reset_ai_token_usage=0POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/update' \
-d 'apiToken=API-KEY' \
-d 'id=USER-ID-OR-EMAIL' \
-d 'name=NAME' \
-d 'email=EMAIL' \
-d 'mobile=MOBILE' \
-d 'password=PASSWORD' \
-d 'package_id=NAME' \
-d 'expired_date=EXPIRED-DATE' \
-d 'status=STATUS' \
-d 'reset_monthly_usage=RESET-MONTHLY-USAGE' \
-d 'reset_ai_token_usage=0' Sample Response
{"status":"1","message":"User Updated Successfully."}
{"status":"0","message":"Subscriber limit has been exceeded. You cannot have more subscribers."}User API : Package / Team Role List
List of Packages or Team Roles
API End-point : GET/POST
https://botsailor.com/api/v1/user/package/list- String|RequiredapiTokenYour api key
- String|Optionalpackage_typeLeave empty to list all packages and team roles. Use subscription or team to filter.
GET Request Example
https://botsailor.com/api/v1/user/package/list?apiToken=API-KEY&package_type=POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/package/list' \
-d 'apiToken=API-KEY' \
-d 'package_type=' Sample Response
{"status":"1","message":[{"id":1,"package_name":"Basic","package_type":"subscription","price":"Trial","validity":730,"module_ids":"1,19,18,9,10,11","monthly_limit":"{\"1\":\"1\",\"19\":\"3000\"}","visible":"1"}]}User API : Module List
List of Module
API End-point : GET/POST
https://botsailor.com/api/v1/user/module/list- String|RequiredapiTokenYour api key
GET Request Example
https://botsailor.com/api/v1/user/module/list?apiToken=API-KEYPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/module/list' \
-d 'apiToken=API-KEY' Sample Response(All list)
{"status":"1","message":{"id":1,"module_name":"Connect Account","extra_text":"","limit_enabled":"1","status":"1"}}User API : Addon List
List of Addon
API End-point : GET/POST
https://botsailor.com/api/v1/user/addon/list- String|RequiredapiTokenYour api key
GET Request Example
https://botsailor.com/api/v1/user/addon/list?apiToken=API-KEYPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/addon/list' \
-d 'apiToken=API-KEY' Sample Response(All list)
{"status":"1","message":{"id":2,"addon_name":"Unlimited Team Member","addon_description":"Description of addon","addon_type":"recurring","price":25,"validity":30,"product_data":"{\"fastspring\":{\"product_id\":\"\",\"coupon\":\"\"},\"paypro\":{\"product_id\":\"101357\",\"coupon\":\"ADDONDEFAULT\"},\"paypal\":{\"plan_id\":\"\"},\"razorpay\":{\"plan_id\":\"\"}}","variation_data":null,"discount_data":"{\"percent\":\"\",\"terms\":\"\",\"start_date\":\"\",\"end_date\":\"2024-11-24 13:35:12\",\"timezone\":\"Asia\\/Dhaka\",\"status\":\"1\"}","visible":"1"}}User API : Addon Create
Create Addon
API End-point : GET/POST
https://botsailor.com/api/v1/user/addon/createAvailable Modules
| SL | Module ID | Module Name |
|---|---|---|
| 1 | 1 | Connect Account |
| 1 | 19 | Message Credit |
| 2 | 18 | AI Token |
| 2 | 9 | Subscribers |
| 2 | 10 | Bot Message Insight |
| 2 | 11 | Bot Conditional Reply |
| 2 | 40 | Bot Typing On Display |
| 3 | 2 | Input Flow Campaign |
| 3 | 26 | Instagram Bot |
| 3 | 44 | Incoming Message to Webhook URL |
| 4 | 50 | Live Chat - Widget |
| 4 | 20 | Live Chat - Advanced |
| 4 | 30 | Livechat - Restriction |
| 4 | 3 | Live Chat |
| 4 | 24 | Live Chat - Translator |
| 5 | 4 | Broadcast |
| 8 | 7 | Sequence Campaign |
| 9 | 43 | Social Posting |
| 9 | 29 | WhatsApp Embedded Signup |
| 9 | 28 | Comment Automation |
| 11 | 23 | WhatsApp - Flows |
| 11 | 53 | WhatsApp - Calling |
| 11 | 47 | WhatsApp - Appointment System |
| 11 | 16 | WhatsApp - Webhook Workflow |
| 11 | 42 | WhatsApp - Click Ads |
| 11 | 37 | WhatsApp - Carousel Template |
| 11 | 21 | WhatsApp - Catalog |
| 12 | 38 | Webchat Bot |
| 12 | 27 | Whatsapp About Field Brand Name |
| 12 | 17 | WhatsApp - WordPress/Shopify Integration |
| 13 | 35 | Integration - HTTP API |
| 14 | 46 | Google - Connect Account |
| 14 | 48 | Google - Google Calendar |
| 14 | 22 | Telegram - Group Manager |
| 14 | 36 | Google - Google Sheet |
| 14 | 45 | Google - Google Contacts |
| 15 | 15 | API Developer |
| 15 | 13 | Team Member |
| 15 | 54 | Data Delete Retention |
| 39 | 49 | AI Assistant |
| 39 | 39 | AI Agent |
| 40 | 51 | Service - Shopify App Verification |
| 40 | 52 | Service - Meta App Verification |
- String|RequiredapiTokenYour api key
- String|Requiredaddon_nameName of your addon
- Int|Requiredmodule_idYour Module ID
- String|Requiredaddon_descriptionDescription of your addon
- Float|RequiredpricePrice of your addon
- Int|RequiredvalidityValidity of your addon
- String|Requiredvalidity_typevalidity type can be day,week, month, year. For Day use `D`, For Week use `W`, For Month use `M`, For Year use `Y`
- String|Requiredaddon_typeYou can use 2 tyepes of addon Recurring and One Time. For Recurring use `recurring` and For One Time use `one-time`
- Int|Requiredextend_valueThis is Module Limit
- Int|OptionalvisibleAddon visibility 1 for visible and 0 for hidden
- Json|Optionalvariation_nameVariation name and value in json format.
- Json|Optionalvariation_validityVariation validity and value in json format.
- Json|Optionalvariation_validity_typevalidity type can be day,week, month, year. For Day use `D`, For Week use `W`, For Month use `M`, For Year use `Y`
- Json|Requiredvariation_extend_valueThis is Module Limit For Variation
- Json|Requiredvariation_priceVariation price and value in json format.
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/addon/create' \
-d 'apiToken=API-KEY' \
-d 'addon_name=NAME' \
-d 'module_id=MODULE-ID' \
-d 'addon_description=DESCRIPTION' \
-d 'price=PRICE' \
-d 'validity=VALIDITY' \
-d 'validity_type=D' \
-d 'addon_type=one-time' \
-d 'extend_value=extend_value' \
-d 'visible=1' \
-d 'variation_name=["variation_name1","variation_name2"]' \
-d 'variation_validity=["30","60"]' \
-d 'variation_validity_type=["D","M"]' \
-d 'variation_extend_value=["extend_value1","extend_value2"]' \
-d 'variation_price=["price1","price2"]' Sample Response(All list)
{"status":"1","message":"Addon has been saved successfully.."}User API : Addon Update
Update Addon
API End-point : GET/POST
https://botsailor.com/api/v1/user/addon/update- String|RequiredapiTokenYour api key
- Integer|RequiredidAddon ID
- String|Requiredaddon_nameName of your addon
- String|Optionaladdon_descriptionDescription of your addon
- Float|OptionalpricePrice of your addon
- Int|OptionalvalidityValidity of your addon
- String|Optionalvalidity_typevalidity type can be day,week, month, year. For Day use `D`, For Week use `W`, For Month use `M`, For Year use `Y`
- String|Optionaladdon_typeYou can use 2 tyepes of addon Recurring and One Time. For Recurring use `recurring` and For One Time use `one-time`
- Int|Optionalextend_valueThis is Module Limit
- Int|OptionalvisibleAddon visibility 1 for visible and 0 for hidden
- Json|Optionalvariation_nameVariation name and value in json format.
- Json|Optionalvariation_validityVariation validity and value in json format.
- Json|Optionalvariation_validity_typevalidity type can be day,week, month, year. For Day use `D`, For Week use `W`, For Month use `M`, For Year use `Y`
- Json|Requiredvariation_extend_valueThis is Module Limit For Variation
- Json|Requiredvariation_priceVariation price and value in json format.
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/addon/update' \
-d 'apiToken=API-KEY' \
-d 'id=ADDON-ID' \
-d 'addon_name=NAME' \
-d 'addon_description=DESCRIPTION' \
-d 'price=PRICE' \
-d 'validity=VALIDITY' \
-d 'validity_type=D' \
-d 'addon_type=one-time' \
-d 'extend_value=extend_value' \
-d 'visible=1' \
-d 'variation_name=["variation_name1","variation_name2"]' \
-d 'variation_validity=["30","60"]' \
-d 'variation_validity_type=["D","M"]' \
-d 'variation_extend_value=["extend_value1","extend_value2"]' \
-d 'variation_price=["price1","price2"]' Sample Response(All list)
{"status":"1","message":"Addon has been saved successfully."}User API : Assign Addon
Assign Addon
API End-point :POST
https://botsailor.com/api/v1/user/addon/assign- String|RequiredapiTokenYour api key
- Integer|Requireduser_idUser ID
- String|Requiredaddon_idAddon ID. For the main addon, use only the Addon ID (e.g., 5). For variations, use the format AddonID-Variation ID (e.g., 5-1 ), where 5 is the Addon ID and 1 is the Variation ID.
- String|Requiredexpired_dateAddon Expired date like (2023-09-12)
- Boolean|OptionalstatusStatus of addon active(1) inactive(0)
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/addon/assign' \
-d 'apiToken=API-KEY' \
-d 'user_id=USER-ID' \
-d 'addon_id=ADDON-ID' \
-d 'expired_date=EXPIRED-DATE' \
-d 'status=STATUS' Sample Response(All list)
{"status":"1","message":"Addon has been assign successfully."}User API : Addon Purchase List
Addon Purchase List
API End-point :POST
https://botsailor.com/api/v1/user/addon/assign/list- String|RequiredapiTokenYour api key
- Integer|Optionaluser_idUser ID. If you want to get all addon purchase data, leave it blank.
- Integer|OptionallimitFetch number of addon purchases. Default 50, max 100
- Integer|OptionaloffsetPage number of pagination. Default 1
GET Request Example
https://botsailor.com/api/v1/user/addon/assign/list?apiToken=API-KEY&user_id=USER-ID&limit=50&offset=1POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/addon/assign/list' \
-d 'apiToken=API-KEY' \
-d 'user_id=USER-ID' \
-d 'limit=50' \
-d 'offset=1' Sample Response(All list)
{"status":"1","message":[{"id":122,"user_id":248,"seller_user_id":109,"purchase_date":"2025-05-24 06:14:04","addon_id":17,"expired_date":"2025-06-23 00:00:00","subscription_enabled":"0","subscription_data":null,"paypal_subscriber_id":"","paypal_next_check_time":null,"paypal_processing":"0","access_data":null,"last_payment_method":"Stripe","comment":null,"status":"1","updated_at":"2025-05-24 06:14:04","name":"sagor","email":"jondoe@gmail.com","addon_name":"Ai Addon"}],"nextOffset":2}User API : Update Assign Addon
Update an assigned addon purchase (expired_date, status, variation).
API End-point : GET/POST
https://botsailor.com/api/v1/user/addon/assign/update- String|RequiredapiTokenYour api key
- Integer|RequiredidAddon purchase id from Addon Purchase List response (addon_users.id). Buyer is taken from this purchase.
- String|Optional (Required for variation)addon_idWhich addon+variation to assign: addon_id only for main (e.g. 5), or addon_id-variation_index (5-0=1st variation, 5-1=2nd variation). Send with id to change.
- Date|Optionalexpired_dateNew expiry date (Y-m-d). Leave blank for unlimited.
- 0 or 1|Optionalstatus1 = active, 0 = inactive.
GET Request Example
https://botsailor.com/api/v1/user/addon/assign/update?apiToken=API-KEY&id=ID&addon_id=5-1&expired_date=2025-12-31&status=1POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/addon/assign/update' \
-d 'apiToken=API-KEY' \
-d 'id=ID' \
-d 'addon_id=5-1' \
-d 'expired_date=2025-12-31' \
-d 'status=1' Sample Response (Success)
{"status":"1","message":"Addon purchase updated successfully."}Sample Response (Error)
{"status":"0","message":"Addon purchase not found."}User API : Update AI Token
Set used and remaining AI tokens for an assigned addon. Does not delete the purchase. Use this for AI token addons; de-assign is forbidden for those.
API End-point : GET/POST
https://botsailor.com/api/v1/user/addon/assign/credits- String|RequiredapiTokenYour api key
- Integer|RequiredidAddon purchase id from Addon Purchase List response (addon_users.id).
- Integer|Required to updateusedLifetime used tokens. Send with available to save. Omit both used and available to only read the wallet.
- Integer|Required to updateavailableRemaining tokens. Total becomes used + available. Omit both to only read.
- Integer|Optionaluser_idBuyer user id. If sent, must match the purchase.
GET Request Example
https://botsailor.com/api/v1/user/addon/assign/credits?apiToken=API-KEY&id=ID&used=78000&available=122000&user_id=USER_IDPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/addon/assign/credits' \
-d 'apiToken=API-KEY' \
-d 'id=ID' \
-d 'used=78000' \
-d 'available=122000' \
-d 'user_id=USER_ID' Sample Response (Success)
{"status":"1","message":"AI tokens have been updated successfully.","used":78000,"available":122000,"credit_limit":200000}Sample Response (Error)
{"status":"0","message":"Addon purchase not found"}User API : De-assign Addon
De-assign addon purchase by purchase ID. AI token addons are not deleted; use Update AI Token instead.
API End-point : GET/POST
https://botsailor.com/api/v1/addon/purchase/delete- String|RequiredapiTokenYour api key
- Integer|RequiredidAddon purchase ID from Addon Purchase List response (addon_users.id). Buyer is taken from this purchase.
GET Request Example
https://botsailor.com/api/v1/addon/purchase/delete?apiToken=API-KEY&id=IDPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/addon/purchase/delete' \
-d 'apiToken=API-KEY' \
-d 'id=ID' Sample Response (Success)
{"status":"1","message":"Addon purchase has been deleted successfully."}Sample Response (Error)
{"status":"0","message":"Addon purchase not found"}User API : Direct Login Url
An Unique and Secure One-time Login URL
API End-point : GET/POST
https://botsailor.com/api/v1/user/get/direct-login-url- String|RequiredapiTokenYour api key
- Email|RequiredemailEmail of your user
- String|OptionalnameName of your user
- String|OptionalmobileUser phone number
- Integer|Required for new userpackage_idPackage Id
- String|Required for new userexpired_datePackage Expired date like (2023-09-12)
- String|OptionalstatusStatus of user active(1) inactive(0)
- Boolean|Optionalcreate_on_failSet Value 1 for If user not found, create new user with this data or Set(0) it will return User not found error
GET Request Example
https://botsailor.com/api/v1/user/get/direct-login-url?apiToken=API-KEY&email=EMAIL&name=NAME&mobile=MOBILE&package_id=NAME&expired_date=EXPIRED-DATE&status=STATUS&create_on_fail=1POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/get/direct-login-url' \
-d 'apiToken=API-KEY' \
-d 'email=EMAIL' \
-d 'name=NAME' \
-d 'mobile=MOBILE' \
-d 'package_id=NAME' \
-d 'expired_date=EXPIRED-DATE' \
-d 'status=STATUS' \
-d 'create_on_fail=1' Sample Response
{"status":"1","message":{"email":"user@domain.com","password":"xxxxxxxxxx","login_url":"https://botsailor.com/login","direct_login_url":"https://botsailor.com/direct-login/xxxxxxxxxx"}}
User API : Direct login url only for new users
Create user if not exists and return one-time direct login url. If user exists, it will return `User already existed`.
API End-point : GET/POST
https://botsailor.com/api/v1/user/get/direct-login-url/only-new-users- String|RequiredapiTokenYour api key
- Email|RequiredemailEmail of your user
- Integer|Requiredpackage_idPackage Id
- String|Requiredexpired_datePackage Expired date like (2026-05-05)
GET Request Example
https://botsailor.com/api/v1/user/get/direct-login-url/only-new-users?apiToken=API-KEY&email=EMAIL&package_id=PACKAGE-ID&expired_date=EXPIRED-DATEPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/get/direct-login-url/only-new-users' \
-d 'apiToken=API-KEY' \
-d 'email=EMAIL' \
-d 'package_id=PACKAGE-ID' \
-d 'expired_date=EXPIRED-DATE' Sample Response (Success)
{"status":"1","message":{"email":"user@domain.com","password":"xxxxxxxxxx","login_url":"https://botsailor.com/login","direct_login_url":"https://botsailor.com/direct-login/xxxxxxxxxx"}}Sample Response (Existing User)
{"status":"0","message":"User already existed"}User API : Logout User
Logout user from the system
API End-point : GET/POST
https://botsailor.com/api/v1/user/logout- String|RequiredapiTokenYour api key
- Integer|Requireduser_idUser ID of WhatsApp account owner
GET Request Example
https://botsailor.com/api/v1/user/logout?apiToken=API-KEY&user_id=USER-IDPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/logout' \
-d 'apiToken=API-KEY' \
-d 'user_id=USER-ID' Sample Response(All list)
{"status":"1","message":"User logout from the system successfully."}User API : Transaction List
Transaction list from the system
API End-point : GET/POST
https://botsailor.com/api/v1/user/transaction/list- String|RequiredapiTokenYour api key
- Integer|OptionallimitFetch number of transactions. Default 50, max 100
- Integer|OptionaloffsetPage number of pagination. Default 1
GET Request Example
https://botsailor.com/api/v1/user/transaction/list?apiToken=API-KEY&limit=50&offset=1POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/transaction/list' \
-d 'apiToken=API-KEY' \
-d 'limit=50' \
-d 'offset=1' Sample Response(All list)
{"status":"1","message":[{"id":1,"user_id":1,"buyer_user_id":249,"verify_status":"Processed","first_name":"john doe","last_name":"","buyer_email":"johndoe@gmail.com","country":"","paid_currency":"USD","paid_at":"2025-10-13 09:20:53","payment_method":"Paypal","transaction_id":"AD1760347253249","paid_amount":0,"cycle_start_date":"2025-10-13","cycle_expired_date":null,"package_id":null,"addon_id":4,"variation_index":2,"variation_data_copy":"{\"name\":\"Webchat : unlimited website\/user\",\"validity\":\"30\",\"validity_type\":\"D\",\"extend_value\":\"0\",\"price\":\"149\",\"paypro_product_id\":\"103395\",\"fastspring_product_id\":\"\",\"paypal_plan_id\":\"\",\"razorpay_plan_id\":\"\",\"status\":\"1\"}","package_name":"Monthly Package","response_source":"","paypal_txn_type":"","invoice_url":null,"subscription_unique_id":null,"email":"johndoe@gmail.com"}],"nextOffset":2}WhatsApp API
WhatsApp send api, add contact...
WhatsApp API : Account Connect
Connect WhatsApp Business Account
API End-point : POST
https://botsailor.com/api/v1/whatsapp/account/connect- String|RequiredapiTokenYour api key
- Integer|Requireduser_idUser ID of WhatsApp account owner
- String|Requiredwhatsapp_business_account_idWhatsApp Business Account ID
- String|Requiredaccess_tokenAccess Token
GET Request Example
https://botsailor.com/api/v1/whatsapp/account/connect?apiToken=API-KEY&user_id=USER-ID&whatsapp_business_account_id=WHATSAPP-BUSINESS-ACCOUNT-ID&access_token=ACCESS-TOKENPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/account/connect' \
-d 'apiToken=API-KEY' \
-d 'user_id=USER-ID' \
-d 'whatsapp_business_account_id=WHATSAPP-BUSINESS-ACCOUNT-ID' \
-d 'access_token=ACCESS-TOKEN' Sample Response
{"status":"1","message":"Whatsapp account has been connect successfully."}WhatsApp API : Send Text Message
Send WhatsApp message to any mobile number
Text vs Template Message
When a user writes you on your chat service using your business number, you can reply to them through text message within 24 hours. This is known as a customer-initiated text message or session message. A WhatsApp template message, on the other hand, uses a pre-approved template for communication and is an outbound message launched by a business. You can get in touch with a user using template messages if you accidentally don`t respond to their message within 24 hours.
API End-point : Send Message (GET/POST)
https://botsailor.com/api/v1/whatsapp/send- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|RequiredmessageText message content (need url encoded value for GET request)
- String|Requiredphone_numberMust start with country code and only numeric characters are allowed
GET Request Example
https://botsailor.com/api/v1/whatsapp/send?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&message=TEXT-MESSAGE&phone_number=PHONE-NUMBERPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/send' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'message=TEXT-MESSAGE' \
-d 'phone_number=PHONE-NUMBER' Sample Response
{"status":"1", "wa_message_id":"wamid.HBgNODgwMTcyMzMwOTAwMxUCABEYEjlGQkY3MEFEMEVGODhCNDkxNQA=", "message":"Message sent successfully."}
{"status":"0","message":"Subscriber limit has been exceeded. You cannot have more subscribers."}API End-point : Send Template Message (GET/POST)
https://botsailor.com/api/v1/whatsapp/send/template- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|Requiredtemplate_idApproved WhatsApp message template ID from BotSailor
- String|Requiredphone_numberMust start with country code and only numeric characters are allowed
- String|Optionaltemplate_header_media_urlPublic media URL when the template header is image, video, or document
- String|OptionaltemplateVariable-Name-1Template body/header variables use the pattern templateVariable-{LABEL}-{POSITION}
GET Request Example
https://botsailor.com/api/v1/whatsapp/send/template?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&template_id=TEMPLATE-ID&phone_number=PHONE-NUMBER&template_header_media_url=https%3A%2F%2Fexample.com%2Fheader.jpg&templateVariable-Name-1=JohnPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/send/template' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'template_id=TEMPLATE-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'template_header_media_url=https://example.com/header.jpg' \
-d 'templateVariable-Name-1=John' Sample Response
{"status":"1","wa_message_id":"wamid.HBgNODgwMTcyMzMwOTAwMxUCABEYEjlGQkY3MEFEMEVGODhCNDkxNQA=","message":"Template message has been sent successfully."}
{"status":"0","message":"Message template not found."}Generate API End-point : Send Template Message (GET/POST)
Select one of your approved templates to generate a ready-to-use endpoint with your API key.
Sample Response
{"status":"1","wa_message_id":"wamid.HBgNODgwMTcyMzMwOTAwMxUCABEYEjlGQkY3MEFEMEVGODhCNDkxNQA=","message":"Template message has been sent successfully."}
{"status":"0","message":"Message template not found."}WhatsApp API : Send Interactive Buttons
Send a session message with WhatsApp reply buttons. Optionally attach an image, video, or document as the header.
API End-point : Send Interactive Buttons (POST)
https://botsailor.com/api/v1/whatsapp/send/interactive-buttons- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|Requiredphone_numberMust start with country code and only numeric characters are allowed
- String|RequiredmessageMessage body shown above the buttons.
- JSON Array|RequiredbuttonsJSON array of 1 to 3 reply buttons. Each item can be a string or an object with id and title. Button id can be used later from webhook/button reply payload.
- String|Optionalbutton_header_textOptional text header for the interactive message. Ignored when a media header is sent.
- String|Optionalbutton_footer_textOptional footer text for the interactive message.
- String|Optionalmedia_urlPublic HTTPS URL of an image, video, or document to use as the interactive header. Use either media_url or media_id.
- String|Optionalmedia_idWhatsApp media id obtained from the Upload Media API. When using media_id, media_type is required.
- String|Conditionalmedia_typeHeader media type. One of: image, video, document. Required when using media_id, or when media_url has no file extension. Audio is not supported as a header.
- String|Optionalmedia_nameFilename to display, only used when media_type is document.
POST Request Example (buttons only)
curl -X POST "https://botsailor.com/api/v1/whatsapp/send/interactive-buttons" \
-H "Accept: application/json" \
-d "apiToken=API-KEY" \
-d "phone_number_id=PHONE-NUMBER-ID" \
-d "phone_number=PHONE-NUMBER" \
-d "message=Would you like to continue?" \
-d 'buttons=[{"id":"buy_now","title":"Buy Now"},{"id":"details","title":"View Details"}]' \
-d "button_header_text=Product update" \
-d "button_footer_text=Tap an option"POST Request Example (media + buttons)
curl -X POST "https://botsailor.com/api/v1/whatsapp/send/interactive-buttons" \
-H "Accept: application/json" \
-d "apiToken=API-KEY" \
-d "phone_number_id=PHONE-NUMBER-ID" \
-d "phone_number=PHONE-NUMBER" \
-d "message=Check this product and choose an action." \
-d "media_url=https://example.com/product.jpg" \
-d "media_type=image" \
-d 'buttons=[{"id":"buy_now","title":"Buy Now"},{"id":"details","title":"View Details"}]' \
-d "button_footer_text=Tap an option"Sample Response
{"status":"1", "wa_message_id":"wamid.HBgNODgwMTcyMzMwOTAwMxUCABEYEjlGQkY3MEFEMEVGODhCNDkxNQA=", "message":"Message sent successfully."}
{"status":"0","message":"You can send between 1 and 3 reply buttons."}
{"status":"0","message":"When sending media with buttons, media_type must be one of: image, video, document."}WhatsApp API : Send File / Media
Send image, video, audio, or document using only this endpoint.
API End-point : Send File (GET/POST)
https://botsailor.com/api/v1/whatsapp/send/file- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|Requiredphone_numberMust start with country code and only numeric characters are allowed
- String|Required if no media_idmedia_urlPublic HTTPS URL of the file. WhatsApp downloads from this link. Use this when you are not using media_id.
- String|Required if no media_urlmedia_idWhatsApp media id from the Upload Media API or from Graph after uploading. When using media_id only, media_type is required.
- String|Conditionalmedia_typeOne of: image, video, audio, document. Required when using media_id only, or when media_url has no file extension.
- String|Conditionalmedia_nameRequired when media_type is document. Filename shown in WhatsApp. Pass the media_name value from the Upload Media API response. Not used for image, video, or audio.
- String|Optionalmedia_caption_textCaption for image, video, or document (not for audio). If omitted, message is used as caption when present.
GET Request Example
https://botsailor.com/api/v1/whatsapp/send/file?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&phone_number=PHONE-NUMBER&media_type=image&media_url=https%3A%2F%2Fexample.com%2Fimage.jpg&message=Caption+textGET example with media_id (media_type required)
https://botsailor.com/api/v1/whatsapp/send/file?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&phone_number=PHONE-NUMBER&media_type=document&media_id=MEDIA_ID_FROM_UPLOAD&media_name=invoice.pdfPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/send/file' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'media_url=https://example.com/file.jpg' \
-d 'media_id=' \
-d 'media_type=image' \
-d 'media_name=invoice.pdf' \
-d 'media_caption_text=' Sample Response
{"status":"1", "wa_message_id":"wamid.HBgNODgwMTcyMzMwOTAwMxUCABEYEjlGQkY3MEFEMEVGODhCNDkxNQA=", "message":"Message sent successfully."}
{"status":"0","message":"Subscriber limit has been exceeded. You cannot have more subscribers."}WhatsApp API : Upload Media
Upload a file to get media_id, media_type, and media_name for the Send File API. For documents, pass media_name again when sending.
API End-point : POST (multipart/form-data)
https://botsailor.com/api/v1/whatsapp/upload/media- String|RequiredapiTokenYour api key (can also be sent as Authorization: Bearer token).
- String|Requiredphone_number_idWhatsApp account phone number ID (same as other WhatsApp APIs).
- File|Requiredmedia_fileMultipart file field name must be media_file. Supported types follow live chat / WhatsApp limits (image, video, audio, document).
POST Request Example
curl -X POST "https://botsailor.com/api/v1/whatsapp/upload/media" \
-H "Authorization: Bearer API-KEY" \
-H "Accept: application/json" \
-F "phone_number_id=PHONE-NUMBER-ID" \
-F "media_file=@/path/to/local/file.jpg"Sample Response
{"status":"1","media_id":"1739230482390482","media_type":"document","media_name":"invoice.pdf","message":"Upload successful. Use media_id, media_type, and media_name (for documents) with the Send File API."}
{"status":"0","message":"..."}WhatsApp API : Conversation
Get Conversation of particular subscriber
API End-point : GET/POST
https://botsailor.com/api/v1/whatsapp/get/conversation- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- String|Requiredphone_numberSubscriber phone number
- Number|RequiredlimitFetch number of conversation message. (upto 50)
- Number|OptionaloffsetPage number of pagination. Default 1
GET Request Example
https://botsailor.com/api/v1/whatsapp/get/conversation?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&phone_number=PHONE-NUMBER&limit=10&offset=1POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/get/conversation' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'limit=10' \
-d 'offset=1' Sample Response
{"status":"1","message":[{"id":8XX3,"whatsapp_bot_subscriber_subscriber_id":"0123456789-23","whatsapp_bot_id":23,"sender":"bot","agent_name":null,"message_content":"{\"delay_in_reply\":0,\"messaging_product\":\"whatsapp\",\"recipient_type\":\"individual\",\"to\":\"0123456789\",\"type\":\"interactive\",\"interactive\":{\"header\":{\"type\":\"text\",\"text\":\"Order gateway\"},\"body\":{\"text\":\"How would you like to purchase it?\"},\"type\":\"button\",\"action\":{\"buttons\":[{\"type\":\"reply\",\"reply\":{\"id\":\"5lvomLOuENXIe6D::gPeAiDDmVQR_jTR\",\"title\":\"Paypal pay\"}},{\"type\":\"reply\",\"reply\":{\"id\":\"YES_START_CHAT_WITH_HUMAN::CBaLoC4yTMyIljZ\",\"title\":\"COD\"}}]}}}","conversation_time":"2024-07-28 13:21:03","wa_message_id":"wamid.HBgNODgwMTcyMzMwOTAwMxUCABEYEjlGQkY3MEFEMEVGODhCNDkxNQA=","reaction_data":null,"message_status":null,"delivery_status_updated_at":"2024-07-28 13:21:03","failed_reason":""}],"nextOffset":101}
WhatsApp API : Post Back List
Post Back List
API End-point : GET/POST
https://botsailor.com/api/v1/whatsapp/get/post-back-list- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
GET Request Example
https://botsailor.com/api/v1/whatsapp/get/post-back-list?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-IDPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/get/post-back-list' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' Sample Response
{"status":"1","message":[{"id":671,"user_id":1,"postback_id":"QUICK_REPLY_LOCATION_REPLY_BOT","whatsapp_bot_id":95,"use_status":"0","status":"1","whatsapp_bot_setting_id":1770,"bot_name":"Location quick reply","is_template":"1","template_jsoncode":"[{\"messaging_product\":\"whatsapp\",\"to\":\"replace_id\",\"type\":\"text\",\"text\":{\"body\":\"Thank you for sharing your location. It has been received. Thank you for being here with us today.\",\"preview_url\":true}}]","template_name":"Location quick reply","template_for":"location-quick-reply","template_id":null,"inherit_from_template":"0","whatsapp_bot_label_ids":"","whatsapp_bot_remove_label_ids":"","remove_sequence_campaign_id":0,"team_assign_role_id":0,"team_assign_user_id":0,"broadcast_sequence_campaign_id":0,"visual_flow_type":"flow","postback_type":"main","whatsapp_bot_visual_flow_builder_campaign_id":1358,"google_sheet_ids":"","updated_at":"2024-07-14 05:25:55","row_type":"static","custom_field_id":0,"custom_field_index":"","custom_field_index_title":"","generateGoogleMeetLink":null,"googleCalendarId":null,"googleMeetToCustomFieldId":null}]}WhatsApp API : Delivery Message Status
Get message statuses from API
API End-point : GET/POST
https://botsailor.com/api/v1/whatsapp/get/message-status- String|RequiredapiTokenYour api key
- String|Requiredwa_message_idWhatsApp message ID to check status
GET Request Example
https://botsailor.com/api/v1/whatsapp/get/message-status?apiToken=API-KEY&wa_message_id=WAMID.XXXXXPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/get/message-status' \
-d 'apiToken=API-KEY' \
-d 'wa_message_id=WAMID.XXXXX' Sample Response
{"status":"1","message":{"message_status":"delivered","delivery_status_updated_at":"2024-07-28 13:21:03","read_time":null,"failed_time":null,"failed_reason":""}}WhatsApp API : Bot Template
Get Whatsapp Bot template
API End-point : Get Template (GET/POST)
https://botsailor.com/api/v1/whatsapp/template/list- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
GET Request Example
https://botsailor.com/api/v1/whatsapp/template/list?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-IDPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/template/list' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' Sample Response
{"status":"1","message":{"id":48,"template_id":"437509121867805","whatsapp_business_id":11,"template_name":"ada","template_type":"single","locale":"en_US","header_type":"media","header_subtype":"image","header_content":"","body_content":"To send an interactive message template, make a POST call to \/PHONE_NUMBER_ID\/","footer_content":"","button_content":"[]","template_json":"{\"name\":\"template_23_1666095188\",\"language\":\"en_US\",\"category\":\"transactional\",\"components\":[{\"type\":\"header\",\"format\":\"image\",\"example\":{\"header_handle\":[\"https:\\\/\\\/example.com\\\/assets\\\/images\\\/template\\\/image.jpg\"]}},{\"type\":\"body\",\"text\":\"To send an interactive message template, make a POST call to \\\/PHONE_NUMBER_ID\\\/\"}],\"access_token\":\"[FILTERED]\"}","button_type":"none","variable_map":"{\"header\":[],\"body\":[]}","updated_at":"2022-10-18 12:13:09","user_id":1,"status":"Rejected","system_template":"0","map_needed":"0","check_wp_type":"general"}}Sample Response
{"status":"1","message":"Template message sent successfully."}
{"status":"0","message":"Subscriber limit has been exceeded. You cannot have more subscribers."}WhatsApp API : Create Template
Create and submit WhatsApp message template for approval
API End-point : Create Template (POST)
https://botsailor.com/api/v1/whatsapp/template/create- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|RequirednameTemplate name in lowercase letters and underscores only (e.g. summer_promo_2026)
- String|RequiredcategoryTemplate category: MARKETING or UTILITY
- String|OptionallanguageLanguage code (e.g. en_US, bn_BD, hi_IN). Default is en_US
- String|Optionaltemplate_typemixed (default for standard) or wp (for WordPress templates)
- String|Requiredbody_textMessage body with dynamic tags like #LEAD_USER_FIRST_NAME#, #discount#, or #!order_id!#
- Object|OptionalheaderOptional header: {"type": "text"|"image"|"video"|"document", "text": "..." or "media_url": "https://..."}
- String|Optionalfooter_textFooter text displayed at the bottom in light font
- Array|OptionalbuttonsArray of buttons: quick_reply, url (dynamic or static), phone_number, or copy_code
POST Request Example (Marketing / Mixed)
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/template/create' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR-API-KEY' \
-d '{
"phone_number_id": "104928392019283",
"name": "summer_promo_2026",
"category": "MARKETING",
"language": "en_US",
"template_type": "mixed",
"header": {
"type": "image",
"media_url": "https://example.com/banner.jpg"
},
"body_text": "Hi #LEAD_USER_FIRST_NAME#, get #discount#% off using code #coupon#!",
"footer_text": "Valid till Sunday",
"buttons": [
{ "type": "copy_code", "code": "#coupon#" },
{ "type": "url", "text": "Shop Now", "url": "https://example.com/shop" },
{ "type": "phone_number", "text": "Call Us", "phone_number": "+1234567890" }
]
}'Sample Response
{"status":"1","message":"Template has been created and submitted to WhatsApp successfully. It needs to be approved by WhatsApp before use.","data":{"id":184,"template_id":"129847192847192","template_name":"summer_promo_2026","template_type":"mixed","category":"MARKETING","language":"en_US","status":"Submitted","variable_map":{"body":{"1":"#LEAD_USER_FIRST_NAME#","2":"#discount#","3":"#coupon#"}}}}
{"status":"0","message":"WhatsApp template name already exists."}- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|RequirednameTemplate name in lowercase letters and underscores only (e.g. login_otp_verification)
- String|RequiredcategoryMust be AUTHENTICATION
- String|OptionallanguageLanguage code (e.g. en_US, bn_BD). Default is en_US
- String|Optionaltemplate_typeSet to authentication
- String|Requiredverification_codeCustom field (#otp_field#) or variable (#!system_otp!#) that dynamically populates the OTP code
- Boolean|Optionaladd_security_recommendationSet true to include WhatsApp security disclaimer ("For your security, do not share this code")
- Integer|Optionalcode_expiration_minutesOTP expiry duration in minutes shown in the footer (between 1 and 90)
POST Request Example (Authentication / OTP)
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/template/create' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR-API-KEY' \
-d '{
"phone_number_id": "104928392019283",
"name": "login_otp_verification",
"category": "AUTHENTICATION",
"language": "en_US",
"template_type": "authentication",
"verification_code": "#user_otp#",
"add_security_recommendation": true,
"code_expiration_minutes": 5
}'Sample Response
{"status":"1","message":"Template has been created and submitted to WhatsApp successfully. It needs to be approved by WhatsApp before use.","data":{"id":185,"template_id":"129847192847195","template_name":"login_otp_verification","template_type":"authentication","category":"AUTHENTICATION","language":"en_US","status":"Submitted","variable_map":{"body":{"1":"#user_otp#"}}}}
{"status":"0","message":"Authentication template requires verification_code."}- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|RequirednameTemplate name in lowercase letters and underscores only (e.g. summer_shoes_carousel)
- String|RequiredcategoryMust be MARKETING (Carousel templates only support the MARKETING category)
- String|OptionallanguageLanguage code (e.g. en_US). Default is en_US
- String|Requiredtemplate_typeMust be carousel (for Media cards) or carousel_product (for Catalog product cards)
- String|Requiredbubble_body_textIntroduction text bubble displayed right above the carousel cards
- Array|RequiredcardsArray of 1 to 10 cards. Each card has media_type (image/video), media_url, body_text, and buttons array
POST Request Example (Carousel Media)
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/template/create' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR-API-KEY' \
-d '{
"phone_number_id": "104928392019283",
"name": "summer_shoes_carousel",
"category": "MARKETING",
"language": "en_US",
"template_type": "carousel",
"bubble_body_text": "Hey #LEAD_USER_FIRST_NAME#, check out our top trending collection!",
"cards": [
{
"media_type": "image",
"media_url": "https://example.com/shoes1.jpg",
"body_text": "Nike Air Max - Deal: #price_1#",
"buttons": [
{ "type": "url", "text": "Buy Now", "url": "https://example.com/buy/1" }
]
},
{
"media_type": "image",
"media_url": "https://example.com/shoes2.jpg",
"body_text": "Adidas Boost - Deal: #price_2#",
"buttons": [
{ "type": "url", "text": "Order Online", "url": "https://example.com/buy/2" }
]
}
]
}'Sample Response
{"status":"1","message":"Template has been created and submitted to WhatsApp successfully. It needs to be approved by WhatsApp before use.","data":{"id":186,"template_id":"129847192847198","template_name":"summer_shoes_carousel","template_type":"carousel","category":"MARKETING","language":"en_US","status":"Submitted","variable_map":{"body":{"1":"#LEAD_USER_FIRST_NAME#"},"cards":[{"body":{"1":"#price_1#"}},{"body":{"1":"#price_2#"}}]}}}
{"status":"0","message":"WhatsApp Carousel module limit has been exceeded."}WhatsApp API : Template Status
Check live approval status, quality rating, and rejection reason of a WhatsApp message template.
API End-point : Template Status (GET/POST)
https://botsailor.com/api/v1/whatsapp/template/status- String|RequiredapiTokenYour API key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|Requiredtemplate_idMeta Template ID (e.g. 129847192847198)
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/template/status' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR-API-KEY' \
-d '{
"phone_number_id": "104928392019283",
"template_id": "129847192847198"
}'GET Request Example
https://botsailor.com/api/v1/whatsapp/template/status?apiToken=YOUR-API-KEY&phone_number_id=104928392019283&template_id=129847192847198Sample Response
{
"status": "1",
"message": "Template status fetched successfully.",
"data": {
"template_id": "129847192847198",
"template_name": "summer_shoes_carousel",
"status": "APPROVED",
"category": "MARKETING",
"language": "en_US",
"quality_score": {
"score": "GREEN"
},
"rejected_reason": null
}
}WhatsApp API : Send Broadcast Template
Get Whatsapp Broadcast Template
API End-point : Send Broadcast Template (GET/POST)
https://botsailor.com/api/v1/whatsapp/broadcast/template/send- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- Json|Requiredflow_dataPass Flow data as json format
GET Request Example
https://botsailor.com/api/v1/whatsapp/broadcast/template/send?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-IDPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/broadcast/template/send' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' Sample Response
{"status":"1","visual_flow_campaign_id":1727,"message":"Data has been saved successfully.","redirect_on_success_url":""}Sample Response
{"status":"1","message":"Template message sent successfully."}
{"status":"0","message":"Subscriber limit has been exceeded. You cannot have more subscribers."}WhatsApp API : Bot Flow List
List of configured bot flows for a WhatsApp account
API End-point : GET/POST
https://botsailor.com/api/v1/whatsapp/get/bot-flow-list- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
GET Request Example
https://botsailor.com/api/v1/whatsapp/get/bot-flow-list?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-IDPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/get/bot-flow-list' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' Sample Response
{"status":"1","message":[{"id":1552533,"name":"Appointment Flow","unique_id":"abc123","status":"1"},{"id":1552534,"name":"Welcome Flow","unique_id":"def456","status":"1"}]}WhatsApp API : Trigger Bot Flow
Trigger your bot to any mobile number
API End-point : Trigger Bot Flow (GET/POST)
https://botsailor.com/api/v1/whatsapp/trigger-bot- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|Requiredbot_flow_unique_idBot Flow Unique ID
- String|Requiredphone_numberMust start with country code and only numeric characters are allowed
GET Request Example
https://botsailor.com/api/v1/whatsapp/trigger-bot?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&bot_flow_unique_id=BOT-FLOW-UNIQUE-ID&phone_number=PHONE-NUMBERPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/trigger-bot' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'bot_flow_unique_id=BOT-FLOW-UNIQUE-ID' \
-d 'phone_number=PHONE-NUMBER' Sample Response
{"status":"1","message":"Bot has been trigger successfully."}
WhatsApp API : Subscriber
Get Subscriber Using Chat ID (Phone Number
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/get- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|Requiredphone_numberSubscriber phone number
GET Request Example
https://botsailor.com/api/v1/whatsapp/subscriber/get?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&phone_number=PHONE-NUMBERPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/get' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' Sample Response
{"status":"1","message":[{"subscriber_id":144,"chat_id":"0123456789","first_name":"john","last_name":"Doe","email":"test@gmail.com","gender":"Male","created_at":"2026-04-07 10:30:00","assigned_agent_id":12,"assigned_agent":"Support Agent","bot_reply_label":"Bot Reply On","ai_reply_label":"AI Reply On","label_names":"Label1,Label2"}]}WhatsApp API : Subscribers List
List of Subscribers
API End-point : GET/POST
https://botsailor.com/api/v1/whatsapp/subscriber/list- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- Number|RequiredlimitFetch number of subscribers. (upto 100)
- Number|OptionaloffsetPage number of pagination. Default 1
- Number|OptionalorderBySet this to 1 to sort the subscriber list by their most recent message (latest first). Set to 0 to keep the default order.
GET Request Example
https://botsailor.com/api/v1/whatsapp/subscriber/list?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&limit=100&offset=1&orderBy=0POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/list' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'limit=100' \
-d 'offset=1' \
-d 'orderBy=0' Sample Response
{"status":"1","message":[{"subscriber_id":144,"chat_id":"0123456789","first_name":"John","last_name":"Doe","email":"test@gmail.com","gender":"male","assigned_agent_id":12},{"subscriber_id":157,"chat_id":"0123456789","first_name":"john","last_name":"Doe","email":"null","gender":"Male","assigned_agent_id":12}],"nextOffset":2}WhatsApp API : Subscriber Create
Create a Subscriber/Contact
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/create- String|RequiredapiTokenYour api key
- String|RequiredphoneNumberIDWhatsApp account phone number ID
- String|RequirednameName of your subscriber
- String|RequiredphoneNumberSubscriber phone number with country code (without + sign)
GET Request Example
https://botsailor.com/api/v1/whatsapp/subscriber/create?apiToken=API-KEY&phoneNumberID=PHONE-NUMBER-ID&name=NAME&phoneNumber=MOBILEPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/create' \
-d 'apiToken=API-KEY' \
-d 'phoneNumberID=PHONE-NUMBER-ID' \
-d 'name=NAME' \
-d 'phoneNumber=MOBILE' Sample Response
{"status":"1","mesasge":"WhatsApp subscriber has been created."}
{"status":"0","message":"WhatsApp account not found."}
{"status":"0","message":"Subscriber limit has been exceeded. You cannot have more subscribers."}
{"status":"0","message":"Something went wrong or subscriber already exist."}WhatsApp API : Subscriber Update
Update an Existing Subscriber
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/update- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|Requiredphone_numberSubscriber phone number
- String|Optionalfirst_nameFirst name of your subscriber
- String|Optionallast_nameLast name of your subscriber
- String|OptionalgenderGender of your subscriber
- String|Optionallabel_idsLabel ids with comma separated like (1,4,5)
GET Request Example
https://botsailor.com/api/v1/whatsapp/subscriber/update?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&phone_number=PHONE-NUMBER&first_name=FIRST-NAME&last_name=LAST-NAME&gender=GENDER&label_ids=LABEL-IDSPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/update' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'first_name=FIRST-NAME' \
-d 'last_name=LAST-NAME' \
-d 'gender=GENDER' \
-d 'label_ids=LABEL-IDS' Sample Response
{"status":"1","message":"Subscriber Updated Successfully."}
WhatsApp API : Delete Subscriber
Delete Whatsapp Subscriber
API End-point : Delete Subscriber (GET/POST)
https://botsailor.com/api/v1/whatsapp/subscriber/delete- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|Requiredphone_numberMust start with country code and only numeric characters are allowed
GET Request Example
https://botsailor.com/api/v1/whatsapp/subscriber/delete?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&phone_number=PHONE-NUMBERPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/delete' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' Sample Response
{"status":"1","message":"Subscriber has been deleted successfully."}
WhatsApp API : Reset User Input Flow
Reset User Input Flow
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/reset/user-input-flow- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idWhatsApp account phone number ID
- String|Requiredphone_numberSubscriber phone number
GET Request Example
https://botsailor.com/api/v1/whatsapp/subscriber/reset/user-input-flow?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&phone_number=PHONE-NUMBERPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/reset/user-input-flow' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' Sample Response
{"status":"1","message":"Reset User Input Flow successfully."}
WhatsApp API : Subscriber Assign Chat to Team
Assign a Subscriber`s Chat to a Team Member
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/chat/assign-to-team-member- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- String|Requiredphone_numberSubscriber phone number
- Integer|Requiredteam_member_idTeam Member ID
GET Request Example
https://botsailor.com/api/v1/whatsapp/subscriber/chat/assign-to-team-member?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&phone_number=PHONE-NUMBER&team_member_id=TEAM-MEMBER-IDPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/chat/assign-to-team-member' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'team_member_id=TEAM-MEMBER-ID' Sample Response
{"status":"1","message":"Successfully Assign Agent to Conversation."}
WhatsApp API : Mark Conversation Status
Mark a subscriber conversation status
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/chat/mark-conversation- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- String|Requiredphone_numberSubscriber phone number
- String|RequiredactionAllowed values: resolved, reopen, archived, unarchived, blocked, unblocked
GET Request Example
https://botsailor.com/api/v1/whatsapp/subscriber/chat/mark-conversation?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&phone_number=PHONE-NUMBER&action=resolvedPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/chat/mark-conversation' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'action=resolved' Sample Response
{"status":"1","message":"Conversation marked as resolved successfully"}action_status map
{"0":"open (reopen/unarchived/unblocked)","1":"resolved","2":"archived","3":"blocked"}WhatsApp API : Subscriber Assign Custom Fields
Assign Custom Field To Subscriber
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/chat/assign-custom-fields- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- String|Requiredphone_numberSubscriber phone number
- JSON|Requiredcustom_fieldsCustom fileds name and value in json format.
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/chat/assign-custom-fields' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'custom_fields={"custom_filed_name1": "custom_field_value1","custom_filed_name2": "custom_field_value2"}' Sample Response
{"status":"1","message":"Subscriber changes have been saved successfully."}
WhatsApp API : Custom Fields List
Get List of Custom Fields
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/custom-fields/list- String|RequiredapiTokenYour api key
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/custom-fields/list' \
-d 'apiToken=API-KEY' Sample Response
{"status":"1","message":"Custom fields retrieved successfully","data":[{"id":1,"name":"customer_name","reply_type":"text"},{"id":2,"name":"customer_email","reply_type":"email"}]}
WhatsApp API : Subscriber Assign Labels
Assign Labels To Subscriber
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/chat/assign-labels- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- String|Requiredphone_numberSubscriber phone number
- String|Requiredlabel_idsLabel ids with comma separated like (1,4,5)
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/chat/assign-labels' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'label_ids=LABEL-IDS' Sample Response
{"status":"1","message":"Labels have been assigned successfully."}
WhatsApp API : Subscriber Remove Labels
Remove Labels To Subscriber
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/chat/remove-labels- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- String|Requiredphone_numberSubscriber phone number
- String|Requiredlabel_idsLabel ids with comma separated like (1,4,5)
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/chat/remove-labels' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'label_ids=LABEL-IDS' Sample Response
{"status":"1","message":"Labels have been assigned successfully."}
WhatsApp API : Sequence List
List of Sequences for a WhatsApp account
API End-point : GET/POST
https://botsailor.com/api/v1/whatsapp/subscriber/sequence/list- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
GET Request Example
https://botsailor.com/api/v1/whatsapp/subscriber/sequence/list?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-IDPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/sequence/list' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' Sample Response
{"status":"1","message":[{"id":13083,"name":"Customer Follow-up","campaign_type":"messenger","sequence_type":"default","status":"1"},{"id":13084,"name":"Abandoned Cart","campaign_type":"messenger","sequence_type":"default","status":"1"}]}WhatsApp API : Subscriber Assign Sequences
Assign Sequences To Subscriber
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/chat/assign-sequence- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- String|Requiredphone_numberSubscriber phone number
- String|Requiredsequence_idsSequence ids with comma separated like (1,4,5)
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/chat/assign-sequence' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'sequence_ids=SEQUENCE-IDS' Sample Response
{"status":"1","message":"Sequences have been assigned successfully."}
WhatsApp API : Subscriber Remove Sequences
Remove Sequence To Subscriber
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/chat/remove-sequence- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- String|Requiredphone_numberSubscriber phone number
- String|Requiredsequence_idsSequence ids with comma separated like (1,4,5)
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/chat/remove-sequence' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'sequence_ids=SEQUENCE-IDS' Sample Response
{"status":"1","message":"Sequences have been removed successfully."}
WhatsApp API : Add Notes To Subscriber
Add Notes To Subscriber
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/chat/add-notes- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- String|Requiredphone_numberSubscriber phone number
- String|Requirednote_textNote text
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/chat/add-notes' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'note_text=NOTE-TEXT' Sample Response
{"status":"1","message":"Notes have been added successfully."}
WhatsApp API : Get Notes Of Subscriber
Get all notes associated with a specific subscriber/contact
API End-point : GET/POST
https://botsailor.com/api/v1/whatsapp/subscriber/chat/get-notes- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- String|Requiredphone_numberSubscriber phone number
GET Request Example
https://botsailor.com/api/v1/whatsapp/subscriber/chat/get-notes?apiToken=API-KEY&phone_number_id=PHONE-NUMBER-ID&phone_number=PHONE-NUMBERPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/chat/get-notes' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' Sample Response
{"status":"1","message":[{"id":1,"note_text":"Customer requested callback tomorrow","noted_by_user_id":2,"noted_by_name":"Admin","updated_at":"2026-10-07 10:30:00"}]}WhatsApp API : CRM Overview
Get CRM deal, pipeline, stage, value, owner and lead score for a subscriber
API End-point : GET/POST
https://botsailor.com/api/v1/whatsapp/subscriber/crm/get- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- String|Requiredphone_numberSubscriber phone number
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/crm/get' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' Sample Response
{"status":"1","message":{"has_deal":true,"deal_id":10,"pipeline_id":1,"pipeline_name":"Sales Pipeline","stage_id":2,"stage_name":"Qualified","stage_color":"#22c55e","stage_type":"open","title":"New Deal","value":500,"currency":"USD","expected_close_date":"2026-10-15","owner_user_id":1,"owner_name":"John Doe","lead_score":"hot","source":"WhatsApp","status":"open"}}
WhatsApp API : Update CRM Overview
Create or update CRM deal, pipeline, stage, value, owner, lead score and source for a subscriber
API End-point : POST
https://botsailor.com/api/v1/whatsapp/subscriber/crm/update- String|RequiredapiTokenYour api key
- String|Requiredphone_number_idYour whatsapp phone number id
- String|Requiredphone_numberSubscriber phone number
- String|OptionaltitleDeal title
- Integer|Optionalpipeline_idPipeline ID (can be retrieved from Get CRM Overview API)
- Integer|Optionalstage_idStage ID (can be retrieved from Get CRM Overview API)
- Number|OptionalvalueDeal monetary value
- String|OptionalcurrencyCurrency code (USD, BDT, MYR, EUR, etc.)
- Date|Optionalexpected_close_dateExpected close date (YYYY-MM-DD)
- Integer|Optionalowner_user_idDeal owner (team member user ID)
- String|Optionallead_scoreLead score: hot, warm, cold
- String|OptionalsourceLead source
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/subscriber/crm/update' \
-d 'apiToken=API-KEY' \
-d 'phone_number_id=PHONE-NUMBER-ID' \
-d 'phone_number=PHONE-NUMBER' \
-d 'title=New Deal' \
-d 'pipeline_id=1' \
-d 'stage_id=2' \
-d 'value=500.00' \
-d 'currency=USD' \
-d 'expected_close_date=2026-10-15' \
-d 'owner_user_id=1' \
-d 'lead_score=hot' \
-d 'source=WhatsApp' Sample Response
{"status":"1","message":"CRM Overview updated successfully."}
API : Label List
List of Labels
API End-point : GET/POST
https://botsailor.com/api/v1/label/list- String|RequiredapiTokenYour api key
GET Request Example
https://botsailor.com/api/v1/label/list?apiToken=API-KEYPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/label/list' \
-d 'apiToken=API-KEY' Sample Response
{"status":"1","message":[{"id":1,"label_name":"Your label name","status":"1"}]}
API : Label Create
Create a Label
API End-point : GET/POST
https://botsailor.com/api/v1/label/create- String|RequiredapiTokenYour api key
- String|Requiredlabel_nameLabel Name
GET Request Example
https://botsailor.com/api/v1/label/create?apiToken=API-KEY&label_name=LABEL-NAMEPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/label/create' \
-d 'apiToken=API-KEY' \
-d 'label_name=LABEL-NAME' Sample Response
{"status":"1","message":"Label has been created successfully."}
WhatsApp API : Catalog List
Catalog List
API End-point : GET/POST
https://botsailor.com/api/v1/whatsapp/catalog/list- String|RequiredapiTokenYour api key
GET Request Example
https://botsailor.com/api/v1/whatsapp/catalog/list?apiToken=API-KEYPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/catalog/list' \
-d 'apiToken=API-KEY' Sample Response
{"status":true,"message":[{"catalog_id":"1429267xxxx5095","catalog_name":"The White","catalog_url":"https:xxxxx","checkout_settings":"{"tax_percentage":"5.5","shipping_charge":"20"}"}]}
WhatsApp Catalog : Sync
Catalog Sync
API End-point : POST
https://botsailor.com/api/v1/whatsapp/catalog/sync- String|RequiredapiTokenYour api key
- String|Requiredwhatsapp_catalog_idYour whatsapp catalog id
POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/catalog/sync' \
-d 'apiToken=API-KEY' \
-d 'whatsapp_catalog_id=WHATSAPP-CATALOG-ID' Sample Response
{"status":"1","message":"Catalog products have been synced successfully."}
WhatsApp API : Catalog Order List
Catalog List
API End-point : GET/POST
https://botsailor.com/api/v1/whatsapp/catalog/order/list- String|RequiredapiTokenYour api key
- String|Optionalwhatsapp_catalog_idYour whatsapp catalog id
GET Request Example
https://botsailor.com/api/v1/whatsapp/catalog/order/list?apiToken=API-KEY&whatsapp_catalog_id=WHATSAPP-CATALOG-IDPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/catalog/order/list' \
-d 'apiToken=API-KEY' \
-d 'whatsapp_catalog_id=WHATSAPP-CATALOG-ID' Sample Response
{"status":"1","message":[{"order_unique_id":"172310467380123456789","catalog_id":"762561142206860","chat_id":"0123456789","catalog_name":"Catalog Name","first_name":"John","cart_total":4300,"cart_currency":"USD","cart_status_raw":"Submitted","ordered_at":"2024-08-08 08:11:13","updated_at":"2024-08-08 08:30:40","payment_amount":4300,"payment_method":"Cash on Delivery","shipping_address":"{\"name\":\"John Doe\",\"phone_number\":\"0123456789\",\"email\":\"test@gmail.com\",\"address\":\"pti road\"}","checkout_account_email":null,"checkout_amount":"0","checkout_timestamp":null,"transaction_id":"PD1723104673012345678933FAD1","paid_at":"2024-08-08 08:30:40","status_changed_at":"2024-08-08 08:30:40"}]}
WhatsApp API : Catalog Order Status Change
Change Catalog Order Status
API End-point : GET/POST
https://botsailor.com/api/v1/whatsapp/catalog/order/status-change- String|RequiredapiTokenYour api key
- String|Requiredorder_unique_idYour Catalog Order ID
- String|Requiredcart_statusStatus value should be Approved|Completed|Shipped|Delivered|Refunded
GET Request Example
https://botsailor.com/api/v1/whatsapp/catalog/order/status-change?apiToken=API-KEY&order_unique_id=ORDER-UNIQUE-ID&cart_status=CART-STATUSPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/whatsapp/catalog/order/status-change' \
-d 'apiToken=API-KEY' \
-d 'order_unique_id=ORDER-UNIQUE-ID' \
-d 'cart_status=CART-STATUS' Sample Response
{"status":true,"message":"Cart status has been updated successfully"}
Botsailor AI : Get Response
Get Response
API End-point : GET/POST
https://botsailor.com/api/v1/ai/get_response- String|RequiredapiTokenYour api key
- Json|RequiredparamYour Data Promt
GET Request Example
https://botsailor.com/api/v1/ai/get_response?apiToken=API-KEY¶m=PARAMPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/ai/get_response' \
-d 'apiToken=API-KEY' \
-d 'param=PARAM' Sample Response
{"status":true,"message":"Cart status has been updated successfully"}
User API : Direct Login Url
An Unique and Secure One-time Login URL
API End-point : GET/POST
https://botsailor.com/api/v1/user/get/direct-login-url- String|RequiredapiTokenYour api key
- Email|RequiredemailEmail of your user
- String|OptionalnameName of your user
- String|OptionalmobileUser phone number
- Integer|Required for new userpackage_idPackage Id
- String|Required for new userexpired_datePackage Expired date like (2023-09-12)
- String|OptionalstatusStatus of user active(1) inactive(0)
- Boolean|Optionalcreate_on_failSet Value 1 for If user not found, create new user with this data or Set(0) it will return User not found error
GET Request Example
https://botsailor.com/api/v1/user/get/direct-login-url?apiToken=API-KEY&email=EMAIL&name=NAME&mobile=MOBILE&package_id=NAME&expired_date=EXPIRED-DATE&status=STATUS&create_on_fail=1POST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/get/direct-login-url' \
-d 'apiToken=API-KEY' \
-d 'email=EMAIL' \
-d 'name=NAME' \
-d 'mobile=MOBILE' \
-d 'package_id=NAME' \
-d 'expired_date=EXPIRED-DATE' \
-d 'status=STATUS' \
-d 'create_on_fail=1' Sample Response
{"status":"1","message":{"email":"user@domain.com","password":"xxxxxxxxxx","login_url":"https://botsailor.com/login","direct_login_url":"https://botsailor.com/direct-login/xxxxxxxxxx"}}
User API : Direct login url only for new users
Create user if not exists and return one-time direct login url. If user exists, it will return `User already existed`.
API End-point : GET/POST
https://botsailor.com/api/v1/user/get/direct-login-url/only-new-users- String|RequiredapiTokenYour api key
- Email|RequiredemailEmail of your user
- Integer|Requiredpackage_idPackage Id
- String|Requiredexpired_datePackage Expired date like (2026-05-05)
GET Request Example
https://botsailor.com/api/v1/user/get/direct-login-url/only-new-users?apiToken=API-KEY&email=EMAIL&package_id=PACKAGE-ID&expired_date=EXPIRED-DATEPOST Request Example
curl -X POST \
'https://botsailor.com/api/v1/user/get/direct-login-url/only-new-users' \
-d 'apiToken=API-KEY' \
-d 'email=EMAIL' \
-d 'package_id=PACKAGE-ID' \
-d 'expired_date=EXPIRED-DATE' Sample Response (Success)
{"status":"1","message":{"email":"user@domain.com","password":"xxxxxxxxxx","login_url":"https://botsailor.com/login","direct_login_url":"https://botsailor.com/direct-login/xxxxxxxxxx"}}Sample Response (Existing User)
{"status":"0","message":"User already existed"}Frequently Asked Questions
Direct answers about the BotSailor REST API, WhatsApp messaging, chatbot flows, authentication, and the /api/v1/ base URL.
The BotSailor API is a REST API that allows developers to connect applications and business systems with BotSailor`s messaging, automation, subscriber management and AI features.
Yes. Developers can send text, media and interactive WhatsApp messages using BotSailor`s WhatsApp API endpoints.
Yes. BotSailor provides API endpoints for listing and triggering WhatsApp bot flows.
API requests are authenticated using a BotSailor API key.
https://botsailor.com/api/v1/

