{"info":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","description":"<html><head></head><body><p>Public REST API for the inst8 SMS gateway — send and receive SMS/MMS through your own Android device fleet from any CRM or application.</p>\n<h2 id=\"authentication\">Authentication</h2>\n<p>All endpoints require a Bearer token:</p>\n<p><code>Authorization: Bearer i8_...</code></p>\n<p>Request a token from your account manager. Tokens are scoped (<code>send</code>, <code>read</code>, <code>webhooks</code>) and rate-limited (default 120 requests/min; <code>429</code> + <code>Retry-After</code> when exceeded; <code>X-RateLimit-*</code> headers on every response).</p>\n<h2 id=\"sending-model\">Sending model</h2>\n<p>Sends are <strong>asynchronous</strong>: <code>POST /messages.php</code> validates, queues, and returns <code>202</code> with a message <code>id</code> per recipient. Messages are paced per SIM by the gateway (roughly one send per 30 seconds per SIM) to protect number health — this pacing cannot be bypassed. Track progress by polling <code>GET /messages.php?id=...</code> or via webhooks.</p>\n<p>Message lifecycle: <code>queued</code> → <code>Pending</code>/<code>Scheduled</code> → <code>Sent</code> → <code>Delivered</code> (or <code>Failed</code>). Note: <code>Delivered</code> depends on carrier delivery reports, which many carriers under-report; absence of <code>Delivered</code> does not mean the message failed.</p>\n<h2 id=\"idempotency\">Idempotency</h2>\n<p>Send an <code>Idempotency-Key</code> header (max 64 chars) with <code>POST /messages.php</code> to make retries safe — a replayed key returns the original result instead of re-sending.</p>\n<h2 id=\"response-envelope\">Response envelope</h2>\n<p>All responses: <code>{\"success\": bool, \"data\": {...}, \"error\": {\"code\", \"message\"} | null}</code>.</p>\n<h2 id=\"webhooks\">Webhooks</h2>\n<p>Register an HTTPS URL to receive <code>message.received</code> (inbound SMS) and <code>message.status</code> (outbound status changes) events, dispatched about once per minute, signed with <code>X-Api-Signature: sha256=HMAC_SHA256(rawBody, secret)</code>. Delivery is at-least-once — de-duplicate on the message <code>id</code>. A webhook failing 20 consecutive dispatch runs is disabled automatically.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"40424191","collectionId":"36cff270-2839-413b-83f0-1d61e56668a1","publishedId":"2sBYAvvqa4","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FFA500"},"publishDate":"2026-09-04T05:59:41.000Z"},"item":[{"name":"Account","item":[{"name":"Get account / validate token","id":"f79e61b1-1697-4885-9ef5-851a275cf86c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://inst8-sms.com/api/v1/me.php","description":"<p>Validates the token and returns the account (credits, expiry) plus token metadata (scopes, rate limit). Requires scope: <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["me.php"],"host":["https://inst8-sms.com/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"f79e61b1-1697-4885-9ef5-851a275cf86c"}],"id":"9f695aab-752a-4ad0-805b-95a7feaf145e","_postman_id":"9f695aab-752a-4ad0-805b-95a7feaf145e","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}}},{"name":"Devices & SIMs","item":[{"name":"List devices and SIMs","id":"4c4ece14-aae9-4812-8728-d783fb3836a2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://inst8-sms.com/api/v1/devices.php","description":"<p>Lists the account's devices with their enabled SIMs (<code>device id</code> + <code>sim slot</code> identify a sending line; use them to pin a send to a specific SIM). <code>last_seen</code> is the device's last check-in and is informational only. Requires scope: <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["devices.php"],"host":["https://inst8-sms.com/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"4c4ece14-aae9-4812-8728-d783fb3836a2"}],"id":"57fe3029-944f-4825-82ef-6f4980d31563","_postman_id":"57fe3029-944f-4825-82ef-6f4980d31563","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}}},{"name":"Messages","item":[{"name":"Send SMS (single)","id":"acca6487-e617-44ab-980d-377db33c7071","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"4c94d2c3-4165-4ee5-b76f-6018f4f42234","description":"<p>Optional but recommended — makes retries safe</p>\n"}],"body":{"mode":"raw","raw":"{\n  \"to\": \"+15551234567\",\n  \"message\": \"Hello from the API!\"\n}"},"url":"https://inst8-sms.com/api/v1/messages.php","description":"<p>Queues one SMS. Returns <code>202</code> with <code>data.messages[0].id</code> — poll that id or use webhooks for status. With no <code>device_id</code> the gateway rotates across your healthy SIMs automatically. Requires scope: <code>send</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["messages.php"],"host":["https://inst8-sms.com/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"acca6487-e617-44ab-980d-377db33c7071"},{"name":"Send SMS (multiple recipients)","id":"23ff1ece-746a-4a99-b048-f255c61f1ba6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"163f4845-6e1b-409d-9837-1f527daab5f3"}],"body":{"mode":"raw","raw":"{\n  \"to\": [\"+15551234567\", \"+15557654321\"],\n  \"message\": \"Hello everyone\"\n}"},"url":"https://inst8-sms.com/api/v1/messages.php","description":"<p>Up to 100 recipients per request; each recipient becomes its own message with its own <code>id</code>, spread across your healthy SIMs. <code>207</code> is returned if only some could be queued (retry the <code>failed</code> ones). Requires scope: <code>send</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["messages.php"],"host":["https://inst8-sms.com/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"23ff1ece-746a-4a99-b048-f255c61f1ba6"},{"name":"Send pinned to a specific SIM / scheduled","id":"875130af-2432-492f-a645-463febc8aecc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"to\": \"+15551234567\",\n  \"message\": \"Scheduled reminder\",\n  \"device_id\": 123,\n  \"sim_slot\": 0,\n  \"schedule\": 1790000000\n}"},"url":"https://inst8-sms.com/api/v1/messages.php","description":"<p><code>device_id</code> (+ optional <code>sim_slot</code>) pins the send to one of your SIMs from <code>GET /devices.php</code>. <code>schedule</code> is a future unix timestamp. Requires scope: <code>send</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["messages.php"],"host":["https://inst8-sms.com/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"875130af-2432-492f-a645-463febc8aecc"},{"name":"Send MMS","id":"6e651cf1-a765-4847-9a07-81900aec1680","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"to\": \"+15551234567\",\n  \"message\": \"Check this out\",\n  \"type\": \"mms\",\n  \"attachments\": [\"https://example.com/image.jpg\"]\n}"},"url":"https://inst8-sms.com/api/v1/messages.php","description":"<p><code>type: mms</code> with <code>attachments</code> (array of public media URLs). Requires scope: <code>send</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["messages.php"],"host":["https://inst8-sms.com/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"6e651cf1-a765-4847-9a07-81900aec1680"},{"name":"Get message status","id":"0d504384-696c-4575-8959-458d1c342437","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://inst8-sms.com/api/v1/messages.php?id={{messageId}}","description":"<p>One outbound message by its <code>id</code> (from the send response). <code>status</code>: <code>queued</code>/<code>failed</code> while in the API pipeline, then the gateway status (<code>Pending</code>, <code>Scheduled</code>, <code>Sent</code>, <code>Delivered</code>, <code>Failed</code>). Requires scope: <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["messages.php"],"host":["https://inst8-sms.com/api/v1"],"query":[{"key":"id","value":"{{messageId}}"}],"variable":[]}},"response":[],"_postman_id":"0d504384-696c-4575-8959-458d1c342437"},{"name":"List outbound messages","id":"10e96c65-bba7-4aea-9481-b0e3be40fc37","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://inst8-sms.com/api/v1/messages.php?direction=outbound&limit=50","description":"<p>Cursor-paginated list of messages sent through the API. Requires scope: <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["messages.php"],"host":["https://inst8-sms.com/api/v1"],"query":[{"key":"direction","value":"outbound"},{"description":{"content":"<p>1-200</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>resume from data.next_cursor</p>\n","type":"text/plain"},"key":"cursor","value":"0"},{"disabled":true,"description":{"content":"<p>optional status filter</p>\n","type":"text/plain"},"key":"status","value":"Delivered"}],"variable":[]}},"response":[],"_postman_id":"10e96c65-bba7-4aea-9481-b0e3be40fc37"},{"name":"List inbound (received) messages","id":"8d1d5d76-edfc-4eb1-970d-31f759b921e2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://inst8-sms.com/api/v1/messages.php?direction=inbound&since_id=0&limit=50","description":"<p>Polling alternative to the <code>message.received</code> webhook: SMS received on your SIMs, ascending by id. Persist <code>next_since_id</code> between polls. Requires scope: <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["messages.php"],"host":["https://inst8-sms.com/api/v1"],"query":[{"key":"direction","value":"inbound"},{"description":{"content":"<p>resume from data.next_since_id</p>\n","type":"text/plain"},"key":"since_id","value":"0"},{"description":{"content":"<p>1-200</p>\n","type":"text/plain"},"key":"limit","value":"50"}],"variable":[]}},"response":[],"_postman_id":"8d1d5d76-edfc-4eb1-970d-31f759b921e2"}],"id":"ff3361aa-92e9-46da-b585-482c41f2baa1","_postman_id":"ff3361aa-92e9-46da-b585-482c41f2baa1","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}}},{"name":"Webhooks","item":[{"name":"List webhooks","id":"e62ed8eb-fdbb-4b1f-b485-b69f314dddc0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://inst8-sms.com/api/v1/webhooks.php","description":"<p>Lists registered webhooks (secrets are only shown at creation). Requires scope: <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["webhooks.php"],"host":["https://inst8-sms.com/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"e62ed8eb-fdbb-4b1f-b485-b69f314dddc0"},{"name":"Create webhook","id":"89a69ea9-9217-49d1-9cfd-63e18a435abb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://your-crm.example.com/inst8-webhook\",\n  \"events\": [\"message.received\", \"message.status\"]\n}"},"url":"https://inst8-sms.com/api/v1/webhooks.php","description":"<p>Registers an HTTPS endpoint. The response contains the signing <code>secret</code> ONCE — store it and verify <code>X-Api-Signature: sha256=HMAC_SHA256(rawBody, secret)</code> on every delivery. Events arrive batched about once per minute; delivery is at-least-once. Max 5 active webhooks. Requires scope: <code>webhooks</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["webhooks.php"],"host":["https://inst8-sms.com/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"89a69ea9-9217-49d1-9cfd-63e18a435abb"},{"name":"Delete webhook","id":"5ffcd9f8-2090-4409-a7d6-1609307b7ef3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://inst8-sms.com/api/v1/webhooks.php?id=1","description":"<p>Removes a webhook by id. Requires scope: <code>webhooks</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["webhooks.php"],"host":["https://inst8-sms.com/api/v1"],"query":[{"key":"id","value":"1"}],"variable":[]}},"response":[],"_postman_id":"5ffcd9f8-2090-4409-a7d6-1609307b7ef3"}],"id":"306feea3-c150-4724-93bb-bc3472fc5da9","_postman_id":"306feea3-c150-4724-93bb-bc3472fc5da9","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}}},{"name":"Blacklist (opt-outs)","item":[{"name":"List blacklisted numbers","id":"a0732bd7-ba4b-4d6c-90ab-f89908cfd17d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://inst8-sms.com/api/v1/blacklist.php?limit=100","description":"<p>Numbers that will be silently skipped on sends (your STOP list — inbound STOP replies land here automatically). Requires scope: <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["blacklist.php"],"host":["https://inst8-sms.com/api/v1"],"query":[{"description":{"content":"<p>1-500</p>\n","type":"text/plain"},"key":"limit","value":"100"},{"disabled":true,"description":{"content":"<p>resume from data.next_cursor</p>\n","type":"text/plain"},"key":"cursor","value":"0"}],"variable":[]}},"response":[],"_postman_id":"a0732bd7-ba4b-4d6c-90ab-f89908cfd17d"},{"name":"Add number to blacklist","id":"740aa55c-a5f1-49e7-8593-10fb32187656","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"number\": \"+15551234567\"\n}"},"url":"https://inst8-sms.com/api/v1/blacklist.php","description":"<p>Opt a number out — future sends to it are skipped. Requires scope: <code>send</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["blacklist.php"],"host":["https://inst8-sms.com/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"740aa55c-a5f1-49e7-8593-10fb32187656"},{"name":"Remove number from blacklist","id":"1d0ebcda-f666-4bc6-bb83-5bff87e51733","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://inst8-sms.com/api/v1/blacklist.php?number=+15551234567","description":"<p>Re-enables sending to a previously opted-out number. Requires scope: <code>send</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}},"urlObject":{"path":["blacklist.php"],"host":["https://inst8-sms.com/api/v1"],"query":[{"key":"number","value":"+15551234567"}],"variable":[]}},"response":[],"_postman_id":"1d0ebcda-f666-4bc6-bb83-5bff87e51733"}],"id":"4856d5e6-854a-4464-a9de-04dd920c0ef2","_postman_id":"4856d5e6-854a-4464-a9de-04dd920c0ef2","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]},"isInherited":true,"source":{"_postman_id":"36cff270-2839-413b-83f0-1d61e56668a1","id":"36cff270-2839-413b-83f0-1d61e56668a1","name":"inst8 SMS Public API v1","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"i8_YOUR_TOKEN_HERE"}]}},"variable":[{"key":"baseUrl","value":"https://inst8-sms.com/api/v1"},{"key":"apiToken","value":"i8_YOUR_TOKEN_HERE"}]}