Only this pageAll pages
Powered by GitBook
1 of 86

Postman v2 Guide

Postman v2 API Docs

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Postman v2 general user guide (MoP)

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Postman v2 Admin Portal, for UI Users (MOP)

Loading...

Postman v2 Admin Portal for API users (MOP)

Loading...

Loading...

Loading...

Postman v2 admin portal, for UI users (Internal)

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

General notes for API users

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Endpoints for API users

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

SFTP

Loading...

Loading...

Loading...

Loading...

Loading...

Load Test

Loading...

FAQ

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Legal

Loading...

Loading...

Call App

Loading...

Loading...

Postman v2 SMS API user documentation

General notes for SMS API users

Please note that this documentation is a work-in-progress and is subjected to minor changes based on requests and response bodies.

Important dates

WOG Training Dates

The training dates below are for using the Postman v2 UI.

Date
Time
Description
Remarks

13 Mar 2024

2.30pm-4.30pm

BTN UI Briefing 1

For meeting link, please contact the BTN team.

17 Apr 2024

2.30pm-4.30pm

BTN UI Briefing 2

For meeting link, please contact the BTN team.

20 May 2024

10am-11.30am

Briefing on Access Controls

For meeting link, please contact the BTN team.

Postman Guide latest updates

Latest updates made to this document

Date
Pages
Updates

5 May 2025

21 Apr 2025

Release of endpoints

8 Apr 2025

Updated feature to support decommission of Notify

4 Apr 2025

Updated the Terms of Use

25 Feb 2025

Updated Default API Rate Limit to 10

18 Feb 2025

Restricted sensitive-normal data

10 Feb 2025

Details on blocking unsupported characters at the API layer Relevant API response error message

22 Jan 2025

What is load test and how can you book for load test

16 Jan 2025

Explanation of creatorId string

Inserted creatorId into new response payloads effective 24 Feb 2025

26 Dec 2024

How to delete campaigns

10 Dec 2024

How to identify your agency PIC(s)

26 Nov 2024

Postman's service status

Link to Policy Document - for users who need to identify root CAs

19 Nov 2024

Updated terminology Included more details on SLOs

14 Nov 2024

Updated our SLAs

12 Nov 2024

Campaign creation

Changed "full access" and "can send messages only" campaign role terms to "campaign owner" and "member" respectively

24 Oct 2024

Updates on retrying routing_error

30 Sep 2024

Updates on new estimated costs for SMS

18 Sep 2024

recipients: changed from string to numeric

17 Sep 2024

Updated link to access Legacy Postman to send emails out

How to format messages to contain commas, line breaks and quotation marks

Detailing error codes with troubleshooting steps, and introducing message_expired error code (release on 30 September 2024)

Book your TPS load test on Postman load test environment

Added "sent_at" and "delivered_at" fields to Retrieve Message API body.

21 Aug 2024

Updated consequence of using "fake" numbers

20 Aug 2024

Updated examples of successful and failed file uploads

2 Aug 2024

Adding and removing PIC(s)

Merged step 6 into step 4 as the information was repeated. Added some troubleshooting tips in step 5 .

2 Aug 2024

Removed 65 9999 9999 from example trigger conditions for recipient_invalid error code

24 Jul 2024

[25 Jul 2024] Fix deployed for Postman Policy guide. Please log in with your TechPass/agency email address to view.

16 Jul 2024

Updated with Postman's message segment calculator

4 Jul 2024

Updated SLA

2 Jul 2024

Do not use fake numbers to send SMSes for testing purposes

27 Jun 2024

Update on unsupported characters Update for corresponding status in dashboard

19 Jun 2024

success definition under From 31 May had errors but has since been amended.

12 Jun 2024

Removed 。 from unsupported characters list.

12 Jun 2024

Provided updates for Rate Limits and SLAs. Added more unsupported characters.

10 Jun 2024

Provided updates for Rate Limits and SLAs.

5 Jun 2024

Updated variables where variable content should not start or end with a space.

4 Jun 2024

New page how to switch sender IDs

30 May 2024

Added ` (backtick) to list of unsupported characters. Added list of unsupported characters to Message Content page

24 May 2024

Removal of Oracle guide on SSH Key generation

New commands to generate your SSH key pair Example of SSH keys

20 May 2024

Updated latest status

16 May 2024

Launch of Postman SFTP Production Site

Renamed Errors page to API Errors

Updated API response Updated status

New message objects for attempts

Updated with delivered

New page - errors

Updated API response

Updated API response

Updated API response

14 May 2024

Added Single and Batch Send Retry endpoints

Feature release: Campaign create access

3 May 2024

Removed Singpass login

Updated with Singpass login FAQ

26 Apr 2024

Updated criteria and examples where header name changes are permitted.

15 Apr 2024

8 Apr 2024

Added Terms & Condition and Privacy Policy

31 Mar 2024

Updated production base URL. Please note that message sending is currently unavailable.

SFTP is not available on Postman v2's production site until June 2024.

Updated conditions for agency's sender ID to appear under Postman v2's dropdown on production site.

21 Mar 2024

Created guide for admin portal users on sending internal messages

13 Mar 2024

Updated UI Training dates

8 Mar 2024

Do not conduct load testing on our test site

26 Feb 2024

General campaign creation guide for all users

Created message logs page

Created guide for admin portal users on sending messages

Updated FAQ

23 Feb 2024

SLAs for Postman v2.

Updated the SFTP documentation

FAQ updates

Added questions on SMS retry, priority tags, read statuses.

19 Feb 2024

Updated key types and info on IP address whitelisting

9 Feb 2024

Updated character count rules

Differences between admin and member access

Updated port number

29 Jan 2024

Actual rate limits will be released at a later date

Endpoints for API users

Updated full API payload for endpoints

Updated character count per message

23 Jan 2024

How to create line breaks in a message

Postman v2 Admin Portal for API users

Updated screens

22 Jan 2024

Created temporary sender name section

Updated production environment release dates

19 Jan 2024

Updated list of unsupported characters

Updated IP address whitelisting

16 Jan 2024

Updated SFTP Docs

11 Jan 2024

Training dates updated on MS Teams

8 Jan 2024

Postman API test environment is now live. This site is meant for API testing purpose only.

5 Jan 2024

Release of WOG BTN MS Teams channel

WOG BTN Teams channel set up for agency PICs

4 Jan 2024

Edited bulk to batch Edited endpoints containing word bulk to batch

31 Dec 2023

Postman test environment

We will be migrating our test environment domain, URL release will be shifted from 31 Dec 2023 to 8 Jan 2024

recipient string - Removed the + in front of the country code

Created the UI flow for API users - end goal for users to whitelist IP addresses and obtain API keys

20 Dec 2023

Updated workflow process

Removal of "Option 2"

Created page for updates to the API documents

Updated FAQ list

19 Dec 2023

18 Dec 2023

Updated FAQ list

16 Dec 2023

Released SFTP documentation

Updated FAQ list

Service Status

Visit the following page for the latest updates on Postman's sending service and telco uptime

Non-GSIB laptops

GSIB laptops

Postman v2 SLOs

SLOs are Service Level Objectives, which provide you with insight on the goals and objectives that the Postman product holds itself to.

1. What are the Postman SLOs?

  • It is important to distinguish between the Service Level Objectives (SLOs) for Postman and the overall systems SLOs. Postman, as an integrated component within the larger system, has its own specific SLOs. Postman-specific SLOs focus on the performance, reliability, and efficiency of the Postman product itself. In other words, the Postman team is directly responsible for maintaining and monitoring these product-specific SLOs.

  • In contrast, the overall system SLOs encompass the end-to-end performance of the entire integrated system, including Postman and all downstream components such as Tier 1 SMS Aggregators and Telcos.

  • The Postman product contributes to the overall system performance. Therefore, our primary responsibilities and accountabilities lie with meeting and upholding the Postman-specific SLOs. The other individual players are held to their own SLOs and SLAs that are separate from Postman's SLOs with you.

  • We actively manage and optimise Postman to meet these objectives, thereby ensuring our component's optimal contribution to the broader system performance.

2. What is Postman v2’s system uptime?

  • Postman aims to have an uptime of >99.5%. We have internal services to monitor Postman uptime 24/7. These services send alerts if the product is down to the engineer-on-call, so that we can respond as soon as possible.

3. Any maintenance downtime for Postman v2?

  • No, we will inform all users if there is going to be a scheduled downtime.

4. Subscribe to status updates:

  • Typically, we inform users of downtime only if resolution is expected to take longer than a day, or if your campaign is directly affected.

5. How long can I expect a reply for my queries?

  • Please ensure your requests are submitted via this form, rather than through emailing the team, as we are unable to respond as promptly to individual emails.

6. What are Postman's rate limits?

7. Where and when can I expect to be informed about updates to Postman?

  • Where a product update is significant and will affect your workflows, we will communicate this through email blasts to all users of the Postman v2 test and production environments.

  • We seek your understanding that as the product is still developing and the situation remains dynamic, changes may be made along the way, and may affect your current system set-ups. As far as possible, we will try our best to communicate this to you with significant heads-up for you to make the necessary preparations.

  • We apologise in advance for cases where we inform of changes in a short span of time.

8. What is the expected deliverability standards i can expect for my campaign?

If you're 1) sending to local numbers, 2) Using only GSM characters, 3) less than 6 message segments, you can expect:

Overall Systems SLOs

Metrics
Description

Terminal status (%)

Within 48 hours

95% of all messages will reach terminal status (success or failure)

After 80 hours

All messages will reach terminal status (success or failure)

Time taken for your message to reach your recipient

Single Send 90% of messages will reach terminal status in under 2 minute Batch Send For batches of up to 1 Million messages, 90% of messages will reach terminal status under 24 hours

Postman System SLOs

Metrics
Description

Availability

Single Send 99.9% of requests per month have a successful response (Any HTTP response other than 500-599 is considered successful) Retrieve Single Send Messages 99.9% of requests per month have a successful response (Any HTTP response other than 500-599 is considered successful)

Batch Send 99.9% of requests per month have a successful response (Any HTTP response other than 500-599 is considered successful) Retrieve Batch Send Messages 99.9% of requests per month have a successful response (Any HTTP response other than 500-599 is considered successful)

Latency

Single Send 99.9% of requests per month, excluding network latency, have a response under 500ms Retrieve Single Send Messages 99.9% of requests per month, excluding network latency, have a response under 300ms Batch Send 95% of requests per month, excluding network latency, have a response under 3s 99.9% of requests per month, excluding network latency, have a response under 15s Retrieve Batch Send Messages 95% of requests per month, excluding network latency, have a response under 500ms 99.9% of requests per month, excluding network latency, have a response under 5s

8. Please see the table below for guidelines on incident handling:

Severity level
What it means
Examples
Resolution time

1

A critical incident with very high impact

  • A user-facing service like Postman is down for all users.

  • Confidentiality or privacy is breached.

  • User data loss.

Within THREE (3) hours.

2

An incident with low impact

  • A user-facing service like Postman is unavailable for a subset of users.

  • Core functionality (e.g. sending messages, creating campaigns) is significantly impacted.

Within TWENTY FOUR (24) hours.

3

A small bug or issue affecting a single user

  • A minor inconvenience to users as workarounds are already available.

  • Usable performance degration.

Within THREE (3) working days.

About Postman v2

Read this guide for integration and/or testing information with Postman v2. You will need to use Postman v2 for sending SMSes to external recipients using the authorised sender ID.

This site is for Postman v2, used for sending SMSes with the authorised sender ID only.

Test Platform

Test Environment

Production Platform

Production Environment

What types of data can Postman handle?

Postman can handle up to restricted sensitive-normal data, and is compliant with the new-IM8 policy for Low-Risk systems.

Inquiries and FAQ

If you are a vendor with questions regarding our API documents, please indicate the contact details of the government officer-in-charge and their agency email address in your form response.

Direct users to Postman to detect unsupported characters and updated replacement suggestions.

No changes to the success definiiton in the table.

Updated with

Updated with

Updated

For non-GSIB users please access this page via

For GSIB users, please access this page via , do ensure that you add https://safe.menlosecurity.com/ in front of your link.

If you are unable to access Postman services and would like to check if it is due to an unplanned downtime, check our status page .

If you are unable to access Postman services and would like to check if it is due to an unplanned downtime, check our status page . You can also subscribe yourself to email notifications.

We will get back to you on your submissions within 5 working days.

For more information on rate limits, please click .

Whenever we make an update to the product, it will be listed on our .

We will also communicate this on our BTN Microsoft Teams channel called "WOG Channel for BTN". If you are not in this channel, please let us know by submitting this . Note that only users with emails ending in ".gov.sg" can be added to the channel. Vendors cannot be added to the channel.

Please access the Postman Policy guide at Click "log in" and use your TechPass or agency email address to view the policy guide.

Subscribe to the Postman v2 status page at to receive automated email notifications when incidents happen. Users are also encouraged to regularly check this page for potential system degradations due to large campaigns or internal testing.

To continue using the old Postman (Postman Legacy) to send out email campaigns, please access Postman V1 (Postman Legacy) here:

Type
Base URL
Remarks

Please submit your system's before using Postman v2's production site.

Type
Base URL
Remarks

For more information, you may refer to the section of our guide on which requires 'gov.sg' email domain for login.

If you have any questions, please refer to our for a list of frequently asked questions.

If your questions have not been answered, you may fill up our form and our team will get back to you.

https://status.postman.gov.sg
https://safe.menlosecurity.com/status.postman.gov.sg
here
here
form
here
updates page
form

Non-Sensitive or Low Sensitivity

  • Transactions

  • Notifications

  • Information broadcast

  • Receipts

  • Reminders

  • Masked NRIC

Normal Sensitivity

  • Personal details such as home address, mobile number, email ID, job roles

  • Full NRIC or FIN number

Authorised Sender ID Switch
Message delivery errors
Message content
message segment calculator
Sending SMS using NRIC
Sending SMS using NRIC
Terms of Use
Rate Limits
Blocking unsupported characters at the API layer
Load Test Booking Requirement
The message object
Single Send
Single Send - Retry
Retrieve Message
Retrieve Batch
Retrieve Campaign Message
Deleting Campaigns
Service Status
Postman Certificates
Postman v2 SLOs
Postman v2 SLAs
Message delivery errors
Estimated SMS costs
Sending emails to users (Legacy Postman)
Detailed explanation of error codes and new error code type: message_expired
Load test booking link
New fields to Retrieve Message API Body
Updates to using "fake" numbers
Checking whether sending via SFTP is successful
User Access
Fill your Twilio credentials on Postman
Message Delivery Error
Postman Policy Guide
Postman v2 SLAs
Do not use "fake" numbers as recipients
Rate Limits
SLAs
SFTP Integration
Generating SSH Keys
API Errors
Retrieve message
Retrieve batch
Retrieve campaign message
Single Send - Retry
Batch Send - Retry
Access related inquiries
Postman SFTP Integration Test
form link
Terms & Condition
Privacy Policy
Useful links
Postman v2's API Integration Test
SFTP on Production Site
Internal SMS
Important dates
Create campaign
Message Logs
Sending messages via the Admin Portal
Postman FAQ
SLAs
SFTP update
SFTP update
Character Count
Admin/member access
SFTP update
Rate Limits
The message object
SFTP Integration
Create message
Endpoints for API users
Batch Send
Retrieve Batch
Postman v2 admin portal
Create message workflow
API documents latest updates
Postman v2 SMS API FAQ
Retrieve Batch
Postman v2 SMS API FAQ
SFTP
Postman v2 SMS API FAQ
https://docs.developer.tech.gov.sg/docs/postman-sgdp-guide/.
https://status.postman.gov.sg/
https://legacy.postman.gov.sg/
API Integration Test
IM8 Policies
FAQ page
Contact Us
Postman Data Security and Sensitivity classification
Postman SFTP Production Site Launch
Postman v2 Production site launch
Release of Postman test environment
Important Dates
Message Content
Changing your message header
How do identify my agency PICs?
Create campaign
Temporary Sender Name
Create campaign - Temporary
sender name

Postman API

Create campaign, whitelist IP addresses, generate API keys

Postman Admin Portal (UI)

Create campaign, send using UI

Postman SFTP

Postman API

Create campaign, whitelist IP addresses, generate API keys

Postman Admin Portal (UI)

Create campaign, send using UI

Postman SFTP

Message content

Message content

This flow allows you to create your own message in Postman using an editor and can be used by both admin portal and API users.

Message parameters (variables)

You can create multiple {{variables}} when typing out your message content. You can then input the values of each {{variable}}when you send the message from the admin portal or via API.

Variables have to fulfil the following in order to be successfully created

  • Can only contain lowercase letters, numbers and _

  • Must start with a lowercase letter

  • If multiple languages are selected, the same variables must be present in all language tabs.

  • Characters are within the GSM-7 character set. See section below on unsupported characters for more info.

Additional notes to message content

Unsupported characters

It is recommended to NOT paste message content into Postman from another editor/MS word/Outlook etc., as this may convert characters into unsupported (non-GSM-7) characters. Please type the message content directly into Postman.

Postman message segment calculator

  • identify unsupported characters within your message content

  • identify non GSM characters within your message content

  • check the number of message segments

This is what happens if you include unsupported characters in your messages:

  1. unsupported characters changes the message encoding and therefore, significantly increases the number of message segments per SMS.

  2. besides cost, long messages with multiple segments will jam the send queue, affecting even the campaigns of other agencies besides your own.

  3. Reliability of sending messages cannot be guaranteed beyond 7 message segments per SMS, a limitation imposed by telcos. Hence, we advise you to keep your messages below 7 segments.

Blocking unsupported characters at the UI and API layers [English language only]

Message content containing unsupported characters will be blocked from sending.

  1. On the UI:

Campaign templates that contain unsupported characters cannot be created on the UI/Postman admin portal. This blocking has been implemented since June 2024.

  1. On the API:

If your message content is created only at the API layer, we will implement blocking on the Postman production environment from 5 May 2025. This blocking will be available on the Postman test environment from 17 February 2025.

Error message if your message contains unsupported characters at the API layer:

{
	"error": {
		"code": "parameter_invalid",
		"message": "Parameter values cannot contain avoidable expensive characters. Please refer to the guide (https://postman-v2.guides.gov.sg) to learn more.",
		"type": "domain_error",
		"id": "8758298681140894082"
	}
}

Trailing white spaces in variables

Note that the content within your variables should not start nor end with a space, as this will trigger an error where your message will not be created (400 Bad Request).

eg. "Please report to Clinic A ."

In this example, contents in the variable are coloured, and the trailing spaces at the start/end of the variable content are highlighted in blue. The additional spaces will trigger an error where your message will not be created in Postman.

Possible replacements to unsupported characters

Excluded/unsupported Characters
Description
Possible Replacements that Postman supports

|

vertical line and variants

I (uppercase i)

€

euro

EUR

{

left curly bracket and variants

(

}

right curly bracket and variants

)

[

left square bracket

(

]

right square bracket

)

~

tilde and variants

-

\

backslash and variants

'

`

