{"info":{"_postman_id":"da7922f5-3dbe-471c-ba24-17fcd077094c","name":"5c SMS & Dingo Mail API","description":"<html><head></head><body><h2 id=\"welcome-to-our-api-documentation\"><strong>Welcome to our API Documentation</strong></h2>\n<p>This documentation provides everything you need to successfully integrate with our API. Whether you’re looking to send SMS messages, emails, download your inbox or manage your account, our API offers secure and flexible endpoints to integrate your application with SMS functionality.</p>\n<h2 id=\"getting-started\"><strong>Getting Started</strong></h2>\n<p>Follow these steps to generate an API key and send your first SMS via the 5c SMS API.</p>\n<h3 id=\"step-1-generate-your-api-key\">Step 1: Generate Your API Key</h3>\n<ol>\n<li><p>Go to <a href=\"https://www.5centsms.com.au/dashboard/api\">https://www.5centsms.com.au/dashboard/api</a></p>\n</li>\n<li><p>In the <strong>API Key Management</strong> section, specify a <strong>Key Alias</strong> to help identify your key.</p>\n</li>\n<li><p>Click <strong>Create New API Key</strong>.</p>\n</li>\n<li><p>Copy the generated <strong>Key ID</strong> and <strong>Key Secret</strong>.</p>\n</li>\n</ol>\n<blockquote>\n<p>⚠️ <strong>Important:</strong> Store your credentials securely. The Key Secret will not be shown again after this step. </p>\n</blockquote>\n<hr>\n<h3 id=\"step-2-send-your-first-sms\">Step 2: Send Your First SMS</h3>\n<p>Use the following Bash script to send a test SMS:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl -X POST https://www.5centsms.com.au/api/v5/sms \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"key-secret\": \"Paste Key Secret here\",\n    \"key-id\": \"Paste Key ID here\",\n    \"sender\": \"0404123123\",\n    \"to\": \"Paste recipient number here\",\n    \"message\": \"Hello World\"\n  }'\n\n</code></pre>\n<h2 id=\"using-postman-to-explore-the-api\"><strong>Using Postman to Explore the API</strong></h2>\n<p>Postman is a powerful tool that allows you to explore, test, and interact with our API without writing any code. We provide a complete Postman collection that includes all available endpoints, sample requests, and descriptions of required parameters.</p>\n<p><strong>Here’s how to get started:</strong></p>\n<ol>\n<li><p><strong>View Available Endpoints</strong></p>\n<p> On the left-hand side, you’ll see a list of all API groups (e.g., Sending SMS, Manage Your Account). Click into any group to see individual endpoints such as Send SMS, Get Balance, or View Messages.</p>\n</li>\n<li><p><strong>Understand the Request Details</strong></p>\n<p> In the top-right corner of the request tab, click <strong>Documentation</strong> button on the right of the page to vew full details for the API request.</p>\n</li>\n<li><p><strong>Set Your Request Variables</strong></p>\n<p> Before testing any requests, set the request variables by selecting Body under the URL.</p>\n</li>\n<li><p><strong>Send a Test Request</strong></p>\n<p> Choose an endpoint, enter required values (e.g., recipient number and message), and click “Send.” You’ll see the API response immediately in the bottom pane, including success status or any error messages.</p>\n</li>\n<li><p><strong>Generate Sample Code</strong>*_In the top-right corner of the request tab, click the *_<em>\\</em><strong>Code</strong> button (it looks like a pair of angle brackets). This opens the <strong>“Generate Code Snippets”</strong> window.<br> On the left side of the popup, you’ll see a list of supported languages and libraries (e.g., cURL, Python (requests), Node.js (axios), PHP, Ruby, Java, etc.).</p>\n</li>\n</ol>\n<h6 id=\"for-users-of-previouslegacy-apis-access-their-documentation-here\">For users of Previous/Legacy APIs, <a href=\"https://www.5centsms.com.au/dashboard/apiDocs#!/v4\">access their documentation here</a>.</h6>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"45099922","collectionId":"da7922f5-3dbe-471c-ba24-17fcd077094c","publishedId":"2sB3Wwowe9","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-11-16T06:38:18.000Z"},"item":[{"name":"Get SMS Credit Balance","id":"57d5a110-778b-4c70-8e2e-58a58964d18b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"key-secret\": \"\",\n    \"key-id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/balance","description":"<p>Retrieve the current account balance and payment details.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>GET</strong> <code>https://www.5centsms.com.au/api/v5/balance</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-secret\": \"your-secret-key\",\n  \"key-id\": \"your-key-id\"\n}\n\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"\",\n  \"balance\": {\n    \"postpaid\": true,\n    \"credits\": 0\n  }\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains error.</td>\n</tr>\n<tr>\n<td><code>balance</code></td>\n<td><code>object</code></td>\n<td>Account balance in message credits.</td>\n</tr>\n<tr>\n<td><code>postpaid</code></td>\n<td><code>boolean</code></td>\n<td><code>true</code> if account is postpaid; otherwise <code>false</code>.</td>\n</tr>\n<tr>\n<td><code>credits</code></td>\n<td><code>integer</code></td>\n<td>Number of SMS credits available (if prepaid).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>A <code>postpaid</code> account will always return <code>credits</code> as <code>0</code>.</p>\n</li>\n<li><p>Include your <code>key-id</code> and <code>key-secret</code> in every request for authentication.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v5","balance"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"57d5a110-778b-4c70-8e2e-58a58964d18b"},{"name":"List SMS Inbox Messages","id":"685b9a9f-d3da-4dc1-b709-bb5c2807964f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"key-secret\": \"\",\n    \"key-id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/inbox","description":"<p>Retrieve messages sent to your virtual numbers or replies in your account’s inbox.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>GET</strong> <code>https://www.5centsms.com.au/api/v5/inbox</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-secret\": \"your-secret-key\",\n  \"key-id\": \"your-key-id\"\n}\n\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"\",\n  \"messages\": [\n    {\n      \"id\": \"68359bf59b2f56ef4502a746\",\n      \"to\": \"61403754111\",\n      \"from\": \"61404123444\",\n      \"message\": Test Message\",\n      \"date\": 1748343797,\n      \"contact_name\": \"\"\n    }\n    // ... additional message objects ...\n  ],\n  \"next_page\": \"api/v5/inbox?after=68359bec798b46bcde0ee8d9\",\n  \"count\": 4\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains an error message.</td>\n</tr>\n<tr>\n<td><code>messages</code></td>\n<td><code>array</code></td>\n<td>Array of message objects representing each inbound SMS.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td><code>string</code></td>\n<td>(Each <code>messages</code> item) Unique message ID.</td>\n</tr>\n<tr>\n<td><code>to</code></td>\n<td><code>string</code></td>\n<td>(Each <code>messages</code> item) The virtual number that received the message.</td>\n</tr>\n<tr>\n<td><code>from</code></td>\n<td><code>string</code></td>\n<td>(Each <code>messages</code> item) The sender’s phone number.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td><code>string</code></td>\n<td>(Each <code>messages</code> item) The content of the received message.</td>\n</tr>\n<tr>\n<td><code>date</code></td>\n<td><code>integer</code></td>\n<td>(Each <code>messages</code> item) UNIX epoch timestamp when the message was received.</td>\n</tr>\n<tr>\n<td><code>contact_name</code></td>\n<td><code>string</code></td>\n<td>(Each <code>messages</code> item) Optional name of the contact if available.</td>\n</tr>\n<tr>\n<td><code>next_page</code></td>\n<td><code>string</code></td>\n<td>URL path to retrieve the next page of results (for pagination).</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td><code>integer</code></td>\n<td>Total number of messages returned in this response.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>This endpoint uses pagination; use the <code>next_page</code> url provided to fetch subsequent results.</p>\n</li>\n<li><p>Message data is retained for a period of 365 days from the date of processing. After this retention period, the data will be permanently purged. If you require a different retention timeframe, please contact our support team.</p>\n</li>\n<li><p>Always include your <code>key-id</code> and <code>key-secret</code> in the request body for authentication.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v5","inbox"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"685b9a9f-d3da-4dc1-b709-bb5c2807964f"},{"name":"Delete SMS Inbox Message","id":"7b9d8b10-deba-4510-9bca-67f083e59328","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"key-secret\": \"\",\n    \"key-id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/inbox/{id}","description":"<p>Delete a message from the account’s inbox.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>DELETE</strong> <code>https://www.5centsms.com.au/api/v5/inbox/{id}</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-secret\": \"your-secret-key\",\n  \"key-id\": \"your-key-id\"\n}\n\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"\",\n  \"messages\": {\n    \"id\": \"68359bf59b2f56ef4502a746\",\n    \"to\": \"\",\n    \"from\": \"\",\n    \"message_text\": \"DELETED\",\n    \"date\": \"\",\n    \"contact_name\": \"\"\n  }\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains an error message.</td>\n</tr>\n<tr>\n<td><code>messages</code></td>\n<td><code>object</code></td>\n<td>Details of the deleted message.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td><code>string</code></td>\n<td>Unique ID of the deleted message.</td>\n</tr>\n<tr>\n<td><code>to</code></td>\n<td><code>string</code></td>\n<td>Recipient number (blank after deletion).</td>\n</tr>\n<tr>\n<td><code>from</code></td>\n<td><code>string</code></td>\n<td>Sender number (blank after deletion).</td>\n</tr>\n<tr>\n<td><code>message_text</code></td>\n<td><code>string</code></td>\n<td><code>\"DELETED\"</code> to indicate the message was removed.</td>\n</tr>\n<tr>\n<td><code>date</code></td>\n<td><code>string</code></td>\n<td>Timestamp of the message (blank after deletion).</td>\n</tr>\n<tr>\n<td><code>contact_name</code></td>\n<td><code>string</code></td>\n<td>Contact name (blank after deletion).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Specify the <code>{id}</code> of the inbox message you wish to delete in the URL path.</p>\n</li>\n<li><p>After deletion, the message fields will be blank except for <code>\"DELETED\"</code> in <code>message_text</code>.</p>\n</li>\n<li><p>Always include your <code>key-id</code> and <code>key-secret</code> in the request body for authentication.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v5","inbox","{id}"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"7b9d8b10-deba-4510-9bca-67f083e59328"},{"name":"List Sender IDs","id":"94eb6403-4d6a-474f-9209-9146277d84d2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"key-secret\": \"\",\n    \"key-id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/senderid","description":"<p>Retrieve the list of Sender IDs associated with your account.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>GET</strong> <code>https://www.5centsms.com.au/api/v5/senderid</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-secret\": \"your-secret-key\",\n  \"key-id\": \"your-key-id\"\n}\n\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"\",\n  \"senderids\": [\n    {\n      \"senderid\": \"61404111777\",\n      \"status\": \"unverified\",\n      \"id\": \"682b799beb14168194052566\"\n    },\n    {\n      \"senderid\": \"TestID\",\n      \"status\": \"approved\",\n      \"id\": \"6835960db8e56fee7d02ab34\"\n    },\n    // ... additional senderid objects ...\n  ]\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains an error message.</td>\n</tr>\n<tr>\n<td><code>senderids</code></td>\n<td><code>array</code></td>\n<td>Array of sender ID objects associated with the account.</td>\n</tr>\n<tr>\n<td><code>senderid</code></td>\n<td><code>string</code></td>\n<td>(Each item) The sender ID value (e.g., phone number or text ID).</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td><code>string</code></td>\n<td>(Each item) Verification status (<code>unverified</code>, <code>approved</code>, etc.).</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td><code>string</code></td>\n<td>(Each item) Unique identifier for the sender ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Include your <code>key-id</code> and <code>key-secret</code> in every request for authentication.</p>\n</li>\n<li><p>Sender ID status' include: 'pending', 'approved', 'disallowed' or 'unverified'. Only Sender IDs with \"approved\" status should be used to send messages.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v5","senderid"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"94eb6403-4d6a-474f-9209-9146277d84d2"},{"name":"Create Sender ID","id":"06c16433-59d6-4431-8558-499922dc6b02","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"key-secret\": \"\",\n    \"key-id\": \"\",\n    \"senderid\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/senderid","description":"<p>Create a new sender ID for your account.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>POST</strong> <code>https://www.5centsms.com.au/api/v5/senderid</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n<tr>\n<td><code>senderid</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Alphanumeric (up to 11 chars) or a phone number to use as the sender ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-secret\": \"your-secret-key\",\n  \"key-id\": \"your-key-id\",\n  \"senderid\": \"MyCompany\"\n}\n\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"\",\n  \"message\": \"Sender ID created\"\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains error.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td><code>string</code></td>\n<td>Confirmation message.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Phone-number sender IDs must be verified via a link you’ll receive.</p>\n</li>\n<li><p>Alphanumeric sender IDs are manually reviewed and approved by 5c SMS.</p>\n</li>\n</ul>\n<h3 id=\"acma-requirements-for-alphanumeric-sender-ids\">ACMA Requirements for Alphanumeric Sender IDs</h3>\n<p>Your requested ID must clearly represent a valid entity or brand, such as a sole trader, company, partnership, trust, co-operative, registered organisation, personal name, registered trademark, government body (with authorization), product or service name, or an acronym/initialism of at least three characters. Please email us details showing how your sender ID meets these criteria.</p>\n","urlObject":{"protocol":"https","path":["api","v5","senderid"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"06c16433-59d6-4431-8558-499922dc6b02"},{"name":"Delete Sender ID","id":"7546e3e4-bbee-4a99-8f0a-539ac2ec522b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"key-secret\": \"\",\n    \"key-id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/senderid/{id}","description":"<p>Delete a sender ID from your account.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>DELETE</strong> <code>https://www.5centsms.com.au/api/v5/senderid/{id}</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-secret\": \"your-secret-key\",\n  \"key-id\": \"your-key-id\"\n}\n\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"\"\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains an error message.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Specify the Sender ID's ID to delete in the <code>{id}</code> path parameter.</p>\n</li>\n<li><p>Include your <code>key-id</code> and <code>key-secret</code> in every request for authentication.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v5","senderid","{id}"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"7546e3e4-bbee-4a99-8f0a-539ac2ec522b"},{"name":"Send SMS Message","id":"1b63acab-c750-4bc3-a90e-f014f8e12785","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"key-secret\": \"\",\n    \"key-id\": \"\",\n    \"sender\": \"\",\n    \"to\": \"\",\n    \"message\": \"\",\n    \"test\": \"\",\n    \"unicode\": \"\",\n    \"schedule\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/sms","description":"<p>Send a single SMS message</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>POST</strong> <code>https://www.5centsms.com.au/api/v5/sms</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n<tr>\n<td><code>sender</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>The sender ID (e.g., a phone number or alphanumeric string).</td>\n</tr>\n<tr>\n<td><code>to</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>The recipient's mobile number (international or 04 format).</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>The message content.</td>\n</tr>\n<tr>\n<td><code>test</code></td>\n<td><code>boolean</code></td>\n<td>No</td>\n<td>If <code>true</code>, simulates sending the message. No SMS will be delivered and no credits charged.</td>\n</tr>\n<tr>\n<td><code>unicode</code></td>\n<td><code>boolean</code></td>\n<td>No</td>\n<td>If <code>true</code>, sends the message in UTF-16. The <code>message</code> must be hex-encoded. Unicode must be enabled on your account.</td>\n</tr>\n<tr>\n<td><code>schedule</code></td>\n<td><code>integer</code></td>\n<td>No</td>\n<td>UNIX epoch timestamp to schedule the message for future delivery.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-secret\": \"your-secret-key\",\n  \"key-id\": \"your-key-id\",\n  \"sender\": \"0404123123\",\n  \"to\": \"0412333555\",\n  \"message\": \"Hello World\",\n  \"test\": false,\n  \"unicode\": false,\n  \"schedule\": 0\n}\n\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"\",\n  \"messages\": [\n    {\n      \"destination\": \"0412333555\",\n      \"id\": \"683554c596937cc4b90f5cf7\",\n      \"status\": 1011,\n      \"status_text\": \"Sending...\",\n      \"credits\": 1\n    }\n  ]\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains the error message.</td>\n</tr>\n<tr>\n<td><code>messages</code></td>\n<td><code>array</code></td>\n<td>List of message delivery results.</td>\n</tr>\n<tr>\n<td><code>destination</code></td>\n<td><code>string</code></td>\n<td>The recipient phone number.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td><code>string</code></td>\n<td>Unique message ID.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td><code>integer</code></td>\n<td>Numeric status code (e.g., <code>1011</code> = Sending).</td>\n</tr>\n<tr>\n<td><code>status_text</code></td>\n<td><code>string</code></td>\n<td>Human-readable status description.</td>\n</tr>\n<tr>\n<td><code>credits</code></td>\n<td><code>number</code></td>\n<td>Number of SMS credits used.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><code>unicode</code> must be enabled by customer service. When enabled, the <code>message</code> must be hex-encoded (e.g., Testing🎉 would be: <code>00540065007300740069006E0067D83CDF89</code>).</p>\n</li>\n<li><p><code>schedule</code> must be a valid UNIX timestamp (seconds since epoch), e.g., <code>1717000000</code>. Messages cannot be scheduled more than 356 days in advance.</p>\n</li>\n<li><p>Message data is retained for a period of 365 days from the date of processing. After this retention period, the data will be permanently purged. If you require a different retention timeframe, please contact our support team.</p>\n</li>\n<li><p>To test integration without sending an actual SMS, use <code>\"test\": true</code>.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v5","sms"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"1b63acab-c750-4bc3-a90e-f014f8e12785"},{"name":"List Sent SMS Messages","id":"acd214d5-a79a-4345-a52a-d84af391a06e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"key-secret\": \"\",\n    \"key-id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/sms","description":"<p>Retrieve a list of SMS messages that have been sent.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>GET</strong> <code>https://www.5centsms.com.au/api/v5/sms</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-secret\": \"your-secret-key\",\n  \"key-id\": \"your-key-id\"\n}\n\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"\",\n  \"messages\": [\n    {\n      \"destination\": \"0412333555\",\n      \"id\": \"683554c596937cc4b90f5cf7\",\n      \"status\": 1011,\n      \"status_text\": \"Sending...\",\n      \"message_text\": \"test message\",\n      \"credits\": 1,\n      \"send_timestamp\": 1748340857,\n      \"delivery_timestamp\": 1756743007,\n      \"delivery_carrier\": \"50502\"\n    }\n    // ... additional message objects ...\n  ],\n  \"next_page\": \"/api/v5/sms?after=682dfd80e6b94fbde5054b43\",\n  \"count\": 11\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>messages</code></td>\n<td><code>array</code></td>\n<td>Array of message objects representing each sent SMS.</td>\n</tr>\n<tr>\n<td><code>destination</code></td>\n<td><code>string</code></td>\n<td>(Each <code>messages</code> item) The recipient phone number.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td><code>string</code></td>\n<td>(Each <code>messages</code> item) Unique message ID.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td><code>integer</code></td>\n<td>(Each <code>messages</code> item) Numeric status code (e.g., <code>1011</code> = Sending).</td>\n</tr>\n<tr>\n<td><code>status_text</code></td>\n<td><code>string</code></td>\n<td>(Each <code>messages</code> item) Human-readable status description.</td>\n</tr>\n<tr>\n<td><code>message_text</code></td>\n<td><code>string</code></td>\n<td>(Each <code>messages</code> item) The original message content (empty if none).</td>\n</tr>\n<tr>\n<td><code>send_timestamp</code></td>\n<td><code>integer</code></td>\n<td>(Each <code>messages</code> item) UNIX timestamp for when the message was sent (or scheduled)</td>\n</tr>\n<tr>\n<td><code>credits</code></td>\n<td><code>integer</code></td>\n<td>(Each <code>messages</code> item) Number of SMS credits used.</td>\n</tr>\n<tr>\n<td><code>delivery_timestamp</code></td>\n<td><code>integer</code></td>\n<td>(Each <code>messages</code> item) UNIX timestamp that the carrier confirmed delivery.</td>\n</tr>\n<tr>\n<td><code>delivery_network</code></td>\n<td><code>string</code></td>\n<td>(Each <code>messages</code> item) The network carrier code which confirmed delivery.</td>\n</tr>\n</tbody>\n</table>\n</div><p>| <code>next_page</code> | <code>string</code> | URL path to retrieve the next page of results (for pagination). |<br />| <code>count</code> | <code>integer</code> | Total number of messages returned in this response. |</p>\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>This endpoint uses pagination; use the <code>next_page</code> url provided to fetch subsequent results.</p>\n</li>\n<li><p>Message data is retained for a period of 365 days from the date of processing. After this retention period, the data will be permanently purged. If you require a different retention timeframe, please contact our support team.</p>\n</li>\n<li><p>Include your <code>key-id</code> and <code>key-secret</code> in every request for authentication.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v5","sms"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"acd214d5-a79a-4345-a52a-d84af391a06e"},{"name":"SMS Message","id":"ac828a25-5319-455e-ba8f-506d0372bdd5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"key-secret\": \"\",\n    \"key-id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/sms/{id}","description":"<p>Retrieve details for a specific SMS message by its ID.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>GET</strong> <code>https://www.5centsms.com.au/api/v5/sms/{id}</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-secret\": \"your-secret-key\",\n  \"key-id\": \"your-key-id\"\n}\n\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"\",\n  \"message\": {\n    \"destination\": \"0404123123\",\n    \"id\": \"682dfd80e6b94fbde5054b43\",\n    \"status\": 1011,\n    \"status_text\": \"Sending...\",\n    \"message_text\": \"Test Message\",\n    \"credits\": 1,\n    \"send_timestamp\": 1748340857,\n    \"delivery_timestamp\": 1756743007,\n    \"delivery_network\": \"50502\"\n  }\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains an error message.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td><code>object</code></td>\n<td>The SMS message details.</td>\n</tr>\n<tr>\n<td><code>destination</code></td>\n<td><code>string</code></td>\n<td>The recipient’s phone number.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td><code>string</code></td>\n<td>Unique message ID.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td><code>integer</code></td>\n<td>Numeric status code (e.g., <code>1011</code> = Sending).</td>\n</tr>\n<tr>\n<td><code>status_text</code></td>\n<td><code>string</code></td>\n<td>Human-readable status description.</td>\n</tr>\n<tr>\n<td><code>message_text</code></td>\n<td><code>string</code></td>\n<td>The original message content.</td>\n</tr>\n<tr>\n<td><code>credits</code></td>\n<td><code>number</code></td>\n<td>Number of SMS credits used.</td>\n</tr>\n<tr>\n<td><code>send_timestamp</code></td>\n<td><code>integer</code></td>\n<td>UNIX timestamp for when the message was sent (or scheduled)</td>\n</tr>\n<tr>\n<td><code>delivery_timestamp</code></td>\n<td><code>integer</code></td>\n<td>UNIX timestamp that the carrier confirmed delivery.</td>\n</tr>\n<tr>\n<td><code>delivery_network</code></td>\n<td><code>string</code></td>\n<td>The network carrier code which confirmed delivery.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Include your <code>key-id</code> and <code>key-secret</code> in every request for authentication.</p>\n</li>\n<li><p>Message data is retained for a period of 365 days from the date of processing. After this retention period, the data will be permanently purged. If you require a different retention timeframe, please contact our support team.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v5","sms","{id}"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"ac828a25-5319-455e-ba8f-506d0372bdd5"},{"name":"List Opt Outs","id":"7e596a21-4f49-4757-9e57-7bdf2922bf22","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"key-secret\": \"\",\n    \"key-id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/optouts","description":"<p>Retrieve the list of phone numbers that have opted out of future messages.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>GET</strong> <code>https://www.5centsms.com.au/api/v5/optouts</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-secret\": \"your-secret-key\",\n  \"key-id\": \"your-key-id\"\n}\n\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"\",\n  \"numbers\": [\n    {\n      \"id\": \"6835ad8c96937cc4b90f5cfa\",\n      \"number\": \"6140412666\",\n      \"timestamp\": 1748348300\n    },\n    {\n      \"id\": \"6835ad854e419b2aeb07b5b6\",\n      \"number\": \"6140412555\",\n      \"timestamp\": 1748348293\n    },\n    {\n      \"id\": \"6835a0cbac0feef54306ded5\",\n      \"number\": \"61404123444\",\n      \"timestamp\": 1748345035\n    }\n  ],\n  \"count\": 3,\n  \"next_page\": \"api/v5/optouts?after=6835a0cbac0feef54306ded5\"\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains an error message.</td>\n</tr>\n<tr>\n<td><code>numbers</code></td>\n<td><code>array</code></td>\n<td>Array of opt-out entries.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td><code>string</code></td>\n<td>(Each <code>numbers</code> item) Unique opt-out record ID.</td>\n</tr>\n<tr>\n<td><code>number</code></td>\n<td><code>string</code></td>\n<td>(Each <code>numbers</code> item) Phone number that opted out.</td>\n</tr>\n<tr>\n<td><code>timestamp</code></td>\n<td><code>integer</code></td>\n<td>(Each <code>numbers</code> item) UNIX epoch when the opt-out occurred.</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td><code>integer</code></td>\n<td>Total number of opt-out entries returned.</td>\n</tr>\n<tr>\n<td><code>next_page</code></td>\n<td><code>string</code></td>\n<td>URL path to retrieve the next page of results (for pagination).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>This endpoint uses pagination; use the <code>next_page</code> url provided to fetch subsequent results.</p>\n</li>\n<li><p>Include your <code>key-id</code> and <code>key-secret</code> in every request for authentication.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v5","optouts"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"7e596a21-4f49-4757-9e57-7bdf2922bf22"},{"name":"SMS Delivery Webhook","id":"7570a6cf-ce99-494c-a631-1c0675b12913","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"?MID=abc12345&STATUS=1002&TEXT=Delivered","description":"<p>This page provides implementation details and requirements unique to the <strong>Delivery Webhook</strong>.<br />For information and requirements that apply to all webhooks (e.g., security, reliability, general troubleshooting), please refer to the <a href=\"#\">Webhook Introduction</a>.</p>\n<hr />\n<h2 id=\"purpose\">Purpose</h2>\n<p>The Delivery Webhook notifies your application in real-time when the delivery status of an SMS message changes. This allows your system to automatically update message status for users or internal processes.</p>\n<hr />\n<h2 id=\"request-parameters\">Request Parameters</h2>\n<p>The following fields are included in each Delivery Webhook request:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>MID</code></td>\n<td>The Message ID of the SMS message</td>\n<td><code>683554c596937cc4b90f5cf7</code></td>\n</tr>\n<tr>\n<td><code>STATUS</code></td>\n<td>The updated status code of the message</td>\n<td><code>1002</code></td>\n</tr>\n<tr>\n<td><code>TEXT</code></td>\n<td>The updated status text</td>\n<td><code>Message delivered</code></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"endpoint-response\">Endpoint Response</h2>\n<p>Your webhook endpoint must return HTTP <code>200 OK</code> to acknowledge receipt of each event.</p>\n<hr />\n<h1 id=\"sample-code\">Sample Code</h1>\n<p>Below are examples for parsing webhook POST data in Python, PHP, Java, and C#.</p>\n<hr />\n<h2 id=\"python-flask-example\">Python (Flask Example)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-python\">from flask import Flask, request\napp = Flask(__name__)\n@app.route('/webhook', methods=['POST'])\ndef webhook():\n    # Flask automatically parses form data for urlencoded POST\n    mid = request.form.get('MID')\n    status = request.form.get('STATUS')\n    text = request.form.get('TEXT')\n    print(f\"MID: {mid}, STATUS: {status}, TEXT: {text}\")\n    return {\"status\": \"received\"}, 200\nif __name__ == '__main__':\n    app.run(port=5000)\n\n</code></pre>\n<hr />\n<h2 id=\"php\">PHP</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-php\">// PHP automatically parses urlencoded POST data into $_POST\n$mid = $_POST['MID'] ?? null;\n$status = $_POST['STATUS'] ?? null;\n$text = $_POST['TEXT'] ?? null;\nerror_log(\"MID: $mid, STATUS: $status, TEXT: $text\");\nhttp_response_code(200);\necho json_encode(['status' =&gt; 'received']);\n?&gt;\n\n</code></pre>\n<hr />\n<h2 id=\"java-spring-boot-example\">Java (Spring Boot Example)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-java\">import org.springframework.web.bind.annotation.*;\nimport java.util.Map;\n@RestController\npublic class WebhookController {\n    @PostMapping(\"/webhook\")\n    public Map&lt;String, Object&gt; receiveWebhook(\n        @RequestParam Map&lt;String, String&gt; params\n    ) {\n        String mid = params.get(\"MID\");\n        String status = params.get(\"STATUS\");\n        String text = params.get(\"TEXT\");\n        System.out.println(\"MID: \" + mid + \", STATUS: \" + status + \", TEXT: \" + text);\n        return Map.of(\"status\", \"received\");\n    }\n}\n\n</code></pre>\n<hr />\n<h2 id=\"c-aspnet-core-minimal-api-example\">C# (ASP.NET Core Minimal API Example)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-csharp\">using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.Extensions.Hosting;\nvar builder = WebApplication.CreateBuilder(args);\nvar app = builder.Build();\napp.MapPost(\"/webhook\", async (HttpRequest request) =&gt;\n{\n    if (!request.HasFormContentType)\n        return Results.BadRequest(\"Content-Type must be application/x-www-form-urlencoded\");\n    var form = await request.ReadFormAsync();\n    var mid = form[\"MID\"].ToString();\n    var status = form[\"STATUS\"].ToString();\n    var text = form[\"TEXT\"].ToString();\n    Console.WriteLine($\"MID: {mid}, STATUS: {status}, TEXT: {text}\");\n    return Results.Json(new { status = \"received\" });\n});\napp.Run();\n\n</code></pre>\n","urlObject":{"query":[{"description":{"content":"<p>The ID of the message  </p>\n","type":"text/plain"},"key":"MID","value":"abc12345"},{"description":{"content":"<p>The updated status code of the message</p>\n","type":"text/plain"},"key":"STATUS","value":"1002"},{"description":{"content":"<p>The updated status text </p>\n","type":"text/plain"},"key":"TEXT","value":"Delivered"}],"variable":[]}},"response":[],"_postman_id":"7570a6cf-ce99-494c-a631-1c0675b12913"},{"name":"SMS Message Webhook","id":"5fd7e717-3ef2-44e5-8c9d-e5e475410930","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"?MID=683554c596937cc4b90f5cf7&FROM=61411222333&TO=6147666444&TIMESTAMP=1717518220&MESSAGE=Hello, world!&REPLY_TO=555554c596937cc4b90f5444&IMAGES=[\"https://url-to-image/image.jpg\"]","description":"<p>This page provides implementation details and requirements unique to the <strong>Message Webhook</strong>.<br />For information and requirements that apply to all webhooks (such as general security and error handling), please refer to the <a href=\"#\">Webhook Introduction</a>.</p>\n<hr />\n<h2 id=\"purpose\">Purpose</h2>\n<p>The Message Webhook notifies your application in real time when a reply message is received or when an incoming message arrives at a virtual mobile number. This enables immediate processing or response within your system.</p>\n<hr />\n<h2 id=\"request-parameters\">Request Parameters</h2>\n<p>Each Message Webhook event will include the following parameters in the HTTP POST request:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>MID</code></td>\n<td>The unique ID of the incoming message</td>\n<td><code>683554c596937cc4b90f5cf7</code></td>\n</tr>\n<tr>\n<td><code>FROM</code></td>\n<td>The sender of the message (originating phone number)</td>\n<td><code>61404111555</code></td>\n</tr>\n<tr>\n<td><code>TO</code></td>\n<td>The virtual number that received the message</td>\n<td><code>61403777444</code></td>\n</tr>\n<tr>\n<td><code>TIMESTAMP</code></td>\n<td>The time the message was received (Unix epoch timestamp format)</td>\n<td><code>1717518220</code></td>\n</tr>\n<tr>\n<td><code>MESSAGE</code></td>\n<td>The content of the message</td>\n<td><code>Hello, world!</code></td>\n</tr>\n<tr>\n<td><code>IMAGES</code></td>\n<td>An json array of http links to images attached to the message (for MMS messages)</td>\n<td><code>[\"https://url-to-image/image.jpg\"]</code></td>\n</tr>\n<tr>\n<td><code>REPLY_TO</code></td>\n<td>The message ID this message is in reply to (if applicable - see below)</td>\n<td><code>555554c596937cc4b90f5444</code></td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p><strong>Note:</strong><br />The <code>REPLY_TO</code> field may not be present or may be empty if the inbound message cannot be matched to an outbound message. </p>\n</blockquote>\n<hr />\n<h2 id=\"endpoint-response\">Endpoint Response</h2>\n<p>Your webhook endpoint must return HTTP <code>200 OK</code> to acknowledge receipt of each event.</p>\n<hr />\n<h1 id=\"sample-code\">Sample Code</h1>\n<p>Below are examples for parsing Message Webhook data in Python, PHP, Java, and C#.</p>\n<hr />\n<h2 id=\"python-flask-example\">Python (Flask Example)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-python\">from flask import Flask, request\napp = Flask(__name__)\n@app.route('/webhook', methods=['POST'])\ndef webhook():\n    mid = request.form.get('MID')\n    from_num = request.form.get('FROM')\n    to_num = request.form.get('TO')\n    timestamp = request.form.get('TIMESTAMP')\n    message = request.form.get('MESSAGE')\n    reply_to = request.form.get('REPLY_TO')\n    print(f\"MID: {mid}, FROM: {from_num}, TO: {to_num}, TIMESTAMP: {timestamp}, MESSAGE: {message}, REPLY_TO: {reply_to}\")\n    return {\"status\": \"received\"}, 200\nif __name__ == '__main__':\n    app.run(port=5000)\n\n</code></pre>\n<hr />\n<h2 id=\"php\">PHP</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-php\">// PHP automatically parses urlencoded POST data into $_POST\n$mid = $_POST['MID'] ?? null;\n$from = $_POST['FROM'] ?? null;\n$to = $_POST['TO'] ?? null;\n$timestamp = $_POST['TIMESTAMP'] ?? null;\n$message = $_POST['MESSAGE'] ?? null;\n$reply_to = $_POST['REPLY_TO'] ?? null;\nerror_log(\"MID: $mid, FROM: $from, TO: $to, TIMESTAMP: $timestamp, MESSAGE: $message, REPLY_TO: $reply_to\");\nhttp_response_code(200);\necho json_encode(['status' =&gt; 'received']);\n?&gt;\n\n</code></pre>\n<hr />\n<h2 id=\"java-spring-boot-example\">Java (Spring Boot Example)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-java\">import org.springframework.web.bind.annotation.*;\nimport java.util.Map;\n@RestController\npublic class WebhookController {\n    @PostMapping(\"/webhook\")\n    public Map&lt;String, Object&gt; receiveWebhook(\n        @RequestParam Map&lt;String, String&gt; params\n    ) {\n        String mid = params.get(\"MID\");\n        String from = params.get(\"FROM\");\n        String to = params.get(\"TO\");\n        String timestamp = params.get(\"TIMESTAMP\");\n        String message = params.get(\"MESSAGE\");\n        String replyTo = params.get(\"REPLY_TO\");\n        System.out.println(\"MID: \" + mid + \", FROM: \" + from + \", TO: \" + to +\n            \", TIMESTAMP: \" + timestamp + \", MESSAGE: \" + message + \", REPLY_TO: \" + replyTo);\n        return Map.of(\"status\", \"received\");\n    }\n}\n\n</code></pre>\n<hr />\n<h2 id=\"c-aspnet-core-minimal-api-example\">C# (ASP.NET Core Minimal API Example)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-csharp\">using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.Extensions.Hosting;\nvar builder = WebApplication.CreateBuilder(args);\nvar app = builder.Build();\napp.MapPost(\"/webhook\", async (HttpRequest request) =&gt;\n{\n    if (!request.HasFormContentType)\n        return Results.BadRequest(\"Content-Type must be application/x-www-form-urlencoded\");\n    var form = await request.ReadFormAsync();\n    var mid = form[\"MID\"].ToString();\n    var from = form[\"FROM\"].ToString();\n    var to = form[\"TO\"].ToString();\n    var timestamp = form[\"TIMESTAMP\"].ToString();\n    var message = form[\"MESSAGE\"].ToString();\n    var replyTo = form[\"REPLY_TO\"].ToString();\n    Console.WriteLine($\"MID: {mid}, FROM: {from}, TO: {to}, TIMESTAMP: {timestamp}, MESSAGE: {message}, REPLY_TO: {replyTo}\");\n    return Results.Json(new { status = \"received\" });\n});\napp.Run();\n\n</code></pre>\n","urlObject":{"query":[{"description":{"content":"<p>The unique ID of the incoming message</p>\n","type":"text/plain"},"key":"MID","value":"683554c596937cc4b90f5cf7"},{"description":{"content":"<p>The sender of the message (originating phone number)</p>\n","type":"text/plain"},"key":"FROM","value":"61411222333"},{"description":{"content":"<p>The virtual number that received the message</p>\n","type":"text/plain"},"key":"TO","value":"6147666444"},{"description":{"content":"<p>The time the message was received (Unix epoch timestamp format)</p>\n","type":"text/plain"},"key":"TIMESTAMP","value":"1717518220"},{"description":{"content":"<p>The content of the message</p>\n","type":"text/plain"},"key":"MESSAGE","value":"Hello, world!"},{"description":{"content":"<p>The message ID this message is in reply to (if applicable)</p>\n","type":"text/plain"},"key":"REPLY_TO","value":"555554c596937cc4b90f5444"},{"description":{"content":"<p>Links to images attached to MMS messages will be returned in this parameter</p>\n","type":"text/plain"},"key":"IMAGES","value":"[\"https://url-to-image/image.jpg\"]"}],"variable":[]}},"response":[],"_postman_id":"5fd7e717-3ef2-44e5-8c9d-e5e475410930"},{"name":"SMS Balance Webhook","id":"0d882511-2d04-4266-af88-3278ecb60c41","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"?BALANCE=50","description":"<p>This page provides implementation details and requirements unique to the <strong>Balance Webhook</strong>.<br />For information and requirements that apply to all webhooks (such as general security, reliability, and error handling), please refer to the <a href=\"#\">Webhook Introduction</a>.</p>\n<hr />\n<h2 id=\"purpose\">Purpose</h2>\n<p>The Balance Webhook notifies your application in real time when your account balance falls below a pre-defined threshold. This allows your system to take action, such as sending alerts or triggering an automated top-up.</p>\n<hr />\n<h2 id=\"request-parameters\">Request Parameters</h2>\n<p>Each Balance Webhook event will include the following parameter in the HTTP POST request:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>BALANCE</code></td>\n<td>Your current account balance, in credits</td>\n<td><code>45</code></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"configuring-thresholds\">Configuring Thresholds</h2>\n<ul>\n<li>You may configure multiple Balance Webhooks, each set to trigger at a different balance threshold on the Webhooks page: <a href=\"https://www.5centsms.com.au/dashboard/webhooks\">https://www.5centsms.com.au/dashboard/webhooks</a></li>\n</ul>\n<hr />\n<h2 id=\"endpoint-response\">Endpoint Response</h2>\n<p>Your webhook endpoint must return HTTP <code>200 OK</code> to acknowledge receipt of each event.</p>\n<hr />\n<h1 id=\"sample-code\">Sample Code</h1>\n<p>Below are examples for parsing Balance Webhook data in Python, PHP, Java, and C#.</p>\n<hr />\n<h2 id=\"python-flask-example\">Python (Flask Example)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-python\">from flask import Flask, request\napp = Flask(__name__)\n@app.route('/webhook', methods=['POST'])\ndef webhook():\n    balance = request.form.get('BALANCE')\n    print(f\"BALANCE: {balance}\")\n    return {\"status\": \"received\"}, 200\nif __name__ == '__main__':\n    app.run(port=5000)\n\n</code></pre>\n<hr />\n<h2 id=\"php\">PHP</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-php\">// PHP automatically parses urlencoded POST data into $_POST\n$balance = $_POST['BALANCE'] ?? null;\nerror_log(\"BALANCE: $balance\");\nhttp_response_code(200);\necho json_encode(['status' =&gt; 'received']);\n?&gt;\n\n</code></pre>\n<hr />\n<h2 id=\"java-spring-boot-example\">Java (Spring Boot Example)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-java\">import org.springframework.web.bind.annotation.*;\nimport java.util.Map;\n@RestController\npublic class WebhookController {\n    @PostMapping(\"/webhook\")\n    public Map&lt;String, Object&gt; receiveWebhook(\n        @RequestParam Map&lt;String, String&gt; params\n    ) {\n        String balance = params.get(\"BALANCE\");\n        System.out.println(\"BALANCE: \" + balance);\n        return Map.of(\"status\", \"received\");\n    }\n}\n\n</code></pre>\n<hr />\n<h2 id=\"c-aspnet-core-minimal-api-example\">C# (ASP.NET Core Minimal API Example)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-csharp\">using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.Extensions.Hosting;\nvar builder = WebApplication.CreateBuilder(args);\nvar app = builder.Build();\napp.MapPost(\"/webhook\", async (HttpRequest request) =&gt;\n{\n    if (!request.HasFormContentType)\n        return Results.BadRequest(\"Content-Type must be application/x-www-form-urlencoded\");\n    var form = await request.ReadFormAsync();\n    var balance = form[\"BALANCE\"].ToString();\n    Console.WriteLine($\"BALANCE: {balance}\");\n    return Results.Json(new { status = \"received\" });\n});\napp.Run();\n\n</code></pre>\n","urlObject":{"query":[{"description":{"content":"<p>Your current account balance</p>\n","type":"text/plain"},"key":"BALANCE","value":"50"}],"variable":[]}},"response":[],"_postman_id":"0d882511-2d04-4266-af88-3278ecb60c41"},{"name":"Send Email","id":"c9d127f5-b691-4799-87f5-706e30333920","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n   \"key-id\": \"\",\n   \"key-secret\": \"\",\n   \"SenderEmail\": \"\",\n   \"Recipient\": \"\",\n   \"SenderName\": \"\",\n   \"Subject\": \"\",\n   \"Text\": \"\",\n   \"Html\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.dingomail.com.au/api/v5/email","description":"<p>Send a single email</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>POST</strong> <code>https://api.dingomail.com.au/api/v5/email</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n<tr>\n<td><code>Recipient</code></td>\n<td><code>string</code> or <code>array</code></td>\n<td>Conditional</td>\n<td>The email address(es) of the recipient(s). Required if no CC or BCC is provided. Can be a single email string or an array of email strings.</td>\n</tr>\n<tr>\n<td><code>CC</code></td>\n<td><code>string</code> or <code>array</code></td>\n<td>No</td>\n<td>CC recipient(s). Can be a single email string or an array of email strings.</td>\n</tr>\n<tr>\n<td><code>BCC</code></td>\n<td><code>string</code> or <code>array</code></td>\n<td>No</td>\n<td>BCC recipient(s). Can be a single email string or an array of email strings. BCC recipients are not included in the response for privacy.</td>\n</tr>\n<tr>\n<td><code>SenderEmail</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>The email address the email will be sent from. Must be from a verified domain.</td>\n</tr>\n<tr>\n<td><code>SenderName</code></td>\n<td><code>string</code></td>\n<td>No</td>\n<td>The name that will appear as the sender of the email.</td>\n</tr>\n<tr>\n<td><code>ReplyTo</code></td>\n<td><code>string</code></td>\n<td>No</td>\n<td>The email address that replies will be sent to. If not provided, replies go to the SenderEmail address.</td>\n</tr>\n<tr>\n<td><code>Subject</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>The subject line of the email.</td>\n</tr>\n<tr>\n<td><code>Text</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>The plain text version of the email content.</td>\n</tr>\n<tr>\n<td><code>Html</code></td>\n<td><code>string</code></td>\n<td>No</td>\n<td>The HTML version of the email content. If not provided, the Text content will be used.</td>\n</tr>\n<tr>\n<td><code>Attachments</code></td>\n<td><code>array</code></td>\n<td>No</td>\n<td>Array of attachment objects. Requires attachments to be enabled on your account. Maximum 5 attachments per email. See Attachments section below.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Recipient rules:</strong></p>\n<ul>\n<li><p>At least one of <code>Recipient</code>, <code>CC</code>, or <code>BCC</code> must be provided.</p>\n</li>\n<li><p>Maximum 50 total recipients across all fields combined.</p>\n</li>\n</ul>\n<h2 id=\"attachments\">Attachments</h2>\n<p>Each attachment object has the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>url</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>A publicly accessible URL to the file.</td>\n</tr>\n<tr>\n<td><code>filename</code></td>\n<td><code>string</code></td>\n<td>No</td>\n<td>The filename to use for the attachment. If not provided, the filename will be derived from the URL.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<h3 id=\"simple-email\">Simple email</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"key-id\": \"YOUR_KEY_ID\",\n    \"key-secret\": \"YOUR_KEY_SECRET\",\n    \"SenderEmail\": \"sender@yourdomain.com\",\n    \"Recipient\": \"recipient@example.com\",\n    \"SenderName\": \"Your Name\",\n    \"ReplyTo\": \"replies@yourdomain.com\",\n    \"Subject\": \"Test Email\",\n    \"Text\": \"This is a test email\",\n    \"Html\": \"&lt;strong class=&amp;#x27;preserveHtml&amp;#x27; class=&amp;#x27;preserveHtml&amp;#x27;&gt;This is a test email&lt;/b&gt;\"\n}\n\n</code></pre>\n<h3 id=\"multiple-recipients-with-cc-and-bcc\">Multiple recipients with CC and BCC</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"key-id\": \"YOUR_KEY_ID\",\n    \"key-secret\": \"YOUR_KEY_SECRET\",\n    \"SenderEmail\": \"sender@yourdomain.com\",\n    \"Recipient\": [\"recipient1@example.com\", \"recipient2@example.com\"],\n    \"CC\": \"cc@example.com\",\n    \"BCC\": [\"bcc1@example.com\", \"bcc2@example.com\"],\n    \"SenderName\": \"Your Name\",\n    \"Subject\": \"Team Update\",\n    \"Text\": \"Here is the latest update.\"\n}\n\n</code></pre>\n<h3 id=\"email-with-attachments\">Email with attachments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"key-id\": \"YOUR_KEY_ID\",\n    \"key-secret\": \"YOUR_KEY_SECRET\",\n    \"SenderEmail\": \"sender@yourdomain.com\",\n    \"Recipient\": \"recipient@example.com\",\n    \"Subject\": \"Invoice Attached\",\n    \"Text\": \"Please find the invoice attached.\",\n    \"Html\": \"&lt;p class=&amp;#x27;preserveHtml&amp;#x27; class=&amp;#x27;preserveHtml&amp;#x27;&gt;Please find the invoice attached.&lt;/p&gt;\",\n    \"Attachments\": [\n        {\n            \"url\": \"https://example.com/files/invoice.pdf\",\n            \"filename\": \"invoice-2025.pdf\"\n        }\n    ]\n}\n\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"error\": \"\",\n    \"messages\": [\n        {\n            \"Id\": \"691a88b85bdae4d8680f16d2\",\n            \"Status\": \"new\",\n            \"Recipients\": {\n                \"To\": [\"recipient1@example.com\", \"recipient2@example.com\"],\n                \"CC\": [\"cc@example.com\"],\n                \"TotalCount\": 5\n            }\n        }\n    ]\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains the error message.</td>\n</tr>\n<tr>\n<td><code>messages</code></td>\n<td><code>array</code></td>\n<td>List of email delivery results.</td>\n</tr>\n<tr>\n<td><code>messages[].Id</code></td>\n<td><code>string</code></td>\n<td>Unique message ID for tracking the email.</td>\n</tr>\n<tr>\n<td><code>messages[].Status</code></td>\n<td><code>string</code></td>\n<td>Current status of the email (e.g., <code>new</code>, <code>sent</code>, <code>delivered</code>).</td>\n</tr>\n<tr>\n<td><code>messages[].Recipients</code></td>\n<td><code>object</code></td>\n<td>Recipient details.</td>\n</tr>\n<tr>\n<td><code>messages[].Recipients.To</code></td>\n<td><code>array</code></td>\n<td>List of To recipients.</td>\n</tr>\n<tr>\n<td><code>messages[].Recipients.CC</code></td>\n<td><code>array</code></td>\n<td>List of CC recipients.</td>\n</tr>\n<tr>\n<td><code>messages[].Recipients.TotalCount</code></td>\n<td><code>number</code></td>\n<td>Total number of recipients including BCC.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP Code</th>\n<th>Error</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>Required parameter: {field} missing</code></td>\n<td>A required field was not provided.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>At least one of Recipient, CC, or BCC must be provided</code></td>\n<td>No recipients specified.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>Too many recipients. Maximum 50 allowed, got {count}.</code></td>\n<td>Total recipients across To/CC/BCC exceeds 50.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>Invalid email addresses: {list}</code></td>\n<td>One or more email addresses are invalid.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>Invalid Sender Email</code></td>\n<td>The sender email address is invalid.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>Invalid Sender Domain</code></td>\n<td>The sender domain is not verified.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>Each attachment must have a url field</code></td>\n<td>An attachment object is missing the required <code>url</code> field.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>Maximum 5 attachments allowed</code></td>\n<td>Too many attachments.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>Attachments not enabled for this account</code></td>\n<td>Account does not have the attachments feature enabled.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["api","v5","email"],"host":["api","dingomail","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"c9d127f5-b691-4799-87f5-706e30333920"},{"name":"List Sent Emails","id":"862a6f87-98ff-4222-872d-d774ef50a777","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n   \"key-id\": \"\",\n   \"key-secret\": \"\",\n   \"limit\": 100\n}","options":{"raw":{"language":"json"}}},"url":"https://api.dingomail.com.au/api/v5/email","description":"<p>List of emails sent</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>GET</strong> <code>https://api.dingomail.com.au/api/v5/email</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"query-string-parameters\">Query String Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td><code>number</code></td>\n<td>No</td>\n<td>Number of results per page. Default 20, max 100.</td>\n</tr>\n<tr>\n<td><code>after</code></td>\n<td><code>string</code></td>\n<td>No</td>\n<td>Email ID to paginate after. Returns emails older than this ID. Obtained from the <code>next_page</code> URL or from the last email's <code>id</code> in a previous response.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<p>GET /api/v5/email?key-id=YOUR_KEY_ID&amp;key-secret=YOUR_KEY_SECRET&amp;limit=10</p>\n<h3 id=\"with-pagination\">With pagination</h3>\n<p>GET /api/v5/email?key-id=YOUR_KEY_ID&amp;key-secret=YOUR_KEY_SECRET&amp;after=691a88b85bdae4d8680f16d2</p>\n<h2 id=\"successful-response\">Successful Response</h2>\n<p>{<br />\"error\": \"\",<br />\"emails\": [<br />{<br />\"id\": \"691a88b85bdae4d8680f16d2\",<br />\"status\": \"sent\",<br />\"from\": \"<a href=\"https://mailto:sender@yourdomain.com\">sender@yourdomain.com</a>\",<br />\"sender_name\": \"Your Name\",<br />\"to\": [\"<a href=\"mailto:recipient@example.com\">recipient@example.com</a>\"],<br />\"cc\": [],<br />\"subject\": \"Test Email\",<br />\"created_at\": 1749504000,<br />\"method\": \"api\"<br />}<br />],<br />\"count\": 1,<br />\"next_page\": \"/api/v5/email?after=691a88b85bdae4d8680f16d2\"<br />}</p>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains the error message.</td>\n</tr>\n<tr>\n<td><code>emails</code></td>\n<td><code>array</code></td>\n<td>List of email summary objects.</td>\n</tr>\n<tr>\n<td><code>emails[].id</code></td>\n<td><code>string</code></td>\n<td>Unique email ID.</td>\n</tr>\n<tr>\n<td><code>emails[].status</code></td>\n<td><code>string</code></td>\n<td>Current status of the email (e.g., <code>new</code>, <code>sent</code>, <code>delivered</code>).</td>\n</tr>\n<tr>\n<td><code>emails[].from</code></td>\n<td><code>string</code></td>\n<td>Sender email address.</td>\n</tr>\n<tr>\n<td><code>emails[].sender_name</code></td>\n<td><code>string</code></td>\n<td>Sender display name.</td>\n</tr>\n<tr>\n<td><code>emails[].to</code></td>\n<td><code>array</code></td>\n<td>List of To recipients.</td>\n</tr>\n<tr>\n<td><code>emails[].cc</code></td>\n<td><code>array</code></td>\n<td>List of CC recipients.</td>\n</tr>\n<tr>\n<td><code>emails[].subject</code></td>\n<td><code>string</code></td>\n<td>Email subject line.</td>\n</tr>\n<tr>\n<td><code>emails[].created_at</code></td>\n<td><code>number</code></td>\n<td>Unix timestamp when the email was created.</td>\n</tr>\n<tr>\n<td><code>emails[].method</code></td>\n<td><code>string</code></td>\n<td>How the email was sent (e.g., <code>api</code>, <code>dashboard</code>).</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td><code>number</code></td>\n<td>Number of emails returned in this response.</td>\n</tr>\n<tr>\n<td><code>next_page</code></td>\n<td><code>string</code></td>\n<td>URL path for the next page of results. Omitted if there are no more results.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Results are sorted newest first.</p>\n</li>\n<li><p>The list response does not include email body (<code>text</code>, <code>html</code>), <code>bcc</code>, or <code>attachments</code>. Use the single email endpoint to retrieve the full email.</p>\n</li>\n<li><p>Pagination is cursor-based using the <code>after</code> parameter. Do not use numeric page offsets.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v5","email"],"host":["api","dingomail","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"862a6f87-98ff-4222-872d-d774ef50a777"},{"name":"Get Sent Email Details","id":"a3843054-3efa-4f4e-b57c-a3e7f9cf5920","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n   \"key-id\": \"\",\n   \"key-secret\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.dingomail.com.au/api/v5/email/{id}","description":"<p>Retrieve a single email by ID.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>GET</strong> <code>https://api.dingomail.com.au/api/v5/email/{id}</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"url-parameters\">URL Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>The email ID to retrieve (24-character hex string).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"query-string-parameters\">Query String Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<p>GET /api/v5/email/691a88b85bdae4d8680f16d2?key-id=YOUR_KEY_ID&amp;key-secret=YOUR_KEY_SECRET</p>\n<h2 id=\"successful-response\">Successful Response</h2>\n<p>{\n    \"error\": \"\",\n    \"email\": {\n        \"id\": \"691a88b85bdae4d8680f16d2\",\n        \"status\": \"sent\",\n        \"from\": \"<a href=\"mailto:sender@yourdomain.com\">sender@yourdomain.com</a>\",\n        \"sender_name\": \"Your Name\",\n        \"to\": [\"<a href=\"mailto:recipient@example.com\">recipient@example.com</a>\"],\n        \"cc\": [],\n        \"subject\": \"Test Email\",\n        \"text\": \"This is a test email\",\n        \"html\": \"<b>This is a test email</b>\",\n        \"reply_to\": \"<a href=\"mailto:replies@yourdomain.com\">replies@yourdomain.com</a>\",\n        \"created_at\": 1749504000,\n        \"method\": \"api\"\n    }\n}</p>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains the error message.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td><code>object</code></td>\n<td>The full email object.</td>\n</tr>\n<tr>\n<td><code>email.id</code></td>\n<td><code>string</code></td>\n<td>Unique email ID.</td>\n</tr>\n<tr>\n<td><code>email.status</code></td>\n<td><code>string</code></td>\n<td>Current status of the email (e.g., <code>new</code>, <code>sent</code>, <code>delivered</code>).</td>\n</tr>\n<tr>\n<td><code>email.from</code></td>\n<td><code>string</code></td>\n<td>Sender email address.</td>\n</tr>\n<tr>\n<td><code>email.sender_name</code></td>\n<td><code>string</code></td>\n<td>Sender display name.</td>\n</tr>\n<tr>\n<td><code>email.to</code></td>\n<td><code>array</code></td>\n<td>List of To recipients.</td>\n</tr>\n<tr>\n<td><code>email.cc</code></td>\n<td><code>array</code></td>\n<td>List of CC recipients.</td>\n</tr>\n<tr>\n<td><code>email.subject</code></td>\n<td><code>string</code></td>\n<td>Email subject line.</td>\n</tr>\n<tr>\n<td><code>email.text</code></td>\n<td><code>string</code></td>\n<td>Plain text email body.</td>\n</tr>\n<tr>\n<td><code>email.html</code></td>\n<td><code>string</code></td>\n<td>HTML email body.</td>\n</tr>\n<tr>\n<td><code>email.reply_to</code></td>\n<td><code>string</code></td>\n<td>Reply-to email address.</td>\n</tr>\n<tr>\n<td><code>email.created_at</code></td>\n<td><code>number</code></td>\n<td>Unix timestamp when the email was created.</td>\n</tr>\n<tr>\n<td><code>email.method</code></td>\n<td><code>string</code></td>\n<td>How the email was sent (e.g., <code>api</code>, <code>dashboard</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP Code</th>\n<th>Error</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>Invalid email ID</code></td>\n<td>The provided ID is not a valid 24-character hex string.</td>\n</tr>\n<tr>\n<td>404</td>\n<td><code>Email not found</code></td>\n<td>No email found with this ID, or it belongs to a different account.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li>BCC recipients are not included in the response for privacy.</li>\n<li>The single email response includes the full email body (<code>text</code>, <code>html</code>) and additional fields not returned by the list endpoint.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v5","email","{id}"],"host":["api","dingomail","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"a3843054-3efa-4f4e-b57c-a3e7f9cf5920"},{"name":"List Logins","id":"f24005ef-a372-466b-8137-d4bacac96520","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/logins","description":"<p>List logins</p>\n<p>Returns all logins that have access to your account, including their name, email, and current role.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>GET</strong> <code>https://www.5centsms.com.au/api/v5/logins</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-parameters-query-string-or-json-body\">Request Parameters (Query String or JSON Body)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET https://www.5centsms.com.au/api/v5/logins?key-id=YOUR_KEY_ID&amp;key-secret=YOUR_KEY_SECRET\n\n</code></pre><h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"error\": \"\",\n    \"logins\": [\n        {\n            \"login_id\": \"6961a0619df33d11df0d0449\",\n            \"name\": \"John Smith\",\n            \"email\": \"john@example.com\",\n            \"role\": \"admin\"\n        },\n        {\n            \"login_id\": \"699b1d49953149ddb50ba725\",\n            \"name\": \"Jane Doe\",\n            \"email\": \"jane@example.com\",\n            \"role\": \"sender\"\n        }\n    ],\n    \"count\": 2\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains the error message.</td>\n</tr>\n<tr>\n<td><code>logins</code></td>\n<td><code>array</code></td>\n<td>List of logins on your account.</td>\n</tr>\n<tr>\n<td><code>logins[].login_id</code></td>\n<td><code>string</code></td>\n<td>The unique ID of the login.</td>\n</tr>\n<tr>\n<td><code>logins[].name</code></td>\n<td><code>string</code></td>\n<td>The full name of the login.</td>\n</tr>\n<tr>\n<td><code>logins[].email</code></td>\n<td><code>string</code></td>\n<td>The email address of the login.</td>\n</tr>\n<tr>\n<td><code>logins[].role</code></td>\n<td><code>string</code></td>\n<td>The role of the login on your account (<code>admin</code>, <code>manager</code>, <code>sender</code>, or <code>reporting</code>).</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td><code>integer</code></td>\n<td>Total number of logins on your account.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["api","v5","logins"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"f24005ef-a372-466b-8137-d4bacac96520"},{"name":"Create Login","id":"272b3631-c880-40e8-87ab-d5aec141fc72","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"key-id\": \"YOUR_KEY_ID\",\n  \"key-secret\": \"YOUR_KEY_SECRET\",\n  \"name\": \"John Smith\",\n  \"email\": \"john@example.com\",\n  \"mobile\": \"0412345678\",\n  \"role\": \"manager\"\n}","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/logins","description":"<p>Create a login</p>\n<p>Create a new login on your account. A login is a person who can sign in to your account on the dashboard. Each login has a role that controls what they can access.</p>\n<p>If the email address already belongs to an existing login on another account, they will be added to your account without creating a new login. A welcome email is automatically sent to the new login.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>POST</strong> <code>https://www.5centsms.com.au/api/v5/logins</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>The full name of the login.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>The email address for the login. Must be a valid email address.</td>\n</tr>\n<tr>\n<td><code>mobile</code></td>\n<td><code>string</code></td>\n<td>No</td>\n<td>Australian mobile number. Accepts <code>04XXXXXXXX</code>, <code>+614XXXXXXXX</code>, or <code>614XXXXXXXX</code> format.</td>\n</tr>\n<tr>\n<td><code>role</code></td>\n<td><code>string</code></td>\n<td>No</td>\n<td>The role for this login on your account. Must be one of: <code>admin</code>, <code>manager</code>, <code>sender</code>, <code>reporting</code>. Defaults to <code>admin</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-id\": \"YOUR_KEY_ID\",\n  \"key-secret\": \"YOUR_KEY_SECRET\",\n  \"name\": \"John Smith\",\n  \"email\": \"john@example.com\",\n  \"mobile\": \"0412345678\",\n  \"role\": \"manager\"\n}\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"error\": \"\",\n    \"login_id\": \"699b1d6be62d8bb3ea032639\",\n    \"is_new\": true,\n    \"message\": \"Login created and welcome email sent\"\n}\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains the error message.</td>\n</tr>\n<tr>\n<td><code>login_id</code></td>\n<td><code>string</code></td>\n<td>The unique ID of the login.</td>\n</tr>\n<tr>\n<td><code>is_new</code></td>\n<td><code>boolean</code></td>\n<td><code>true</code> if a brand-new login was created. <code>false</code> if an existing login was added to your account.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td><code>string</code></td>\n<td>A human-readable success message.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Error</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Missing required field: name</code></td>\n<td>The <code>name</code> field was not provided or was empty.</td>\n</tr>\n<tr>\n<td><code>Missing required field: email</code></td>\n<td>The <code>email</code> field was not provided or was empty.</td>\n</tr>\n<tr>\n<td><code>Invalid email address</code></td>\n<td>The <code>email</code> field is not a valid email address.</td>\n</tr>\n<tr>\n<td><code>Invalid mobile number</code></td>\n<td>The <code>mobile</code> field is not a valid Australian mobile number.</td>\n</tr>\n<tr>\n<td><code>Invalid role. Must be one of: admin, manager, sender, reporting</code></td>\n<td>The <code>role</code> field contains an invalid value.</td>\n</tr>\n<tr>\n<td><code>Login already exists on this account</code></td>\n<td>A login with this email address is already on your account.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["api","v5","logins"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"272b3631-c880-40e8-87ab-d5aec141fc72"},{"name":"Update Login Role","id":"037eba58-a9cb-4a7e-8c58-2e8b86581a44","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"key-id\": \"YOUR_KEY_ID\",\n  \"key-secret\": \"YOUR_KEY_SECRET\",\n  \"action\": \"change_role\",\n  \"role\": \"sender\"\n}","options":{"raw":{"language":"json"}}},"url":"https://www.5centsms.com.au/api/v5/logins/{login_id}","description":"<p>Change login role</p>\n<p>Change the role of an existing login on your account. Roles control what areas of the dashboard a login can access:</p>\n<ul>\n<li><strong>admin</strong> — Full access, including managing other logins and account settings.</li>\n<li><strong>manager</strong> — Can manage API keys, virtual numbers, notifications, webhooks, and account settings. Cannot manage logins.</li>\n<li><strong>sender</strong> — Can send messages, manage contacts, and make purchases. Cannot access account settings.</li>\n<li><strong>reporting</strong> — View-only access to reports and message history.</li>\n</ul>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>POST</strong> <code>https://www.5centsms.com.au/api/v5/logins/{login_id}</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"url-parameters\">URL Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>login_id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>The unique ID of the login. Must be a valid 24-character hex string.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n<tr>\n<td><code>action</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Must be <code>change_role</code>.</td>\n</tr>\n<tr>\n<td><code>role</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>The new role for the login. Must be one of: <code>admin</code>, <code>manager</code>, <code>sender</code>, <code>reporting</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-id\": \"YOUR_KEY_ID\",\n  \"key-secret\": \"YOUR_KEY_SECRET\",\n  \"action\": \"change_role\",\n  \"role\": \"sender\"\n}\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"error\": \"\",\n    \"login_id\": \"699b1d6be62d8bb3ea032639\",\n    \"role\": \"sender\",\n    \"message\": \"Role updated\"\n}\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains the error message.</td>\n</tr>\n<tr>\n<td><code>login_id</code></td>\n<td><code>string</code></td>\n<td>The unique ID of the login.</td>\n</tr>\n<tr>\n<td><code>role</code></td>\n<td><code>string</code></td>\n<td>The new role that was set.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td><code>string</code></td>\n<td>A human-readable success message.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Error</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Invalid login_id format</code></td>\n<td>The login ID in the URL is not a valid 24-character hex string.</td>\n</tr>\n<tr>\n<td><code>Missing required field: role</code></td>\n<td>The <code>role</code> field was not provided or was empty.</td>\n</tr>\n<tr>\n<td><code>Invalid role. Must be one of: admin, manager, sender, reporting</code></td>\n<td>The <code>role</code> field contains an invalid value.</td>\n</tr>\n<tr>\n<td><code>Login not found on this account</code></td>\n<td>The login does not exist or is not on your account.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["api","v5","logins","{login_id}"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"037eba58-a9cb-4a7e-8c58-2e8b86581a44"},{"name":"Delete Login","id":"058a2123-9275-4bdc-af97-78ee27180603","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://www.5centsms.com.au/api/v5/logins/{login_id}","description":"<p>Delete a login</p>\n<p>Remove a login from your account. The login will no longer be able to access your account on the dashboard.</p>\n<p>If the login is also linked to other accounts, they will continue to exist and can still access those accounts. If your account is their only account, the login will be permanently deleted.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>DELETE</strong> <code>https://www.5centsms.com.au/api/v5/logins/{login_id}</code></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<h2 id=\"url-parameters\">URL Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>login_id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>The unique ID of the login to remove. Must be a valid 24-character hex string.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body-parameters-json\">Request Body Parameters (JSON)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>key-id</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key ID.</td>\n</tr>\n<tr>\n<td><code>key-secret</code></td>\n<td><code>string</code></td>\n<td>Yes</td>\n<td>Your API Key Secret.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"key-id\": \"YOUR_KEY_ID\",\n  \"key-secret\": \"YOUR_KEY_SECRET\"\n}\n\n</code></pre>\n<h2 id=\"successful-response\">Successful Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"error\": \"\",\n    \"login_id\": \"699b1d6be62d8bb3ea032639\",\n    \"message\": \"Login removed from account\"\n}\n\n</code></pre>\n<h2 id=\"response-fields\">Response Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>error</code></td>\n<td><code>string</code></td>\n<td>Empty string if successful; otherwise contains the error message.</td>\n</tr>\n<tr>\n<td><code>login_id</code></td>\n<td><code>string</code></td>\n<td>The unique ID of the login that was removed.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td><code>string</code></td>\n<td>A human-readable success message.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Error</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Invalid login_id format</code></td>\n<td>The login ID in the URL is not a valid 24-character hex string.</td>\n</tr>\n<tr>\n<td><code>Login not found on this account</code></td>\n<td>The login does not exist or is not on your account.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Removing a login only removes it from your account. If the login is linked to other accounts, it will continue to exist.</p>\n</li>\n<li><p>If the login has no remaining accounts after removal, it will be permanently deleted.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v5","logins","{login_id}"],"host":["www","5centsms","com","au"],"query":[],"variable":[]}},"response":[],"_postman_id":"058a2123-9275-4bdc-af97-78ee27180603"}]}