Effortlessly send millions of texts and media messages, including SMS Broadcast Australia and Bulk SMS Australia, while building 2-way conversations with high-value customers. All this is made possible through our all-in-one web platform with robust APIs, CRM integration, and email to SMS Australia services.
To access the API, an API key is required. Sign up for a developer account here to get access: https://app.gunisms.com.au/signup.
Engage your audience with fast and effective SMS communication.
Keep your team informed, wherever they are.
Automate routine tasks like appointment reminders.
Protect your business with secure, encrypted messaging.
Send millions of messages at once.
Engage in 2-way personalized conversations.
Easily integrate SMS into your existing systems.
App token is necessary for each action that requires authentication.
You can see the images below to know more:
Use the /api/v1/user/token/verify
endpoint to confirm that your APP Token is valid.
Include the token in the Authorization header as a Bearer token:
Authorization: Bearer <YOUR_TOKEN>
How to Configure Webhooks
Guni uses webhooks to send real-time SMS delivery status (DLR) to your application.
You must configure your Callback URL in the Integration settings to receive these status updates.
Delivery Reports (DLRs)
For delivery reports or changes in the status of a message, Guni will send a POST request to your specified Callback URL. You may receive multiple notifications for a single message (e.g., queued → sent → delivered).
Example JSON:
{
"_id": "615afd3cb033992b3a61933f",
"status": "delivered",
"type": "send",
"sender": "+614xxxxxxxx",
"receiver": "40XXXXXXX"
}
Request Body Parameters:
_id
– Unique message IDstatus
– Current status of the message (e.g., delivered)type
– The message action type (e.g., "send")reason
– Error/failure description (if applicable)sender
– The sending phone numberreceiver
– The receiving phone numberReply SMS
Guni also uses a webhook for real-time incoming SMS. You must update your Receive URL in the Integration Settings to handle replies:
When a customer replies via SMS, Guni sends a POST request with the following JSON:
{
"_id": "<unique_id>",
"message": "This is reply message",
"type": "receive",
"sender": "40XXXXXXX",
"receiver": "614xxxxxxxx"
}
Request Body Parameters:
_id
– Unique message IDmessage
– The text response from your customertype
– The message action type (e.g., "receive")sender
– The customer's phone number (who sent the reply)receiver
– Your Guni phone number that received the replyWhen a customer replies via MMS, Guni sends a POST request with the following JSON:
{
"_id": "<unique_id>",
"status": "delivered",
"type": "receive",
"message": "{\"message\":\"<text_message>\",\"media\":[{\"url\":\"<media_url_1>\"},{\"url\":\"<media_url_2>\"}]}",
"sender": "40XXXXXXX",
"receiver": "614xxxxxxxx",
"media": [
{
"url": "<media_url_1>"
},
{
"url": "<media_url_2>"
}
],
"mms": true
}
Request Body Parameters:
_id
– Unique identifier for the message.status
– It will be delivered.type
– The message action type (e.g., "receive").message
– A JSON-encoded string containing:message
– The text response from the customer (empty if it's an MMS with only media).media
– An array of media objects with URLs to attached images, videos, or other files.sender
– The phone number of the customer who sent the message.receiver
– Your Guni phone number that received the message.media
– A separate array listing media URLs attached to the message.mms
– It will be true.Quick SMS:
For scheduling a one-time Quick SMS campaign:
Include an additional scheduleAt
field in the payload.
Include Bearer Token in the request header and use Content-Type: application/json.
sender required | string |
message required | string |
contacts required | Array of strings |
{- "sender": "GuniSMS",
- "message": "My Guni SMS",
- "contacts": [
- "614xxxxxxxx"
]
}
{- "app_type": "web",
- "app_version": "1.0",
- "maintainence": 0,
- "new_version": 0,
- "force_update": 0,
- "invalid_token": 0,
- "refresh_token": "",
- "show_message": 1,
- "is_enc": false,
- "status": true,
- "message": "Quick SMS Sent Successfully",
- "message_type": "toast",
- "data": {
- "queueResponse": [
- {
- "Contact": "4xxxxxxxx",
- "MessageId": "67bb1eee0264198fd1d7ed54",
- "Result": "Message added to queue."
}
]
}
}
For sending (Bulk SMS):
For scheduling a one-time Bulk SMS campaign:
Include an additional scheduleAt
field in the payload and set repeat
to "one_time"
.
Include Bearer Token in the request header and use Content-Type: application/json.
Exactly one of these settings can be true:
name required | string |
description | string |
sender required | string |
message required | string |
contacts required | Array of strings |
optout | boolean |
replyStopToOptOut | boolean |
{- "name": "My BulkSMS Campaign",
- "sender": "GuniSMS",
- "message": "My bulk SMS message",
- "contacts": [
- "614xxxxxxxx"
], - "optout": true,
- "replyStopToOptOut": false
}
{- "app_type": "web",
- "app_version": "1.0",
- "maintainence": 0,
- "new_version": 0,
- "force_update": 0,
- "invalid_token": 0,
- "refresh_token": "",
- "show_message": 0,
- "is_enc": false,
- "status": true,
- "message": "SMS Campaign Sent Successfully",
- "message_type": "toast",
- "data": {
- "success": true,
- "queueResponse": {
- "success": true,
- "data": {
- "optout": false,
- "replyStopToOptOut": false,
- "campaign_type": "promotional",
- "contacts": [
- "40XXXXXXX"
], - "deductibleCredits": 1,
- "active": true,
- "costpersms": 5,
- "numberList": [ ],
- "daysOfWeek": [ ],
- "repeatInterval": 0,
- "_id": "67bc022526098a729fbace5d",
- "name": "Test Campaign\"",
- "sender": "#SharedNum#",
- "message": "Test Campaign",
- "repeat": "one_time",
- "scheduleAt": "2025-02-22T15:50:00.828Z",
- "camp_type": "sms",
- "recipients": 1,
- "status": "sent",
- "user": "66fbff5ae6e9a755cc851aeb",
- "queueJobId": "66fbff5ae6e9a755cc851aeb_#iPTDMiSqPAR2Jrh4",
- "notdeducted": true,
- "media": [ ],
- "queueDetail": [ ],
- "createdAt": "2025-02-24T05:22:45.028Z",
- "updatedAt": "2025-02-24T05:22:45.028Z",
- "__v": 0
}
}
}, - "error": { }
}
For immediate sending (Quick MMS):
For scheduling a one-time Quick MMS campaign:
Include an additional scheduleAt
field in the payload.
Use this endpoint to send Quick MMS messages immediately or schedule them.
media required | string <uri> |
message required | string |
sender required | string |
contacts required | Array of strings |
{ "media": "https://example.com/beach.jpeg", "message": "My quick MMS", "sender": "#SharedNum#", "contacts": "['614xxxxxxxx']" }
{- "app_type": "web",
- "app_version": "1.0",
- "maintainence": 0,
- "new_version": 0,
- "force_update": 0,
- "invalid_token": 0,
- "refresh_token": "",
- "show_message": 0,
- "is_enc": false,
- "status": true,
- "message": "Request is being processed",
- "message_type": "toast",
- "data": {
- "queueResponse": [
- {
- "Contact": "614xxxxxxxx",
- "MessageId": "67bb1fb10264198fd1d7f4ca",
- "Result": "Message added to queue."
}
]
}
}
For Sending (Bulk MMS):
Use this endpoint to send Bulk MMS messages.
If "replyStopToOptOut": true this will put reply stop to optout in message
media required | string <uri> |
message required | string |
sender required | string |
contacts required | string |
name | string |
replyStopToOptout | string |
{ "media": "https://example.com/myImage.jpg", "message": "My bulk MMS message", "sender": "#SharedNum#", "contacts": "['614xxxxxxxx']", "replyStopToOptout": "true" }
{- "app_type": "web",
- "app_version": "1.0",
- "maintainence": 0,
- "new_version": 0,
- "force_update": 0,
- "invalid_token": 0,
- "refresh_token": "",
- "show_message": 0,
- "is_enc": false,
- "status": true,
- "message": "MMS Campaign Sent Successfully",
- "message_type": "toast",
- "data": {
- "sucess": true,
- "bulkId": "67bb1fc526098a729fa4b458",
- "queueResponse": {
- "Result": "Added in queue successfully!",
- "addedBulk": {
- "multigroup": [ ],
- "type": "Mobile",
- "saved": false,
- "optout": false,
- "replyStopToOptOut": false,
- "campaign_type": "promotional",
- "clicks": 0,
- "followUpStatus": "queued",
- "isSMS": false,
- "status": "sent",
- "deductibleCredits": 0,
- "contacts": [ ],
- "costpersms": 0,
- "camp_type": "sms",
- "numberList": [ ],
- "googleSheetCamp": false,
- "_id": "67bb1fc526098a729fa4b458",
- "message": "please ignore test bulk mms arpan das production",
- "user": "66fbff5ae6e9a755cc851aeb",
- "media": [
- {
- "_id": "67bb1fc526098a729fa4b45e",
- "filetype": "image",
}
], - "mediaType": "image",
- "sender": "61439543139",
- "recipients": 1,
- "country": [ ],
- "browser": [ ],
- "platform": [ ],
- "createdAt": "2025-02-23T13:16:53.710Z",
- "updatedAt": "2025-02-23T13:16:53.710Z",
- "__v": 0
}
}
}, - "error": { }
}
Endpoints for dynamic callbacks and detecting long URLs in SMS. If the message content contains multiple URLs, the API will generate a short URL link only for the first long URL. All other URLs will remain unchanged.
Quick SMS messages are sent by automatically detecting long URLs in the message content and including a callback URL, and email for replies.
sender required | string |
message required | string |
contacts required | Array of strings |
callback | string |
replyEmail | string |
{- "sender": "#SharedNum#",
- "message": "Testing Quick SMS with dynamic callback and long auto direct url https://www.google.com",
- "contacts": [
- "614xxxxxxxx"
], - "replyEmail": "replyEmail@example.com"
}
{- "app_type": "web",
- "app_version": "1.0",
- "maintainence": 0,
- "new_version": 0,
- "force_update": 0,
- "invalid_token": 0,
- "refresh_token": "",
- "show_message": 1,
- "is_enc": false,
- "status": true,
- "message": "Quick SMS Sent Successfully",
- "message_type": "toast",
- "data": {
- "queueResponse": [
- {
- "Contact": "4xxxxxxxx",
- "MessageId": "67bb1eee0264198fd1d7ed54",
- "Result": "Message added to queue."
}
]
}
}
Bulk SMS messages are sent by automatically detecting long URLs in the message content and including a callback URL, and email for replies.
Exactly one of these settings can be true:
name required | string |
description | string |
sender required | string |
message required | string |
contacts required | Array of strings |
optout | boolean |
replyStopToOptOut | boolean |
callback | string |
replyEmail | string |
{- "sender": "#SharedNum#",
- "message": "Testing bulk SMS with dynamic callback and long auto direct url https://www.google.com",
- "contacts": [
- "614xxxxxxxx"
], - "name": "CampaignName",
- "replyEmail": "replyEmail@example.com",
- "optout": false,
- "replyStopToOptOut": true
}
{- "app_type": "web",
- "app_version": "1.0",
- "maintainence": 0,
- "new_version": 0,
- "force_update": 0,
- "invalid_token": 0,
- "refresh_token": "",
- "show_message": 0,
- "is_enc": false,
- "status": true,
- "message": "SMS Campaign Sent Successfully",
- "message_type": "toast",
- "data": {
- "sucess": true,
- "bulkId": "67bb20330264198fd1d7f852",
- "queueResponse": {
- "Result": "Added in queue successfully!",
- "addedBulk": {
- "multigroup": [ ],
- "type": "Mobile",
- "saved": false,
- "optout": false,
- "replyStopToOptOut": false,
- "campaign_type": "promotional",
- "clicks": 0,
- "followUpStatus": "queued",
- "isSMS": true,
- "status": "sent",
- "deductibleCredits": 0,
- "contacts": [ ],
- "costpersms": 0,
- "camp_type": "sms",
- "numberList": [ ],
- "googleSheetCamp": false,
- "_id": "67bb20330264198fd1d7f852",
- "name": "Abc",
- "message": "Testing bulk SMS with dynamic callback and long auto direct url tnly.cc/XXXXXX",
- "user": "66fbff5ae6e9a755cc851aeb",
- "sender": "614xxxxxxxx",
- "recipients": 1,
- "createdBy": "66fbff5ae6e9a755cc851aeb",
- "replyEmail": "replyEmail@example.com",
- "country": [ ],
- "browser": [ ],
- "platform": [ ],
- "media": [ ],
- "createdAt": "2025-02-23T13:18:43.881Z",
- "updatedAt": "2025-02-23T13:18:43.881Z",
- "__v": 0
}
}
}, - "error": { }
}