backtick (note that this is not an apostrophe ' . You can find it to the left of the "1" on your keyboard) and variants

"

‘

acute accent and variants

'

“

double prime quotation mark and variants

"

”

reversed double prime quotation mark and variants

"

¬

logical negation

-

«

left-pointing double angle quotation mark

"

»

right-pointing double angle quotation mark

"

❝ or ❛

heavy double/single turned comma quotation mark ornament

"

❞ or ❜

heavy double/single comma quotation mark ornament

"

÷

division sign

/

¼, ½

vulgar fractions and variants

1/4, 1/2 etc.

•

bullet point

-

⊛, ✢, ✣, ✤, ✥, ✺, ❃, ⧆ etc

asterisk and variants

*

Message Preview

Message Preview

This is how your message will look like:

Header

The Header corresponds to the email account that you have logged into Postman with.

You may check on the email account that you've used to log into Postman by clicking on the avatar at the bottom right of the page. Refer to the image for more information

Changing your message header

Header name changes are permitted in specific cases, and approved on a case-by-case basis. Some examples where header name changes are permitted.

Platform products

An agency sending on behalf of another agency

Cases where header name changes are not permitted

If your agency has a project that sends out surveys or information on welfare packages etc, these do not qualify for header name changes.

Create Campaign

How do I start creating a campaign?

Campaign creators must log in with their .gov.sg email address, and request for access to create campaigns from their agency PICs. Users with no .gov.sg email address are not allowed to create campaigns.

Campaign Creation and API keys for API users

Campaign creation should be the first step for all users, regardless if they are Admin portal, API users or SFTP users.

In order for API users to obtain the API keys for system integration, you will need to

  1. Create Campaign and obtain a Campaign ID

Campaign Create Access

Postman will be implementing tighter access on creating campaigns.

From 20 May 2024, you will need to request for campaign create access from your agency person-in-charge (Agency PIC), before you can start creating campaigns. This change will be implemented on both our test and production platform.

How do identify my agency PICs?

You can idenfy your agency PICs by clicking on the ? button on your Postman dashboard.

Create Campaign

To start creating campaigns, select + Create campaigns on your home page

Campaign creation will consist of 3 steps:

1. Campaign Name

Upon clicking on + Create Campaign you will be taken to the campaign creation page and asked to name your campaign.

2. Channel Type

Postman has 2 types of campaign channels available - Member of Public and Internal Staff

  1. Member of Public: To send out messages to MOPs

  2. Internal Staff - to send out with your own sender ID

    • You will need to provide your own Twilio credentials if you choose the Internal Staff option

All messages sent out to MOPs via the Members of Public option will come from the gov.sg sender ID.

3. Campaign content

You will not be able to edit your campaign content after creating your campaign.

The campaign content is the content in the SMS that you will be sending out. You will be prompted to type out your campaign's message content.

There are different parts to the campaign content screen:

Logging into Postman v2

Login method for both admin portal users and API users are the same.

Government Officers

From 3 May 2023, Singpass login for Postman has been removed. Please log in using your gov.sg email accounts.

Vendors may request for access to Postman v2 to view campaigns

Please request for access from a government officer.

Email login

If you selected email login, you will need to key in an OTP that is sent to your email address.

Agency users without a gov.sg email domain

  • edu.sg

  • synapxe.sg

  • aic.sg

Rate Limits
Message Content
Message Content
Message Content
Message Content
Message Content

Create campaign, whitelist Postman's IP addresses, generate API keys, then submit this .

Create campaign, whitelist Postman's IP addresses, generate API keys, then submit this .

For API users who do not want to manage your message templates within Postman, click for more information.

You may make use of to

Messages containing avoidable unsupported characters will be blocked from sending. Please use the to check your message before sending.

Details have been sent to you via email on 7 February 2025, and also available on the policy guide .

Note that this unsupported character list below is not exhaustive. Please use the to check your message for unsupported characters.

Message Preview

If you have more than 1 official email address belonging to different agencies, ensure that you have .

Some products are used by multiple agencies, and recognised by the product name rather than agency name e.g. "Singpass", and not "Government Technology Agency". If you need to change the name in the header, please with your use case.

If you are helping another agency send messages, the main agency should add your agency's users as members/admins to the campaign so they are able to send messages from the main agency's created campaign. Please if you need further clarification for your specific use case.

More information can be found in our .

The following agencies without a gov.sg email domain can access Postman and are given .

More information for users who require admin access can be found .

https://test.postman.gov.sg/api/v2
https://test.postman.gov.sg
https://test.sftp.postman.gov.sg
form
https://postman.gov.sg/api/v2
https://postman.gov.sg
https://sftp.postman.gov.sg
form
here
Postman's message segment calculator
message segment calculator
here
message segment calculator
contact us
contact us
policy guide
Campaign name
Channel type
Campaign content
Message preview
Language tab
Message content
Character count
LogoOGP status
LogoMenlo Security
Logging into Postman v2
logged in with the correct email address

Language tab

Language tab

If you are sending out messages in other languages, you can select the correct language tab before you key in your message content.

  1. Message Content

    • Content in the message body field of each language is not automatically translated.

    • As a user, you will be required to input the correct language text into the message body field.

    • eg. If you select Malay as your language, you should input your message in Malay into the message body field; messages will not be translated for you.

  2. SMS Header

    • SMS header will always remain in English.

  3. SMS Footer

    • The SMS Footer of each message changes with the language selected.

    • eg. If you select Malay as your language, the SMS footer will change to Malay.

Character Count
Integrations - IP address whitelisting
Whitelist your IP address
Generate your API keys
member access
here
Load testing information
Character Count
API users who do not want to manage your message templates within Postman
Sending messages via the Admin Portal

How do I onboard Postman v2 Internal SMS

Unlike Postman V1 (Legacy Postman), agencies will no longer need to submit the SMS onboarding form. Please directly apply for an account with Twilio.

  1. Register your desired Sender ID with SGNIC - note that these sender IDs should be used only for internal-facing SMSes.

  2. Sign up for a Twilio account

  3. Set Up your Twilio account

  4. Configure your Twilio account

  5. Send a test message on Twilio

  6. Fill in your Twilio credentials in your campaign in Postman.

Message Logs

How do I download message logs for my campaign?

In the campaign dashboard, there are 2 categories:

Messages

Messages consists of all messages that you have sent out in a single campaign.

Messages may be sent out as a single message, or can be part of a batch of messages. You may identify this through the Job Type column in the campaign dashboard.

(Please ignore the details under From column.)

You will then receive the logs in your email, and you may filter out the required logs you will need using excel.

Each message will have its own message ID, this message ID can be found in the message logs that you download.

Batches

Similarly, you will receive the logs in your email, and you may filter out the required logs you will need using excel.

Retrieving logs by calling Postman API endpoints

Refer to the following pages to retrieve the message status for your campaigns

Character count

Visit https://message-segment-calculator.postman.gov.sg for message segment and character counts

Postman allows a maximum of 1000 characters for a message body, excluding the header (agency’s name) and footer.

Agencies are strongly encouraged to limit their message body to 320 characters (excluding the header and footer) to avoid potential delays with message deliverability. As a precautionary measure, a warning message will appear for messages beyond 320 characters.

If the message body exceeds 1000 characters, the system will disable the ability to send the message. Message parameters, such as {{variable}} are not counted as characters. However, when these parameters are populated with actual values, the character count of the populated value is added to the overall character count.

For example:

  • Message variable placeholder {{name}} is not included in the character count when crafting the message template.

  • Filling the {{name}} variable with “Jonathan” adds 8 characters to the count

Use the Message Segment Tool before sending messages

Characters - English Language

The characters in a single text message include the following for "English" language*, with additional formatting details:

  • Header: Free text field in message segment tool to type your agency name

  • Line breaker (\n\n): 2 characters

  • Slash icon ( --- ): 3 characters to separate sections

  • Body: Free text field for your message content

  • Line breaker (\n\n): 2 characters

  • Slash icon ( --- ): 3 characters to separate sections

  • Footer: 62 characters* for standardised "English" text used across all WOG messages

*Do note that the character count is different for other languages such as Chinese and Tamil.

Encoding used for English language

Enter your message template into the message segment tool to identify characters that are classified as GSM-7, non-GSM-7 and blocked characters in the "Underlying character codes" section.

Encoding used for English language

The encoding used for other languages (Chinese and Tamil) is Unicode, where both the footer contains either Chinese or Tamil characters.

Number of segment

A message segment refers to a portion of a text message when the total length exceeds 160 GSM-7 characters. If a single message is longer than 160 characters (including header and footer), it is divided into multiple segments. Each segment contains up to 160 GSM characters, including the header and footer. However, when a message uses more than one segment, the character limit per segment is reduced to 153 characters.

If the text message contains a Unicode encoding character, the maximum character count for one segment is 70 characters. If the Unicode message is longer than 70 characters (including header and footer), the character limit per segment is reduced to 67 characters.

You will be able to view how the message is broken up to multiple segments (as shown below) in “Message Parsed” and “Underlying Character Codes”, based on the character count, and this ensures that the character limits for each segment are properly managed.

Character count for message body

The character count applies only to the content typed in the free text box for the message template. The maximum number of characters Postman allows is 1000, excluding header and footer.

Total characters including header and footer

The total character count includes the entire messages including the agency name as the header, the body of the message and the standardised government text as the footer.

Estimated cost per SMS

Campaign Settings

How do I whitelist my IP address and obtain my API keys?

Click on your campaign and the settings icon, this will open up your settings pop-up.

Please ignore TODO: Persist sender ID under the Sender ID field.

Settings - About

You will be able to view the following details

  • Campaign ID

  • Campaign Channel

  • Campaign Message

  • Download campaign logs

Settings - Members

Learn about the three types of access rights to Postman campaigns.

Campaign Owner
Member
Member Restricted

Send messages with the campaign

Yes

Yes

Yes

Manage users and system integrations

Yes

No

No

View all messages sent

Yes

Yes

Only view messages sent by restricted member. Not able to view messages sent by other members in the campaign.

For agency officers without a .gov.sg email domain, you will need to get .gov.sg email domain from your parent ministry.

What are some special cases?

  1. Non gov.sg domains that are considered government entities

    1. For now, this is limited to aic.sg, synapxe.sg, edu.sg

    2. *By default, every user with this domains has member access rights.

    3. Otherwise, all users with these domains can already log into Postman and view campaigns they have been added to (i.e. member access)

  2. Vendors helping government entities with API integrations

    1. In such cases, Postman will not be granting vendors access to the portal. This means vendors with non-whitelisted email domains cannot log into Postman.

    2. Agency officers should log into Postman, create the campaign and craft the message, whitelist the IP addresses, generate the API keys and pass the API keys to the vendors for the necessary integration.

  3. Vendors helping government entities send messages on Postman UI

    1. Vendors will then be able to log in and send messages, but not create campaigns i.e. member access

Integrations

Integrations are where you can whitelist your IP addresses and generate your API keys.

Integrations - IP address whitelisting

Provide your IP address for whitelisting. You will be able to provide up to 20 IP addresses.

Whitelist only

  • Static IP addresses

  • IP addresses that you are using to call the Postman API.

Connect to a VPN before calling the Postman APIs.

API Keys

You will only be able to obtain your API keys after you have whitelisted your IP address.

One campaign can have up to 3 API keys.

Do API keys have an expiry?

The API keys have no expiry.

If you need to obtain a new API key, you can simply delete the old key and generate a new key.

Useful Links

Sending Messages via Postman API

How do I send out messages if I want to call Postman's API Endpoints

Before calling Postman's API endpoints, please ensure

Multiple message parameters (variables)

In this example, we will be using the following message content with multiple message parameters (variables).

Dear {{name}}, your next appointment at {{clinic}} is on {{date}} at {{time}} hrs. 

Request Body example

Example Request Body
{
    "recipient": "6599999999",
    "language": "english",
    "values": {
        // The following values are values for the parameters in the example template
        "name": "John Doe",
        "clinic": "Example Clinic",
        "date": "11 Dec 2023",
        "time": "11:30 am"
    }
}

CSV example for batch send

Example CSV for batch send
recipient,language,name,clinic,date,time
6599999999,ENGLISH,John Doe,Example Clinic,11 Dec 2023,11:30 am

API users who do not want to manage your message templates within Postman

If you are an API user that

  • manages message templates within your own system

  • uses Postman solely for sending out the full text of your message

you may create a single variable, {{body}}, and insert the message into the {{body}} variable.

Request Body example - single variable {{body}}

Example Request body
{
    "recipient": "6599999999",
    "language": "english",
    "values": {
    // The following values are values for the parameters in the example template
        "body": "Fill in your system constructed message here"
    },
}

CSV example for batch send - single variable {{body}}

Example CSV for batch send
recipient,language,body
6599999999,english,"Fill in your system constructed message here"

Line breaks in {{body}} messages

When formatting line breaks in your request body, please note the differences between

Single message

Request Body example - {{body}} and line breaks

Example Request Body with line breaks
{
    "recipient": "6599999999",
    "language": "english",
    "values": {
    // The following values are values for the parameters in the example template
        "body": "Dear Amy \n\nYour appointment for VACCINATION is confirmed.\n\nPlease do not reply to this message."
    },
}

For single message requests, you will be required to add the \n in your request body.

Batch messages

Postman only accepts .csv files for batch message. Take note of the differences when creating messages in excel and in a text editor.

For batch messages, do not to use \n to create line breaks, as the characters will be read as plain text and get sent out to MOPs

Text Editor

CSV example for batch send - {{body}} and line breaks

Example Request Body with line breaks
recipient,language,body
6591234567,english,"Dear Amy 

Your appointment for VACCINATION is confirmed.

Please do not reply to this message."
6599999999,english,"Dear John 

Your appointment for VACCINATION is confirmed.

Please do not reply to this message."

Your message in the {{body}} variable will need to be encased in "" if you are creating messages from a text editor.

Excel

Excel automatically adds "" to your file after you have saved it as a .csv file.

As such, do not encase the message in the {{body}} variable in "".

Postman Test Site limitations

DO NOT conduct load testing on our test site.

Postman's test site is meant for agency users to test out the platform. As such, you should test out the site like how you would send out messages to MOPs in a real scenario, where each number will only receive a single message.

Multiple messages to the same user

If you send test messages with exact same content to the same person multiple times in 1 sitting in the same campaign:

eg. "Hi your appointment is on 1 Jan 2024" was sent to Tom 10 times within 1 batch send.

The telcos' automatic spam filter may be triggered . This means the message may not be delivered to Tom's phone at all, even though it will pass Postman’s send filters and status is reflected as delivered. See screenshot below on how the batch .csv is formatted in this failed example.

Sending messages via the Admin Portal

How do I use the admin portal (Postman UI) to send out messages?

To start sending out messages, select the campaign that you wish to use. This will take you to the campaign dashboard page. You may choose to send to a single recipient or multiple recipients

Single recipient

Upon selecting single recipient, a pop-up will prompt you to key in your recipient's details.

  • Recipient's phone number

  • Message language*

  • Message parameters

Once the details have been filled in, click send to send out your message.

All message parameters needs to be filled before you can send out the message.

Formatting a single message

You may start entering fields into your message parameters.

Should there be a need to add commas or quotation marks in your message parameters, you may enter them in your message parameters.

Multiple recipients

Upon selecting multiple recipients, you will be prompted to upload a .csv file containing

  • message parameters

All message parameters need to be filled before you can send out your messages.

We highly recommend the following steps when formatting your .csv file to send out messages

  1. Download campaign .csv template

  2. Edit the .csv template and save it as a .csv file

  3. Upload your .csv file

In the multiple recipients sending format, any errors in the CSV file rows will result in failure to upload your file. You will need to fix the error(s) before all messages in the batch before you are able to successfully upload your file.

Recipient

This contains mobile phone number of the recipient, prefixed by the country code but without the leading +. For example, when sending to a Singapore phone number, the value of recipient will be 6599999999.

eg. 6591234567 is a recipient string for a Singapore (65) phone number (91234567)

Do not use "fake" numbers when sending SMS messages, even for testing purposes.

Reasons why this practice is avoided:

  1. Overloading the queue at the telco provider

  2. Leading to failed delivery attempts, which generate error messages

  3. Failed delivery attempts are still being charged

  4. These numbers are actually real numbers that are owned by MOPs

List of "fake" numbers:

  1. 6590000000

  2. 6599999999

  3. 6588888888

Language

This column will need to be filled, even if there is only one available language that can be selected.

eg. If English is the only language you can choose in your message creation, you will need to fill every single entry with English.

Formatting messages to multiple recipients

You may start entering fields into each message parameter in your csv file.

Formatting in Excel

Excel: Commas and quotation marks

Should there be a need to add commas or quotation marks in your message parameters, you may enter them in each cell within your excel file.

Excel: Line Breaks

Should there be a need for line breaks, you may add them in a single cell

Formatting in text editor

Text Editor: Commas, line breaks, quotation marks

When formatting your messages in a text editor,

  1. Ensure that all parameters are separated by commas

  1. Should your content contain more than just letters, please encase them in quotations, see example above

    • Parameter containing more than just letters - highlighted in blue

  2. Should your message content contain line breaks, please add the line breaks in your parameters within quotations, see image "Example csv in text editor".

  1. Should your content contain quotation, encase the entire quote, including the quotation marks, within a set of quotations, see image "Example csv in text editor".

    • quote - highlighted in yellow

    • quotations used to encase quote - highlighted in pink

These steps will ensure that messages sent out can contain commas and quotation marks.

Postman Test Site: limitations

Postman's test site is meant for agency users to test out the platform. As such, you should test out the site like how you would send out messages to MOPs in a real scenario, where each number will only receive a single message.

If you send test messages with exact same content to the same person multiple times in 1 sitting in the same campaign:

eg. "Hi your appointment is on 1 Jan 2024" was sent to Tom 10 times within 1 batch send,

The telcos' automatic spam filter may be triggered . This means the message may not be delivered to Tom's phone at all, even though it will pass Postman’s send filters and status is reflected as delivered. See screenshot below on how the batch .csv is formatted in this failed example.

In order to download the message logs for this campaign, please click on the icon on the screen.

A batch consists of multiple messages that are sent out at the same time. Each batch will come with its own Batch ID, and each batch can be downloaded by clicking on the icon tagged to each batch.

Visit to use the Postman Message Segment Calculator tool to count your total characters.

The encoding used for Postman SMS messages is GSM-7 or UCS (Unicode). Postman will not be able to send messages that contain , and a warning message will appear below the calculator for using invalid characters.

Understand more about terminology

Use the message segment tool to estimate the cost for your SMS message. Do note that the cost is based on message segment which include header, body and footer. Refer to the on SMS charges and pricing.

You will be able to obtain your campaign API keys and whitelist your IP address from your campaign's settings pop-up, under the integrations tab. This part will be accessible after you have and saved your campaign.

Users with these domains who need admin access (i.e. can create campaigns, access and amend campaign settings) must request for specific email address whitelisting through the agency PIC using this

In such cases, agency PICs must for the Postman team to whitelist the vendor's domain. This will allow vendors to log into Postman, and view campaigns that the vendors have been added to by the agency admins.

Link
Remarks

General enquiries related to BTN

Interest form to use SFTP for Postman test site *note that Production site is not up at the moment

Only for agency PICs to submit

Postman's message segment calculator

Book a time slot for your TPS load test

For agency users/vendors to submit before using Postman v2 Production Site

For agency users/vendors using SFTP to submit before using Postman v2 Production Site

Please log in with your TechPass/agency email address to view our policy guide.

Please ensure that you have read the before reading this page.

You are connected to the .

You have entered the .

has a .csv file limit of 20 rows to ensure no load testing is done on this site. More information on load testing.

Message language option is only available if the campaign admin has selected multiple languages during the . If no languages have been added, the default language will be English and you will not be able to select other languages.

The header row will require to match the created, such as containing lowercase letters, numbers and _.

We have our dedicated load test environment if you wish to conduct load test using these numbers. Book your time slot for load test . Please avoid sending messages to numbers that are not owned by you or your agency. Your agency PIC and CIO will also be informed. Click for more information.

https://message-segment-calculator.postman.gov.sg
unsupported characters
message segment
policy guide
created
form
submit a request
Campaign Settings page
Postman test site
here
here
here
Messages
Batches
Retrieve Message
Retrieve Batch
whitelisted IP address for this campaign
correct API key
Batch messages
campaign creation process
variables
recipient
language
BTN Contact Us Form
SFTP Application Form for Postman (BTN)
Campaign Creation Access
(NEW) Postman Message Segment Calculator
E2E Load Test Booking
Postman API Integration Test
Postman SFTP Integration Test
Postman Policy Guide

3. Set up your Twilio account

Log into Twilio to set up your profile and billing details.

To complete your set up, you will need to

1. Set up your account name

This helps us and Twilio better identify your account should you need help, without having to go into your account itself, which we prefer in order to respect the privacy and security of your account.

Go to Account > General settings > Account details > Account name.

2. Set up your billing details

Postman does not manage the billing of Twilio accounts on behalf of agencies.

Setting up your billing details is necessary so that your tagged Sender ID will reflect correctly on your SMSes. Otherwise, your SMSes will continue to show "Likely-scam".

Information about Twilio billing

Twilio works like a prepaid phone card. You will need to top up the credits in your Twilio account to start sending SMSes. We strongly recommend using your corporate credit card for this.

The alternative is direct invoicing, which is only available as an option if you send more than 25,000 SMSes a month (or meet the minimum spend of USD$12,000 annually). If this is your preferred option, please contact us so we can put you in touch with our Twilio account manager.

Note: if you do not upgrade your account, you will not be able to send SMSes with your registered alphanumeric Sender ID.

Set up Billing options - corporate credit card

To set up your billing options, go to Billing > Manage Billing > Upgrade.

3. Map your registered Sender ID to your Twilio account

You can only submit start mapping your Sender ID after you've set up your billing details.

You will need to prepare the following documents and submit them to Twilio via their application form.

As part of the Know-Your-Customer (KYC) processes, Twilio is required by IMDA to conduct checks on all approved Sender IDs submitted by organisations, before they can proceed to tag your SMSes with the Sender IDs after your campaign leaves the Postman gateway.

You will need to submit the following to Twilio, to get your sender IDs mapped:

  1. ACRA BizFile Report

    • Bizfile Report should not be more than 3 months old

  2. Proof of Registration with SSIR

    • Screenshot of confirmation that the Sender ID is registered with SSIR (Screenshot(s) should reflect Company Name and Sender ID approval)

  3. Letter of Authorisation

4. Fill your Twilio credentials on Postman

You will first need to configure your Twilio account to ensure that it is functioning and is mapped to your Sender ID.

1. Campaign Channel Type

Upon creating a campaign name, you will be taken to select the campaign channel type.

2. Adding Twilio Credentials

Select Internal Staff and scroll down to key in your Twilio Credentials.

Take note of the credentials you'll need to save-keep to input into Postman:

1. Account SID

An account SID is the unique identifier assigned to your agency account, much like an NRIC number. This is immediately available on your dashboard once you log into your account console.

1a. Account SID - Postman campaign settings

Insert your Account SID from your Twilio account console into Postman.

2. API key SID

To set up your API key for Postman, select API keys & tokens on the side dashboard under Accounts.

Then, create a new standard API key by selecting Create API key.

Create a friendly name for your API key so you can easily identify it in the future, and select Standard as the API key type.

You can find your API key under the Auth Tokens & API keys page.

2a. API Key SID - Postman campaign settings

Insert your API Key SID from your Twilio account console into Postman.

3. API Secret

When creating your API key, a secret key associated with your API key will be shown.

Save your secret key

Once you lose this secret key or if you do not save it, you will NOT be able to retrieve it again after moving on to the next step

Make sure you copy and save these details somewhere safe

Check the box and click Done.

3a. API Secret - Postman campaign settings

Insert your API Secret Key from your Twilio account console into Postman.

4. Message Service ID

This is the last detail you need to save before proceeding to Postman.

There is no need to purchase a US phone number if your are sending messages only to Singapore numbers.

If you don't have a need to purchase a phone number, follow these steps to obtain your messaging service SID.

Go back to your Twilio home page, and select Set up a Messaging Service.

On the side bar, click Develop > Messaging > Services > Create Messaging Service.

Name your messaging service and indicate the purpose. This will help you better identify your use cases, especially if you have multiple, and will also help Twilio detect your specific use case quicker should you need their help for troubleshooting.

Set up your alphanumeric Sender ID

Configure your alphanumeric Sender ID by selecting Alpha Sender under Add Senders > Sender Type.

Click Continue. You may ignore the notification indicating that Alphanumeric Sender is not enabled for this account.

Specify the Alphanumeric Sender ID you want to use in the text box.

It is best to align the Alphanumeric Sender ID with the Sender ID that you registered with SGNIC.

If the Alphanumeric Sender ID you chose is protected, you will notice either of the two things below.

  • You encounter an error when setting it up on the Sender Pool page

  • You may not receive any message when you send a test SMS

This also means that this Sender ID has been registered by another entity and you will not be able to use it.

Once you have completed the step above, you may click the Skip Setup button below.

After clicking "Skip setup" in the step above, you should be brought to the Properties page of this Messaging Service.

On this page, you should be able to find the Messaging Service ID.

4a. Message Service ID - Postman campaign settings

Insert your Messaging Service SID into Postman.

Expected Sender Name

Under your Expected Sender Name, enter your registered Sender ID.

For more information about billing, refer to Twilio's document .

For more information on how to submit Twilio's application form, refer to their documentation .

You can only start configuring your Twilio account after you have completed the .

Upon configuring your Twilio account, you will be able to obtain the necessary Twilio credentials required for you to input into your Postman campaign. More information can be found in

(this is unretrievable once you proceed beyond this step, so make sure you have saved somewhere, or you will need to redo the set-up process to generate new keys).

If you are sending SMSes to foreign numbers, you will still need to purchase a phone number at USD$1.15. Otherwise, your messages will not be delivered. Find out how to purchase a phone number , and follow these to set up your messaging service ID. You can ignore the steps below if you are purchasing a phone number.

You have now completed the set up of your internal channel. Continue creating the campaign by typing in your .

here
here
Set up your account name
Set up your billing details
Map your registered Sender ID to your Twilio account
Step 6. Fill in your Twilio credentials in Postman
Fill in the requested information
Insert your tax number (GST number)
Key in your corporate credit card details
Add your Twilio credentials into your Postman campaign
Locate your account SID
Select "API keys & tokens"
Select "Create API key"
Name your API key, and set key type as "standard"
Save the API key SID and Secret Key somewhere safe!
Create your messaging service
Fill in the required details
Select "Alpha Sender"
Add in your Sender ID
Complete the set up
This is your messaging service SID
Click on the avatar (bottom left) of page to check for the email address used to log into Postman
Blue blocks are considered as 1 segment and green blocks are considered as another segment
Campaign settings - granting different access rights
Example of a CSV file
Populate the required fields
Step 1 and 3: Postman admin portal
Step 2: Edit .csv file - the header row will be automatically populated based on the message parameters input in the message template
Unable to upload file as csv was wrongly formatted
Example csv in text editor
Message with line breaks
Quotation marks and commas within message
setup
here
steps
Campaign Content
Account SID
API key SID
API Secret
Messaging Service ID
Overview

What if I need to buy a phone number?

Phone number purchase is necessary if you are sending SMSes to foreign numbers. Follow the steps here to purchase a number.

This step must be done before setting up your messaging service ID

How to buy a phone number?

On the left console, select Develop > Phone Numbers > Manage > Buy a number.

Select the phone number that you prefer.

How to set up messaging service ID with phone number?

You need to create a messaging service and tie the phone number that you bought to this messaging service before you can send SMSes.

Go back to your Twilio home page, and selectSet up a Messaging Service.

On the side bar, click Develop > Messaging > Services > Create Messaging Service.

Name your messaging service and indicate the purpose. This will help you better identify your use cases if you have multiple, and will also help Twilio detect your specific use case quicker should you need their help for troubleshooting.

Add your Sender Pool. Sender Pool is where you configure the sender details such as the phone number you bought, and input your alphanumeric Sender ID.

Click Add Senders.

Add the phone number you purchased to this service.

Select the number you want to associate with this messaging service (if you have more than one).

Overview

The Postman v2 API is organised around REST. Our API has predictable resource-oriented URLs, accepts JSON request bodies, returns JSON response bodies, and uses standard HTTP response codes, authentication, and verbs.

Base Url
https://<POSTMAN_V2_API_BASE_URL>/api/v2

Test Environment Base URL

Production Environment Base URL

Authentication

Your API keys carry many privileges, so be sure to keep them secure. Don't share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.

An example curl request:
curl https://<POSTMAN_V2_API_BASE_URL>/api/v2/campaigns/:campaignId/messages -H "Authorization: Bearer YOUR_API_KEY"

If you make a request without authentication, you will receive HTTP 401 and the following in your response body:

{
    "message": "Unauthorized",
    "statusCode": 401
}

2. Sign up for a Twilio account

How do I get started with Twilio?

Unlike Postman V1 (Legacy Postman), agencies will no longer need to submit the SMS onboarding form. Please directly apply for an account with Twilio, and work with them to have your registered sender IDs tagged to your accounts.

Postman does not manage Twilio accounts on behalf of agencies.

Before creating a Twilio account

You will need the following before signing up for a Twilio account:

  1. Email address: This email address will be associated with the Twilio account that you are signing up for

  2. Mobile Number: This number will be receiving security codes required when logging into your Twilio account.

Creating a Twilio account

  1. Upon signing up for a free account on Twilio, you will be taken to your Twilio Console Dashboard Homepage.

Deleting campaigns

How do I delete campaigns?

Only delete campaigns which are created for testing purposes.

Do not delete campaigns which are currently not in use.

1. Campaign deletion features

You will no longer be able to do the following once a campaign is deleted

  1. You cannot retrieve a deleted campaign:

    1. Campaign deletion is an irreversible process

  2. No access to campaign

    1. No message can be sent out via this campaign, whether through the admin portal, API or SFTP

    2. No access to campaign logs - you will not be able to retrieve logs for this campaign

    3. No access to campaign or settings by all users except the agency's PIC

      1. This includes all members of the campaign that you have deleted

  3. Unable to call the API endpoints with this campaign ID

    1. No access to campaign's settings, including API keys and whitelisted IP addresses

    2. Please synsure no one from your agency/vendors are using this campaign before deleting it

Actions that are still available after a campaign is deleted

  1. Agencies will still be charged for messages sent from this campaign before campaign deletion

    1. Follows Postman billing

      1. Paid for by MDDI before 1 July 2025

      2. Paid for by your agency from 1 July 2025

      3. Refer to our billing page in our policy guide for more information

  2. Agency Person(s) In-charge (PICs) will still be able to view deleted campaigns by users in their agency

    1. Able to do so via the Admin Dashboard

2. When should you delete campaigns

Scenario 1: Campaign created for testing purposes

You have created a campaign to test out how to create a campaign, send a message and how to access the campaign settings.

  • No messages to MOPs were sent out through this campaign

You may delete this campaign as it is a campaign that you've created to try Postman out - the campaign was created for testing purposes.

  • For API users: Before deleting this campaign, you should make sure that no other user/vendor is using this campaign when calling Postman’s API endpoints.

  • If messages were sent out

    • Before 1 July 2025: messages paid for by MDDI

    • From 1 July 2025: messages paid for by your agency

Scenario 2: Campaign that is no longer in use

It is now December. You have created this campaign for an event in August. Messages were sent out via Postman to MOPs in the month of August and you are not using the campaign now.

  • You are not planning to use this campaign now (December)

You should not delete this campaign as:

  • You will no longer be able to retrieve campaign logs once you have deleted this campaign

    • you may need the logs when your agency is doing reconciliation of messages sent out by your agency

  • This campaign is not being used now, but may be used again in the future.

3. Accessing campaign deleting feature

  1. Click on the campaign you wish to delete on Postman's admin portal

  2. Click on Settings

  3. Click on Delete campaign

Buy your number
Create your messaging service
Set up sender pool
Select Phone Number
Select desired number
Number selected successfully

Then, go back to continue the set-up of your alphanumeric Sender ID.

To optimise performance and reliability, Postman v2 has established rate limits and allocations for API endpoints ().

Type
Base URL
Remarks

Postman API

Postman Admin Portal

Type
Base URL
Remarks

Postman API Production Platform

Postman Admin Platform

The Postman v2 API uses and static to authenticate incoming requests from your server.

Authentication to the API is performed with .

You will first need to on the admin portal before you can generate your campaignId

You must make all API calls over . Calls that you make over plain HTTP will fail. API requests without authentication will also fail.

Refer to Twilio's documentation on how to to use their messaging service.

Refer to our policy guide on how to navigate the

Rate limits
HTTP Bearer Auth
Create Campaign
HTTPS
Complete your sender ID registration
sign up for your free Twilio trial
API keys
IP whitelisting
here

Endpoints for API users

Message

A message represents a message sent through a campaign.

As each campaign is associated with one message template and has its own API key, you will need to keep track of your API keys if you wish to send messages in different campaigns.

You will not be able to send or retrieve a message in a campaign inaccessible to yourself, even if you know the relevant ID(s).

https://test.postman.gov.sg
https://test.postman.gov.sg
https://postman.gov.sg
https://postman.gov.sg
Admin Dashboard here

Rate Limits

This page will answer your questions on rate limits imposed on agency campaigns. This applies to all agencies.

Key information

  1. The default rate limit is 10 TPS per campaign ID.

    -> This is defined as the number of API calls per second and not the number of messages sent per second.

  2. This rate limit is shared across all APIs.

    -> For instance, if within your campaign you call the following:

    1. Single send at 6 TPS; and

    2. Retrieve message at 2 TPS; and

    3. Batch send at 4 TPS,

    then, as this adds up to 12 TPS, you will hit the rate limit and will be given a 429 error.

    • In the form,

      1. state your use case

      2. state the ideal TPS needed, and reason needing this higher TPS.

      3. If you're asking for greater than 15 TPS, please provide evidence:

        1. You should provide us with internal logs of your actual historical cases on your old systems that you have hit that higher TPS before. Logs from testing on Postman are not considered proof.

        2. For instance, you can send us historical logs of maximum TPS experienced anytime from Jan 2022 onwards.

Things to note

  1. The TPS limit applies only to messags entering the Postman system, not messages sent to the end recipients. Message delivery speeds may be slower than the TPS provided during peak periods, which occur from 8:00 am to 6:00 pm daily.

  2. We will prioritise messages in the following manner:

    1. OTP messages using Single Send

    2. All other messages using Single Send

    3. All messages using Batch Send

  3. Understand the difference between single and batch sending:

    1. If you're using single send, 1 TPS refers to 1 API call and 1 message to be sent out.

    2. If you're using batch send and you have 20 rows in your file, 1 TPS refers to 1 API call and 20 messages to be sent out.

Other important information

The Postman v2 API uses a number of safeguards against bursts of incoming traffic to help maximise its stability. If you send many requests in quick succession, you might see error responses that show up as status code 429.

Note that we do not queue requests which arrive past the rate limit and such requests are dropped. As such, you will need to retry the same request(s) later.

Pagination

We are using a Cursor-based pagination, a method of pagination that uses a unique identifier (cursor) to keep track of the current position in the dataset.

Here's a general overview of how it works:

  1. Cursor: The before and after parameters are used to specify the cursor for fetching the previous or next page of results. The cursor typically represents the position of a specific record in the dataset.

  2. Sorting: The data is sorted by the createdAt followed by id

  3. Result: The response returns the paginated results along with cursors for the next and previous pages, allowing for easy navigation through the dataset.

Example Response
{
  "data": [
    {
      "id": "message_62a2a141-97f8-4fc8-82db-36f539228322",
      "recipient": "6599999999",
      "values": {
        "recipientName": "Emily Yeo",
        "topic": "passport application #12345F"
      },
      "language": "english",
      "latestStatus": "success",
      "error": ""
    },
    ...
  ],
  "pageData": {
		"hasNextPage": false,
		"hasPreviousPage": false,
		"startCursor": "WyIyMDIzLTEwLTI0VDE3OjQwOjI1Ljk2OCswODowMCIsIm1lc3NhZ2VfM2E1MWI1ODctMzQ5OS00YTBmLTlkNGUtZTRlOWYzNWZkNmMxIl0=",
		"endCursor": "WyIyMDIzLTEwLTI0VDE3OjQwOjI1Ljk2OCswODowMCIsIm1lc3NhZ2VfM2E1MWI1ODctMzQ5OS00YTBmLTlkNGUtZTRlOWYzNWZkNmMxIl0="
	}
}

For example:

  1. hasNextPage tells you if there's a next page in the queried data object

    1. To go to the next page, you can use the after Query Parameter with the current page's endCursor value.

  2. hasPreviousPagetells you if there's a previous page in the queried data object

    1. To go to the previous page, you can use the before Query Parameter with the current page's startCursor value.

List of Apis that has pagination

API Errors

The Postman v2 API uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate a request that failed given the information provided (e.g., a required parameter was omitted, not having access to the campaign due to wrong API key, etc.). Codes in the 5xx range indicate an error with Postman’s servers (these will be rare).

Some 4xx errors that could be handled programmatically include an error code that briefly explains the error reported.

Attributes


message string

A human-readable message providing more details about the error.


statusCode number

The HTTP status code of the error.


HTTP status code summary

Status code
What it means

200 - OK

Everything worked as expected - you will get this status code for successful GET requests.

201 - Created

Everything worked as expected - your message(s) is/are created in our system. You will get this status code for successful POST requests that lead to the creation of messages.

400 - Bad Request

The request was unacceptable, often due to missing a required parameter.

401 - Unauthorized

No valid API key provided.

403 - Forbidden

404 - Not Found

The requested resource doesn't exist.

429 - Too Many Requests

Too many requests hit the API too quickly. We recommend an exponential backoff of your requests.

500, 502, 503, 504 - Server Errors

Something went wrong on Postman’s end. (These will be rare.)

5. Send a Test Message

Send a test message on Twilio

Note that this step is done in Twilio, not Postman, yet.

Navigate back to the console and under Try it out, select Send an SMS. Insert your own phone number and select the messaging service that you set up earlier in step 4.

Type your message and click send to check if you receive the SMS and if the Sender ID is accurate.

If you encounter an error with sending a test SMS, it is likely that the Sender ID has yet to be mapped to Twilio. You may reach out to us so that we can link you up with our Twilio account manager.

If you don't receive your test SMS, it is likely that this Sender ID has been taken by another agency. You should use the Alphanumeric Sender ID that you have registered with SGNIC in this field.

Send a message on Postman

Once you have successfully sent a test message on Twilio, you will be able to start sending messages on Postman.

Do ensure that you have completed configuration correctly before reattempting to send messages via Postman

Sending SMSes using NRIC

The Postman team will release the API specs and test environment for this feature after April 20, 2025.

This feature is only available to selected users who were previously using Notify.

If you did not receive an invitation by the Postman team to use this endpoint, you will not be able to use this feature.

What is this feature about?

This feature enables agencies to send messages to recipients using their NRIC instead of phone numbers, supporting the transition from Notify to Postman. Previously, some agencies relied on Notify for message delivery when they only had access to recipients' NRICs.

Authorised users can make API calls to Postman by providing the recipient's NRIC. The system will retrieve the associated phone number and deliver the message to the recipient. Users can expect the same experience they had with Notify.

This feature is exclusively available for authorised users, only through the Postman API.

Does this guarantee my messages will be sent to the recipient, as long as I have their NRIC?

No.

If the recipient does not have a phone number mapped to his/her NRIC in Singpass, no messages will be sent to the recipient even if you have their NRIC.

Release Schedule

Test Environment

The API specifications and feature will be available in Postman's test environment after April 20, 2025.

Production Environment

The target release date is June 2025, subject to potential delays.

Is there anything I will need to do before the release of this feature

Existing Notify users should have already received an email containing specific instructions and a form. You must complete this form before accessing the new feature in Postman's test environment.

What this does?

In Postman's test database, we will create a simulated database mapping unique identifiers to mobile numbers. These unique identifiers are designed to simulate NRIC-to-mobile number mapping, but they are not actual NRIC numbers.

When a form is submitted, Postman will assign a unique identifier to each submitted phone number in our test environment. Once this process is complete, we will inform agencies of the mapping.

When you make an API request using one of these unique identifiers, we will send a message to the corresponding phone number.

However, when calling our endpoints with a real NRIC, no message will be sent, as the test environment does not have real NRIC data; users should only call the unique identifier provided to them.

Attributes (sending SMSes using NRIC)

recipient (send smses using nric, mandatory)


To trigger a message to be sent to a mobile number when the recipient’s NRIC is provided, you will need to make some changes to the recipient attribute

Endpoints (sending SMSes using NRIC)

Test environment:

The value should be the unique identifier assigned to the phone number you have previously submitted.

If the value used in our test environment is a real NRIC, no message will be sent out and a HTTP 400 error will be returned instead.

The following diagram illustrates how the message is created on Postman and sent to recipients.

If you need a higher TPS, please reach out to us via the contact form .

Usage: The takes in parameters such as limit, search ,before, and after to control the pagination.

The API key doesn't have permissions to perform the request. If you receive a HTTP response code 403 and error code 1010, please contact us .

If you encounter an error with sending your first SMS on Postman (Internal SMS) but have no errors with a test message on Twilio, it is likely that you may not have .

recipient
input
Remarks

Refer to for more information.

If there is no NRIC mapped to the provided phone number, will be returned with the following response body.

here
Retrieve Batch API
Retrieve Batch

value

SXXXXXXXA

The recipient’s NRIC number, case sensitive

type

nric

Explanation of the value

Endpoint: Sending SMS using NRIC
POST /campaigns/:campaignId/messages
Example request body
{
  "recipient": {
	  "value": "SXXXXXXXA",
	  "type": "nric"
  },
 // request below is the same as that of existing single send endpoint
  "language": "english",
  "values": {
      "name": "John Doe",
      "fruit": "apple"
  }
}
Example response body
{
    "createdAt": "2024-01-29T17:39:35.574+08:00",
    "updatedAt": "2024-01-29T17:39:35.574+08:00",
    "id": "<YOUR_GENERATED_MESSAGE_ID>",
    "recipient": "6511111111",
    "values": {
        "name": "John Doe",
        "fruit": "apple"
    },
    "fullMessage": "<YOUR_FULL_MESSAGE>",
    "latestStatus": "created",
    "templateBodyId": "<YOUR_TEMPALTE_BODY_ID>",
    "campaignId": "<YOUR_CAMPAIGN_ID>",
    "language": "english"
}
Example error response body
  "code": "nric_mobile_not_found",
  "message": "Recipient does not have a mobile number mapping",
  "type": "domain_error", 
  "id": "..." // Tracking ID to be provided to Postman team for inquiries
Send a test SMS
Sending SMSes using NRIC in Postman production environment
here
configured your Twilio credentials on Postman correctly
this page
HTTP 400
The message object
Message Object
Message Object
lateststatus string
Message Object
Message Object
Message Object
The message object
The message object
Attempt array of objects
Latest status
The message object

Internal SMS

Postman's internal SMS set up is exactly the same as Postman Legacy SMS set up

Postman v2 connects with Twilio to send out messages within the agency.

What is the difference between Twilio and Postman?

Postman is a free multi-channel communications platform built by Open Government Products for all public service agencies. Postman provides a convenient interface for you to craft your message, upload your recipient list, and send your campaign. Using Postman itself is free.

Twilio is a commercial cloud communication service that allows users to send messages (including SMS) through an Application Program Interface (API). Twilio bills users directly for its services; in this case, any SMSes you send using the Postman interface will be billed to you directly by Twilio. Postman does not pay for the SMSes that you send, but neither does Postman charge you for sending SMSes using our interface.

Why Twilio?

We evaluated other cloud-based SMS service providers like Nexmo and AWS SNS before we chose Twilio. We chose Twilio for its simple user interface with an interactive debugger. Its API documentation is also well written, and its API easy to set up. The API also optimises the rate limit to send bulk messages, and allow for users to retry for messages with errors during the first attempted delivery.

Importantly, Twilio API's success rate is 99.999% & uptime is around 99.95% monthly.

Since inception, we have used Twilio for SMS sending services, such as NDP ticketing, Digital MCs, SGH's elective surgery appointment reminders, and quarantine ops by MOH and ICA during Covid-19.

Can I trial using Postman to send SMSes before deciding whether to onboard onto Twilio?

Unlike Postman Legacy, Postman v2 does not offer users accounts with free demo campaigns.

You will need to have valid Twilio credentials, put them in Postman, and use this to send SMSes. You can send test SMSes to your own phone number, but this will be charged to your Twilio account directly.

The message object

{
  "createdAt": "2024-05-16T10:30:50.904+08:00",
  "updatedAt": "2024-05-16T10:30:50.965+08:00",
  "id": "message_19e23cf4-6f0f-47ed-8856-4623817684b1",
  "recipient": "6599999999",
  "values": {
    "name": "John Doe",
    "fruit": "apple"
  },
  "creatorId": "<USER_ID_OF_MESSAGE_CREATOR>",
  "fullMessage": "<YOUR_FULL_MESSAGE>",
  "latestStatus": "success",
  "templateBodyId": "<YOUR_TEMPALTE_BODY_ID>",
  "campaignId": "<YOUR_CAMPAIGN_ID>",
  "templateBody": {
    "createdAt": "2024-05-16T10:13:15.111+08:00",
    "updatedAt": "2024-05-16T10:13:15.111+08:00",
    "id": "<YOUR_TEMPALTE_BODY_ID>",
    "templateId": "<YOUR_TEMPALTE_ID>",
    "language": "english",
    "body": "{{body}}",
    "creatorId": "user_200972fc-2aa5-42f5-b6fd-4023d96afcd4"
    
  },
  "batches": [],
  "language": "english",
  "creatorEmail": "campaign_93530a5f-9efd-4d4a-8b27-6a3770b815c2@postman.gov.sg",
  "attempts": [
    {
      "status": "success",
      "createdAt": "2024-05-16T10:57:52.534+08:00"
    },
    {
      "status": "failure",
      "createdAt": "2024-05-16T10:30:50.906+08:00",
      "error": {
        "type": "server_error",
        "code": "server_unknown_error"
      }
    }
  ]
}

Attributes


id string


creatorID string

Creator ID - this is the ID of the user that created the message on the first attempt


recipient (Mandatory field)

Recipient is a mandatory field.

The recipient will be the mobile phone number of the recipient, prefixed by the country code but without the leading +. For example, when sending to a Singaporean phone number, the value of recipient will be 6599999999

eg. 6591234567 is a recipient string for a Singapore (65) phone number (91234567)

Sending SMSes using NRIC

For users sending SMSes using NRIC, the recipient will comprise of value and type .

recipient
input
Remarks

value

SXXXXXXXA

the recipient’s NRIC number, case sensitive

type

nric

explanation of the value

eg. the recipient field of the endpoint should be the following if users are sending SMSes using NRIC.

Message object: recipient
"recipient": {
	  "value": "S1234567A",
	  "type": "nric"
	  },

language string (Mandatory field)

This is the language of the message template used to send this message. One of english, chinese, malay, or tamil.


values object (Mandatory field)

The values that were inserted into the message template and form the complete message. The keys within values will vary depending on the campaign’s template parameters.

In the example above, the message template that was used contained two parameters: recipient_name and topic.

Avoid using recipient and language as keywords as they are mandatory fields in the request payload.


fullMessage string

Contains the full message including the SMS Header and Footer.


campaignId string

Campaign identifier - this will inform you which campaign the message is tagged to.


unsupported characters

The GSM-7 character set is supported by Postman.

Otherwise, agencies should strictly abide by the unsupported character guidelines. This is the list of characters that are not supported by Postman and need to be excluded in the values.

This is what happens if you include unsupported characters in your messages:

  1. unsupported characters significantly increase the character count and therefore, the number of message segments per SMS.

  2. besides cost, long messages with multiple segments will jam the send queue, affecting even the campaigns of other agencies besides your own.

  3. Reliability of sending messages cannot be guaranteed beyond 7 message segments per SMS, a limitation imposed by telcos. Hence, we advise you to keep your messages below 7 segments.


Trailing white spaces

latestStatus string

Possible message statuses and what they mean

Status in delivery report/API retrieve message status
Corresponding status on UI dashboard
What it means

created

pending

Postman is aware of your request and has created the necessary records.

However, it has not yet made the request to the relevant messaging service provider to have the message sent.

enqueued

pending

Your message is now in our queue and in the process of getting sent to the relevant messaging service provider.

sending

pending

Your message has been taken out of the queue and in the process of getting sent to the relevant messaging service provider.

sent

sent

Postman has made the request to the relevant messaging service provider to have the message sent.

However, it has not yet received a notification from the provider on the request status.

sent_to_telco

sent

The relevant messaging service provider has sent an update to Postman saying that the message has been sent to the recipient's Telco.

Note: In this state, your message has reached the telco, but may or may not have been delivered to the recipient's phone. This could be because the recipient's phone is off or in airplane mode. Beyond 48 hours, if the message status remains sent_to_telco, it is unlikely that we will get a further status update from the telco. This is a telco limitation and is the expected behaviour. We recommend composing a new message within this campaign if you find it necessary, though do note that there is a possibility of the recipient receiving the same message twice.

success

success

The relevant messaging service provider has sent an update to Postman saying that the message has been delivered by the Telco to the recipient. Note: This is a terminal status meaning that the message has been delivered by the telco to the recipient.

failure

failure

This is a terminal status meaning that the message failed to send either due to an error in Postman or from the messaging service. More details in the error message available in delivery report download.


attempts array of objects

Shows an object containing the status and createdAt for each attempt. If the status is failure , there will be an additional error object which includes:

  1. type - The error type

    1. delivery_error - Error with the delivery of the message

    2. server_error

  2. code - The error code

    1. recipient_invalid

    2. recipient_unavailable

    3. content_invalid

    4. routing_error

    5. delivery_unknown_error

    6. server_unknown_error

The full description of each error code can be found in the Message delivery errors page

Single Send - Retry

We will be updating our response payload to include a creatorId field from 24 Feb 2025. Please read the last section to find out where the amendment is and update your own systems if necessary, before 24 Feb 2025.

Retries a single failed message. The message will retain the same message ID.

The message retry will only go through if:

  1. The message latestStatus is failure

  2. If the message belongs to a batch, the batch status is either messages_enqueued or messages_enqueuing_failed

After a message is retried, the message latestStatus will be set to created.

[Now to 26 Jan 2025] Example response body

[From 24 Feb 2025] The creatorId field will be inserted in the response payload from 24 Feb 2025. Please amend your own code accordingly for

"creatorId": "<USER_ID_OF_MESSAGE_CREATOR>"

Single Send

We will be updating our response payload to include a creatorId field from 24 Feb 2025. Please read the last section to find out where the amendment is and update your own systems if necessary, before 24 Feb 2025.

If you are sending time-sensitive, critical SMSes like OTPs or weather alerts, please use the single send API.

The keys within the values object will vary depending on the campaign’s template parameters. To find out what the parameters for a template are, please refer to the template’s details in Postman’s web interface.

The response on whether the message was created will come in immediately. However, you will need to query the Retrieve message endpoint to get the message latestStatus.

[Now to 26 Jan 2025] Example response body

[From 24 Feb 2025] The creatorId field will be inserted in the response payload from 24 Feb 2025. Please amend your own code accordingly for

"creatorId": "<USER_ID_OF_MESSAGE_CREATOR>"

Batch Send

Sends multiple messages in a single API request.

You will need to prepare a CSV file where, in addition to recipient and language, each column represents a value to the campaign’s template parameter.

You will then need to upload this file to this endpoint.

To upload your file, send a multipart/form-data request to this endpoint.

Message identifier - this can be used to retrieve a single message and its delivery status (). It can also be used to re-send a message in the event where the first attempt failed ()

Please note that this feature is only available for selected agencies, .

See the full list of unsupported characters .

Check if your messages have any unsupported characters .

The content within your values object should not start nor end with a space, as this will trigger .

The Single Send - Retry feature behaves the same way as the feature.

Note that in your retry endpoint, the messageId remains the same, and is generated from the original request in your .

has a .csv file limit of 20 rows to ensure no load testing is done on this site. More information on load testing.

If your client code is written in JavaScript, consider using a FormData object to contain your file ().

Retrieve message
Single Send- Retry
refer to this page for more information
here
400 Bad Request
here
Endpoint #3
POST /campaigns/:campaignId/messages/:messageId/retry
Example response body
{
    "createdAt": "2024-05-16T16:48:42.247+08:00",
    "updatedAt": "2024-05-16T16:48:59.157+08:00",
    "id": "<YOUR_GENERATED_MESSAGE_ID>",
    "recipient": "6522222222",
    "values": {
        "name": "Emily Yeo"
    },
    "fullMessage": "This is a test message used for training purposes.\n\nOpen Government Products\n\n---\n\nThis is a message to Emily Yeo.\n\n---\n\nThis is an automated message sent by the Singapore Government.",
    "latestStatus": "created",
    "templateBodyId": "<YOUR_TEMPALTE_BODY_ID>",
	"campaignId": "<YOUR_CAMPAIGN_ID>"
}
Endpoint #1
POST /campaigns/:campaignId/messages
Example request body
{
  "recipient": "6599999999",
    "language": "english",
    "values": {
        // The following values are values for the parameters in the example template
        "name": "John Doe",
        "fruit": "apple"}
}
Example response body
{
    "createdAt": "2024-01-29T17:39:35.574+08:00",
    "updatedAt": "2024-01-29T17:39:35.574+08:00",
    "id": "<YOUR_GENERATED_MESSAGE_ID>",
    "recipient": "6599999999",
    "values": {
        "name": "John Doe",
        "fruit": "apple"
    },
    "fullMessage": "<YOUR_FULL_MESSAGE>",
    "latestStatus": "created",
    "templateBodyId": "<YOUR_TEMPALTE_BODY_ID>",
    "campaignId": "<YOUR_CAMPAIGN_ID>",
    "language": "english"
}
Example CSV File
recipient,language,recipient_name,topic
6599999999,english,Emily Yeo,passport application #12345F
6599999998,chinese,James Tan,passport application #67890A
Endpoint #4
POST /campaigns/:campaignId/batch/messages
Example JavaScript code
// Assuming you have a constant or variable named "file" which is a File object:

const formData = new FormData();
formData.append("file", file);

const request = new XMLHttpRequest();
request.setRequestHeader("Authorization", "Bearer " + YOUR_API_KEY);
request.open(
  "POST",
  "https://<POSTMAN_V2_API_BASE_URL>/api/v2/campaigns/<YOUR_CAMPAIGN_ID>/batch/messages"
);

request.send(formData);
Response Body
{
    "isValid": true,
    "batchId": "<YOUR_BATCH_ID>"
}

Connecting to the SFTP server

Upon completion of the SFTP integration, we will furnish you with the ipAddress for the SFTP server. Users will use their campaignId as their username to access the server.

A connection to our SFTP server can be established by executing the following command:

sftp -i <user's ssh private key> campaignId@sftpServerDomain
Single Send
Single Send
Postman test site
here
MDN Web API docs
Supported Query Parameters

Retrieve Batch

We will be updating our response payload to include a creatorId field from 24 Feb 2025. Please read the last section to find out where the amendment is and update your own systems if necessary, before 24 Feb 2025.

Endpoint #6
GET /campaigns/:campaignId/batch/:batchId/messages

Supported Query Parameters

limit string (Mandatory)

You can specify the number of messages to return per page using the limit query parameter. The minimum value is 1, and the maximum value is 1000.

after string (Optional)

Find messages after the cursorId

before string (Optional)

Find messages before the cursorId

search string (Optional)

This supports searching by recipient phone number only.

It is a substring match, eg. a "11" would match with "91122233"

[Now to 26 Jan 2025] Example response body

Example response body
{
    "data": [
        {
            "createdAt": "2024-05-16T16:34:06.582+08:00",
            "updatedAt": "2024-05-16T16:35:13.122+08:00",
            "id": "<YOUR_MESSAGE_ID>",
            "recipient": "6522222222",
            "values": {
                "body": "test"
            },
            "fullMessage": "This is a test message used for training purposes.\n\nOpen Government Products\n\n---\n\ntest\n\n---\n\nThis is an automated message sent by the Singapore Government.",
            "latestStatus": "failure",
            "templateBodyId": "<YOUR_GENERATED_TEMPLATE_ID>",
            "campaignId": "<YOUR_GENERATED_CAMPAIGN_ID>",
            "templateBody": {
                "createdAt": "2024-05-06T11:00:03.467+08:00",
                "updatedAt": "2024-05-06T11:00:03.467+08:00",
                "id": "<YOUR_GENERATED_TEMPLATE_BODY_ID>",
                "templateId": "<YOUR_GENERATED_TEMPLATE_ID>",
                "language": "english",
                "body": "{{body}}",
                "creatorId": "<YOUR_GENERATED_CREATOR_ID>"
            },
            "messageAttempts": [
                {
                    "sentAt": "2024-05-16T16:35:13.118+08:00",
                    "deliveredAt": null,
                    "createdAt": "2024-05-16T16:34:06.604+08:00",
                    "updatedAt": "2024-05-16T16:35:13.118+08:00",
                    "id": "<YOUR_GENERATED_MESSAGE_ATTEMPT_ID>",
                    "messageId": "<YOUR_GENERATED_MESSAGE_ID>",
                    "externalAttemptId": "",
                    "status": "failure",
                    "errorType": "server_error",
                    "errorCode": "server_unknown_error",
                    "metadata": {},
                    "creatorId": "<YOUR_GENERATED_CREATOR_ID>",
                    "creator": {
                        "email": "<YOUR_GENERATED_CAMAPIGN_CREATOR_EMAIL>"
                    }
                }
            ],
            "language": "english",
            "creatorEmail": "<YOUR_GENERATED_CAMPAIGN_CREATOR_EMAIL>",
            "numAttempts": 1
        },
        {
            "createdAt": "2024-05-16T16:34:06.582+08:00",
            "updatedAt": "2024-05-16T16:35:13.093+08:00",
            "id": "<YOUR_GENERATED_MESSAGE_ID>",
            "recipient": "6511119999",
            "values": {
                "body": "test"
            },
            "fullMessage": "This is a test message used for training purposes.\n\nOpen Government Products\n\n---\n\ntest\n\n---\n\nThis is an automated message sent by the Singapore Government.",
            "latestStatus": "failure",
            "templateBodyId": "<YOUR_GENERATED_TEMPLATE_ID>",
            "campaignId": "<YOUR_GENERATED_CAMPAIGN_ID>",
            "templateBody": {
                "createdAt": "2024-05-06T11:00:03.467+08:00",
                "updatedAt": "2024-05-06T11:00:03.467+08:00",
                "id": "<YOUR_GENERATED_TEMPLATE_BODY_ID>",
                "templateId": "<YOUR_GENERATED_TEMPLATE_ID>",
                "language": "english",
                "body": "{{body}}",
                "creatorId": "<YOUR_GENERATED_CREATOR_ID>"
            },
            "messageAttempts": [
                {
                    "sentAt": "2024-05-16T16:35:13.089+08:00",
                    "deliveredAt": null,
                    "createdAt": "2024-05-16T16:34:06.604+08:00",
                    "updatedAt": "2024-05-16T16:35:13.090+08:00",
                    "id": "<YOUR_GENERATED_MESSAGE_ATTEMPT_ID>",
                    "messageId": "<YOUR_GENERATED_MESSAGE_ID>",
                    "externalAttemptId": "",
                    "status": "failure",
                    "errorType": "delivery_error",
                    "errorCode": "delivery_unknown_error",
                    "metadata": {},
                    "creatorId": "<YOUR_GENERATED_CREATOR_ID>",
                    "creator": {
                        "email": "<YOUR_GENERATED_CAMAPIGN_CREATOR_EMAIL>"
                    }
                }
            ],
            "language": "english",
            "creatorEmail": <YOUR_GENERATED_CAMAPIGN_CREATOR_EMAIL>,
            "numAttempts": 1
        },
        {
            "createdAt": "2024-05-16T16:34:06.582+08:00",
            "updatedAt": "2024-05-16T16:36:05.595+08:00",
            "id": <YOUR_GENERATED_MESSAGE_ID>,
            "recipient": "6599999999",
            "values": {
                "body": "test"
            },
            "fullMessage": "This is a test message used for training purposes.\n\nOpen Government Products\n\n---\n\ntest\n\n---\n\nThis is an automated message sent by the Singapore Government.",
            "latestStatus": "success",
            "templateBodyId": "<YOUR_GENERATED_TEMPLATE_ID>",
            "campaignId": "<YOUR_GENERATED_CAMPAIGN_ID>",
            "templateBody": {
                "createdAt": "2024-05-06T11:00:03.467+08:00",
                "updatedAt": "2024-05-06T11:00:03.467+08:00",
                "id": "<YOUR_GENERATED_TEMPLATE_BODY_ID>",
                "templateId": "<YOUR_GENERATED_TEMPLATE_ID>",
                "language": "english",
                "body": "{{body}}",
                "creatorId": "<YOUR_GENERATED_CREATOR_ID>"
            },
            "messageAttempts": [
                {
                    "sentAt": "2024-05-16T16:35:43.009+08:00",
                    "deliveredAt": null,
                    "createdAt": "2024-05-16T16:34:06.604+08:00",
                    "updatedAt": "2024-05-16T16:36:05.593+08:00",
                    "id": "<YOUR_GENERATED_MESSAGE_ATTEMPT_ID>",
                    "messageId": "<YOUR_GENERATED_MESSAGE_ID>",
                    "externalAttemptId": "<YOUR_GENERATED_EXTERNAL_ATTEMPT_ID>",
                    "status": "success",
                    "errorType": null,
                    "errorCode": null,
                    "metadata": {},
                    "creatorId": "<YOUR_GENERATED_CREATOR_ID>",
                    "creator": {
                        "email": "<YOUR_GENERATED_CAMAPIGN_CREATOR_EMAIL>"
                    }
                }
            ],
            "language": "english",
            "creatorEmail": <YOUR_GENERATED_CAMAPIGN_CREATOR_EMAIL>,
            "numAttempts": 1
        }
    ],
    "pageData": {
        "hasNextPage": false,
        "hasPreviousPage": false,
        "startCursor": "WyIyMDI0LTA1LTE2VDE2OjM0OjA2LjU5MCswODowMCIsIjMwMjE5Il0=",
        "endCursor": "WyIyMDI0LTA1LTE2VDE2OjM0OjA2LjU5MCswODowMCIsIjMwMjE3Il0="
    }
}

[From 24 Feb 2025] The creatorId field will be inserted in the response payload for each message object from 24 Feb 2025. In this above example it will be inserted once per message object i.e. total of 3 times. Please amend your own code accordingly for

"creatorId": "<USER_ID_OF_MESSAGE_CREATOR>"

Batch Send - Retry

Retries all failed messages that belongs to a batch. All messages that are retried will retain their original message ID.

The batch retry endpoint will only return a HTTP 201 response if

  1. the batch status is messages_enqueued or messages_enqueuing_failed.

Note that batch retry will fail if any of the messages that belongs to the batch has latestStatus of created. In this case, batch status will be set to messages_enqueuing_failed.

POST /campaigns/:campaignId/batch/:batchId/retry
Response Body
// This endpoint has no response body
// A HTTP 201 response will be returned if the batch retry is attempted.

Summary of Costs

The details on this page pertain ONLY to messages sent using agencies' own sender IDs, to an internal/non-MOP audience. For details on MOP-facing SMSes, refer to the private guide on the BTN mandate.

Using the Postman platform itself to send the SMSes are free.

However, there are 2 other costs that will need to be borne by agencies:

  1. Sender ID registration costs (IMDA)

    • This is charged by IMDA for the registration and maintenance of your sender ID, which is a nation-wide regulation.

    • Total costs - one-time set-up fee of $500 per organisation + $200 annually per sender ID.

    • This is charged regardless of which aggregator you use.

  2. Twilio per-SMS costs (Twilio)

    • This is charged by Twilio for each SMS that you send, at USD$0.0415 per message segment of 160 characters to send to recipients with Singapore numbers. Do note that the cost may vary depending on the country code of your recipient's mobile number.

Retrieves messages and their delivery statuses given a batch ID. Please refer to this table in and what they mean on what each message status means.

The Batch Send - Retry feature behaves the same way as the feature.

Note that in your retry endpoint, the batchId remains the same, and is generated from the original request in your .

Read more .

Read more .

Batch Send
Batch Send
here
here
possible message statuses

Checking whether sending via SFTP is successful

In the event of an invalid CSV file upload or failure to send, we will promptly notify you via email about the failure and its specific cause.

Successful upload of file to Postman via SFTP

Users will be notified via email upon successful uploads of their file to Postman via SFTP.

Content of Notification Email
{"isValid":true,"batchId":"<YOUR_BATCH_NUMBER>"}

Messages that have failed to be uploaded to Postman via SFTP

Users will be notified via email for all failed file uploads to Postman via SFTP

Content of Notification Emails
{"isValid":false,"reportURL":"<https://files.postman.gov.sg/validation-reports/<YOUR_CAMPAIGN_ID>/<YOUR_VALIDATION_REPORT>","numRows":<ROWS_WITH_ERRORS>,"numErrors":<NUMBER_OF_ERRORS>,"fileHasAvoidableExpensiveCharacter":<TRUE/FALSE>,"fileHasUnicode":<TRUE/FALSE>}

All emails for failed file uploads will come with a URL to download your file with an additional column, Error Reason .

This allows you to identify errors in your file to rectify before re-uploading the file.

When to contact the Postman team?

Content of Notification Email
Your SFTP file upload for <YOUR_CSV_FILE.csv> for <YOUR_CAMPAIGN_ID> failed. Please contact us with the following support ID:<YOUR_SUPPORT_ID_TICKET>.

Message Status

To check the statuses of your messages, please refer to the admin portal.

Other useful information

  1. If your SFTP file is not processed due to an error, the relevant SMS messages will not be created in the Postman server, and thus will not be reflected in that particular campaign.

  2. You will receive an email response per file upload, to the email address which you specified in your SFTP form submission. This email will inform you if the messages were a success or failure.

  3. You will only be able to specify 1 email address per SFTP form submission.

Notification email to inform users that file has been successfully uploaded on Postman
Notification email to inform users that file has failed to upload on Postman
Postman's validation report with Error Reason

If the email notification you receive comes with a support ID informing you to contact us, do fill up our for us to get in touch with you.

Successful upload of your file to Postman does not mean that your message was successfully sent to the recipient. You will still need to check for the .

contact us form
messages' latestStatus

Sending messages via SFTP

To send messages in bulk, you must prepare a CSV file where each column, in addition to recipient and language, represents a value corresponding to the campaign’s template parameter.

The examples below is based on the following campaign template:

The campaign template is configured on the admin portal during campaign creation.

Example campaign template
Dear {{recipient_name}},

This is to inform you that we have received your request for {{topic}}.

We will contact you again when we have processed your request. Thank you.

An example CSV file for the above template can be found below, along with an explanation of the various fields in the file.

Example CSV file
recipient,language,recipient_name,topic
6599999999,english,Emily Yeo,passport application #12345F
6599999998,chinese,James Tan,passport application #67890A

CSV file fields


recipient string (Mandatory field)

For messages sent through the sms channel, the recipient will be the mobile phone number of the recipient, together with the country code of the recipient without including + in front.

eg. 6591234567 is a recipient string for a Singapore (65) phone number (91234567)


language string (Mandatory field)

This is the language of the message template used to send this message.

This are the possible values english, chinese, malay, or tamil.


recipient_name string (Optional field - depending on your message template content)


topic string (Optional field - depending on your message template content)


Subsequently, you will need to upload this file using the following command:

put <file to upload>

Please be aware that our system does not generate output files. The result of a file upload will be communicated to you via email.

General Q&A

  1. What is the security and sensitivity classification of Postman?

  2. Can I share the API docs link with my vendors?

  3. Currently, we do API post with long SMS text content. Our SMS vendor will automatically split the message into several SMS messages to the end user. Is Postman the same?

    • For long message content, it will be combined and will appear as a long message to the user.

  4. If Postman is down, will there be a health check endpoint for agencies to check?

    • No, but the team will be considering this point.

  5. How do I reach out if I have any issues with my API integration or questions regarding the documents?

Please refer to on more information on creating a message on the admin portal.

Postman can handle up to .

Yes, you may share this link with your vendors:

Please fill up our , we aim to get back to you in 5 working days.

create message
https://postman-v2.guides.gov.sg/
contact us form
restricted sensitive-normal data

Platform access related inquiries

  1. When will my agency be able to test out your new Platform?

    • You can test out the following integration modes now: Admin Portal, API, SFTP

  2. Will PMO/OGP grant agencies trial/test accounts for the pilot testing?

    • As long as you have a .gov.sg email address, you will be able to log into Postman. No application for test accounts is needed.

    • Please submit a request to the PIC within your agency if it is necessary for you to create a campaign and obtain the API keys.

  3. What if I have outsourced agents/vendors (e.g. DHL) who help me send out SMSes?

    • Upon logging in, they will only be able to see the campaigns in which they are added as collaborators by agency admins i.e. member access

  4. Can vendors/3rd party contractors apply for accounts on the test platform to create campaigns and obtain API keys?

    • Unfortunately, this is not allowed.

    • They will only be given member access.

  5. When will my agency be able to use your new Platform (API)?

  6. When will my agency be able to use Postman?

    • We will inform when the site is ready.

  7. Can we onboard onto your platform earlier as we need more time for system integration?

    • Postman production environment will be live from mid-April 2024. Agencies will need to undergo testing with OGP before they are allowed to use Postman in production. At this point, you will only be allowed to send messages to internal staff with your own sender IDs in production.

      The deadline to onboard Postman to send out messages to MOPs is by 1 July 2024.

  8. Where is Postman hosted?

    • The internet.

    • We have been whitelisted on SG Proxy, you may access Postman through Edge using your GSIB.

  9. What web browsers are recommended for Postman?

    • Google Chrome

    • Microsoft Edge

    • If you are facing issues with other browsers, please switch to the recommended ones

The test platform is now live at

Load testing is not available for now, please refer to for more information.

Learn more about access rights , especially if you work with vendors or system integrators.

I am from an agency that does not have a email domain (healthcare/edu.sg user). How can I request for access to your test platform to create campaigns and obtain the API keys?

Read more about access rights .

To PICs: please read before submitting the request.

Please for whitelisting.

Read more about access rights .

Agencies calling the Postman API will be able to start testing on the now.

OGP conducted 2 technical Q&A sessions with WOG agencies and their vendors to address any questions regarding Postman. If your agency requires additional assistance, please write in to us through this .

Agencies can now test Postman out at . The production site will be ready from mid-April.

You can use the platform now to begin your system integrations.

test.postman.gov.sg.
here
gov.sg
here
this
contact the Postman team
here
test platform
form
test.postman.gov.sg
test
this page

Retrieve Message

Retrieves a single message and its delivery status.

We will be updating our response payload to include a creatorId field from 24 Feb 2025. Please read the last section to find out where the amendment is and update your own systems if necessary, before 24 Feb 2025.

We currently do not support pushing delivery status to your server via webhooks when the status of a message changes.

Endpoint #2
GET /campaigns/:campaignId/messages/:messageId

[Now to 23 Feb 2025] Example response body

Example response body
{
  "createdAt": "2024-05-16T10:30:50.904+08:00",
  "updatedAt": "2024-05-16T10:30:50.965+08:00",
  "id": "<YOUR_MESSAGE_ID>",
  "recipient": "6599999999",
  "values": {
    "name": "John Doe",
    "fruit": "apple"
  },
  "fullMessage": "<YOUR_FULL_MESSAGE>",
  "latestStatus": "success",
  "templateBodyId": "<YOUR_TEMPLATE_BODY_ID>",
  "campaignId": "<YOUR_CAMPAIGN_ID>",
  "templateBody": {
    "createdAt": "2024-05-16T10:13:15.111+08:00",
    "updatedAt": "2024-05-16T10:13:15.111+08:00",
    "id": "<YOUR_TEMPLATE_BODY_ID>",
    "templateId": "<YOUR_TEMPLATE_ID>",
    "language": "english",
    "body": "{{body}}",
    "creatorId": "<YOUR_GENERATED_CREATOR_ID>"
  },
  "batches": [],
  "language": "english",
  "creatorEmail": "<YOUR_GENERATED_CREATOR_EMAIL>",
  "attempts": [
    {
      "status": "success",
      "createdAt": "2024-05-16T10:57:52.534+08:00"
    },
    {
      "status": "failure",
      "createdAt": "2024-05-16T10:30:50.906+08:00",
      "sentAt": "2024-05-16T10:31:50.187+08:00",
      "deliveredAt": null, 
      "error": {
        "type": "server_error",
        "code": "server_unknown_error"
      }
    }
  ]
}

[From 24 Feb 2025] The creatorId field will be inserted in the response payload from 24 Feb 2025. Please amend your own code accordingly for

"creatorId": "<USER_ID_OF_MESSAGE_CREATOR>"

Message Delivery Errors

Each error type is mapped to its corresponding code, as returned by the system, to diagnose delivery failures.

Important information *Not all messages are suitable for retries, especially OTPs, as the recipient's next steps will be to request for another OTP.

Detailed explanation of error codes for specific troubleshooting steps

recipient_invalid error code


The recipient’s mobile number is not recognised by the network operator and cannot receive your SMS.

Common causes for recipient_invalid:

  1. Deactivated or invalid number

    The recipient’s number might have been deactivated or is no longer in use.

  2. Incorrect number format

    The mobile number may be incorrectly formatted when entering the number (e.g. wrong country code, missing digits).

Steps to troubleshoot:

  1. Verify the mobile number.

  2. Ensure your database is kept up to date by regularly validating the mobile numbers.

recipient_unavailable error code


The recipient’s device is not currently connected to the mobile network.

Common causes for recipient_unavailable:

  1. Out of network coverage

    The recipient might be in an area with poor or no mobile network coverage, or there may be an ongoing issue with the telco operator.

  2. SIM card issue

    The recipient’s SIM card may be malfunctioning or damaged, causing the device to fail to connect to the network.

  3. Device issue

    There might be a technical issue with the handset, preventing it from connecting to the network.

Steps to troubleshoot:

  1. Attempt to resend the message after some time.

  2. Instruct the recipient to check if their SIM card is functioning properly. They can try inserting the SIM or testing it in another device to rule out SIM issues.

  3. Ask the recipient to restart their device. If the problem persists, the recipient may need to reset their network settings, or consult their mobile operator for troubleshooting.

content_invalid error code


There is an issue with the message content, such as prohibited content or incorrect encoding.

Common causes for content_invalid:

  1. Prohibited or sensitive content

    The message contains inappropriate keywords or phrases that are banned by the service provider.

  2. Special characters or unsupported encoding

    Certain characters or symbols in the message (e.g., non-GSM characters, emojis) are not supported by the declared message encoding.

Steps to troubleshoot:

routing_error error code


There is a failure in routing the messages to the recipient’s mobile network.

Common causes for routing_error:

  1. Mobile number is not released by the regulator

    The mobile number is not approved for messaging by the country's telecom regulator.

  2. Networking routing configuration issue

    There is an issue with the mobile operator's routing infrastructure.

Steps to troubleshoot:

  1. Confirm the mobile number is active and valid in the recipient's country.

message_expired error code


When a message from Postman is not delivered to the recipient handset within the 48-hour timeframe set by the SMS aggregators. This means that although the message was dispatched, it was not successfully delivered within the expected period, and its delivery status remains unknown.

Common cause for message_expired:

  1. Delivery time frame exceeded

    Due to network delays, temporary issues with the aggregator's infrastructure may have caused delays in the message delivery.

Steps to troubleshoot:

  1. It is unknown if the recipient has successfully received the message. You can consider resending critical messages.

delivery_unknown_error error code


The exact cause of the failure is not identifiable due to unknown configurations or issues on the recipient’s end. This means that while the message was sent successfully from Postman, the system cannot determine why it was not delivered.

Common causes for delivery_unknown_error:

  1. Recipient's device configuration

    Unknown settings or configuration (e.g., third party mobile application, expired prepaid card) on the recipient's devices could affect the message delivery.

  2. International restrictions

    Certain countries or regions may have restrictions on SMS delivery to specific number ranges, or certain carries may block messages from external providers.

Steps to troubleshoot:

  1. For international restrictions issue, raise it to btn-ops@open.gov.sg and provide us with the message_ID of the affected messages.

server_unknown_error error code


This occurs when there is an internal error, typically due to an unknown issue with either Postman or the aggregator's server.

Common cause for server_unknown_error:

  1. Temporary server outages

    One of the servers may experience temporary connectivity issues

Steps to troubleshoot:

  1. For server issues, raise it to btn-ops@open.gov.sg immediately and provide us with the message_ID of the affected messages.

  2. Once we have fixed the issue with the server, you may resend the message after some time.

Error Type
Error Code
Worth Retrying
Test number for simulated error in Postman Test environment only**

**The test numbers are only available in the , as they are used to simulate different error messages. Do not use test numbers in the Postman production environment.

Recreate a new campaign after modifying your content. You can refer for the list of characters which Postman does not support.

Identify non-GSM characters using tool.

Contact the recipient to confirm if their device is active, properly configured, and connected to the network. If the problem persists, the recipient may need to reset their network settings, or consult their mobile operator for .

delivery_error

recipient_invalid

No

65 1111 1111

recipient_unavailable

Yes

65 1111 2222

content_invalid

No

65 1111 3333

routing_error

Maybe*

65 1111 4444

message_expired

Maybe*

65 1111 5555

delivery_unknown_error

Maybe*

65 1111 9999

server_error

server_unknown_error

Maybe*

65 2222 2222

Postman v2 FAQ

We update this page regularly, please refer to API Documents latest updates for the last updated date.

Click on the relevant sub-sections to find the answers to your burning hot questions!

Integration and configuration related inquiries

  1. My agency is using Amazon Pinpoint SMS. Will there be any integration done for us?

    • No. For systems using Amazon Services, there will be no integration and you will need to switch to using Postman.

  2. Can Postman be configured to only send SMSes during whitelisted hours?

    • Postman will send out SMSes once we have received the API call, a scheduling feature is not available.

Generating SSH Keys

How to generate your SSH keys

This method of generating SSH keys should be used, regardless of your OS

  1. Generate your keys via this command

ssh-keygen -t rsa -m PEM 
  1. This generates 2 files, a private key file and a public key file

    • Private key file: id-rsa

    • Private key file: id-rsa.pub

Private Key example

Example of the generated private key format (id-rsa)

-----BEGIN PRIVATE KEY-----
MIIG/gIBAXXXL+CaxDa
-----END PRIVATE KEY-----

Public Key example

Example of the generated public key format (id-rsa.pub)

ssh-rsa AAAAB3NXXX= administrator@XXX

Delivery rate

  1. How long will messages take to send if there is a queue?

    • Messages will be sent out once they are received by Postman, this should be completed typically within 10 seconds.

Postman test environment
here
Postman's message segment calculator
troubleshooting

Retrieve Campaign Message

We will be updating our response payload to include a creatorId field from 24 Feb 2025. Please read the last section to find out where the amendment is and update your own systems if necessary, before 24 Feb 2025.

Endpoint #7
GET /campaigns/:campaignId/messages

Supported Query Parameters

limit string (Mandatory)

You can specify the number of messages to return per page using the limit query parameter. The minimum value is 1, and the maximum value is 1000.

after string (Optional)

Find messages after the cursorId

before string (Optional)

Find messages before the cursorId

search string (Optional)

This supports searching by recipient phone number only. It is a substring match, eg. a "11" would match with "91122233"

[Now to 26 Jan 2025] Example response body

Response Body
{
    "data": [
        {
            "createdAt": "2024-05-16T17:04:09.071+08:00",
            "updatedAt": "2024-05-16T17:05:39.704+08:00",
            "id": "<YOUR_MESSAGE_ID>",
            "recipient": "6511112222",
            "values": {
                "otp": "123456",
                "name": "tom"
            },
            "fullMessage": "This is a test message used for training purposes.\n\nOpen Government Products\n\n---\n\nDear tom, here is your 123456.\n\n---\n\nThis is an automated message sent by the Singapore Government.",
            "latestStatus": "failure",
            "templateBodyId": "<YOUR_TEMPLATE_BODY_ID>",
            "campaignId": "<YOUR_CAMPAIGN_ID>",
            "templateBody": {
                "createdAt": "2024-05-16T16:55:30.736+08:00",
                "updatedAt": "2024-05-16T16:55:30.736+08:00",
                "id": "<YOUR_TEMPLATE_BODY_ID>",
                "templateId": "<YOUR_TEMPLATE_ID>",
                "language": "english",
                "body": "Dear {{name}}, here is your {{otp}}.",
                "creatorId": "<YOUR_CREATOR_ID>"
            },
            "batches": [
                {
                    "createdAt": "2024-05-16T17:02:59.467+08:00",
                    "updatedAt": "2024-05-16T17:05:09.690+08:00",
                    "id": "<YOUR_BATCH_ID>",
                    "originalFileName": "(sample) API Test.csv",
                    "status": "messages_enqueued",
                    "campaignId": "<YOUR_CAMPAIGN_ID>",
                    "creatorId": "<YOUR_CREATOR_ID>",
                    "totalMessages": 3,
                    "BatchMessage": {
                        "createdAt": "2024-05-16T17:04:09.079+08:00",
                        "updatedAt": "2024-05-16T17:04:09.079+08:00",
                        "id": "30234",
                        "batchId": "<YOUR_BATCH_ID>",
                        "messageId": "<YOUR_MESSAGE_ID>",
                    }
                }
            ],
            "messageAttempts": [
                {
                    "sentAt": "2024-05-16T17:05:39.702+08:00",
                    "deliveredAt": null,
                    "createdAt": "2024-05-16T17:04:09.092+08:00",
                    "updatedAt": "2024-05-16T17:05:39.702+08:00",
                    "id": "<YOUR_MESSAGE_ATTEMPT_ID>",
                    "messageId": "<YOUR_MESSAGE_ID>",
                    "externalAttemptId": "",
                    "status": "failure",
                    "errorType": "delivery_error",
                    "errorCode": "recipient_unavailable",
                    "metadata": {},
                    "creatorId": "<YOUR_CREATOR_ID>",
                    "creator": {
                        "email": "<YOUR_GENERATED_CAMPAIGN_EMAIL>"
                    }
                }
            ],
            "language": "english",
            "batchId": "<YOUR_BATCH_EMAIL>",
            "creatorEmail": "<YOUR_CREATOR_ID>"
            "numAttempts": 1
        },
        {
            "createdAt": "2024-05-16T17:04:09.071+08:00",
            "updatedAt": "2024-05-16T17:05:09.746+08:00",
            "id": "<YOUR_MESSAGE_ID>",
            "recipient": "6522222222",
            "values": {
                "otp": "123456",
                "name": "mary"
            },
            "fullMessage": "This is a test message used for training purposes.\n\nOpen Government Products\n\n---\n\nDear mary, here is your 123456.\n\n---\n\nThis is an automated message sent by the Singapore Government.",
            "latestStatus": "failure",
            "templateBodyId": "<YOUR_TEMPLATE_BODY_ID>",
            "campaignId": "<YOUR_CAMPAIGN_ID>",
            "templateBody": {
                "createdAt": "2024-05-16T16:55:30.736+08:00",
                "updatedAt": "2024-05-16T16:55:30.736+08:00",
                "id": "<YOUR_TEMPLATE_BODY_ID>",
                "templateId": "<YOUR_TEMPLATE_ID>",
                "language": "english",
                "body": "Dear {{name}}, here is your {{otp}}.",
                "creatorId": "<YOUR_CREATOR_ID>"
            },
            "batches": [
                {
                    "createdAt": "2024-05-16T17:02:59.467+08:00",
                    "updatedAt": "2024-05-16T17:05:09.690+08:00",
                    "id": "<YOUR_BATCH_EMAIL>",
                    "originalFileName": "(sample) API Test.csv",
                    "status": "messages_enqueued",
                    "campaignId": "<YOUR_CAMPAIGN_ID>",
                    "creatorId": "<YOUR_CREATOR_ID>",
                    "totalMessages": 3,
                    "BatchMessage": {
                        "createdAt": "2024-05-16T17:04:09.079+08:00",
                        "updatedAt": "2024-05-16T17:04:09.079+08:00",
                        "id": "30235",
                        "batchId": "<YOUR_BATCH_ID>",
                        "messageId": "<YOUR_MESSAGE_ID>"
                    }
                }
            ],
            "messageAttempts": [
                {
                    "sentAt": "2024-05-16T17:05:09.743+08:00",
                    "deliveredAt": null,
                    "createdAt": "2024-05-16T17:04:09.092+08:00",
                    "updatedAt": "2024-05-16T17:05:09.743+08:00",
                    "id": "<YOUR_MESSAGE_ATTEMPT_ID>",
                    "messageId": "<YOUR_MESSAGE_ID>",
                    "externalAttemptId": "",
                    "status": "failure",
                    "errorType": "server_error",
                    "errorCode": "server_unknown_error",
                    "metadata": {},
                    "creatorId": "<YOUR_CREATOR_ID>",
                    "creator": {
                        "email": "<YOUR_CREATOR_EMAIL>"
                    }
                }
            ],
            "language": "english",
            "batchId": "<YOUR_BATCH_EMAIL>",
            "creatorEmail": "<YOUR_CREATOR_ID>",
            "numAttempts": 1
        },
        {
            "createdAt": "2024-05-16T17:04:09.071+08:00",
            "updatedAt": "2024-05-16T17:04:09.071+08:00",
            "id": "message_6e4fedf2-9377-50ef-8457-81cb1f1c8831",
            "recipient": "6599999999",
            "values": {
                "otp": "123456",
                "name": "john"
            },
            "fullMessage": "This is a test message used for training purposes.\n\nOpen Government Products\n\n---\n\nDear john, here is your 123456.\n\n---\n\nThis is an automated message sent by the Singapore Government.",
            "latestStatus": "created",
            "templateBodyId": "<YOUR_TEMPLATE_BODY_ID>",
            "campaignId": "<YOUR_CAMPAIGN_ID>",
            "templateBody": {
                "createdAt": "2024-05-16T16:55:30.736+08:00",
                "updatedAt": "2024-05-16T16:55:30.736+08:00",
                "id": "template-body_6df15c76-cbd4-4c5b-ac8b-c66fefaf634a",
                "templateId": "template_738af768-8050-41d6-8bc5-2a140b5b67df",
                "language": "english",
                "body": "Dear {{name}}, here is your {{otp}}.",
                "creatorId": "<YOUR_CREATOR_ID>"
            },
            "batches": [
                {
                    "createdAt": "2024-05-16T17:02:59.467+08:00",
                    "updatedAt": "2024-05-16T17:05:09.690+08:00",
                    "id": "batch_f1896233-7f4e-4162-bdd5-888fcf5e85c9",
                    "originalFileName": "(sample) API Test.csv",
                    "status": "messages_enqueued",
                    "campaignId": "<YOUR_CAMPAIGN_ID>",
                    "creatorId": "<YOUR_CREATOR_ID>",
                    "totalMessages": 3,
                    "BatchMessage": {
                        "createdAt": "2024-05-16T17:04:09.079+08:00",
                        "updatedAt": "2024-05-16T17:04:09.079+08:00",
                        "id": "30233",
                        "batchId": "<YOUR_BATCH_ID>",
                        "messageId": "<YOUR_MESSAGE_ID>"
                    }
                }
            ],
            "messageAttempts": [
                {
                    "sentAt": "2024-05-16T17:05:39.757+08:00",
                    "deliveredAt": null,
                    "createdAt": "2024-05-16T17:04:09.092+08:00",
                    "updatedAt": "2024-05-16T17:05:39.757+08:00",
                    "id": "<YOUR_MESSAGE_ATTEMPT_ID>",
                    "messageId": "<YOUR_MESSAGE_ID>",
                    "externalAttemptId": "<YOUR_EXTERNAL_ATTEMPT_ID>",
                    "status": "sent",
                    "errorType": null,
                    "errorCode": null,
                    "metadata": {},
                    "creatorId": "<YOUR_CREATORN_ID>",
                    "creator": {
                        "email": "<YOUR_GENERATED_CAMPAIGN_EMAIL>"
                    }
                }
            ],
            "language": "english",
            "batchId": "batch_f1896233-7f4e-4162-bdd5-888fcf5e85c9",
            "creatorEmail": "campaign_da25c9b7-7540-4ca4-aa4a-66d4d7ddcd7b@postman.gov.sg",
            "numAttempts": 1
        },
        {
            "createdAt": "2024-05-16T16:57:53.761+08:00",
            "updatedAt": "2024-05-16T16:58:06.526+08:00",
            "id": "<YOUR_MESSAGE_ID>",
            "recipient": "6599999999",
            "values": {
                "otp": "12345",
                "name": "John Doe"
            },
            "fullMessage": "This is a test message used for training purposes.\n\nOpen Government Products\n\n---\n\nDear John Doe, here is your 12345.\n\n---\n\nThis is an automated message sent by the Singapore Government.",
            "latestStatus": "success",
            "templateBodyId": "<YOUR_TEMPLATE_BODY_ID>",
            "campaignId": "<YOUR_CAMPAIGN_ID>",
            "templateBody": {
                "createdAt": "2024-05-16T16:55:30.736+08:00",
                "updatedAt": "2024-05-16T16:55:30.736+08:00",
                "id": "<YOUR_TEMPLATE_BODY_ID>",
                "templateId": "<YOUR_TEMPLATE_ID>",
                "language": "english",
                "body": "Dear {{name}}, here is your {{otp}}.",
                "creatorId": "<YOUR_CREATOR_ID>"
            },
            "batches": [],
            "messageAttempts": [
                {
                    "sentAt": "2024-05-16T16:57:53.908+08:00",
                    "deliveredAt": null,
                    "createdAt": "2024-05-16T16:57:53.763+08:00",
                    "updatedAt": "2024-05-16T16:58:06.525+08:00",
                    "id": "<YOUR_MESSAGE_ATTEMPT_ID>",
                    "messageId": "<YOUR_MESSAGE_ID>",
                    "externalAttemptId": "<YOUR_EXTERNAL_ATTEMPT_ID>",
                    "status": "success",
                    "errorType": null,
                    "errorCode": null,
                    "metadata": {},
                    "creatorId": "<YOUR_CREATOR_ID>",
                    "creator": {
                        "email": "<YOUR_CREATOR_EMAIL>"
                    }
                }
            ],
            "language": "english",
            "creatorEmail": "<YOUR_CREATOR_EMAIL>",
            "numAttempts": 1
        }
    ],
    "pageData": {
        "hasNextPage": false,
        "hasPreviousPage": false,
        "startCursor": "WyIyMDI0LTA1LTE2VDE3OjA0OjA5LjA3MSswODowMCIsIm1lc3NhZ2VfZTgxN2NjM2EtMTA0NC01ODYxLWJmZDUtMDMwM2IwYzczYjcxIl0=",
        "endCursor": "WyIyMDI0LTA1LTE2VDE2OjU3OjUzLjc2MSswODowMCIsIm1lc3NhZ2VfZDhiNWY5M2QtZDgyYi00NWRkLWIyZTctMWYxMTlmMjUwMTcyIl0="
    }
}

[From 24 Feb 2025] The creatorId field will be inserted in the response payload for each message object from 24 Feb 2025. In this above example it will be inserted once per message object i.e. total of 4 times. Please amend your own code accordingly for

"creatorId": "<USER_ID_OF_MESSAGE_CREATOR>"

Delivery Report

  1. Will specific error codes be shown for SMS failures?

    • Yes, it will be in the delivery report that can be downloaded for each campaign. This will come in the form of a CSV file all messages ever sent for the batch or campaign. You should filter for the desired month within the CSV file itself.

  2. How long will campaign logs be retained for?

    • They are stored indefinitely.

  3. If a message is sent out in a batch and has an error, will there be individual error logs for the messages that failed to send?

    • Yes, individual error logs will be available.

      The messages in the batch will be sent out except for those that have failed.

  4. Are there any differences between Postman v1 and Postman v2

  5. If messages fail to be delivered, will they be charged?

    • Yes.

SFTP Integration

SFTP integration for campaigns is exclusively available on an opt-in basis and is not accessible through the admin portal.

Beginning your SFTP integration

We only accept RSA, ECDSA, and ED25519 keys. Keys must be in OpenSSH format.

  1. Log into Postman and create a new campaign

    • this generates your campaign ID needed to fill in the form

  2. Generate your campaign API key through the following steps

    1. Access your Campaign Settings

    2. Whitelist Postman's IP addresses as follows

  • Note: there is no need to whitelist your server's IP addresses. You will just need to whitelist Postman's IP addresses below.

Environment
IP Address to Whitelist in Postman Admin Portal
Port
SFTP Server Domain

Test Environment

18.136.33.127

52.77.196.100

22

test.sftp.postman.gov.sg

Production Environment

47.128.188.173

52.76.164.195 13.214.81.207

22

sftp.postman.gov.sg

  1. Generate the API keys in your SFTP campaign

    • this is the API key associated with your campaign

    • whitelist the above mentioned two static IP addresses in the Postman Admin Portal

  2. Fill in the details.

    • Notification email: this is the email address from which you wish to receive results of the file upload.

  3. Submit the form. Our team will add your account and inform you once this is completed.

API keys generation and IP Address whitelisting

  1. How do we know what is the campaignID ?

  2. How can I obtain my API keys earlier for testing?

  3. When can agencies test out the Postman API endpoints?

    • You can now test Postman out on test.postman.gov.sg.

  4. Regarding Authentication - can we have more information on bearer auth? Are we going to call a token API to get API keys or it will be generated from Postman Admin Portal?

  5. Does each agency get 1 API key for all systems or each system can request to get their separate unique API key?

    • API keys are tied to each campaign, each campaigns can have up to 3 API keys. The number of keys will depend on the number of campaigns your agency has generated for your system.

  6. What forms of authentication will you use for connecting via API?

    • We will issue API keys via the Admin portal for each campaign. We will also whitelist IP addresses of each agency.

  7. When do we submit our IP addresses for whitelisting?

  8. Is there any firewall that we need to open to allow our API gateway to reach postman API gateway ?

    • You will need to whitelist your IP addresses with us before you can obtain the API keys for integration.

  9. Is whitelisting the source IP address sufficient for us to use Postman to send out SMSes?

    • Yes. In addition, you will only be able to obtain your API keys after you have whitelisted your IP address.

  10. What is Postman’s IP address?

    • We do not provide our IP address, you can whitelist our domain name.

    • If you really need our IP address, you can resolve the domain to find the IP address, but you will be responsible for updating it if it changes.

  11. For 5XX server errors, will the requests be queued on Postman’s side?

    • No.

Messaging

  1. Will there be a monthly report with a CSV file containing all the SMS sent for the month? Will it be emailed to us?

    • The delivery report can be downloaded directly from Postman by the user. This will come in the form of a CSV file all messages ever sent for the batch or campaign. You should filter for the desired month within the CSV file itself.

      The is applicable for both admin portal and API users.

  2. Can agencies use Postman for both external and internal messages?

  3. What is the maximum length of the message in the SMS? We may need to include clickable links.

  4. Usually, the message count for 1 sms is 160 characters. For the new format, are the header and footer counted as SMS characters?

    • Yes, it will be counted. When recipients receive the messages, the character blocks will be combined to form a single message.

  5. Can I change the header of my Agency name?

    • No except for the following cases

      1. you are sending messages on behalf of another agency.

      2. your product sends out messages on behalf of various agencies.

  6. What is the sender ID on your test site?

    • The sender ID on our test site is Postman.

      Your agency’s sender ID will be available for use on our production site, refer to our guide for more details.

  7. My agency is currently using Postman v1. Do I need to switch over to using Postman v2?

    • Yes, unless you’re from a public healthcare institution.

  8. How many SMSes can I trigger per day, are there restrictions?

    • No restrictions, however, please note

      • differences between batch and single send

      • the batch size requirements

    • or you may encounter a 429 error.

  9. If the messages are sent out unsuccessfully, will there be an automatic retry from Postman’s end?

    • No, you will need to call our endpoints again as this will not be automatically done. UI users will need to re-send from the portal.

  10. Is there a separate queue for time sensitive messages?

    • No.

  11. Can I include an unsubscribe link in my SMSes?

    • No. The unsubscription option will not apply to SMSes sent in compliance with the mandate.

Load Test Booking Requirement

Load test requirement:

To conduct a TPS load test for your system:

  • Postman supports a maximum throughput of 200 TPS for load test environment only

  • The purpose of the load test is not to verify SMS delivery to recipients, but to evaluate your system’s capacity and performance.

  • SMS messages sent from the load test environment are processed only at the aggregator level and do not reach the telco level. This means they will not be delivered to actual mobile phones, and the status will remain “Pending” on Postman, not “success”.

The load test environment is designed solely for testing your system’s capabilities, allowing you to assess its performance under load conditions.

Environment

  • You are required to conduct your load test in the Postman load test environment only.

  • Do not conduct your load test at Postman production and test environment.

How to validate success for your load test

  • The Postman system will provide the correct request and response payloads to support your testing needs.

How to book and prepare for a load test

  1. Complete the booking form

  • Fill in the required details, including the email addresses to be whitelisted and TPS and message segment required

  1. Prepare for load test upon booking confirmation

  • Send the campaign ID to the BTN team in advance so the team can increase the TPS*

* Do not perform load tests outside your booked time slot to prevent unexpected disruptions. Conducting load tests during unapproved timeframes can affect other scheduled activities, and hinder accurate test results

  1. Day of the test

Retrieves messages and their delivery statuses given a campaign ID, as well as information about the campaign template. Please refer to this table in on what each message status means.

The original Postman (now named “Postman v1”) will only serve the function of sending emails. Public healthcare institutions can still use Postman v1 to send SMSes. You may access Postman v1 via

The new Postman (”Postman v2”) will give users the functionalities of sending SMSes to MOP using the gov.sg sender ID, or to internal staff using their own registered sender IDs. All other government agencies should use Postman v2 for SMS sending through gov.sg or to internal staff. You may access Postman v2 test site via

For questions related to SFTP, you may submit your inquiries .

For agencies interested to use SFTP, follow the steps below, then submit this .

Whitelist Postman's IP address in your campaign settings

Go to the .

SSH Keys - Please refer to the guide on

to our server, fill in the CSV file, and it into our server

Refer to our for more information.

You can now obtain your API keys on . Read for more information on calling Postman’s SMS API.

API keys are generated from the

This will be done in the campaign creation flow. Refer to our for more information.

Additionally, API users can also call the to retrieve message status in real time.

Yes. The Sender ID for SMS to external MoPs will be '' and SMS to internal staff will be your own agency-registered sender ID.

Please refer to .

For such cases, please contact us .

Postman admin portal:

Postman API base URL:

You can find the expected endpoints for single send for instance in the documentation .

Submit your booking request at least one day in advance

Log in to and create a campaign

Reach out to for support

Possible message statuses and what they mean
https://postman.gov.sg/
https://test.postman.gov.sg/
here
form
form
generating your SSH keys
Connect
drop
API documents
test.postman.gov.sg
here
Postman Admin Portal.
API documents
GET status endpoint
gov.SG
character count
here
https://loadtest.postman.gov.sg
https://loadtest.postman.gov.sg/api/v2
here
here
https://loadtest.postman.gov.sg
btn-ops@open.gov.sg
Generate your API keys

File types

  1. Are .csv the only acceptable file types on Postman?

    • Yes, this applies to batches for Postman API and Admin Portal, and for sending messages in bulk via SFTP. We do not accept any other file types.

  2. Does Postman support HTML encoding?

    • No, text only.

API keys generation

  1. How can I obtain my API keys earlier for testing?

  2. When can agencies test out the Postman API endpoints?

  3. Regarding Authentication - can we have more information on bearer auth? Are we going to call a token API to get API keys or it will be generated from Postman? Admin Portal?

  4. Does each agency get 1 API key for all systems or each system can request to get their separate unique API key?

    • API keys are tied to each campaign. Each campaign can have up to 3 API keys. The number of keys will depend on the number of campaigns your agency has generated for your system.

  5. What forms of authentication will you use for connecting via API?

Access related inquiries

  1. Does my institution have access to Postman to send messages to MOPs?

    • If your organisation/institution is excluded, you will not have access to use Postman.

  2. Postman API FAQ link is currently only accessible by non-S laptop with internet access. Can change the FAQ to be accessible by S laptop with no internet access too?

    • NGEP users may access Postman’s FAQ, but not S-GSIB users; please use your GSIBs or switch to another device with internet connectivity.

    • NGEP users may access Postman’s FAQ, but not S-GSIB users; please use your GSIBs or switch to another device with internet connectivity.

  3. Postman is currently not accessible on SE3 devices, any plans to allow access?

    • NGEP users may access Postman. S-GSIB users will not be able to access Postman on your device, please use your GSIBs or switch to another device with internet connectivity.

  4. With the removal of Singpass login, how do we log in when we do not have access to our email inboxes (eg. we are on-the-go)

API related inquiries

  1. For 5XX server errors, will the requests be queued on Postman’s side?

    • No.

  2. Regarding Send messages in Bulk, are there any limits on the number of messages that can be sent or on the file size?

    • Users can upload a CSV file of up to 30MB in size.

      The number of lines for this file size depends on the contents of your file.

  3. If Postman is down, will there be a health check endpoint for agencies to check?

    • No, but the team will be considering this point.

  4. What's the typical and max time for a message latestStatus to move from created to sent to success? ?

    • As this is a brand new platform, the team does not have any data to release to agencies regarding typical and max time on the latestStatus.

      Note that the time taken for a message to be sent will also depend on the load at the point of creating and sending these messages.

  5. How are SMS statuses charged?

    • SMSes with a failure as the latestStatus will not be charged.

  6. Do you provide a webhook for checking the status?

    • No, that is not currently provided.

  7. When do I use a Single Send API and when do I use a batch send?

    • Single Send API is used for when you need to send just one message out at a time.

      Batch message is when you have a single campaign and would like to broadcast the same message to many.

      If you use the Single Send API option but create too many request, you may encounter a 429 error.

  8. If the bulk upload does not pass the validation check, can I proceed to send?

    • No, the response will display row by row certain errors that need to be fixed before proceeding again.

  9. Country Code Usage: If the country code, such as +65 for Singapore, is omitted, does Postman automatically assume it's intended for a Singapore number?

    • 65 is a mandatory field as Postman allows sending of messages overseas. The number will not be automatically assumed as a Singapore number if the country code is omitted.

      If the country code is omitted, the message will not be sent and a 4xx error will be reflected.

  10. Language Specification : If our template and values are in Chinese, but we specify English as the language, how will Postman behave?

    • Scenario 1: You have removed English in the create campaign step, and specify english as a header in your .csv file. You will get an error informing you that you chose an unavailable language.

  11. Language Parameter - Mandatory Field: Is the language parameter mandatory for sending messages?

    • Yes.

  12. In the Send single SMS API, is it acceptable to transmit all content within the 'msg' under a value object?

  13. For latestStatus field, how long do we need to wait before message is sent? How long to wait before we know if it was success or failure?

    • API users should call the GET status endpoint to retrieve the message status in real time.

      Alternatively, the delivery report with the sms status can be downloaded by the user from the Postman Admin Portal. This is a manual process and will not be automatically sent to the campaign admin’s email address.

  14. How do I reach out if I have any issues with my API integration or questions regarding the documents?

SFTP and other integration methods

  1. I heard that Postman will have SFTP integration. Are the documents ready?

  2. When can I test out SFTP integration?

  3. Are there plans to provide SMPP to Postman integration?

  4. Are there plans to provide SMTP to Postman integration?

    • No.

1. Sender ID Registration

Note: for internal-facing SMSes only.

Now that you've decided to use Postman for your internal SMS campaigns, first ensure your desired Sender ID is registered under the Full SSIR Regime.

Some large agencies might already have registered their Sender IDs. This is especially the case for generic agency-name Sender IDs like MSF or MTI. If you are unsure if the Sender ID you would like to use has already been registered by your agency, please do check internally before submitting your registration.

How do I register for a Sender ID?

You can now obtain your API keys on . Read for more information on calling Postman’s SMS API.

You can now test Postman out on .

API keys are generated from the .

We will issue API keys via Postman for each campaign. We will also whitelist IP addresses of each agency. Users are required to input their IP addresses for whitelisting, and obtain their API keys within Postman. Read for more info.

You may check for the list of organisations/institutions that can use Postman to send messages to MOPs .

Similar to Postman Legacy (Postman v1), Postman allows users to log in on-the-go. Do refer to for more instructions on how to complete this set up.

Scenario 2: You have included English in the campaign creation step, but your message content is in chinese. Your message will have its message content in Chinese, but the footer will be in English. More information

Refer to the available options from our.

The response on whether the message was created will come in immediately. However, you will need to query Retrieve message endpoint to get the message latestStatus. Refer to our for more information.

Please fill up our , we aim to get back to you in 5 working days.

Please access our SFTP documents .

The SFTP onboarding process flow is documented .

Submit the SFTP interest to get started.

We are still consolidating agencies’ use cases and will inform agencies at a later date if this will be provided. If you have yet to provide your SMPP use case, fill up our request form .

As part of national scam prevention efforts to filter out non-legitimate SMSes to citizens, IMDA has necessitated the registration of SMS Sender IDs for all organisations in Singapore on the SMS Sender ID Registry (SSIR), including public agencies, from 31 January 2023. You can read more about this new policy . The Sender ID refers to the name that you see at the top of an SMS sent to you by an officially-registered organisation.

You will need to register via the SSIR portal . Approval will take a few days as the Singapore Network Information Centre (SGNIC) - a wholly-owned subsidiary of IMDA - will need to conduct specific name and homoglyphic checks on your desired Sender ID. More information on Sender IDs and fees imposed by IMDA .

test.postman.gov.sg
here
test.postman.gov.sg
Postman Admin Portal
here

Privacy Policy

Government Agency Privacy Statement

This Government Agency Privacy Statement (“Privacy Statement”) must be read in conjunction with the Terms of Use that accompany the applicable service you are requesting from us (the “Service”).

General

1. This is a Government Agency digital service.

2. Please note that:

2.1. We may use "cookies", where a small data file is sent to your browser to store and track information about you when you enter our digital services. The cookie is used to track information such as the number of users and their frequency of use, profiles of users and their preferred digital services. While this cookie can tell us when you enter our digital services and which pages you visit, it cannot read data off your hard disk.

2.2. You can choose to accept or decline cookies. Most web browsers automatically accept cookies, but you can usually modify your browser setting to decline cookies if you prefer. This may prevent you from taking full advantage of the digital service.

2.3. The Service may utilise cookies to facilitate authentication and/or login to the Service. If such cookies are rejected, you might not be able to use the Service.

3. Please see the Annex for any additional terms or information.

4. Nothing in this Privacy Statement shall be construed as limiting or prejudicing our rights at law to collect, use or disclose any data without your consent or agreement.

Use of data

5. We may request or collect certain types of data from you in connection with your access or use of the Service. The data that may be requested/collected include those identified in the Annex herein. Your data may be stored in our servers, systems or devices, in the servers, systems or devices of our third party service providers or collaborators, or on your device, and may be used by us or our third party service providers or collaborators to facilitate your access or use of the Service. We or our third party service providers or collaborators may collect system configuration information and/or traffic information (such as an IP address) and/or use information or statistical information to operate, maintain or improve the Services or the underlying service of the third party service provider or collaborator. For the avoidance of doubt, in this Privacy Statement, a reference to a third party service provider or collaborator includes other third parties who provide a service or collaborate with our third party service provider or collaborator.

6. If you provide us with personal data, or where we collect personal data from you:

6.1. We may use, disclose and process the data for any one or more of the following purposes:

6.1.1. to assist, process and facilitate your access or use of the Service;

6.1.2. to administer, process and facilitate any transactions or activities by you, whether with us or any other Government Agency or third party service provider or collaborator, and whether for your own benefit, or for the benefit of a third party on whose behalf you are duly authorized to act;

6.1.3. to carry out your instructions or respond to any queries, feedback or complaints provided by (or purported to be provided by) you or on your behalf, or otherwise for the purposes of responding to or dealing with your interactions with us;

6.1.4. to monitor and track your usage of the Service, to conduct research, data analytics, surveys, market studies and similar activities, in order to assist us in understanding your interests, concerns and preferences and improving the Service (including any service of a third party service provider or collaborator) and other services and products provided by Government Agencies. For the avoidance of doubt, we may also collect, use, disclose and process such information to create reports and produce statistics regarding your transactions with us and your usage of the Services and other services and products provided by Government Agencies for record-keeping and reporting or publication purposes (whether internally or externally);

6.1.5. for the purposes of storing or creating backups of your data (whether for contingency or business continuity purposes or otherwise), whether within or outside Singapore;

6.1.6. to enable us to contact you or communicate with you on any matters relating to your access or use of the Service, including but not limited to the purposes set out above, via email, push notifications or such other forms of communication that we may introduce from time to time depending on the functionality of the Service and/or your device.

6.2. We may share necessary data with other Government Agencies, and third party service providers or collaborators in connection with the Service, so as to improve or facilitate the discharge of public functions and/or serve you in the most efficient and effective way, unless such sharing is prohibited by law.

6.3. We may share your personal data with non-Government Agency entities that have been authorised to carry out specific Government Agency services. We will NOT share your personal data with other non-Government Agency entities without your consent, except where such sharing is necessary for fulfilling any of the purposes herein, or complies with the law.

6.4. For your convenience, we may also display to you data you had previously supplied us or other Government Agencies. This will speed up the transaction and save you the trouble of repeating previous submissions. Should the data be out-of-date, please supply us the latest data.

6A. Please note that we may be required to disclose your data by law, including any law governing the use/provision of any service of a third party service provider or collaborator.

7. You may withdraw your consent to the use and disclosure of your data by us with reasonable notice and subject to any prevailing legal or contractual restrictions; however, doing so may prevent the proper functioning of the Service and may also result in the cessation of the Service to you.

Protection of data

8. To safeguard your personal data, all electronic storage and transmission of personal data is secured with appropriate security technologies.

9. The Service may contain links to external sites or services whose data protection and privacy practices may differ from ours. We are not responsible for the content and privacy practices of these other websites or services and encourage you to consult the privacy notices of those sites or services.

Contact information

10. Please contact sgc@open.gov.sg if you:

10.1. have any enquires or feedback on our data protection policies and procedures; or

10.2. need more information on or access to data which you have provided to us directly in the past.

Definitions

11. In this Privacy Statement, “Government Agency” refers to an Organ of State, Ministry, Department or Statutory Board and “personal data” shall have the same meaning as its definition in the Personal Data Protection Act 2012 (No. 26 of 2012), provided our obligations in respect of personal data under this Privacy Statement do not apply to:

11.1. Business contact information; and

11.2. Personal data of a deceased individual. However, clauses relating to the disclosure of personal data and protection of personal data shall apply in respect of the personal data of an individual who has been dead for 10 or less years.

This version of the Privacy Statement is dated 4 June 2024.

ANNEX

  1. Name of Service: Postman

  2. Types of data requested/collected:

a. If you are a campaign creator, please note that GovTech will collect: (a) your email address; (b) other contact details; (c) details of your browser client; (d) device brand; (e) operating system; (f) IP address; (g) message content; (h) recipient number; (i) login sessions; (j) campaign content; and (k) all activities on Postman. In the event you request data from us concerning the campaign respondents, you warrant and represent that you have the consent of campaign respondents for us to provide the data to you or that such consent is not necessary under the applicable rules/laws.

b. If you are a recipient of an SMS, please note that GovTech may collect, store and/or process data in accordance with this Privacy Statement (which applies in addition to the privacy policy/statement of the campaign administrator/creator agency(/ies)) and disclose the data to the campaign administrators/creator, or process the data for the campaign administrators/creator. However, if you have any enquiries or feedback on the campaign creator’s data protection, policies and procedures or need more information on or access to data which you have provided directly to the campaign creator in the past, please consult the privacy policy/statement of the campaign creator agency(/ies) and contact the campaign creator agency(/ies) directly.

This version of the Privacy Policy is dated 8 April 2024.

Postman v2 API FAQ

  1. Can I share the API docs link with my vendors?

    • Yes, please do so. The API docs are hosted on the Internet.

  2. Currently, we do API post with long SMS text content. Our SMS vendor will automatically split the message into several SMS messages to the end user. Is Postman the same?

    • For long message content, it will be combined and will appear as a single message to the user.

here
our policy guide
API documents
API documents
contact us form
here
here
form
here
here
here
here
here
.

IP Address related inquiries

  1. What is Postman’s IP address?

    • We do not provide our IP address, you can whitelist our domain name. If you really need our IP address, you can resolve the domain to find the IP address, but you will be responsible for updating it if it changes.

  2. Does Postman allow me to bulk upload our IP addresses?

    • No, you will need to upload them individually.

  3. What IP can be whitelisted (Internal or public)?

    • Static Public IP address, do note that you will be calling our API endpoints using this IP address that you have whitelisted.

  4. When do we submit our IP addresses for whitelisting?

  5. Does postman accept whitelisting of CIDR blocks?

    • No, you need to whitelist individual IP addresses. You can whitelist up to 10 IP address on the admin portal, if you need to whitelist more than 20 IP address, please reach out to us.

  6. Is whitelisting the source IP address sufficient for us to use Postman to send out SMSes?

  7. Is there any firewall that we need to open to allow our API gateway to reach postman API gateway ?

    • You will need to whitelist your IP addresses with us before you can obtain the API keys for integration.

  8. Is there any throttling set for Postman?

    • No.

  9. How many officers own a single campaign? Can we have more than 1 admin in case an officer leaves the organisation?

User Access

  1. I do not have campaign creation access. Who should I contact?

  2. How can I add new agency administrators to Postman?

    • Agency administrator role is only granted upon receiving confirmation from your agency's CIO, as this is part of our requirement for adding new PIC(s).

  3. How can I remove current PIC(s)?

    • Please send your request to btn-ops@open.gov.sg after ensuring there is a new PIC for your agency. We will then downgrade the PIC role from agency administrator to ops officer, where there will not be campaign creation access but will remain as a member in existing campaigns to send messages.

  4. Every government officer has login access to the Postman admin portal. How do we remove the previous PIC's access from the existing campaigns?

    • Add the new PIC as Campaign Owner to campaigns if the previous PIC is the only member of campaigns that were created by the previous PIC.

Sending emails to users (Legacy Postman)

  1. We have previously used Postman to send emails to users. Where can we acces the previous site

    • You may continue using Legacy Postman to send out your email campaigns

Terms & Condition

1. General

1.1. These Terms of Use govern your access to and use of our services, including the application (whether as software or as a website or otherwise), its contents (including APIs, if any), push notifications and all other accompanying materials as identified in the Schedule below (collectively, the "Service”).

1.2. This Service is provided to you by the Government Technology Agency ("GovTech"). GovTech’s office is located at 10 Pasir Panjang Road, #10-01, Mapletree Business City, Singapore 117438.

1.3. By accessing or using any part of this Service, you unconditionally agree and accept to be legally bound by these Terms of Use and any amendments thereto from time to time. GovTech reserves the right to amend these Terms of Use at its sole discretion and at any time, with or without notice to you. Please read the Terms of Use carefully each time you access or use any part of this Service as (without prejudice to any other means your agreement to the Terms of Use as amended may manifest) such access or use shall constitute your agreement to the Terms of Use and any amendments to it. Your failure to do so shall not prejudice the effect or enforceability of the Terms of Use or any amendments thereto. GovTech may, at its sole discretion and without prejudice to its other rights under this Clause 1.3, also amend these Terms of Use by providing you with notice effective immediately or such other time designated by GovTech, and such notice may be provided by any means GovTech deems appropriate (for example, by posting the notice through the Service, any website related to the Service, or by email).

1.4. If you do not agree to these Terms of Use, please do not use this Service or any part of this Service.

1.5. If you are accessing or using the Service for and on behalf of another entity (such as your employer), you warrant and represent that you have the necessary authority to bind such entity to these Terms of Use.

2. Nature of this Service

Please see the Schedule for more information and terms concerning this Service.

3. Licence Terms and Restrictions

3.1. The Service, including the materials made available on or through the Service, is owned by, licensed to, managed or controlled by GovTech. Please see clause 4 (Third Party Materials) for more information.

3.2. Subject to these Terms of Use, GovTech grants to you a non-exclusive, revocable, and non-transferable right to access and use the Service for personal or internal purposes only, and only for such use permitted by the functions of the Service and intended by GovTech.

3.2A You shall not, and shall not authorise or permit any third party to:

3.2A.1 bypass or circumvent any technical restrictions or digital protection measures in the Service or attempt to circumvent any such restrictions;

3.2A.2. reverse engineer, decompile, disassemble, modify, translate, adapt or create derivative works of the Service (whether in relation to its source code, object code, underlying structure, ideas, algorithms or otherwise);

3.2A.3. reproduce, publish, distribute, transfer, publicly display, resell, rent, lease, or sublicense the Service, or loan, lend, pledge, assign, or otherwise encumber the Service to or in favour of any third party;

3.2A.4. remove or obscure the copyright, trademark and other proprietary notices contained on or in the Service;

3.2A.5. use the Service in any manner that is contrary to any applicable laws or regulations or rights of third parties (however arising and of whatever nature), or in a manner that constitutes harmful, fraudulent, or obscene activity;

3.2A.6. make the Service available in or through a network, file-sharing service, service bureau or any similar timesharing arrangement or as a managed service provider;

3.2A.7. perform any benchmarking tests or analyses of the Service;

3.2A.8. use the Service to create anything that would compete with the Service;

3.2A.9. transfer, assign or permit the sharing of license keys to or with a third party;

3.2A.10. use the Service to process or permit to be processed any code of a third party;

3.2A.11. provide third party access to the Service; or.

3.2A.12. export the Service in violation of any international sanctions or laws applicable to US entities.

3.2B All express or implied rights to the Service not specifically granted herein are expressly reserved to GovTech.

3.3. GovTech reserves the right to:

3.3.1. Update or modify this Service from time to time;

3.3.2. Deny or restrict access to or use of the Service by any particular person without ascribing any reasons whatsoever; and

3.3.3. Discontinue or terminate this Service at any time without notice or liability to you whatsoever, whereupon all rights granted to you hereunder shall also terminate forthwith. You shall further upon notice from GovTech return or destroy all copies of the Service or materials therein that you may have been provided with.

3.4. You will not interfere or attempt to interfere with the proper working of the Service or otherwise do anything that imposes an unreasonable or disproportionately large load on GovTech’s servers.

3.5. You shall comply with all set-up procedures and requirements, as well as all policies, guidelines, rules, notices and instructions relating to the Service as may be issued by and/or amended by GovTech from time to time.

3A. Account Access and Security

3A.1. You are solely responsible for maintaining the confidentiality and security of any authentication credentials associated with your use of the Service, including the security of any of your devices which store the authentication credentials.

3A.2. GovTech shall be entitled, but not obliged, to verify the identity of the person using the Service. Without prejudice to the foregoing, GovTech is not under any duty to verify that any biometric identifier used with the Service, or on your device, belongs to you.

3A.3. GovTech shall have the sole and absolute discretion to invalidate any authentication credentials at any time, or require you to have to re-authenticate or refresh your authentication credentials at any time, without having to give any reason for the same.

3A.4. GovTech shall be entitled, but not obliged, to act upon or rely on any instructions, information, transmissions of data, or communications received from the account or use of the Service in relation to your authentication credentials, as if such instructions, information, data or communications were issued by you, whether or not the same was authorized by you.

3A.5. For the avoidance of doubt, you are solely responsible for any loss of whatever nature arising from unauthorized or unofficial modifications made to your device which permit or escalate privileged access, or remove restrictions to such access, which are not intended by the manufacturer or provider of your device or operating system of your device (e.g., “rooting” or “jailbreaking” your mobile phone).

4. Third Party Materials

4.1. The Service may require, enable or facilitate access to or use of software or services of a third party (“Third Party”). In such an event, there may be terms of use of the third party software or service (the “Third Party Terms”). GovTech may be required under or as a result of the Third Party Terms to notify you of certain terms that apply to you (either directly as an end user, or as a party whose acts or omissions could cause GovTech to breach the Third Party Terms) when you use the Services. An example of Third Party Terms may be open source software terms or standard form terms of the distribution platform from which you obtain any part of the Service (e.g. Google Play Store or Apple App Store terms) which bind GovTech as a developer or user of the distribution platform (the “Distribution Terms”). Information on the Third Party Terms are embedded in the Service, already accounted for in these Terms of Use, publicly available (e.g the Distribution Terms) or otherwise indicated in the Schedule herein. For the avoidance of doubt, insofar as this Clause 4 relates to the Distribution Terms, the relevant Distribution Terms are the terms of the specific platform from which you obtained a copy of the software or application that is part of the Service. For example, if you obtained the said copy from the Google Play Store, then the relevant terms are Google’s Distribution Terms.

4.2. It is your responsibility to check and read the most up-to-date versions of these Third Party Terms and you are deemed to have notice of the same. In particular, you are deemed to have notice of the Third Party Terms that GovTech (under the Third Party Terms) is required to notify you, and you unconditionally agree to be bound by all the obligations in the Third Party Terms which are applicable to you (whether as end user, or as a party whose acts or omissions could cause GovTech to breach the Third Party Terms, or otherwise). For the avoidance of doubt, where Third Party Terms are listed, such Third Party Terms shall be deemed to include any privacy policies and acceptable use policies as are applicable to you.

4.3. If the Third Party Terms require you to enter into an agreement directly with the Third Party, then you unconditionally agree to enter into such agreement, and in any event, to be legally bound by the Third Party Terms. For the avoidance of doubt:

4.3.1. some Third Party Terms (particularly open-source terms) permit either a direct licence to you from the Third Party or a sublicence from GovTech to you. In such cases, your licence is a direct licence from the Third Party to you; and

4.3.2. the terms of your agreement with the Third Party will govern your use of the relevant third party software or service, and not these Terms of Use.

4.4. If the Third Party Terms expressly or impliedly require GovTech to incorporate certain terms in these Terms of Use (inclusive of terms which impose any minimum or maximum standards herein, and/or terms described in Clause 4.5 below), such terms are deemed to have been so incorporated (the “Incorporated Terms”). Examples of Incorporated Terms include provisions which require GovTech to give you notice of certain rights and liabilities or require GovTech to ensure that you acknowledge certain matters. Similarly, if the Third Party Terms expressly or impliedly require these Terms of Use to be altered such that the Third Party Terms are complied with, the parties herein agree that the Terms of Use shall be deemed to be so altered but only to the extent necessary for compliance.

4.5. Some Third Party Terms grant the Third Party, or require GovTech to grant the Third Party, direct rights of enforcement of these Terms of Use as a third party beneficiary, against you. Such Third Party Terms are deemed to have been incorporated into these Terms of Use as Incorporated Terms, and you hereby agree to grant such Third Party, such direct rights of enforcement against you.

4.5A Unless the applicable Third Party Terms permit you to commence legal proceedings against the relevant Third Party, you shall not threaten or commence legal proceedings against a Third Party without GovTech’s prior written approval.

4.6. For the avoidance of doubt, without prejudice to Clause 4.4, to the extent of any inconsistency between these Terms of Use and the Third Party Terms, the latter shall prevail provided nothing in the Third Party Terms increases the liability of GovTech beyond that stated in Clause 6.

4.7. Without prejudice and in addition to the foregoing, GovTech shall not be responsible for your use of any software or service of a Third Party.

5. Your Consent to Your Data and to Access Functions of Your Device

5.1. You hereby grant to GovTech a non-exclusive, worldwide, perpetual and royalty-free right to collect, use, disclose, process, modify, adapt, create derivative works of, reproduce, and sublicense any and all information or data submitted, uploaded or shared by you to the extent necessary to provide the Service or for any other purpose expressly or impliedly provided in these Terms of Use, or as permitted by law.

5.2. Use of the Service may require you to allow access by the Service to certain functions of your device, such as push notifications, the obtaining and/or sharing of your location, or the collection of data from you in connection with the Service. Your use of the Service shall constitute your consent to the access by the Service of such functions of your device as may be reasonably required by the Service.

5.3. You further irrevocably and unconditionally waive, and shall cause to be irrevocably and unconditionally waived, all existing and future moral rights (including the right of identification) wherever in the world in respect of any information or data submitted, uploaded or shared by you (including feedback, requests or suggestions concerning the Services) to GovTech. Such waiver shall also extend to GovTech’s licencees, assigns and successors-in-title.

5.4. Please also see clause 8 (Privacy Statement).

5A. Ownership of Feedback/Requests/Suggestions

You agree that all title and interest in any feedback, requests or suggestions from you concerning the Services provided to GovTech shall be owned by GovTech and, without prejudice and in addition to clause 5.3, you shall waive all rights existing in or in respect of the same (including, for the avoidance of doubt, any signature requirements).

5B. Confidentiality

5B.1 If you receive information or data (in whatever form) from GovTech or a Third Party which is designated confidential or proprietary or is otherwise reasonably understood to be confidential or proprietary (collectively, “Confidential Information”), you shall not use, disclose or reproduce the Confidential Information except for the purpose for which it was provided to you. If consent to disclose the Confidential Information to a third party is given by GovTech or the Third Party to you, any act or omission in respect of the Confidential Information by that person shall be deemed to be your act or omission and you agree to be fully liable for the same. In all cases, you shall protect the Confidential Information to the same extent you protect your own confidential information but in no event less than a reasonable standard of care. You shall ensure that any recipients are bound by confidentiality terms at least as restrictive as this Clause.

5B.2 You shall destroy any Confidential Information immediately upon request by GovTech or the Third Party.

5B.3 In the event:

5B.3.1 you are, or likely to be, required by an order of court to disclose Confidential Information; or

5B.3.2 you have reasonable grounds to suspect the unauthorised use or disclosure or reproduction of Confidential Information;

you shall immediately notify GovTech or the Third Party of the same and cooperate with GovTech or the Third Party to prevent or limit such disclosure.

5B.4 Nothing in this Clause 5B shall prejudice GovTech’s or the Third Party’s other rights at law.

6. Disclaimers and Indemnity

6.1. The Service is provided on an "as is" and “as available” basis without warranties of any kind. To the fullest extent permitted by law, GovTech does not make any representations or warranties of any kind whatsoever in relation to the Service or its output and hereby disclaims all express, implied and/or statutory warranties of any kind to you or any third party, whether arising from usage or custom or trade or by operation of law or otherwise, including but not limited to any representations or warranties:

6.1.1. as to the accuracy, completeness, correctness, currency, timeliness, reliability, availability, interoperability, security, non-infringement, title, merchantability, quality or fitness for any particular purpose of the Service or its output; and/or

6.1.2. that the Service or its output or any functions associated therewith will be uninterrupted or error-free, or that defects will be corrected or that this Service, its output, website and the server are and will be free of all viruses and/or other malicious, destructive or corrupting code, programme or macro.

6.2. GovTech shall also not be liable to you or any third party for any damage or loss of any kind whatsoever and howsoever caused, including but not limited to any direct or indirect, special or consequential damages, loss of income, revenue or profits, lost or damaged data, or damage to your computer, software or any other property, whether or not arising directly or indirectly from –

6.2.1. your access to or use of this Service or its output, or any part thereof;

6.2.2. any loss of access or use of this Service or any part of this Service or its output, howsoever caused;

6.2.3. any inaccuracy or incompleteness in, or errors or omissions in the transmission of, the Service or its output;

6.2.4. any delay or interruption in the transmission of the Service or its output, whether caused by delay or interruption in transmission over the internet or otherwise; or

6.2.5. any decision made or action taken by you or any third party in reliance upon the Service or its output,

regardless of whether GovTech has been advised of the possibility of such damage or loss.

6.3. Without prejudice and in addition to the foregoing, insofar as the Service facilitates or requires the provision, use or functioning of, or is provided in conjunction with, other products, software, materials and/or services not provided by GovTech, GovTech makes no representation or warranty in relation to such products, software, materials and/or services (including without limitation any representation or warranties as to timeliness, reliability, availability, interoperability, quality, fitness for purpose, non-infringement, suitability or accuracy).

6.4. You shall not rely on any part of the Service or its output to claim or assert any form of legitimate expectation against GovTech, whether or not arising out of or in connection with GovTech’s roles and functions as a public authority. GovTech shall have no responsibility or liability to you or any third party arising out of or in connection with any fraud, phishing, or any other illegal act or omission by other parties in relation to the Service and it is your own responsibility to ensure that the Service you are using or accessing is from a legitimate source.

6.5. You agree to defend and indemnify and keep GovTech and its officers, employees, agents and contractors harmless against all liabilities, losses, damages, costs or expenses (including legal costs on an indemnity basis) howsoever arising out of or in connection with your access or use of the Service (including third party software or services) or its output or your non-compliance with the Terms of Use, Third Party Terms or Incorporated Terms, whether or not you had been advised or informed of the nature or extent of such liabilities, losses, damages, costs or expenses. You warrant and represent that your access or use of the Service and its output does not and will not breach or violate any laws, regulations, trade, economic and/or export sanctions (wherever in the world) applicable to you, and that you shall not transmit any malicious code, illegal, infringing or undesirable content or materials to GovTech or its agents or any Third Party.

6.6. GovTech shall have the right to take any and all necessary actions/omissions to protect its interests, including complying with any legal requirements (such as taking down, disabling and disabling access to, removing (permanently or temporarily), and/or restoring (including restoring access to) any materials contained in, accessed through, uploaded to, and/or made available via the Service in response to any take-down or restoration notices). You agree that GovTech is not obliged to determine the merits of any take-down or restoration notices. You further waive any rights arising as a result of the actions/omissions taken by GovTech.

6.7. Without prejudice and in addition to GovTech’s other rights:

6.7.1. in no event shall GovTech’s total cumulative liability arising out of or in connection with these Terms of Use to you exceed the amount of fees or payment received by GovTech (and not paid or given to any Third Party by GovTech) from you for the Service in the 12 months preceding the date of the first cause of action; and

6.7.2. no action may be brought by you against GovTech arising out of or in connection with these Terms of Use more than one (1) year after the cause of action arose.

7. Hyperlinks

7.1. Insofar as the Service provides a hyperlink to material not maintained or controlled by GovTech, GovTech shall not be responsible for the content of the hyperlinked material and shall not be liable for any damages or loss arising from access to the hyperlinked material. Use of the hyperlinks and access to such hyperlinked materials are entirely at your own risk. The hyperlinks are provided merely as a convenience to you and do not imply endorsement by, association or affiliation with GovTech of the contents of or provider of the hyperlinked materials.

7.2. Caching and hyperlinking to, and the framing of, any part of the Service is prohibited save where you have obtained GovTech’s prior written consent. Such consent may be subject to any conditions as may be determined by GovTech in its sole discretion. If you hyperlink to or frame any part of the Service, that shall constitute your acceptance of these Terms of Use and all amendments thereto. If you do not accept these Terms of Use as may be amended from time to time, you must immediately discontinue linking to or framing of any part of the Service.

7.3. GovTech reserves all rights:

7.3.1. to disable any links to, or frames of, any materials which are unauthorised (including without limitation materials which imply endorsement by or association or affiliation with GovTech, materials containing inappropriate, profane, defamatory, infringing, obscene, indecent or unlawful topics, names, or information that violates any written law, any applicable intellectual property, proprietary, privacy or publicity rights); and

7.3.2. to disclaim responsibility and/or liability for materials that link to or frame any part of the Service.

8. Privacy Statement

You also agree to the terms of the Government Agency Privacy Statement for this Service as may be amended from time to time. The Government Agency Privacy Statement will form part of these Terms of Use.

9. Rights of Third Parties

Subject to the rights of the Third Party and/or Singapore public sector agencies, a person who is not a party to this Terms of Use shall have no right under the Contract (Rights of Third Parties) Act or otherwise to enforce any of its terms. Variation or rescission of these Terms of Use shall not require the consent of any third party, including any Third Party and/or other Singapore public sector agencies.

10. Assignment

10.1. You may not assign or sub-contract this Terms of Use without the prior written consent of GovTech.

10.2. GovTech may assign, novate, transfer, or sub-contract the rights and liabilities in respect of the Service and this Terms of Use, without notifying you and without further reference to you. Your acceptance of this Terms of Use shall also constitute your consent to such assignment, novation, transfer or sub-contract.

10A. Severability

If any term of these Terms of Use is held by a court or tribunal of competent jurisdiction to be invalid or unenforceable, then these Terms of Use, including all of the remaining terms, will remain in full force and effect as if such invalid or unenforceable term had never been included but, to the extent permissible, such invalid or unenforceable terms shall be deemed to have been replaced by terms that are (a) valid and enforceable and (b) express the intention or produce the result closest to the original intention of the invalid or unenforceable terms.

10B. Order of Precedence

In the event of any conflict, inconsistency or ambiguity between or in any one or more terms in these Terms of Use, such conflict, inconsistency or ambiguity shall be resolved in favour of GovTech and the provision or interpretation which is more favourable to GovTech shall prevail. Notwithstanding any other term, GovTech has the sole and absolute discretion to determine which term or interpretation is more favourable to it and such decision shall be binding on you.

10C. Entire Agreement

These Terms of Use contains the entire and whole agreement concerning the subject matter of these Terms of Use. The Terms of Use supersedes all prior written or oral representations, agreements and/or understandings between GovTech and yourself. Except for amendments by GovTech under these Terms of Use, no amendment to these Terms of Use shall be of any force unless agreed upon in writing by both parties.

10D. Waiver

10D.1. Any delay, failure or omission on the part of GovTech in enforcing any right, power, privilege, claim or remedy (“Remedy”), which is conferred under the Terms of Use or at law or in equity, or arises from any breach by you, shall not (a) be deemed to be or be construed as a waiver or variation of the Remedy, or of any other such Remedy, in respect of the particular circumstances in question, or (b) operate so as to bar the enforcement or exercise of the Remedy, or of any other such Remedy in any other subsequent instances.

10D.2. No waiver by GovTech of any breach of the Terms of Use by you shall be deemed to be a waiver of any other or of any subsequent breach.

10D.3. Any waiver by GovTech granted under the Terms of Use must be in writing and may be given subject to conditions. Such waiver under the Terms of Use shall be effective only in the instance and for the purpose for which it is given.

11. Governing Law and Dispute Resolution

11.1. These Terms of Use shall be governed by and construed in accordance with laws of Singapore.

11.2. Subject to clause 11.3, any dispute arising out of or in connection with these Terms of Use, including any question regarding its existence, validity or termination, shall be referred to and finally resolved in the Courts of the Republic of Singapore and the parties hereby submit to the exclusive jurisdiction of the Courts of the Republic of Singapore.

11.3. GovTech may, at its sole discretion, refer any dispute referred to in clause 11.2 above to arbitration administered by the Singapore International Arbitration Centre (“SIAC”) in Singapore in accordance with the Arbitration Rules of the SIAC ("SIAC Rules") for the time being in force, which rules are deemed to be incorporated by reference in this clause. Further:

11.3.1. The seat of the arbitration shall be Singapore.

11.3.2. The tribunal shall consist of one (1) arbitrator.

11.3.3. The language of the arbitration shall be English.

11.3.4. All information, pleadings, documents, evidence and all matters relating to the arbitration shall be confidential.

Where GovTech is the defendant or respondent, it shall be given at least 30 days before the commencement of any legal action against it to elect to exercise the right herein to have the dispute submitted to arbitration. This right to elect shall not prejudice GovTech’s right to a limitation defence and the period to exercise the right shall not be abridged by reason of any accrual of a limitation defence in favour of GovTech during the said period.

These Terms of Use are dated 4 June 2024.

SCHEDULE

1. Name of Service: Postman

2. Nature of Service

  1. Notwithstanding anything in the Terms of Use, the Service is intended for use by a Singapore public sector agency, or an education institution permitted by GovTech in its sole and absolute discretion.

  2. This Service is a tool for the permitted entities (listed in sub-paragraph 2a. above) to create mass messaging campaigns that reach Members of Public (MOPs) and / or staff. This Service also allows permitted entities to invite each other to collaborate on campaigns.

  3. You are responsible for ensuring that your use of the Service is compliant with all applicable laws, including without limitation the Personal Data Protection Act and the Spam Control Act.

  4. GovTech is not responsible for the content of the messages you choose to send, nor for any agreement you have (or purport to have) with the recipient of your messages.

  5. Use of the Service may require you to already have the right to use certain third party service providers. For example, you may be required to have a Twilio account in order to use the Services. You may be required to provide details of your account via email in order to use the Services.

  6. You warrant and represent to GovTech that (without prejudice to GovTech’s other rights in the Terms of Use such as Clauses 3.2 and 6) you have full rights to use such third party services within or with the Service and your acts and/or omissions in respect of the such services will not cause GovTech to incur liability to any third party, including the service provider.

  7. Please note that GovTech may collect, store and/or process data created by the Service. Please see the Privacy Statement for more details.

  8. GovTech shall have the right to give your message recipients notice of GovTech’s Terms of Use and Privacy Statement in the campaigns you create. For clarity, GovTech is able to access and store the messages sent using the Service.

  9. Without prejudice and in addition to GovTech’s other rights in the Terms of Use, GovTech shall have the right to halt or suspend your use of the Service where you have or run any campaigns that affect overall system health (such as system abuse, unannounced huge campaigns, etc) GovTech has the sole and absolute discretion to determine whether any campaign affects overall system health.

3. Third party software/services

Terms & Condition

1. General

1.1. These Terms of Use govern your access to and use of our services, including the application (whether as software or as a website or otherwise), its contents (including APIs, if any), push notifications and all other accompanying materials as identified in the Schedule below (collectively, the "Service”).

1.2. This Service is provided to you by the Government Technology Agency ("GovTech"). GovTech’s office is located at 10 Pasir Panjang Road, #10-01, Mapletree Business City, Singapore 117438.

1.3. By accessing or using any part of this Service, you unconditionally agree and accept to be legally bound by these Terms of Use and any amendments thereto from time to time. GovTech reserves the right to amend these Terms of Use at its sole discretion and at any time, with or without notice to you. Please read the Terms of Use carefully each time you access or use any part of this Service as (without prejudice to any other means your agreement to the Terms of Use as amended may manifest) such access or use shall constitute your agreement to the Terms of Use and any amendments to it. Your failure to do so shall not prejudice the effect or enforceability of the Terms of Use or any amendments thereto. GovTech may, at its sole discretion and without prejudice to its other rights under this Clause 1.3, also amend these Terms of Use by providing you with notice effective immediately or such other time designated by GovTech, and such notice may be provided by any means GovTech deems appropriate (for example, by posting the notice through the Service, any website related to the Service, or by email).

1.4. If you do not agree to these Terms of Use, please do not use this Service or any part of this Service.

1.5. If you are accessing or using the Service for and on behalf of another entity (such as your employer), you warrant and represent that you have the necessary authority to bind such entity to these Terms of Use.

2. Nature of this Service

Please see the Schedule for more information and terms concerning this Service.

3. Licence Terms and Restrictions

3.1. The Service, including the materials made available on or through the Service, is owned by, licensed to, managed or controlled by GovTech. Please see clause 4 (Third Party Materials) for more information.

3.2. Subject to these Terms of Use, GovTech grants to you a non-exclusive, revocable, and non-transferable right to access and use the Service for personal or internal purposes only, and only for such use permitted by the functions of the Service and intended by GovTech.

3.2A You shall not, and shall not authorise or permit any third party to:

3.2A.1 bypass or circumvent any technical restrictions or digital protection measures in the Service or attempt to circumvent any such restrictions;

3.2A.2. reverse engineer, decompile, disassemble, modify, translate, adapt or create derivative works of the Service (whether in relation to its source code, object code, underlying structure, ideas, algorithms or otherwise);

3.2A.3. reproduce, publish, distribute, transfer, publicly display, resell, rent, lease, or sublicense the Service, or loan, lend, pledge, assign, or otherwise encumber the Service to or in favour of any third party;

3.2A.4. remove or obscure the copyright, trademark and other proprietary notices contained on or in the Service;

3.2A.5. use the Service in any manner that is contrary to any applicable laws or regulations or rights of third parties (however arising and of whatever nature), or in a manner that constitutes harmful, fraudulent, or obscene activity;

3.2A.6. make the Service available in or through a network, file-sharing service, service bureau or any similar timesharing arrangement or as a managed service provider;

3.2A.7. perform any benchmarking tests or analyses of the Service;

3.2A.8. use the Service to create anything that would compete with the Service;

3.2A.9. transfer, assign or permit the sharing of license keys to or with a third party;

3.2A.10. use the Service to process or permit to be processed any code of a third party;

3.2A.11. provide third party access to the Service; or.

3.2A.12. export the Service in violation of any international sanctions or laws applicable to US entities.

3.2B All express or implied rights to the Service not specifically granted herein are expressly reserved to GovTech.

3.3. GovTech reserves the right to:

3.3.1. Update or modify this Service from time to time;

3.3.2. Deny or restrict access to or use of the Service by any particular person without ascribing any reasons whatsoever; and

3.3.3. Discontinue or terminate this Service at any time without notice or liability to you whatsoever, whereupon all rights granted to you hereunder shall also terminate forthwith. You shall further upon notice from GovTech return or destroy all copies of the Service or materials therein that you may have been provided with.

3.4. You will not interfere or attempt to interfere with the proper working of the Service or otherwise do anything that imposes an unreasonable or disproportionately large load on GovTech’s servers.

3.5. You shall comply with all set-up procedures and requirements, as well as all policies, guidelines, rules, notices and instructions relating to the Service as may be issued by and/or amended by GovTech from time to time.

3A. Account Access and Security

3A.1. You are solely responsible for maintaining the confidentiality and security of any authentication credentials associated with your use of the Service, including the security of any of your devices which store the authentication credentials.

3A.2. GovTech shall be entitled, but not obliged, to verify the identity of the person using the Service. Without prejudice to the foregoing, GovTech is not under any duty to verify that any biometric identifier used with the Service, or on your device, belongs to you.

3A.3. GovTech shall have the sole and absolute discretion to invalidate any authentication credentials at any time, or require you to have to re-authenticate or refresh your authentication credentials at any time, without having to give any reason for the same.

3A.4. GovTech shall be entitled, but not obliged, to act upon or rely on any instructions, information, transmissions of data, or communications received from the account or use of the Service in relation to your authentication credentials, as if such instructions, information, data or communications were issued by you, whether or not the same was authorized by you.

3A.5. For the avoidance of doubt, you are solely responsible for any loss of whatever nature arising from unauthorized or unofficial modifications made to your device which permit or escalate privileged access, or remove restrictions to such access, which are not intended by the manufacturer or provider of your device or operating system of your device (e.g., “rooting” or “jailbreaking” your mobile phone).

4. Third Party Materials

4.1. The Service may require, enable or facilitate access to or use of software or services of a third party (“Third Party”). In such an event, there may be terms of use of the third party software or service (the “Third Party Terms”). GovTech may be required under or as a result of the Third Party Terms to notify you of certain terms that apply to you (either directly as an end user, or as a party whose acts or omissions could cause GovTech to breach the Third Party Terms) when you use the Services. An example of Third Party Terms may be open source software terms or standard form terms of the distribution platform from which you obtain any part of the Service (e.g. Google Play Store or Apple App Store terms) which bind GovTech as a developer or user of the distribution platform (the “Distribution Terms”). Information on the Third Party Terms are embedded in the Service, already accounted for in these Terms of Use, publicly available (e.g the Distribution Terms) or otherwise indicated in the Schedule herein. For the avoidance of doubt, insofar as this Clause 4 relates to the Distribution Terms, the relevant Distribution Terms are the terms of the specific platform from which you obtained a copy of the software or application that is part of the Service. For example, if you obtained the said copy from the Google Play Store, then the relevant terms are Google’s Distribution Terms.

4.2. It is your responsibility to check and read the most up-to-date versions of these Third Party Terms and you are deemed to have notice of the same. In particular, you are deemed to have notice of the Third Party Terms that GovTech (under the Third Party Terms) is required to notify you, and you unconditionally agree to be bound by all the obligations in the Third Party Terms which are applicable to you (whether as end user, or as a party whose acts or omissions could cause GovTech to breach the Third Party Terms, or otherwise). For the avoidance of doubt, where Third Party Terms are listed, such Third Party Terms shall be deemed to include any privacy policies and acceptable use policies as are applicable to you.

4.3. If the Third Party Terms require you to enter into an agreement directly with the Third Party, then you unconditionally agree to enter into such agreement, and in any event, to be legally bound by the Third Party Terms. For the avoidance of doubt:

4.3.1. some Third Party Terms (particularly open-source terms) permit either a direct licence to you from the Third Party or a sublicence from GovTech to you. In such cases, your licence is a direct licence from the Third Party to you; and

4.3.2. the terms of your agreement with the Third Party will govern your use of the relevant third party software or service, and not these Terms of Use.

4.4. If the Third Party Terms expressly or impliedly require GovTech to incorporate certain terms in these Terms of Use (inclusive of terms which impose any minimum or maximum standards herein, and/or terms described in Clause 4.5 below), such terms are deemed to have been so incorporated (the “Incorporated Terms”). Examples of Incorporated Terms include provisions which require GovTech to give you notice of certain rights and liabilities or require GovTech to ensure that you acknowledge certain matters. Similarly, if the Third Party Terms expressly or impliedly require these Terms of Use to be altered such that the Third Party Terms are complied with, the parties herein agree that the Terms of Use shall be deemed to be so altered but only to the extent necessary for compliance.

4.5. Some Third Party Terms grant the Third Party, or require GovTech to grant the Third Party, direct rights of enforcement of these Terms of Use as a third party beneficiary, against you. Such Third Party Terms are deemed to have been incorporated into these Terms of Use as Incorporated Terms, and you hereby agree to grant such Third Party, such direct rights of enforcement against you.

4.5A Unless the applicable Third Party Terms permit you to commence legal proceedings against the relevant Third Party, you shall not threaten or commence legal proceedings against a Third Party without GovTech’s prior written approval.

4.6. For the avoidance of doubt, without prejudice to Clause 4.4, to the extent of any inconsistency between these Terms of Use and the Third Party Terms, the latter shall prevail provided nothing in the Third Party Terms increases the liability of GovTech beyond that stated in Clause 6.

4.7. Without prejudice and in addition to the foregoing, GovTech shall not be responsible for your use of any software or service of a Third Party.

5. Your Consent to Your Data and to Access Functions of Your Device

5.1. You hereby grant to GovTech a non-exclusive, worldwide, perpetual and royalty-free right to collect, use, disclose, process, modify, adapt, create derivative works of, reproduce, and sublicense any and all information or data submitted, uploaded or shared by you to the extent necessary to provide the Service or for any other purpose expressly or impliedly provided in these Terms of Use, or as permitted by law.

5.2. Use of the Service may require you to allow access by the Service to certain functions of your device, such as push notifications, the obtaining and/or sharing of your location, or the collection of data from you in connection with the Service. Your use of the Service shall constitute your consent to the access by the Service of such functions of your device as may be reasonably required by the Service.

5.3. You further irrevocably and unconditionally waive, and shall cause to be irrevocably and unconditionally waived, all existing and future moral rights (including the right of identification) wherever in the world in respect of any information or data submitted, uploaded or shared by you (including feedback, requests or suggestions concerning the Services) to GovTech. Such waiver shall also extend to GovTech’s licencees, assigns and successors-in-title.

5.4. Please also see clause 8 (Privacy Statement).

5A. Ownership of Feedback/Requests/Suggestions

You agree that all title and interest in any feedback, requests or suggestions from you concerning the Services provided to GovTech shall be owned by GovTech and, without prejudice and in addition to clause 5.3, you shall waive all rights existing in or in respect of the same (including, for the avoidance of doubt, any signature requirements).

5B. Confidentiality

5B.1 If you receive information or data (in whatever form) from GovTech or a Third Party which is designated confidential or proprietary or is otherwise reasonably understood to be confidential or proprietary (collectively, “Confidential Information”), you shall not use, disclose or reproduce the Confidential Information except for the purpose for which it was provided to you. If consent to disclose the Confidential Information to a third party is given by GovTech or the Third Party to you, any act or omission in respect of the Confidential Information by that person shall be deemed to be your act or omission and you agree to be fully liable for the same. In all cases, you shall protect the Confidential Information to the same extent you protect your own confidential information but in no event less than a reasonable standard of care. You shall ensure that any recipients are bound by confidentiality terms at least as restrictive as this Clause.

5B.2 You shall destroy any Confidential Information immediately upon request by GovTech or the Third Party.

5B.3 In the event:

5B.3.1 you are, or likely to be, required by an order of court to disclose Confidential Information; or

5B.3.2 you have reasonable grounds to suspect the unauthorised use or disclosure or reproduction of Confidential Information;

you shall immediately notify GovTech or the Third Party of the same and cooperate with GovTech or the Third Party to prevent or limit such disclosure.

5B.4 Nothing in this Clause 5B shall prejudice GovTech’s or the Third Party’s other rights at law.

6. Disclaimers and Indemnity

6.1. The Service is provided on an "as is" and “as available” basis without warranties of any kind. To the fullest extent permitted by law, GovTech does not make any representations or warranties of any kind whatsoever in relation to the Service or its output and hereby disclaims all express, implied and/or statutory warranties of any kind to you or any third party, whether arising from usage or custom or trade or by operation of law or otherwise, including but not limited to any representations or warranties:

6.1.1. as to the accuracy, completeness, correctness, currency, timeliness, reliability, availability, interoperability, security, non-infringement, title, merchantability, quality or fitness for any particular purpose of the Service or its output; and/or

6.1.2. that the Service or its output or any functions associated therewith will be uninterrupted or error-free, or that defects will be corrected or that this Service, its output, website and the server are and will be free of all viruses and/or other malicious, destructive or corrupting code, programme or macro.

6.2. GovTech shall also not be liable to you or any third party for any damage or loss of any kind whatsoever and howsoever caused, including but not limited to any direct or indirect, special or consequential damages, loss of income, revenue or profits, lost or damaged data, or damage to your computer, software or any other property, whether or not arising directly or indirectly from –

6.2.1. your access to or use of this Service or its output, or any part thereof;

6.2.2. any loss of access or use of this Service or any part of this Service or its output, howsoever caused;

6.2.3. any inaccuracy or incompleteness in, or errors or omissions in the transmission of, the Service or its output;

6.2.4. any delay or interruption in the transmission of the Service or its output, whether caused by delay or interruption in transmission over the internet or otherwise; or

6.2.5. any decision made or action taken by you or any third party in reliance upon the Service or its output,

regardless of whether GovTech has been advised of the possibility of such damage or loss.

6.3. Without prejudice and in addition to the foregoing, insofar as the Service facilitates or requires the provision, use or functioning of, or is provided in conjunction with, other products, software, materials and/or services not provided by GovTech, GovTech makes no representation or warranty in relation to such products, software, materials and/or services (including without limitation any representation or warranties as to timeliness, reliability, availability, interoperability, quality, fitness for purpose, non-infringement, suitability or accuracy).

6.4. You shall not rely on any part of the Service or its output to claim or assert any form of legitimate expectation against GovTech, whether or not arising out of or in connection with GovTech’s roles and functions as a public authority. GovTech shall have no responsibility or liability to you or any third party arising out of or in connection with any fraud, phishing, or any other illegal act or omission by other parties in relation to the Service and it is your own responsibility to ensure that the Service you are using or accessing is from a legitimate source.

6.5. You agree to defend and indemnify and keep GovTech and its officers, employees, agents and contractors harmless against all liabilities, losses, damages, costs or expenses (including legal costs on an indemnity basis) howsoever arising out of or in connection with your access or use of the Service (including third party software or services) or its output or your non-compliance with the Terms of Use, Third Party Terms or Incorporated Terms, whether or not you had been advised or informed of the nature or extent of such liabilities, losses, damages, costs or expenses. You warrant and represent that your access or use of the Service and its output does not and will not breach or violate any laws, regulations, trade, economic and/or export sanctions (wherever in the world) applicable to you, and that you shall not transmit any malicious code, illegal, infringing or undesirable content or materials to GovTech or its agents or any Third Party.

6.6. GovTech shall have the right to take any and all necessary actions/omissions to protect its interests, including complying with any legal requirements (such as taking down, disabling and disabling access to, removing (permanently or temporarily), and/or restoring (including restoring access to) any materials contained in, accessed through, uploaded to, and/or made available via the Service in response to any take-down or restoration notices). You agree that GovTech is not obliged to determine the merits of any take-down or restoration notices. You further waive any rights arising as a result of the actions/omissions taken by GovTech.

6.7. Without prejudice and in addition to GovTech’s other rights:

6.7.1. in no event shall GovTech’s total cumulative liability arising out of or in connection with these Terms of Use to you exceed the amount of fees or payment received by GovTech (and not paid or given to any Third Party by GovTech) from you for the Service in the 12 months preceding the date of the first cause of action; and

6.7.2. no action may be brought by you against GovTech arising out of or in connection with these Terms of Use more than one (1) year after the cause of action arose.

7. Hyperlinks

7.1. Insofar as the Service provides a hyperlink to material not maintained or controlled by GovTech, GovTech shall not be responsible for the content of the hyperlinked material and shall not be liable for any damages or loss arising from access to the hyperlinked material. Use of the hyperlinks and access to such hyperlinked materials are entirely at your own risk. The hyperlinks are provided merely as a convenience to you and do not imply endorsement by, association or affiliation with GovTech of the contents of or provider of the hyperlinked materials.

7.2. Caching and hyperlinking to, and the framing of, any part of the Service is prohibited save where you have obtained GovTech’s prior written consent. Such consent may be subject to any conditions as may be determined by GovTech in its sole discretion. If you hyperlink to or frame any part of the Service, that shall constitute your acceptance of these Terms of Use and all amendments thereto. If you do not accept these Terms of Use as may be amended from time to time, you must immediately discontinue linking to or framing of any part of the Service.

7.3. GovTech reserves all rights:

7.3.1. to disable any links to, or frames of, any materials which are unauthorised (including without limitation materials which imply endorsement by or association or affiliation with GovTech, materials containing inappropriate, profane, defamatory, infringing, obscene, indecent or unlawful topics, names, or information that violates any written law, any applicable intellectual property, proprietary, privacy or publicity rights); and

7.3.2. to disclaim responsibility and/or liability for materials that link to or frame any part of the Service.

8. Privacy Statement

You also agree to the terms of the Government Agency Privacy Statement for this Service as may be amended from time to time. The Government Agency Privacy Statement will form part of these Terms of Use.

9. Rights of Third Parties

Subject to the rights of the Third Party and/or Singapore public sector agencies, a person who is not a party to this Terms of Use shall have no right under the Contract (Rights of Third Parties) Act or otherwise to enforce any of its terms. Variation or rescission of these Terms of Use shall not require the consent of any third party, including any Third Party and/or other Singapore public sector agencies.

10. Assignment

10.1. You may not assign or sub-contract this Terms of Use without the prior written consent of GovTech.

10.2. GovTech may assign, novate, transfer, or sub-contract the rights and liabilities in respect of the Service and this Terms of Use, without notifying you and without further reference to you. Your acceptance of this Terms of Use shall also constitute your consent to such assignment, novation, transfer or sub-contract.

10A. Severability

If any term of these Terms of Use is held by a court or tribunal of competent jurisdiction to be invalid or unenforceable, then these Terms of Use, including all of the remaining terms, will remain in full force and effect as if such invalid or unenforceable term had never been included but, to the extent permissible, such invalid or unenforceable terms shall be deemed to have been replaced by terms that are (a) valid and enforceable and (b) express the intention or produce the result closest to the original intention of the invalid or unenforceable terms.

10B. Order of Precedence

In the event of any conflict, inconsistency or ambiguity between or in any one or more terms in these Terms of Use, such conflict, inconsistency or ambiguity shall be resolved in favour of GovTech and the provision or interpretation which is more favourable to GovTech shall prevail. Notwithstanding any other term, GovTech has the sole and absolute discretion to determine which term or interpretation is more favourable to it and such decision shall be binding on you.

10C. Entire Agreement

These Terms of Use contains the entire and whole agreement concerning the subject matter of these Terms of Use. The Terms of Use supersedes all prior written or oral representations, agreements and/or understandings between GovTech and yourself. Except for amendments by GovTech under these Terms of Use, no amendment to these Terms of Use shall be of any force unless agreed upon in writing by both parties.

10D. Waiver

10D.1. Any delay, failure or omission on the part of GovTech in enforcing any right, power, privilege, claim or remedy (“Remedy”), which is conferred under the Terms of Use or at law or in equity, or arises from any breach by you, shall not (a) be deemed to be or be construed as a waiver or variation of the Remedy, or of any other such Remedy, in respect of the particular circumstances in question, or (b) operate so as to bar the enforcement or exercise of the Remedy, or of any other such Remedy in any other subsequent instances.

10D.2. No waiver by GovTech of any breach of the Terms of Use by you shall be deemed to be a waiver of any other or of any subsequent breach.

10D.3. Any waiver by GovTech granted under the Terms of Use must be in writing and may be given subject to conditions. Such waiver under the Terms of Use shall be effective only in the instance and for the purpose for which it is given.

11. Governing Law and Dispute Resolution

11.1. These Terms of Use shall be governed by and construed in accordance with laws of Singapore.

11.2. Subject to clause 11.3, any dispute arising out of or in connection with these Terms of Use, including any question regarding its existence, validity or termination, shall be referred to and finally resolved in the Courts of the Republic of Singapore and the parties hereby submit to the exclusive jurisdiction of the Courts of the Republic of Singapore.

11.3. GovTech may, at its sole discretion, refer any dispute referred to in clause 11.2 above to arbitration administered by the Singapore International Arbitration Centre (“SIAC”) in Singapore in accordance with the Arbitration Rules of the SIAC ("SIAC Rules") for the time being in force, which rules are deemed to be incorporated by reference in this clause. Further:

11.3.1. The seat of the arbitration shall be Singapore.

11.3.2. The tribunal shall consist of one (1) arbitrator.

11.3.3. The language of the arbitration shall be English.

11.3.4. All information, pleadings, documents, evidence and all matters relating to the arbitration shall be confidential.

Where GovTech is the defendant or respondent, it shall be given at least 30 days before the commencement of any legal action against it to elect to exercise the right herein to have the dispute submitted to arbitration. This right to elect shall not prejudice GovTech’s right to a limitation defence and the period to exercise the right shall not be abridged by reason of any accrual of a limitation defence in favour of GovTech during the said period.

These Terms of Use are dated 4 June 2024.

SCHEDULE

2. Nature of Service

a. Notwithstanding anything in the Terms of Use, the Service is intended for use by members of public for internal and external testing.

b. This Service is a tool for the permitted entities (listed in sub-paragraph 2a. above) to receive incoming calls from verified Singapore government officers.

c. You are responsible for ensuring that your use of the Service is compliant with all applicable laws, including without limitation the Personal Data Protection Act and the Spam Control Act.

d. GovTech is not responsible for the content of the calls between government officers and members of public.

e. You warrant and represent to GovTech that (without prejudice to GovTech’s other rights in the Terms of Use such as Clauses 3.2 and 6) you have full rights to use such third party services within or with the Service and your acts and/or omissions in respect of the such services will not cause GovTech to incur liability to any third party, including the service provider.

f. Please note that GovTech may collect, store and/or process data created by the Service. Please see the Privacy Statement for more details.

3. Third party software/services

Privacy Policy

Government Agency Privacy Statement

This Government Agency Privacy Statement (“Privacy Statement”) must be read in conjunction with the Terms of Use that accompany the applicable service you are requesting from us (the “Service”).

General

  1. This is a Government Agency digital service.

  2. Please note that:

2.1. We will use your mobile phone number to enable push notifications from Apple Push Notification server (APNS) or Firebase Cloud Messaging.

  1. Please see the Annex for any additional terms or information.

  2. Nothing in this Privacy Statement shall be construed as limiting or prejudicing our rights at law to collect, use or disclose any data without your consent or agreement.

Use of data

  1. We may request or collect certain types of data from you in connection with your access or use of the Service. The data that may be requested/collected include those identified in the Annex herein. Your data may be stored in our servers, systems or devices, in the servers, systems or devices of our third party service providers or collaborators, or on your device, and may be used by us or our third party service providers or collaborators to facilitate your access or use of the Service. We or our third party service providers or collaborators may collect system configuration information and/or traffic information (such as an IP address) and/or use information or statistical information to operate, maintain or improve the Services or the underlying service of the third party service provider or collaborator. For the avoidance of doubt, in this Privacy Statement, a reference to a third party service provider or collaborator includes other third parties who provide a service or collaborate with our third party service provider or collaborator.

  2. If you provide us with personal data, or where we collect personal data from you:

6.1. We may use, disclose and process the data for any one or more of the following purposes:

6.1.1. to assist, process and facilitate your access or use of the Service;

6.1.2. to administer, process and facilitate any transactions or activities by you, whether with us or any other Government Agency or third party service provider or collaborator, and whether for your own benefit, or for the benefit of a third party on whose behalf you are duly authorized to act;

6.1.3. to carry out your instructions or respond to any queries, feedback or complaints provided by (or purported to be provided by) you or on your behalf, or otherwise for the purposes of responding to or dealing with your interactions with us;

6.1.4. to monitor and track your usage of the Service, to conduct research, data analytics, surveys, market studies and similar activities, in order to assist us in understanding your interests, concerns and preferences and improving the Service (including any service of a third party service provider or collaborator) and other services and products provided by Government Agencies. For the avoidance of doubt, we may also collect, use, disclose and process such information to create reports and produce statistics regarding your transactions with us and your usage of the Services and other services and products provided by Government Agencies for record-keeping and reporting or publication purposes (whether internally or externally);

6.1.5. for the purposes of storing or creating backups of your data (whether for contingency or business continuity purposes or otherwise), whether within or outside Singapore;

6.1.6. to enable us to contact you or communicate with you on any matters relating to your access or use of the Service, including but not limited to the purposes set out above, via email, push notifications or such other forms of communication that we may introduce from time to time depending on the functionality of the Service and/or your device.

6.2. We may share necessary data with other Government Agencies, and third party service providers or collaborators in connection with the Service, so as to improve or facilitate the discharge of public functions and/or serve you in the most efficient and effective way, unless such sharing is prohibited by law.

6.3. We may share your personal data with non-Government Agency entities that have been authorised to carry out specific Government Agency services. We will NOT share your personal data with other non-Government Agency entities without your consent, except where such sharing is necessary for fulfilling any of the purposes herein, or complies with the law.

6.4. For your convenience, we may also display to you data you had previously supplied us or other Government Agencies. This will speed up the transaction and save you the trouble of repeating previous submissions. Should the data be out-of-date, please supply us the latest data.

6A. Please note that we may be required to disclose your data by law, including any law governing the use/provision of any service of a third party service provider or collaborator.

  1. You may withdraw your consent to the use and disclosure of your data by us with reasonable notice and subject to any prevailing legal or contractual restrictions; however, doing so may prevent the proper functioning of the Service and may also result in the cessation of the Service to you.

Protection of data

  1. To safeguard your personal data, all electronic storage and transmission of personal data is secured with appropriate security technologies.

  2. The Service may contain links to external sites or services whose data protection and privacy practices may differ from ours. We are not responsible for the content and privacy practices of these other websites or services and encourage you to consult the privacy notices of those sites or services.

Contact information

10.1. have any enquires or feedback on our data protection policies and procedures; or

10.2. need more information on or access to data which you have provided to us directly in the past.

Definitions

  1. In this Privacy Statement, “Government Agency” refers to an Organ of State, Ministry, Department or Statutory Board and “personal data” shall have the same meaning as its definition in the Personal Data Protection Act 2012 (No. 26 of 2012), provided our obligations in respect of personal data under this Privacy Statement do not apply to:

11.1. Business contact information; and

11.2. Personal data of a deceased individual. However, clauses relating to the disclosure of personal data and protection of personal data shall apply in respect of the personal data of an individual who has been dead for 10 or less years.

This version of the Privacy Statement is dated 17 March 2025.

ANNEX

  1. Types of data requested/collected:

a. If you are a user, please note that GovTech will collect your mobile phone number and store it with Twilio for enabling push notifications for incoming calls.

This version of the Privacy Policy is dated 17 March 2025.

Message Statuses

  1. What do the different message statuses on my Postman dashboard mean?

  2. What's the typical and max time for a message latestStatus to move from created to sent to success? ?

    • As this is a brand new platform, the team does not have any data to release to agencies regarding typical and max time on the latestStatus.

    • Note that the time taken for a message to be sent will also depend on the load at the point of creating and sending these messages.

  3. How are SMS statuses charged?

    • SMSes with a failure as the latestStatus will not be charged.

  4. Do you provide a webhook for checking the status?

    • No, that is not currently provided.

  5. For LatestStatus field, how long do we need to wait before message is sent? How long to wait before we know if it was success or failure?

    • We also currently do not support pushing delivery status to your server via webhooks when the status of a message changes.

  6. Will Postman retry sending failed messages automatically?

    • No, you will need to manually re-send the failed messages.

Information for new Twilio users

This information is meant for users who are only sending out messages to an internal/non-MOP audience.

Billing and Costs

If you are unable to obtain a corporate credit card, you can explore direct invoicing with Twilio. However, Twilio requires a minimum spend of US12,000 annual (or about 25,000 SMSes per month) to qualify for this mode of payment.

What is the cost?

At this point of writing (March 2024), it costs USD$0.0415 per message segment of 160 characters to send to recipients with Singapore numbers. If your message is longer than 160 characters, you will be charged the cost of as many message segments.

SFTP and Other integration methods

  1. I heard that Postman will have SFTP integration. Are the documents ready?

  2. Are there plans to provide SMPP to Postman integration?

    • We will release our SMPP integration details on 1 April 2024

  3. Are there plans to provide SMTP to Postman integration?

    • No.

  4. Can we send encrypted files via SFTP?

    • No, the files need to be in csv format

  5. For SFTP, when will the SMSes be sent and when should the files be deposited?

    • They are sent out in real time upon Postman receiving the files from agencies.

  6. What if the test environment cannot handle my production load

  7. Will load testing be available on Postman test and production sites?

    • You will need to complete load testing on your own system’s end, to ensure that your system is able to handle the load you will be sending over to our end.

    • Please also ensure that you are using the correct method to send your messages (single send vs batch send), as you may receive a 429 error if Postman receives too many request too quickly.

Please do not conduct load testing on our test site. We will proceed to remove your API keys if we noticed that load testing was done on our test site.

This will be done in the campaign creation flow. Refer to our for more information.

Yes. In addition, you will only be able to obtain your API keys after you have whitelisted your IP address. Read for more info.

Each campaign can have as many campaign admins and members, for more information please check out the .

Reach out to your agency PIC(s) to request for campaign create access. Refer to our for more information.

Please obtain confirmation from your agency's CIO regarding the appointment of new PIC(s), and send your request to .

Should you wish to replace existing PIC(s), please send your replacement request, together with your CIO confirmation on the new PIC appointment, to .

Users with within the campaigns are to remove the previous PIC from campaigns

Legacy Postman (Postman v1) with email sending capabilities has migrated to or acess the site by clicking Legacy Postman (refer to image below).

Legacy Postman is not the same as Postman, for more information, refer to .

Twilio, Inc.’s, Acceptable Use Policy, Privacy Policy ()

NestJS - Service Terms ()

Axios - Service Terms ()

Bluebird - Service Terms ()

Express - Service Terms ()

Helmet - Service Terms ()

Nanoid - Service Terms ()

Pino - Service Terms ()

Postmark - Service Terms ()

Sequelize - Service Terms ()

Typescript - Service Terms ()

Chakra UI - Service Terms ()

React - Service Terms ()

Vite - Service Terms ()

1. Name of Service: Call App

Twilio, Inc.’s , Acceptable Use Policy, Privacy Policy ()

Google distribution terms ()

Apple distribution terms ()

Please contact if you:

Name of Service: Call App

Please see the list of available statuses . Do note that telcos do not provide read statuses.

The response on whether the message was created will come in immediately. However, you will need to query to get the message latestStatus.

Refer to our for more information.

Topic
Details

SMSes are sent by Twilio at a default of 10 messages per second.

SMS character

Each message segment is capped at 160 characters.

Beyond this character limit, the single SMS will consist of 2 or more message segments, depending on the length of your SMS.

You will be charged at a per-message-segment rate.

Resources

Each agency/department will need its own Twilio account set up before SMSes can be sent via Postman.

This is for billing and governance purposes.

Not to worry - we will guide you through the set up of this account!

Maximum number of SMSes

There is no limit to how many SMSes or recipients you can send using Postman's interface. Our record is 144,000 SMSes sent in 1 batch by a government agency.

1-way SMS

Postman only allows for sending of 1-way messages. This means that agencies can send mass SMSes to recipients using Postman, but there is currently no functionality on Postman for you to receive any responses that your recipients might send.

Twilio works on a pre-payment method - you will need to top up your account with credits before SMSes can be sent. can be set so that you don't have to manually top up these credits.

Billing is generally done using a corporate credit card. Read more about Twilio's billing methods .

You may refer to Twilio's for the latest rates. You will be charged the cost according to the destination handset i.e. you will be charged the US rate for sending to a US number, even if the recipient with this number is based in Singapore.

Please access our SFTP documents .

You should not be using postman to conduct load testing. Please refer to for more information.

Load testing on Postman will only be available a separate site, not the test site. Please refer to for more information.

policy guide
BTN contact us form
BTN contact us form
https://legacy.postman.gov.sg
its guide here
Terms of Service
http://www.twilio.com/legal/tos
https://devtools.nestjs.com/legal/terms-of-service
https://github.com/axios/axios/blob/v1.x/LICENSE
https://github.com/petkaantonov/bluebird/?tab=MIT-1-ov-file
https://github.com/expressjs/express?tab=MIT-1-ov-file
https://github.com/helmetjs/helmet?tab=MIT-1-ov-file
https://github.com/ai/nanoid?tab=MIT-1-ov-file
https://github.com/pinojs/pino?tab=MIT-1-ov-file
https://postmarkapp.com/terms-of-service
https://github.com/sequelize/sequelize?tab=MIT-1-ov-file
https://github.com/microsoft/TypeScript?tab=Apache-2.0-1-ov-file
https://github.com/chakra-ui/chakra-ui?tab=MIT-1-ov-file
https://github.com/facebook/react?tab=MIT-1-ov-file
https://github.com/vitejs/vite?tab=MIT-1-ov-file
Gov.sg
Terms of Service
http://www.twilio.com/legal/tos
https://play.google.com/about/developer-distribution-agreement.html
https://developer.apple.com/support/terms/
sgc@open.gov.sg
Gov.sg
here
Retrieve message endpoint
API documents
Recharge triggers
here
page
API documents
here
admin and members page
Campaign Owner role
Send Rate
limit
here
this page
this page

Campaign related inquiries

  1. Can campaigns be edited after creation?

    • No, they cannot be edited.

      If you need to edit your campaign’s message body, you will be required to create a new campaign.

      Users are now testing out campaigns on our test platform, and will have a fresh dashboard when they onboard onto our production site.

    • We will update the guide if there are any changes to this.

  2. If we have created multiple variables in a template, such as 4 variables, but we decide to only send 3 variables, is this allowed?

    • No, you will need to pass provide details for all 4 variables. This applies to Postman API, SFTP and admin portal.

  3. What is the maximum number of characters I can provide in each of the variables?

    • There is no limit on the number of characters in each variable. The total message length (excluding header and footer) shall not exceed 1000 characters. Please note that the character limit still applies to the characters within each variable.

  4. How many campaigns can I create, is there a limit?

    • There is no limit, you can create as many campaigns as you want.

  5. How do we know what is the campaignID ?

  6. Are the creation of the templates/campaigns done through the Postman's web interface?

    • There will be no templates within the new Postman.

      Upon the creating of a new campaign, a campaignID will be generated.

  7. Can we not set up any customised campaign - i.e. we can setup the API keys, IP whitelisting and starting using the Postman API to send out SMSes?

    • This is not possible as the API keys are tied to the campaign and can only be generated after a campaign is created.

Refer to for more information.

Refer to our for more information.

Instead, there will be campaigns that can be created, and this will be done through Postman admin portal for all users - API, Admin portal and SFTP users. More information from our .

In such cases, we recommend creating a campaign with only - {{body}}. You can then input any message body you wish from your own system into the {{body}} variable.

API documents
API documents here
this page
1 variable