{"info":{"_postman_id":"d9ee406a-53a9-422a-871d-f1e73f071ca2","name":"Textel Public API","description":"<html><head></head><body><p>This documentation includes reference material for the interface to connect with the Textel 2.0 platform.</p>\n<p><strong>API Rate Limits</strong></p>\n<ul>\n<li><p>Send Message endpoint allows 100 calls per second</p>\n</li>\n<li><p>All other endpoints are limited to 5 calls per second</p>\n</li>\n</ul>\n<p>Authentication is required to interact with the Textel Public API. We offer three methods to authenticate, as described in the Authentication section.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"15902053","collectionId":"d9ee406a-53a9-422a-871d-f1e73f071ca2","publishedId":"UVeNoPXr","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"0D60B5"},"publishDate":"2022-02-15T02:46:36.000Z"},"item":[{"name":"Authentication","item":[{"name":"Authenticate","id":"c55a5af9-3eb1-4bd2-959e-4b2cd333e725","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"user@example.org\",\r\n  \"password\": \"example\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/auth/authenticate","urlObject":{"protocol":"https","path":["clientapi","v1","auth","authenticate"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"d55ef308-7f73-4356-b6a0-607ac6f54d9b","name":"Authenticate","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"name@example.com\",\r\n  \"password\": \"password\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/auth/authenticate"},"_postman_previewlanguage":"json","header":[{}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"accessToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIzIiwiZW1haW...\",\n    \"refreshToken\": \"a0A8MRK0EfGBT6ZFdvr9Uo2jDxizvIYwgEc/tpB5tbLtZA==\",\n    \"tokenType\": \"Bearer\",\n    \"expires\": 300,\n    \"message\": null,\n    \"success\": true\n}"}],"_postman_id":"c55a5af9-3eb1-4bd2-959e-4b2cd333e725"},{"name":"Refresh","id":"61deb60c-b46e-4b9d-9c42-c25165c7b37f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"refreshToken\": \"\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/auth/refresh","urlObject":{"protocol":"https","path":["clientapi","v1","auth","refresh"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"e35c0de2-ee7e-4e3b-8ded-1fc8e17f34e3","name":"Refresh","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"refreshToken\" : \"a0A8MRK0EfGBT6ZFdvr9Uo2jDxizvIYwgEc/tpB5tbLtZA==\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/auth/refresh"},"_postman_previewlanguage":"json","header":[""],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"accessToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIzIiwiZW1haW...\",\n    \"tokenType\": \"Bearer\",\n    \"expires\": 300,\n    \"message\": null,\n    \"success\": true\n}"}],"_postman_id":"61deb60c-b46e-4b9d-9c42-c25165c7b37f"},{"name":"Generate API Key","id":"0b8fd155-6601-4485-bf14-c495ca978535","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"<username>"},{"key":"password","value":"<password>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"replaceExisting\": false\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/account/generate-api-key","description":"<p>If a user is an active administrator in the platform, they have the option of generating an API key. This endpoint supports OAuth and Basic for authentication.</p>\n<p>The API key does not expire unless a new one is generated. It can be used as a Bearer token to authenticate against the API as the account's default admin.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","account","generate-api-key"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"a9c4c413-fdf0-4671-bc6c-9063865e856e","name":"Generate API Key","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"replaceExisting\": false\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/account/generate-api-key"},"_postman_previewlanguage":"json","header":[""],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"message\": null,\n    \"success\": true,\n    \"apiKey\": \"R17cNRLksyPZIgEC7NzwsHWoDfv1zR2f\"\n}"}],"_postman_id":"0b8fd155-6601-4485-bf14-c495ca978535"}],"id":"2ed23743-3beb-414c-a755-947af9c5e8aa","description":"<p>The Textel Public API supports three forms of authentication.</p>\n<ul>\n<li>OAuth2 with JWT access token and refresh token</li>\n<li>API Key</li>\n<li>Basic</li>\n</ul>\n","_postman_id":"2ed23743-3beb-414c-a755-947af9c5e8aa"},{"name":"Messages","item":[{"name":"Send Message","id":"b3093c91-2693-409f-b134-1190411f3aa6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"messageId\": \"\",\r\n  \"to\": \"\",\r\n  \"from\": \"\",\r\n  \"body\": \"\",\r\n  \"attachmentUrl\": \"\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/message/send","description":"<p>Use the Send Message call to send SMS or MMS messages.</p>\n<p>Unless your system has unique Message Ids that need to be tracked, it is recommended to remove the messageId field off of the request and allow our system to generate the unique ID and return it in the response.</p>\n<p>If you plan on specifying a proprietary messageId, it will need to be unique to that specific message and it will need to be a GUID. Otherwise, our system will return a Bad Request.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Request Parameter</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Note</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>messageId</td>\n<td>No</td>\n<td>Recomended to exclude unless using proprietary message Ids. Textel will generate a unique Id if not provided.</td>\n</tr>\n<tr>\n<td>to</td>\n<td>Yes</td>\n<td>e164 format is required</td>\n</tr>\n<tr>\n<td>from</td>\n<td>Yes</td>\n<td>e164 format is required</td>\n</tr>\n<tr>\n<td>body</td>\n<td>No*</td>\n<td>Optional if an attachment is provided. Otherwise it is required.</td>\n</tr>\n<tr>\n<td>attachmentUrl</td>\n<td>No*</td>\n<td>Optional if a body is provided. Otherwise it is required.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["clientapi","v1","message","send"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"543a6eb7-764f-4b61-8b8d-780c71b34145","name":"Send Message","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"messageId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\r\n  \"to\": \"string\",\r\n  \"from\": \"string\",\r\n  \"body\": \"string\",\r\n  \"attachmentUrl\": \"string\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/message/send"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"string\",\n    \"success\": true,\n    \"messageId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"status\": 0,\n    \"statusDescription\": \"string\"\n}"}],"_postman_id":"b3093c91-2693-409f-b134-1190411f3aa6"},{"name":"Get Message Details","id":"b190e824-f71b-436b-b183-bc223e704be2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/message/{messageId}","urlObject":{"protocol":"https","path":["clientapi","v1","message","{messageId}"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"ad87a5ec-6a99-4aa1-a18f-88b1fe97e678","name":"Get Message Details","originalRequest":{"method":"GET","header":[]},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\r\n  \"message\": \"string\",\r\n  \"success\": true,\r\n  \"messageDetails\": {\r\n    \"messageId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\r\n    \"fromLine\": \"string\",\r\n    \"toLine\": \"string\",\r\n    \"isOutgoing\": true,\r\n    \"body\": \"string\",\r\n    \"status\": 0,\r\n    \"statusDescription\": \"string\",\r\n    \"timestamp\": \"2022-03-21T17:56:17.446Z\",\r\n    \"hasAttachment\": true,\r\n    \"messageAttachments\": [\r\n      {\r\n        \"url\": \"string\",\r\n        \"contentType\": \"string\",\r\n        \"status\": 0,\r\n        \"statusDescription\": \"string\"\r\n      }\r\n    ]\r\n  }\r\n}"}],"_postman_id":"b190e824-f71b-436b-b183-bc223e704be2"},{"name":"Get Messages By Conversation Id","id":"3101ddfa-659a-4a23-9efa-5589a8397551","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/message/messages-by-conversation-id/{conversation-id}","urlObject":{"protocol":"https","path":["clientapi","v1","message","messages-by-conversation-id","{conversation-id}"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"2b011160-5175-4bb0-8642-1a151b211732","name":"Get Messages By Conversation Id","originalRequest":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/message/messages-by-conversation-id/{conversation-id}"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"messages\": [\r\n        {\r\n            \"messageId\": \"de7357d7-f8c2-4b43-882e-5253f3791b31\",\r\n            \"fromLine\": \"+15555555555\",\r\n            \"toLine\": \"+15555555555\",\r\n            \"isOutgoing\": true,\r\n            \"body\": \"body of message\",\r\n            \"status\": 2,\r\n            \"statusDescription\": \"The message has been delivered to all recipients.\",\r\n            \"timestamp\": \"2024-01-30T02:42:43.1633\",\r\n            \"hasAttachment\": false,\r\n            \"messageAttachments\": []\r\n        }\r\n    ],\r\n    \"messageCount\": 1,\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"3101ddfa-659a-4a23-9efa-5589a8397551"}],"id":"f54e29bb-8f7a-4eb1-867d-ec38449cf291","_postman_id":"f54e29bb-8f7a-4eb1-867d-ec38449cf291","description":""},{"name":"Webhooks","item":[{"name":"Add Webhook","id":"9ec5d2f5-9bcc-445f-9bf0-bb74d0a841e2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"phoneNumber\": \"\",\r\n    \"webhookUrl\": \"\",\r\n    \"eventType\": 1,\r\n    \"authType\": 3,\r\n    \"authValue\": \"\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/webhook/add","description":"<h4 id=\"auth-options\">Auth Options</h4>\n<p>The auth options for this endpoint are:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>authType</strong></th>\n<th><strong>Enum</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>None</td>\n<td>1</td>\n</tr>\n<tr>\n<td>Basic</td>\n<td>2</td>\n</tr>\n<tr>\n<td>Bearer</td>\n<td>3</td>\n</tr>\n</tbody>\n</table>\n</div><p>Once set, we include that authType and the value when we post to the endpoint you provide.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","webhook","add"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"27069bac-6e68-4f30-a340-7a4efca782d7","name":"Add Webhook","originalRequest":{"method":"POST","header":[]},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\r\n  \"message\": \"string\",\r\n  \"success\": true,\r\n  \"webhookId\": 0\r\n}"}],"_postman_id":"9ec5d2f5-9bcc-445f-9bf0-bb74d0a841e2"},{"name":"List Account Webhooks","id":"23ae7173-8fc0-4c32-b142-f6e3584c6b16","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/webhook/list","description":"<p>Allows you to retrieve the list of webhooks set for an account.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","webhook","list"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"ae71f7f2-7bfd-444d-81a1-07727a56236f","name":"List Account Webhooks","originalRequest":{"method":"GET","header":[]},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\r\n  \"message\": \"string\",\r\n  \"success\": true,\r\n  \"webhooks\": [\r\n    {\r\n      \"webhookId\": 0,\r\n      \"phoneNumber\": \"string\",\r\n      \"eventType\": 1,\r\n      \"webhookUrl\": \"string\",\r\n      \"authType\": 1,\r\n      \"created\": \"2022-03-21T17:57:51.041Z\",\r\n      \"updated\": \"2022-03-21T17:57:51.041Z\"\r\n    }\r\n  ]\r\n}"}],"_postman_id":"23ae7173-8fc0-4c32-b142-f6e3584c6b16"},{"name":"Get Webhook","id":"9029a209-85c5-4222-ae82-ce55b58b9dec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/webhook/{webhookId}","urlObject":{"protocol":"https","path":["clientapi","v1","webhook","{webhookId}"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"7103c3d1-aa5b-4b9d-b601-1a0374db27c4","name":"Get Webhook","originalRequest":{"method":"GET","header":[]},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\r\n  \"message\": \"string\",\r\n  \"success\": true,\r\n  \"webhook\": {\r\n    \"webhookId\": 0,\r\n    \"phoneNumber\": \"string\",\r\n    \"eventType\": 1,\r\n    \"webhookUrl\": \"string\",\r\n    \"authType\": 1,\r\n    \"created\": \"2022-03-21T17:57:51.036Z\",\r\n    \"updated\": \"2022-03-21T17:57:51.036Z\"\r\n  }\r\n}"}],"_postman_id":"9029a209-85c5-4222-ae82-ce55b58b9dec"},{"name":"Update Webhook","id":"d8485ad4-3f8b-4e71-81c3-35e6bbc6ff19","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\r\n    \"authType\": 1,\r\n    \"authValue\": \"\",\r\n    \"webhookUrl\": \"\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/webhook/{webhookId}","urlObject":{"protocol":"https","path":["clientapi","v1","webhook","{webhookId}"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"d95652b4-07ff-4f19-ab17-74a00f5eeca0","name":"Update Webhook","originalRequest":{"method":"PATCH","header":[]},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\r\n  \"webhookUrl\": \"string\",\r\n  \"authType\": 1,\r\n  \"authValue\": \"string\"\r\n}"}],"_postman_id":"d8485ad4-3f8b-4e71-81c3-35e6bbc6ff19"},{"name":"Delete Webhook","id":"f2f667ef-9c49-4861-8d71-d2e579d74377","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://foundation.textel.net/clientapi/v1/webhook/{webhookId}","urlObject":{"protocol":"https","path":["clientapi","v1","webhook","{webhookId}"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"ad4bc47e-d122-43ba-8792-e906fab0ad47","name":"Delete Webhook","originalRequest":{"method":"DELETE","header":[]},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\r\n  \"message\": \"string\",\r\n  \"success\": true\r\n}"}],"_postman_id":"f2f667ef-9c49-4861-8d71-d2e579d74377"}],"id":"ee4f70fe-7f9a-4149-835c-9fcf81f9b865","description":"<h2 id=\"webhook-event-types\">Webhook Event Types</h2>\n<p>We currently offer three webhook event types you can subscribe to. These are used to populate eventType in the Add Webhook call.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Type</strong></th>\n<th><strong>Enum</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Message</td>\n<td>1</td>\n</tr>\n<tr>\n<td>Blast</td>\n<td>2</td>\n</tr>\n<tr>\n<td>Conversation</td>\n<td>3</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"message-webhook-event\">Message Webhook Event</h3>\n<p>When you add a webhook for eventType: 1, you are subscribing to all message event types.</p>\n<p>Below is an example of a message event type webhook post body:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"WebhookId\": 0,\n    \"MessageId\": \"00000000-0000-0000-0000-000000000000\",\n    \"To\": \"+15551231234\",\n    \"From\": \"+15551231234\",\n    \"Body\": \"message body\",\n    \"Attachments\": [ \"http://example.com/file.jpg\" ],\n    \"MessageEventType\": 0,\n    \"MessageStatus\": 0,\n    \"Time\": \"0001-01-01T00:00:00\"\n}\n\n</code></pre>\n<h4 id=\"message-event-types\">Message Event Types</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Type</strong></th>\n<th><strong>Enum</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>MessageReceived</td>\n<td>1</td>\n</tr>\n<tr>\n<td>MessageStatusUpdate</td>\n<td>2</td>\n</tr>\n<tr>\n<td>OptedIn</td>\n<td>3</td>\n</tr>\n<tr>\n<td>OptedOut</td>\n<td>4</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"message-statuses\">Message Statuses</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status</strong></th>\n<th><strong>Enum</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Sending</td>\n<td>1</td>\n</tr>\n<tr>\n<td>Delivered</td>\n<td>2</td>\n</tr>\n<tr>\n<td>Failed</td>\n<td>3</td>\n</tr>\n<tr>\n<td>OptedOut</td>\n<td>4</td>\n</tr>\n<tr>\n<td>PartialFailure</td>\n<td>5</td>\n</tr>\n<tr>\n<td>PartialOptOut</td>\n<td>6</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"blast-webhook-event\">Blast Webhook Event</h3>\n<p>When you add a webhook for eventType: 2, you are subscribing to all blast campaign events.</p>\n<p>Below is an example of a blast event webhook post body:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"CampaignId\": \"00000000-0000-0000-0000-000000000000\",    \n    \"CampaignnName\": \"campaign name\",\n    \"CampaignEvent\": \"started\",    \n    \"Time\": \"0001-01-01T00:00:00\"\n}\n\n</code></pre>\n<h4 id=\"campaign-events\">Campaign Events</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Event</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>started</td>\n</tr>\n<tr>\n<td>completed</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"conversation-webhook-event\">Conversation Webhook Event</h3>\n<p>When you add a webhook for the eventType: 3, you are subscribing to new conversation events. Webhook events will be emitted when a new conversation session is created in our platform on the line defined.</p>\n<p>Below is an example of the new conversation webhook event body.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"ConversationId\": \"00000000-8988-0000-0000-000000000000\",\n  \"OutboundLineNumber\": \"+15554971814\",\n  \"ContactLineNumbers\": [\n    \"+15555800403\"\n  ],\n  \"Time\": \"2023-10-17T18:59:04.715861Z\",\n  \"IsBotSession\": false\n}\n\n</code></pre>\n","_postman_id":"ee4f70fe-7f9a-4149-835c-9fcf81f9b865"},{"name":"Contacts","item":[{"name":"Save Contact","id":"676def22-74a1-4935-9a2b-ec2e770d6aa8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"mobileNumber\": \"+18888888888\",\r\n  \"firstName\": \"firstname\",\r\n  \"lastName\": \"lastname\",\r\n  \"email\": \"email@domain.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/save-contact","description":"<p>The Save Contact call functions as an UPSERT call. When passing in the details of a contact to save, if the mobile number supplied already exists, it will update the contact. If the mobile number does not already exist in the account's contacts, it will be created.</p>\n<p>There are also <strong>optional custom fields</strong> that can be saved on the contacts. The custom fields need to be set up on the account in the UI, but once set, you can save data on contacts in those custom fields.</p>\n<p>You will need to supply the AccountCustomContactFieldId as part of the request, including the value to save in the field. There is a <a href=\"https://documenter.getpostman.com/view/15902053/UVeNoPXr#a3668df1-19b6-4bfe-8079-3238acdb291b\">GET Account Custom Contact Fields</a> endpoint that provides the Ids.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","contact","save-contact"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"bbb5f23b-965d-43b9-8d58-534e3ae9859c","name":"Save Contact","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"mobileNumber\": \"+18888888888\",\r\n  \"firstName\": \"firstname\",\r\n  \"lastName\": \"lastname\",\r\n  \"email\": \"email@domain.com\",\r\n  \"customFields\": [\r\n      {\r\n          \"text\": \"Blue\",\r\n          \"AccountCustomContactFieldId\": \"725327C1-4D1B-EE11-907C-00224849EB00\"\r\n      }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/save-contact"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"676def22-74a1-4935-9a2b-ec2e770d6aa8"},{"name":"Save Contacts","id":"41ebbfad-2d56-4879-b8bb-24998473d03e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"contacts\": [\r\n        {\r\n            \"mobileNumber\": \"+18888888888\",\r\n            \"firstName\": \"firstname\",\r\n            \"lastName\": \"lastname\",\r\n            \"email\": \"email@domain.com\"\r\n        },\r\n        {\r\n            \"mobileNumber\": \"+18008888888\",\r\n            \"firstName\": \"firstname\",\r\n            \"lastName\": \"lastname\",\r\n            \"email\": \"email2@domain.com\"\r\n        }\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/save-contacts","description":"<p>The Save Contact call functions as an UPSERT call. When passing in the details of a contact to save, if the mobile number supplied already exists, it will update the contact. If the mobile number does not already exist in the account's contacts, it will be created.</p>\n<p>There are also <strong>optional custom fields</strong> that can be saved on the contacts. The custom fields need to be set up on the account in the UI, but once set, you can save data on contacts in those custom fields.</p>\n<p>You will need to supply the AccountCustomContactFieldId as part of the request, including the value to save in the field. There is a <a href=\"https://documenter.getpostman.com/view/15902053/UVeNoPXr#a3668df1-19b6-4bfe-8079-3238acdb291b\">GET Account Custom Contact Fields</a> endpoint that provides the Ids.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","contact","save-contacts"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"c7876b51-796c-4a20-96f0-0b815a95203b","name":"Save Contact","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"contacts\": [\r\n        {\r\n            \"mobileNumber\": \"+18888888888\",\r\n            \"firstName\": \"firstname\",\r\n            \"lastName\": \"lastname\",\r\n            \"email\": \"email@domain.com\"\r\n        },\r\n        {\r\n            \"mobileNumber\": \"+18008888888\",\r\n            \"firstName\": \"firstname\",\r\n            \"lastName\": \"lastname\",\r\n            \"email\": \"email2@domain.com\"\r\n        }\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/save-contacts"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"41ebbfad-2d56-4879-b8bb-24998473d03e"},{"name":"Search Contacts","id":"5dfd1564-6a1d-4100-8b5e-fb05f7909160","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"searchTerm\": \"string\",\r\n  \"page\": 1,\r\n  \"resultsPerPage\": 20,\r\n  \"sortBy\": 0,\r\n  \"direction\": 0\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/search-contacts","description":"<p>The SEARCH contacts call allows you to query the contacts in your account. The endpoint accepts a search term that searches across the first, last, email, and mobile number fields. There are additional parameters and sorts you can apply as well.</p>\n<p>The response will provide a list of matching contacts along with the specific details for each contact including the contact lists they are a part of, any custom fields defined, etc.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","contact","search-contacts"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"0c580977-93c4-43f3-9189-c1d9d8ece0df","name":"Search Contacts","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"searchTerm\": \"Jane Doe\",\r\n  \"page\": 1,\r\n  \"resultsPerPage\": 20,\r\n  \"sortBy\": 0,\r\n  \"direction\": 0\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/search-contacts"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"page\": 1,\n    \"totalPages\": 1,\n    \"totalContacts\": 1,\n    \"contactResults\": [\n        {\n            \"id\": \"1def72a7-cccc-0000-0000-0000000000\",\n            \"publicId\": 9,\n            \"mobileNumber\": \"+15555805555\",\n            \"firstName\": \"Jane\",\n            \"lastName\": \"Doe\",\n            \"email\": \"\",\n            \"contactListIds\": [\"493e7a7c-c2e5-4489-b0e1-a6537e512708\"],\n            \"created\": \"2021-09-02T21:34:09.1\",\n            \"customFields\": [\n                {\n                    \"id\": \"8abdeea7-cccc-0000-0000-0000000000\",\n                    \"contactId\": \"573f8274-cccc-0000-0000-0000000000\",\n                    \"accountCustomContactFieldId\": \"03bc17dc-cccc-0000-0000-0000000000\",\n                    \"text\": \"12345678\",\n                    \"created\": \"2023-07-06T13:07:55.29\",\n                    \"updated\": null\n                }]\n        }\n    ],\n    \"message\": null,\n    \"success\": true\n}"}],"_postman_id":"5dfd1564-6a1d-4100-8b5e-fb05f7909160"},{"name":"Get Account Custom Contact Fields","id":"a3668df1-19b6-4bfe-8079-3238acdb291b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/account-custom-contact-fields","description":"<p>The endpoint will allow you to get the list of Account Custom Contact Fields that are defined in your account. The IDs provided in this endpoint will allow you to save contacts with custom field values by using the Custom Contact Field ID.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","contact","account-custom-contact-fields"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"5d2c6e5e-43c3-441c-b69f-e55a8aa24ab9","name":"Get Account Custom Contact Fields","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/account-custom-contact-fields"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"accountCustomContactFields\": [\r\n        {\r\n            \"id\": \"03bc17dc-cccc-0000-0000-0000000000\",\r\n            \"accountId\": \"537c50cd-cccc-0000-0000-0000000000\",\r\n            \"fieldName\": \"Custom Field Name 1\",\r\n            \"created\": \"2023-07-05T17:17:47.37\",\r\n            \"updated\": null\r\n        },\r\n        {\r\n            \"id\": \"725327c1-cccc-0000-0000-0000000000\",\r\n            \"accountId\": \"537c50cd-cccc-0000-0000-0000000000\",\r\n            \"fieldName\": \"Custom Field Name 2\",\r\n            \"created\": \"2023-07-05T16:05:27.21\",\r\n            \"updated\": null\r\n        }\r\n    ],\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"a3668df1-19b6-4bfe-8079-3238acdb291b"},{"name":"Save Contact List","id":"db497509-88f7-4ef5-9c16-b20eaa580ddd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"contactListName\": \"Test List\",\r\n    \"mobileNumbers\": [\r\n        \"5554477556\",\r\n        \"5559711102\",\r\n        \"5554654545\"\r\n    ],\r\n    \"contactListId\": 2837\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/save-contact-list","description":"<p>The Save Contact List call supports the creation of new lists or the updating of existing contact lists in the Textel platform.</p>\n<p><strong>Creating a New List</strong></p>\n<ul>\n<li>Do not supply a contactListId. That indicates you are intending to create a new list and not update an existing.</li>\n<li>Provide a name.</li>\n<li>Provide an array of mobile numbers you wish to add to the list. These numbers do not have to be contacts stored in our system already.</li>\n<li>If you provide mobile numbers that are invalid, you will get the list in the API response.</li>\n</ul>\n<p><strong>Updating an Existing List</strong></p>\n<ul>\n<li>You must supply the contactListId field. Otherwise, we will treat it as a new and create a new list.</li>\n<li>It is a complete list update, not a PATCH or partial update. Whatever is supplied for the contact list in this call, will replace the existing contact list data for the list ID specified.</li>\n<li>If you provide a contactListId that is invalid, you will get an response indicating as such.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["clientapi","v1","contact","save-contact-list"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"eda283d0-ebd0-4aee-8744-02879531a47e","name":"Save Contact List","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"contactListName\": \"Testing List\",\r\n    \"mobileNumbers\": [\r\n        \"5554477556\",\r\n        \"5559711102\",\r\n        \"5554654545\"\r\n    ],\r\n    \"contactListId\": 2842\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/save-contact-list"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 2842,\n    \"name\": \"Testing List\",\n    \"contactCount\": 3,\n    \"invalidMobileNumbers\": [],\n    \"message\": null,\n    \"success\": true\n}"}],"_postman_id":"db497509-88f7-4ef5-9c16-b20eaa580ddd"},{"name":"Get Account Contact Lists","id":"259e26ee-e4e8-43eb-b735-1b678b25e7f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/contact/get-account-contact-lists","description":"<p>This endpoint allows you to get a list of all of the Contact Lists in an account. It will include all lists, including those that are System Generated and those that are deleted.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","contact","get-account-contact-lists"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"874eb6cc-ba95-4410-bf91-099bb3da3ed2","name":"Get Account Contact Lists","originalRequest":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/contact/get-account-contact-lists"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"contactLists\": [\r\n        {\r\n            \"id\": \"48190dec-19d3-4523-befe-4d4cc147a582\",\r\n            \"publicId\": 690,\r\n            \"accountId\": \"8e8ac82b-5555-5555-5555-5555553555\",\r\n            \"name\": \"List Name 1\",\r\n            \"isEnabled\": true,\r\n            \"isSystemGenerated\": true,\r\n            \"isDeleted\": false,\r\n            \"contactCount\": 2,\r\n            \"created\": \"2022-06-22T23:46:02.45\",\r\n            \"updated\": \"2023-02-16T20:53:52.53\"\r\n        },\r\n        {\r\n            \"id\": \"5e3fd610-b06f-45ae-9c79-a33864b47efc\",\r\n            \"publicId\": 772,\r\n            \"accountId\": \"8e8ac82b-67da-4f47-8fe2-1e9b6ef31121\",\r\n            \"name\": \"Another Contact List Here\",\r\n            \"isEnabled\": true,\r\n            \"isSystemGenerated\": false,\r\n            \"isDeleted\": true,\r\n            \"contactCount\": 0,\r\n            \"created\": \"2022-07-13T00:50:55.97\",\r\n            \"updated\": null\r\n        },\r\n        {\r\n            \"id\": \"19c14a17-8a5d-4cd3-a7c1-0ac09f73dbe5\",\r\n            \"publicId\": 773,\r\n            \"accountId\": \"8e8ac82b-5555-5555-5555-5555553555\",\r\n            \"name\": \"Another Contact List\",\r\n            \"isEnabled\": true,\r\n            \"isSystemGenerated\": false,\r\n            \"isDeleted\": true,\r\n            \"contactCount\": 0,\r\n            \"created\": \"2022-07-13T00:51:04.03\",\r\n            \"updated\": null\r\n        },\r\n        {\r\n            \"id\": \"b9059824-5555-5555-5555-94eecf72cebd\",\r\n            \"publicId\": 774,\r\n            \"accountId\": \"8e8ac82b-5555-5555-5555-5555553555\",\r\n            \"name\": \"Test List Count\",\r\n            \"isEnabled\": true,\r\n            \"isSystemGenerated\": false,\r\n            \"isDeleted\": true,\r\n            \"contactCount\": 0,\r\n            \"created\": \"2022-07-13T00:51:43.49\",\r\n            \"updated\": null\r\n        }\r\n    ],\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"259e26ee-e4e8-43eb-b735-1b678b25e7f8"},{"name":"Get Contact List","id":"b56e2201-bf57-43c8-a504-39fbf2c6e82f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/contact/get-contact-list/{contactlistid}","description":"<p>Use this endpoint to get the details about a specific contact list, including an array of all of the contacts in the list and their custom fields if present.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","contact","get-contact-list","{contactlistid}"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"9c50582c-8718-4c0b-a0e8-e34b4f12d063","name":"Get Contact List","originalRequest":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/contact/get-contact-list/{contactlistid}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"contactList\": {\r\n        \"id\": \"aa55369c-5555-5555-5555-81da67d9a354\",\r\n        \"publicId\": 4794,\r\n        \"accountId\": \"8e8ac82b-5555-5555-5555-1e9b6ef31121\",\r\n        \"name\": \"API Test List\",\r\n        \"isEnabled\": true,\r\n        \"isSystemGenerated\": false,\r\n        \"isDeleted\": false,\r\n        \"contactCount\": null,\r\n        \"created\": \"2023-01-04T22:06:53.53\",\r\n        \"updated\": null\r\n    },\r\n    \"contacts\": [\r\n        {\r\n            \"id\": \"412094fe-5555-5555-5555-f07f3f73fb68\",\r\n            \"publicId\": 547937,\r\n            \"mobileNumber\": \"+13145555551\",\r\n            \"firstName\": \"Jane\",\r\n            \"lastName\": \"Doe\",\r\n            \"email\": \"email@email.com\",\r\n            \"contactListIds\": [\r\n                \"aa55369c-6468-4366-be06-81da67d9a354\"\r\n            ],\r\n            \"created\": \"2022-06-24T14:26:01.02\",\r\n            \"customFields\": [\r\n                {\r\n                    \"id\": \"bfdf6726-5555-5555-a9bb-6045bd36130d\",\r\n                    \"contactId\": \"9a6ae3db-5555-5555-b4b6-b8027208eed5\",\r\n                    \"accountCustomContactFieldId\": \"03bc17dc-5555-5555-5555-00224849eb00\",\r\n                    \"text\": \"8912345\",\r\n                    \"created\": \"2023-07-12T20:10:31.36\",\r\n                    \"updated\": null\r\n                },\r\n                {\r\n                    \"id\": \"bfdf6726-5555-5555-a9bb-6045bd36130d\",\r\n                    \"contactId\": \"9a6ae3db-5555-5555-b4b6-b8027208eed5\",\r\n                    \"accountCustomContactFieldId\": \"725327c1-5555-5555-907c-00224849eb00\",\r\n                    \"text\": \"Teal\",\r\n                    \"created\": \"2023-07-12T20:10:31.36\",\r\n                    \"updated\": null\r\n                }\r\n            ]\r\n        },\r\n        {\r\n            \"id\": \"7d0e091a-5555-5555-5555-739a35615512\",\r\n            \"publicId\": 2040875,\r\n            \"mobileNumber\": \"+13155555555\",\r\n            \"firstName\": \"Julia\",\r\n            \"lastName\": \"Smith\",\r\n            \"email\": \"julia@email.net\",\r\n            \"contactListIds\": [\r\n                \"aa55369c-6468-4366-be06-81da67d9a354\"\r\n            ],\r\n            \"created\": \"2022-10-27T18:07:37.03\",\r\n            \"customFields\": [\r\n                {\r\n                    \"id\": \"f3b1e607-485a-5555-5555-cea206875310\",\r\n                    \"contactId\": \"f02838c6-5555-5555-af97-2b7576d3316c\",\r\n                    \"accountCustomContactFieldId\": \"725327c1-4d1b-5555-5555-00224849eb00\",\r\n                    \"text\": \"Red\",\r\n                    \"created\": \"2023-07-05T20:10:39.45\",\r\n                    \"updated\": \"2023-07-06T15:23:17.57\"\r\n                }\r\n            ]\r\n        },\r\n        {\r\n            \"id\": \"36eeb22b-5555-5555-5555-c19a9e871728\",\r\n            \"publicId\": 2041005,\r\n            \"mobileNumber\": \"+13145555555\",\r\n            \"firstName\": \"Ryan\",\r\n            \"lastName\": \"David\",\r\n            \"email\": null,\r\n            \"contactListIds\": [\r\n                \"aa55369c-6468-4366-be06-81da67d9a354\"\r\n            ],\r\n            \"created\": \"2022-10-27T18:44:48.88\",\r\n            \"customFields\": []\r\n        }\r\n    ],\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"b56e2201-bf57-43c8-a504-39fbf2c6e82f"},{"name":"Set Line Consent Statuses","id":"f59a4587-92b4-4ce8-bf01-93877a28041a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"customerLineNumber\": \"+18888888888\",\r\n  \"contacts\": [\r\n      {\r\n        \"mobilenumber\": \"+18888888888\",\r\n        \"optedout\": false\r\n      }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/set-line-consent-statuses","description":"<p><strong>NOTE: Setting the Consent Status on a contact using this endpoint is irreversible.</strong> Once set, the only method to change the status must come directly from the mobile number, in the form of texting into the outbound line.</p>\n<p>Using this endpoint will allow you to selectivey set the opt in or out status of one or more mobile numbers for a specific outbound line in an account.</p>\n<h3 id=\"response-object-fields\">Response Object Fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>mobileNumbersNotOpted</td>\n<td>Mobile Numbers where the status change was not executed due to it already being set.</td>\n</tr>\n<tr>\n<td>invalidMobileNumbers</td>\n<td>Mobile numbers provided that were invalid.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["clientapi","v1","contact","set-line-consent-statuses"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"084fe02c-e195-47dc-b47f-4577ad4a684f","name":"Set Line Consent Statuses","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"customerLineNumber\": \"+18888888888\",\r\n  \"contacts\": [\r\n      {\r\n        \"mobilenumber\": \"+18888888888\",\r\n        \"optedout\": false\r\n      }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/set-line-consent-statuses"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"mobileNumbersNotOpted\": [],\n    \"invalidMobileNumbers\": [],\n    \"message\": null,\n    \"success\": true\n}"}],"_postman_id":"f59a4587-92b4-4ce8-bf01-93877a28041a"},{"name":"Get Contact Opt Statuses","id":"ff6487b4-130e-4dbb-8ca1-04a891986220","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"MobileNumber\" : \"+18888888888\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/get-contact-opt-statuses","description":"<p>The endpoint allows you to get the Consent statuses for a single mobile contact, across all of the lines in your account.</p>\n<p>It is helpful when you need to get the Opt In/Out status for a mobile contact for look up or syncing information.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","contact","get-contact-opt-statuses"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"1dae811f-f5b8-4fb0-8b23-99b7a5cddf27","name":"Get Contact Opt Statuses","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"mobilenumber\" : \"+18888888888\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/get-contact-opt-statuses"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"customerLineWithStatus\": [\r\n        {\r\n            \"customerLine\": {\r\n                \"publicId\": 000000,\r\n                \"phoneNumber\": \"+18335555555\",\r\n                \"lineName\": \"Testing Line\",\r\n                \"created\": \"2022-06-22T23:46:02.43\",\r\n                \"lineId\": \"4dbbcb90-0000-0000-0000-2b3422e43c8f\"\r\n            },\r\n            \"optedOut\": false\r\n        },\r\n        {\r\n            \"customerLine\": {\r\n                \"publicId\": 000001,\r\n                \"phoneNumber\": \"+13145555555\",\r\n                \"lineName\": \"Test Line2\",\r\n                \"created\": \"2022-09-26T21:11:27.42\",\r\n                \"lineId\": \"99550a61-0000-0000-0000-d97dcc5959a8\"\r\n            },\r\n            \"optedOut\": false\r\n        }\r\n    ],\r\n    \"message\": null,\r\n    \"success\": false\r\n}"}],"_postman_id":"ff6487b4-130e-4dbb-8ca1-04a891986220"},{"name":"Add Contact to List","id":"1147e063-1e21-44b9-968b-3e4367df6039","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"MobileNumber\": \"+15555555555\",\r\n    \"ContactListId\": 1\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/add-contact-to-list","urlObject":{"protocol":"https","path":["clientapi","v1","contact","add-contact-to-list"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[],"_postman_id":"1147e063-1e21-44b9-968b-3e4367df6039"},{"name":"Remove Contact From List","id":"9164cfea-31ab-4926-aebf-5b01162ed07f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"MobileNumber\": \"+15555555555\",\r\n    \"ContactListId\": 1\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/contact/remove-contact-from-list","urlObject":{"protocol":"https","path":["clientapi","v1","contact","remove-contact-from-list"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[],"_postman_id":"9164cfea-31ab-4926-aebf-5b01162ed07f"}],"id":"52fed363-8954-4a00-9cd0-2c0d3013bf4e","_postman_id":"52fed363-8954-4a00-9cd0-2c0d3013bf4e","description":""},{"name":"Blast","item":[{"name":"Create Campaign","id":"5cdbc19f-4f94-4d53-9ecc-917e45ebbd59","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"campaignName\": \"string\",\r\n  \"outboundLineNumber\": \"phonenumber\",\r\n  \"contactListId\": \"\",\r\n  \"mobileNumbers\": [\r\n  ],\r\n  \"messages\": [\r\n    {\r\n      \"messageBody\": \"string\",\r\n      \"attachmentUrl\": \"\",\r\n      \"startDate\": \"2022-06-01T16:05:00.513Z\",\r\n      \"campaignMessageType\": 1\r\n    }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/campaign/create-campaign","description":"<p>This endpoint allows for the creation and scheduling of a Blast SMS campaign. The campaign can have a single or multiple messages, based off of what is put in the messages object in the request.</p>\n<p>You can provide a predefined Contact List Id to specify the recipients, or pass in an array of mobile numbers, or both.</p>\n<h4 id=\"request-details\">Request Details</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Request Parameter</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Note</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>campaignName</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td>outboundLineNumber</td>\n<td>Yes</td>\n<td>e164 format is required</td>\n</tr>\n<tr>\n<td>contactListId</td>\n<td>No*</td>\n<td>To use, you must supply the Id for the Contact List from the Textel platform. If you do not want to use a predefined list, this can be left empty.</td>\n</tr>\n<tr>\n<td>mobileNumbers</td>\n<td>No*</td>\n<td>This is an array that can support one or many. Can be used in conjunction with the Contact List field or can be left empty if contact list is specified.</td>\n</tr>\n<tr>\n<td>messages</td>\n<td>Yes</td>\n<td>At least one message is required in a campaign. Each message must have: messageBody, startDate, campaignMessageType. attachmentUrl is optional. When supplying multiple messages, start dates must be distinct.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"validation\">Validation</h4>\n<p><strong>Standard Validation</strong></p>\n<ul>\n<li>outboundLineNumber has the proper permissions to send Blast campaigns</li>\n<li>At least one contact is provided</li>\n</ul>\n<p><strong>Scheduling Validation</strong></p>\n<p>Due to the fact that multiple messages can be scheduled with this campaign creation endpoint, we have several validation checks to ensure the provided schedule is possible given recipient size and send rates for a line.</p>\n<p>If the start date/times provided for messages are too close and do not allow ample time to have the first message send to recipients prior to the second message starting then:</p>\n<ul>\n<li>We will provide a Failure response for the request with details on what start times will need to change.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["clientapi","v1","campaign","create-campaign"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"5f2323c6-a20d-42f4-9b52-f71b3ea302d3","name":"Create Campaign","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"campaignName\": \"API Test\",\r\n  \"outboundLineNumber\": \"+18888888888\",\r\n  \"contactListId\": \"8fc1cbac-309e-47ff-8b19-7726ec6bde1a\",\r\n  \"mobileNumbers\": [\r\n  ],\r\n  \"messages\": [\r\n    {\r\n      \"messageBody\": \"Thank you for joining our subscriber list. Here is a promotion for you.\",\r\n      \"attachmentUrl\": \"\",\r\n      \"startDate\": \"2023-03-08T16:05:00.513Z\",\r\n      \"campaignMessageType\": 1\r\n    }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/campaign/create-campaign"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"campaignId\": \"7df6c591-72fe-4ae1-baf5-9de6df26b07d\",\n    \"campaignStatus\": 5,\n    \"campaignMessages\": [\n        {\n            \"body\": \"Thank you for joining our subscriber list. Here is a promotion for you.\",\n            \"attachmentUrl\": \"\",\n            \"startTime\": \"2023-03-08T16:05:00.513Z\"\n        }\n    ],\n    \"message\": null,\n    \"success\": true\n}"}],"_postman_id":"5cdbc19f-4f94-4d53-9ecc-917e45ebbd59"},{"name":"Get Campaign","id":"acd2dd05-53b4-4dd8-b868-aa7fa9080e15","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/campaign/get-campaign/{campaignGUID}","description":"<p>To use this endpoint, a campaign GUID must be provided at the end of the request URL.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","campaign","get-campaign","{campaignGUID}"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"c59d4cdc-7afa-45ab-a0e1-07d1dbe45571","name":"Get Campaign","originalRequest":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/campaign/get-campaign/{campaignGUID}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"name\": \"Summer Promotional Sale\",\r\n    \"outboundLine\": {\r\n        \"lineName\": \"Platform Outbound Line\",\r\n        \"phoneNumber\": \"+15555555555\"\r\n    },\r\n    \"status\": \"Complete\",\r\n    \"mobileNumbers\": [],\r\n    \"contactList\": {\r\n        \"id\": \"00000000-c2e5-4489-b0e1-a6537e512708\",\r\n        \"name\": \"Summer Promo Opt-Ins\"\r\n    },\r\n    \"messages\": [\r\n        {\r\n            \"body\": \"We have a new promotion running this month. Text SUMMER to this number to receive your personalized coupon code. Text STOP to opt out.\",\r\n            \"attachmentUrl\": null,\r\n            \"startTime\": \"2022-05-01T21:40:00\"\r\n        },\r\n        {\r\n            \"body\": \"We're midway through the summer! Get a fresh look by using the promo code JULYPROMO and save 20% on your next booking. Text STOP to opt out.\",\r\n            \"attachmentUrl\": null,\r\n            \"startTime\": \"2022-06-25T21:43:00\"\r\n        },\r\n        {\r\n            \"body\": \"We are having a summer closeout sale. Stop by any of our locations to pick up limited time discounts on your favorite products. Text STOP to opt out.\",\r\n            \"attachmentUrl\": null,\r\n            \"startTime\": \"2022-08-10T21:45:00\"\r\n        }\r\n    ],\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"acd2dd05-53b4-4dd8-b868-aa7fa9080e15"},{"name":"Search Campaigns","id":"d9d5e16f-fca9-42bd-9e45-0563ee705689","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"campaignName\": \"\",\r\n  \"outboundLineNumbers\": [\r\n    \"\"\r\n  ],\r\n  \"startDate\": \"2022-03-01T16:05:00\",\r\n  \"endDate\": \"2022-06-01T16:05:00\",\r\n  \"campaignStatuses\": [\r\n    1,\r\n    2,\r\n    3,\r\n    6\r\n  ],\r\n  \"page\": 1,\r\n  \"resultsPerPage\": 10\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/campaign/search-campaigns","description":"<p>The Search Campaign endpoint has a lot of flexibility using filters to allow you to scope your request as broad or as narrow as you would like.</p>\n<h3 id=\"filter-breakdown\">Filter Breakdown</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Filter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>page</td>\n<td>Number</td>\n<td>1</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>resultsPerPage</td>\n<td>Number</td>\n<td>10</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>campaignName</td>\n<td>string</td>\n<td>None</td>\n<td>No</td>\n</tr>\n<tr>\n<td>outboundLineNumbers</td>\n<td>phonenumber (supports an array)</td>\n<td>None</td>\n<td>No</td>\n</tr>\n<tr>\n<td>startDate</td>\n<td>datetime</td>\n<td>None</td>\n<td>No</td>\n</tr>\n<tr>\n<td>endDate</td>\n<td>datetime</td>\n<td>None</td>\n<td>No</td>\n</tr>\n<tr>\n<td>campaignStatuses</td>\n<td>number (supports an array)</td>\n<td>None</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"campaign-statuses\">Campaign Statuses</h3>\n<p>Below is the breakdown of the campaign status codes that you can pass into the endpoint.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Status</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td>Defined</td>\n</tr>\n<tr>\n<td>2</td>\n<td>Draft</td>\n</tr>\n<tr>\n<td>3</td>\n<td>Complete</td>\n</tr>\n<tr>\n<td>4</td>\n<td>Stopped</td>\n</tr>\n<tr>\n<td>5</td>\n<td>Scheduled</td>\n</tr>\n<tr>\n<td>6</td>\n<td>Running</td>\n</tr>\n<tr>\n<td>7</td>\n<td>Archived</td>\n</tr>\n<tr>\n<td>8</td>\n<td>Failed</td>\n</tr>\n</tbody>\n</table>\n</div><p>For details on what these campaign statuses mean and what actions can be taken on them, view our <a href=\"https://support.textel.net/docs/campaign-statuses\">Campaign Statuses</a> support page.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","campaign","search-campaigns"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"4d7a9cb6-7bee-44c2-9936-166d6903c8d4","name":"Search Campaigns","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"campaignName\": \"\",\r\n  \"outboundLineNumbers\": [\r\n    \"5555555555\"\r\n  ],\r\n  \"startDate\": \"2022-03-01T16:05:00\",\r\n  \"endDate\": \"2022-06-01T16:05:00\",\r\n  \"campaignStatuses\": [\r\n    1,\r\n    2,\r\n    3,\r\n    6\r\n  ],\r\n  \"page\": 1,\r\n  \"resultsPerPage\": 10\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/campaign/search-campaigns"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"page\": 1,\r\n    \"totalPages\": 4,\r\n    \"totalCampaigns\": 32,\r\n    \"campaigns\": [\r\n        {\r\n            \"campaignName\": \"Test Campaign 1\",\r\n            \"campaignId\": \"b000e000-6a99-4952-b39d-04b267cf0000\",\r\n            \"outboundLine\": {\r\n                \"lineName\": \"Platform Outbound Line\",\r\n                \"phoneNumber\": \"+15555555555\"\r\n            },\r\n            \"campaignStatus\": 3,\r\n            \"contactCount\": 1,\r\n            \"messageCount\": 1,\r\n            \"startDate\": \"2022-03-18T16:09:00\"\r\n        },\r\n        {\r\n            \"campaignName\": \"Summer Promotional Sale\",\r\n            \"campaignId\": \"00000000-b25d-4d41-a8b0-0b5ba310000c\",\r\n            \"outboundLine\": {\r\n                \"lineName\": \"Platform Outbound Line\",\r\n                \"phoneNumber\": \"+15555555555\"\r\n            },\r\n            \"campaignStatus\": 3,\r\n            \"contactCount\": 2,\r\n            \"messageCount\": 2,\r\n            \"startDate\": \"2022-03-07T15:48:00\"\r\n        },\r\n        {\r\n            \"campaignName\": \"Test Campaign 2\",\r\n            \"campaignId\": \"29c8fe1e-92a0-4d0d-b274-15f5ef25c84d\",\r\n            \"outboundLine\": {\r\n                \"lineName\": \"Platform Outbound Line\",\r\n                \"phoneNumber\": \"+15555555555\"\r\n            },\r\n            \"campaignStatus\": 3,\r\n            \"contactCount\": 1,\r\n            \"messageCount\": 1,\r\n            \"startDate\": \"2022-03-21T16:21:00\"\r\n        },\r\n        {\r\n            \"campaignName\": \"Botco Demo Test\",\r\n            \"campaignId\": \"00000000-95f3-479a-8a90-25eea74e73cc\",\r\n            \"outboundLine\": {\r\n                \"lineName\": \"Platform Outbound Line\",\r\n                \"phoneNumber\": \"+15555555555\"\r\n            },\r\n            \"campaignStatus\": 3,\r\n            \"contactCount\": 2,\r\n            \"messageCount\": 2,\r\n            \"startDate\": \"2022-04-06T18:00:00\"\r\n        },\r\n        {\r\n            \"campaignName\": \"Event Promotional Blast\",\r\n            \"campaignId\": \"00000000-8792-4a84-84e1-279d5e482577\",\r\n            \"outboundLine\": {\r\n                \"lineName\": \"Platform Outbound Line\",\r\n                \"phoneNumber\": \"+15555555555\"\r\n            },\r\n            \"campaignStatus\": 3,\r\n            \"contactCount\": 2,\r\n            \"messageCount\": 2,\r\n            \"startDate\": \"2022-03-31T01:00:00\"\r\n        }\r\n    ],\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"d9d5e16f-fca9-42bd-9e45-0563ee705689"},{"name":"Cancel Campaign","id":"c7a8f093-fa07-4340-a215-ebb6c1c04e8f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"url":"https://foundation.textel.net/clientapi/v1/campaign/cancel-campaign/{campaignGUID}","description":"<p>The Cancel Campaign is intended to stop and cancel any campaigns that are already scheduled to go out or are in progress of sending.</p>\n<p>As a result, this endpoint can only be used on campaigns in the following statuses:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Status</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>5</td>\n<td>Scheduled</td>\n</tr>\n<tr>\n<td>6</td>\n<td>Running</td>\n</tr>\n</tbody>\n</table>\n</div><p>Attempting to cancel a campaign in any other status will result in a 400 Bad Request response and a message, \"The campaign's status is not eligible for the cancel command to be used.\"</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","campaign","cancel-campaign","{campaignGUID}"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"1885ee79-da75-4d8f-8aa9-1dfb9029cf13","name":"Success Response","originalRequest":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/campaign/cancel-campaign/dbb76a1e-2a59-459f-a8af-cd6d4d88d721"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"campaignId\": \"dbb76a1e-2a59-459f-a8af-cd6d4d88d721\",\n    \"campaignStatus\": 4,\n    \"message\": null,\n    \"success\": true\n}"},{"id":"58506b76-9fcf-454e-94f3-1271e7d9eaca","name":"Invalid Request","originalRequest":{"method":"PATCH","header":[],"url":"https://foundation.textel.net/clientapi/v1/campaign/cancel-campaign/{campaignGUID}"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"The campaign's status is not eligible for the cancel command to be used.\",\n    \"success\": false\n}"}],"_postman_id":"c7a8f093-fa07-4340-a215-ebb6c1c04e8f"},{"name":"Bulk Message Campaign","id":"16920885-9d75-430f-bf69-94fa1177ea74","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"campaignName\": \"string\",\r\n  \"outboundLineNumber\": \"phonenumber\",\r\n  \"startDate\": \"2024-04-04T15:04:00.000Z\",\r\n  \"messages\": [\r\n    {\r\n      \"messageBody\": \"string\",\r\n      \"mobileNumber\": \"phonenumber\"\r\n    }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/campaign/create-dialer-campaign","description":"<p><a href=\"https://foundation.textel.net/clientapi/v1/campaign/create-dialer-campaignEndFragment\">https://foundation.textel.net/clientapi/v1/campaign/create-dialer-campaign</a></p>\n<p>This endpoint is available by permission only.</p>\n<p>Create a bulk message campaign that allows for up to 5,000 messages to be sent to individual recipients in a single request.</p>\n<p>Messages will begin sending at the start time provided in the request. The messages can be unique per recipient.</p>\n<p>Requests with more than 5,000 recipients will be rejected.</p>\n<h3 id=\"request-details\">Request Details</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Request Parameter</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Note</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>campaignName</td>\n<td>Yes</td>\n<td>String</td>\n</tr>\n<tr>\n<td>startDate</td>\n<td>Yes</td>\n<td>Timestamp and is the date/time that messages will start sending.</td>\n</tr>\n<tr>\n<td>outboundLineNumber</td>\n<td>Yes</td>\n<td>e164 format is required</td>\n</tr>\n<tr>\n<td>messages</td>\n<td>Yes</td>\n<td>This is an array that can support one or many.</td>\n</tr>\n<tr>\n<td>messageBody</td>\n<td>Yes</td>\n<td>The individual message for the specified mobileNumber.</td>\n</tr>\n<tr>\n<td>moblieNumber</td>\n<td>Yes</td>\n<td>e164 format is required. Must be a valid mobile number.</td>\n</tr>\n<tr>\n<td>attachmentUrl</td>\n<td>No</td>\n<td>Url of an image attachment to send as MMS. Do not need to include in the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"validation\">Validation</h4>\n<ul>\n<li>outboundLineNumber has the proper permissions to send Dialer campaigns.</li>\n<li>All numbers provided must be in e164 format.</li>\n<li>Cannot provide the same mobile number more than once in the request.</li>\n<li>Maximum number of messages in a single request is 5,000.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["clientapi","v1","campaign","create-dialer-campaign"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"9144aeb9-145a-47d5-897c-39939be39334","name":"Success Example","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"campaignName\": \"Success Example\",\r\n  \"outboundLineNumber\": \"+19992750197\",\r\n  \"startDate\": \"2024-04-04T11:11:00.000Z\",\r\n  \"messages\": [\r\n    {\r\n      \"messageBody\": \"Good morning, Andrew!\",\r\n      \"mobileNumber\": \"+19999389670\"\r\n    },\r\n    {\r\n      \"messageBody\": \"Good morning!\",\r\n      \"mobileNumber\": \"+19994857037\"\r\n    }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/campaign/create-dialer-campaign"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"campaignId\": \"747ac67e-9b47-494d-91fd-c8bfc1df151e\",\r\n    \"startDate\": \"2024-04-04T11:11:00Z\",\r\n    \"messagesEnqueued\": 2,\r\n    \"invalidMessages\": [],\r\n    \"message\": null,\r\n    \"success\": true\r\n}"},{"id":"c3bcd3ad-053e-4b50-afde-875f66c010b9","name":"Partial Success","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"campaignName\": \"Partial Success Campaign\",\r\n  \"outboundLineNumber\": \"+19992750197\",\r\n  \"startDate\": \"2024-04-04T11:11:00.000Z\",\r\n  \"messages\": [\r\n    {\r\n      \"messageBody\": \"Hello\",\r\n      \"mobileNumber\": \"\"\r\n    },\r\n    {\r\n      \"messageBody\": \"\",\r\n      \"mobileNumber\": \"+19994857037\"\r\n    },\r\n    {\r\n      \"messageBody\": \"Good morning!\",\r\n      \"mobileNumber\": \"+1\"\r\n    },\r\n    {\r\n      \"messageBody\": \"Good morning, Andrew!\",\r\n      \"mobileNumber\": \"+19999389670\"\r\n    }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/campaign/create-dialer-campaign"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"campaignId\": \"7b5b5677-38bd-4711-ba10-cff2bd6bd592\",\r\n    \"startDate\": \"2024-04-04T11:11:00Z\",\r\n    \"messagesEnqueued\": 1,\r\n    \"invalidMessages\": [\r\n        {\r\n            \"mobileNumber\": \"\",\r\n            \"messageBody\": \"Hello\",\r\n            \"attachmentUrl\": null,\r\n            \"errorMessage\": \"MobileNumber is required.\"\r\n        },\r\n        {\r\n            \"mobileNumber\": \"+19994857037\",\r\n            \"messageBody\": \"\",\r\n            \"attachmentUrl\": null,\r\n            \"errorMessage\": \"Either MessageBody or AttachmentUrl is required.\"\r\n        },\r\n        {\r\n            \"mobileNumber\": \"+1\",\r\n            \"messageBody\": \"Good morning!\",\r\n            \"attachmentUrl\": null,\r\n            \"errorMessage\": \"MobileNumber is an invalid number.\"\r\n        }\r\n    ],\r\n    \"message\": \"messages contain an invalid or duplicate value.\",\r\n    \"success\": true\r\n}"},{"id":"2c5188a2-bdf6-423f-96c2-c468e535c63b","name":"Full Failure Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"campaignName\": \"Full Failure Example Request\",\r\n  \"outboundLineNumber\": \"+19992750197\",\r\n  \"startDate\": \"2024-04-04T11:11:00.000Z\",\r\n  \"messages\": [\r\n    {\r\n      \"messageBody\": \"Hello\",\r\n      \"mobileNumber\": \"\"\r\n    },\r\n    {\r\n      \"messageBody\": \"\",\r\n      \"mobileNumber\": \"+19994857037\"\r\n    },\r\n    {\r\n      \"messageBody\": \"Good morning!\",\r\n      \"mobileNumber\": \"+1\"\r\n    },\r\n    {\r\n      \"messageBody\": \"First message!\",\r\n      \"mobileNumber\": \"+19999389670\"\r\n    },\r\n    {\r\n      \"messageBody\": \"Second message!\",\r\n      \"mobileNumber\": \"+19999389670\"\r\n    }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/campaign/create-dialer-campaign"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"campaignId\": null,\r\n    \"startDate\": null,\r\n    \"messagesEnqueued\": 0,\r\n    \"invalidMessages\": [\r\n        {\r\n            \"mobileNumber\": \"\",\r\n            \"messageBody\": \"Hello\",\r\n            \"attachmentUrl\": null,\r\n            \"errorMessage\": \"MobileNumber is required.\"\r\n        },\r\n        {\r\n            \"mobileNumber\": \"+19994857037\",\r\n            \"messageBody\": \"\",\r\n            \"attachmentUrl\": null,\r\n            \"errorMessage\": \"Either MessageBody or AttachmentUrl is required.\"\r\n        },\r\n        {\r\n            \"mobileNumber\": \"+1\",\r\n            \"messageBody\": \"Good morning!\",\r\n            \"attachmentUrl\": null,\r\n            \"errorMessage\": \"MobileNumber is an invalid number.\"\r\n        },\r\n        {\r\n            \"mobileNumber\": \"+19999389670\",\r\n            \"messageBody\": \"First message!\",\r\n            \"attachmentUrl\": null,\r\n            \"errorMessage\": \"MobileNumber is a duplicate number.\"\r\n        },\r\n        {\r\n            \"mobileNumber\": \"+19999389670\",\r\n            \"messageBody\": \"Second message!\",\r\n            \"attachmentUrl\": null,\r\n            \"errorMessage\": \"MobileNumber is a duplicate number.\"\r\n        }\r\n    ],\r\n    \"message\": \"messages contain an invalid or duplicate value.\",\r\n    \"success\": false\r\n}"}],"_postman_id":"16920885-9d75-430f-bf69-94fa1177ea74"}],"id":"807bda92-4fe4-45f1-9299-579347a9970a","description":"<p><strong>NOTE:</strong> These API endpoints are only available to clients who have purchased the Textel Blast product. If your account does not have the permissions to use this product, the endpoints will not work.</p>\n<p>If you are interested in using our Blast product for text campaigns, contact your Account Manager or our Client Success team.</p>\n","_postman_id":"807bda92-4fe4-45f1-9299-579347a9970a"},{"name":"Reporting","item":[{"name":"Queue Account & Line Usage Report","id":"a3297c15-c5db-4a33-8599-df208194b1bc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"startDate\": \"datetime\",\r\n  \"endDate\": \"datetime\",\r\n  \"outboundLineNumbers\": [\r\n    \"phonenumber\"\r\n  ],\r\n  \"outputAsJson\": false,\r\n  \"callbackUrl\": \"url\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/detail-report","description":"<p>NOTE: This endpoint only queues the report. You will need to go to the Download Report endpoint with the report Id to retreive the report contents.</p>\n<p>This report gives you the option to review message usage across your account or scoped to a certain set of outbound lines, if provided in the request. Get insight into the messages sent or received during your provided time frame as well as details about the messages themselves.</p>\n<h4 id=\"questions-this-report-can-answer\">Questions This Report Can Answer</h4>\n<p>Using the output of this report, you can review, roll up, and graph the data in a number of ways to answer these questions and more.</p>\n<ul>\n<li>How many messages were sent/received in x timeframe?</li>\n<li>What types of messages are my users sending?</li>\n<li>How many incoming versus outgoing messages did we have in x timeframe?</li>\n<li>What time of day (or day of the week) is the busiest in terms of message volume?</li>\n</ul>\n<h4 id=\"expected-report-contents\">Expected Report Contents</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Data Column Name</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Outbound Line Name</td>\n<td>The name of the phone line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Number</td>\n<td>The e164 formatted phone number of your outbound line.</td>\n</tr>\n<tr>\n<td>Timestamp</td>\n<td>The time and date the message was sent.</td>\n</tr>\n<tr>\n<td>Delivery Status</td>\n<td>The status of the message.</td>\n</tr>\n<tr>\n<td>Source Number</td>\n<td>The e164 formatted phone number of the sender of the message, e.g. the source of the message.</td>\n</tr>\n<tr>\n<td>Destination Numbers</td>\n<td>The e164 formatted phone number (or numbers if it is a group message) of the recipient(s) of the message, e.g. the destination of the message.</td>\n</tr>\n<tr>\n<td>Is Outgoing</td>\n<td>This denotes if the message was an incoming or outgoing message. 1 = outgoing</td>\n</tr>\n<tr>\n<td>Message Body</td>\n<td>The text content of the message sent.</td>\n</tr>\n<tr>\n<td>Body Size</td>\n<td>The size of the message body, by character count.</td>\n</tr>\n<tr>\n<td>Has Attachment</td>\n<td>Indicates if the message had an attachment.</td>\n</tr>\n<tr>\n<td>Attachment URL(s)</td>\n<td>The URL for the attachment.</td>\n</tr>\n<tr>\n<td>Origin Type</td>\n<td>Denotes the origin of the message. If it was sent from a product or tool in our platform, it will list it out, e.g. Conversations or Blast.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["clientapi","v1","report","detail-report"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"a1216e0a-1b39-4b50-b2ea-169be5c60b4b","name":"Queue Usage Report","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"startDate\": \"2022-06-01T16:06:00.513Z\",\r\n  \"endDate\": \"2022-08-01T16:06:00.513Z\",\r\n  \"outboundLineNumbers\": [\r\n    \"+18888888888\"\r\n  ],\r\n  \"outputAsJson\": false,\r\n  \"callbackUrl\": \"https://mycallbackurl.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/detail-report"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Length","value":"140"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Date","value":"Wed, 08 Mar 2023 01:58:13 GMT"},{"key":"Server","value":"Kestrel"},{"key":"Request-Context","value":"appId=cid-v1:98d9d3fa-0a03-4e9c-9c15-8f9c3cffeabd"},{"key":"api-supported-versions","value":"1.0"}],"cookie":[],"responseTime":null,"body":"{\n    \"reportId\": \"a6edbf71-678a-41c7-9d5d-761d2c9ef44d\",\n    \"reportStatus\": 1,\n    \"callbackUrl\": \"https://mycallbackurl.com\",\n    \"message\": null,\n    \"success\": true\n}"}],"_postman_id":"a3297c15-c5db-4a33-8599-df208194b1bc"},{"name":"Queue Responder Usage Report","id":"225a35c1-2d6b-4d97-a835-cf6f98d6a293","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"startDate\": \"datetime\",\r\n  \"endDate\": \"datetime\",\r\n  \"outboundLineNumbers\": [\r\n    \"phonenumber\"\r\n  ],\r\n  \"outputAsJson\": false,\r\n  \"callbackUrl\": \"url\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/responder-usage-report","description":"<p>NOTE: This endpoint only queues the report. You will need to go to the Download Report endpoint with the report Id to retreive the report contents.</p>\n<p>This report allows you to see how frequently your various responders are being used in a specified timeframe. This can be viewed across the entire account or scoped to a certain set of outbound lines, if lines are provided in the request.</p>\n<h4 id=\"questions-this-report-can-answer\">Questions This Report Can Answer</h4>\n<ul>\n<li>Which of my responders is used the most?</li>\n<li>How often are people hitting our \"After Hours\" auto-reply?</li>\n<li>How often was x Keyword triggered last month?</li>\n</ul>\n<h4 id=\"expected-report-contents\">Expected Report Contents</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Data Column Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Date Range</td>\n<td>The date range you specified in setting up the report.</td>\n</tr>\n<tr>\n<td>Outbound Line ID</td>\n<td>The GUID of the line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Number</td>\n<td>The name of the phone line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Name</td>\n<td>The e164 formatted phone number of your outbound line.</td>\n</tr>\n<tr>\n<td>Responder Type</td>\n<td>This field denotes whether the responder was a Keyword Responder or a time-based Auto-Reply.</td>\n</tr>\n<tr>\n<td>Responder Name</td>\n<td>This field will return the name of the responder, either the Keyword or the name of the Auto-Reply.</td>\n</tr>\n<tr>\n<td>Usage Count</td>\n<td>The count of times the responder was triggered on the line for the specified time frame.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["clientapi","v1","report","responder-usage-report"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"918cb3eb-7258-4741-9bb3-b9756c886878","name":"Queue Responder Usage Report","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"startDate\": \"2022-06-01T16:06:00.513Z\",\r\n  \"endDate\": \"2022-08-01T16:06:00.513Z\",\r\n  \"outboundLineNumbers\": [\r\n    \"+18888888888\"\r\n  ],\r\n  \"outputAsJson\": false,\r\n  \"callbackUrl\": \"https://mycallbackurl.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/responder-usage-report"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"reportId\": \"a6edbf71-678a-41c7-9d5d-761d2c9ef44d\",\n    \"reportStatus\": 1,\n    \"callbackUrl\": \"https://mycallbackurl.com\",\n    \"message\": null,\n    \"success\": true\n}"}],"_postman_id":"225a35c1-2d6b-4d97-a835-cf6f98d6a293"},{"name":"Queue Opt Report","id":"8d899ec8-4cc2-4088-9e67-cef23c17cac5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"startDate\": \"datetime\",\r\n  \"endDate\": \"datetime\",\r\n  \"outboundLineNumbers\": [\r\n    \"phonenumber\"\r\n  ],\r\n  \"outputAsJson\": false,\r\n  \"callbackUrl\": \"url\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/opt-report","description":"<p>NOTE: This endpoint only queues the report. You will need to go to the Download Report endpoint with the report Id to retreive the report contents.</p>\n<p>This report provides the opt in/out statuses of your contacts, allowing you to have visibility across the account or certain lines.</p>\n<h4 id=\"questions-this-report-can-answer\">Questions This Report Can Answer</h4>\n<p>Using the output of this report, you can review and roll up the data in a number of ways to answer these questions and more.</p>\n<ul>\n<li>How many contacts have opted out of receiving texts? On which lines?</li>\n<li>Which contacts have opted into receiving texts from our business? On which lines?</li>\n<li>How many contacts have opted in/out in the last month?</li>\n</ul>\n<h4 id=\"expected-report-contents\">Expected Report Contents</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Data Column Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Outbound Line ID</td>\n<td>The GUID of the line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Name</td>\n<td>The name of the phone line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Number</td>\n<td>The e164 formatted phone number of your outbound line.</td>\n</tr>\n<tr>\n<td>Mobile Number</td>\n<td>The mobile phone number of the contact.</td>\n</tr>\n<tr>\n<td>First Name</td>\n<td>The contact's first name.</td>\n</tr>\n<tr>\n<td>Last Name</td>\n<td>The contact's last name.</td>\n</tr>\n<tr>\n<td>Updated</td>\n<td>The date and time in which the contact's Opt In/Out status was last updated.</td>\n</tr>\n<tr>\n<td>Opt Status</td>\n<td>The consent status of the contact, either Opted Out or Opted In. Contacts without a defined status will not show up in the report.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["clientapi","v1","report","opt-report"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"d2484341-64c6-413c-b70d-1d514dfeb3cd","name":"Queue Opt Report","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"startDate\": \"2022-06-01T16:06:00.513Z\",\r\n  \"endDate\": \"2022-08-01T16:06:00.513Z\",\r\n  \"outboundLineNumbers\": [\r\n    \"+18888888888\"\r\n  ],\r\n  \"outputAsJson\": false,\r\n  \"callbackUrl\": \"https://mycallbackurl.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/opt-report"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"reportId\": \"a6edbf71-678a-41c7-9d5d-761d2c9ef44d\",\r\n    \"reportStatus\": 1,\r\n    \"callbackUrl\": \"https://mycallbackurl.com\",\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"8d899ec8-4cc2-4088-9e67-cef23c17cac5"},{"name":"Queue Blast Summary Report","id":"9bdaba88-2d6f-4ee6-8e07-cf2fe877cb39","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"campaignId\": \"guid\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/queue-blast-summary-report","description":"<p>NOTE: This endpoint only queues the report. You will need to go to the Download Report endpoint with the report Id to retreive the report contents.</p>\n<p>This report provides the opt in/out statuses of your contacts, allowing you to have visibility across the account or certain lines.</p>\n<h4 id=\"questions-this-report-can-answer\">Questions This Report Can Answer</h4>\n<p>Using the output of this report, you can review and roll up the data in a number of ways to answer these questions and more.</p>\n<ul>\n<li>How many contacts have opted out of receiving texts? On which lines?</li>\n<li>Which contacts have opted into receiving texts from our business? On which lines?</li>\n<li>How many contacts have opted in/out in the last month?</li>\n</ul>\n<h4 id=\"expected-report-contents\">Expected Report Contents</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Data Column Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Outbound Line ID</td>\n<td>The GUID of the line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Name</td>\n<td>The name of the phone line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Number</td>\n<td>The e164 formatted phone number of your outbound line.</td>\n</tr>\n<tr>\n<td>Mobile Number</td>\n<td>The mobile phone number of the contact.</td>\n</tr>\n<tr>\n<td>First Name</td>\n<td>The contact's first name.</td>\n</tr>\n<tr>\n<td>Last Name</td>\n<td>The contact's last name.</td>\n</tr>\n<tr>\n<td>Updated</td>\n<td>The date and time in which the contact's Opt In/Out status was last updated.</td>\n</tr>\n<tr>\n<td>Opt Status</td>\n<td>The consent status of the contact, either Opted Out or Opted In. Contacts without a defined status will not show up in the report.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["clientapi","v1","report","queue-blast-summary-report"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"1377f36d-7ad2-4814-9e1e-a0c4eea4ef93","name":"Queue Blast Summary Report","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"campaignId\": \"guid\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/queue-blast-summary-report"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"reportId\": \"a6edbf71-678a-41c7-9d5d-761d2c9ef44d\",\r\n    \"reportStatus\": 1,\r\n    \"callbackUrl\": \"https://mycallbackurl.com\",\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"9bdaba88-2d6f-4ee6-8e07-cf2fe877cb39"},{"name":"Queue Blast Detail Report","id":"50e3d4aa-512c-4a50-b752-15c6ec421d6d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"campaignId\": \"guid\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/queue-blast-detail-report","description":"<p>NOTE: This endpoint only queues the report. You will need to go to the Download Report endpoint with the report Id to retreive the report contents.</p>\n<p>This report provides the opt in/out statuses of your contacts, allowing you to have visibility across the account or certain lines.</p>\n<h4 id=\"questions-this-report-can-answer\">Questions This Report Can Answer</h4>\n<p>Using the output of this report, you can review and roll up the data in a number of ways to answer these questions and more.</p>\n<ul>\n<li>How many contacts have opted out of receiving texts? On which lines?</li>\n<li>Which contacts have opted into receiving texts from our business? On which lines?</li>\n<li>How many contacts have opted in/out in the last month?</li>\n</ul>\n<h4 id=\"expected-report-contents\">Expected Report Contents</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Data Column Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Outbound Line ID</td>\n<td>The GUID of the line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Name</td>\n<td>The name of the phone line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Number</td>\n<td>The e164 formatted phone number of your outbound line.</td>\n</tr>\n<tr>\n<td>Mobile Number</td>\n<td>The mobile phone number of the contact.</td>\n</tr>\n<tr>\n<td>First Name</td>\n<td>The contact's first name.</td>\n</tr>\n<tr>\n<td>Last Name</td>\n<td>The contact's last name.</td>\n</tr>\n<tr>\n<td>Updated</td>\n<td>The date and time in which the contact's Opt In/Out status was last updated.</td>\n</tr>\n<tr>\n<td>Opt Status</td>\n<td>The consent status of the contact, either Opted Out or Opted In. Contacts without a defined status will not show up in the report.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["clientapi","v1","report","queue-blast-detail-report"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"3468e774-0c00-4fa5-a19b-db6a5dd740f2","name":"Queue Blast Detail Report","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"campaignId\": \"guid\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/queue-blast-detail-report"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"reportId\": \"a6edbf71-678a-41c7-9d5d-761d2c9ef44d\",\r\n    \"reportStatus\": 1,\r\n    \"callbackUrl\": \"https://mycallbackurl.com\",\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"50e3d4aa-512c-4a50-b752-15c6ec421d6d"},{"name":"Queue Conversation History Report","id":"10645679-2345-406c-94c7-df360ef21280","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"startDate\": \"2023-01-01T15:00:00Z\",\r\n    \"endDate\": \"2023-01-30T15:00:00Z\",    \r\n    \"outboundLineNumber\": \"+18888888888\",\r\n    \"mobileNumber\": \"+18888888888\",\r\n    \"groupName\": \"string\",\r\n    \"outputAsJson\": false,\r\n    \"callbackUrl\": \"https://mywebhookurl.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/conversation-history-report","description":"<p>NOTE: This endpoint only queues the report. You will need to go to the Download Report endpoint with the report Id to retreive the report contents.</p>\n<p>This report allows you to view and export a specific conversation between an outbound line and a mobile contact. It is distinct from the others in that it requires different fields in the request and the data is scoped differently.</p>\n<p>The majority of use cases for this report require an outbound line and a mobile number provided to scope the data to a specific conversation. If a client has the Reply-All Group Messaging feature enabled, they can supply a Group Name in place of a mobile number.</p>\n<h4 id=\"questions-this-report-can-answer\">Questions This Report Can Answer</h4>\n<ul>\n<li>If you need to audit a specific conversation with a customer.</li>\n<li>How is x user responding to customers?</li>\n<li>How can I export the message history of x conversation?</li>\n</ul>\n<h4 id=\"request-details\">Request Details</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Request Parameter</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Note</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>startDate</td>\n<td>Yes</td>\n<td>Date time format</td>\n</tr>\n<tr>\n<td>endDate</td>\n<td>Yes</td>\n<td>Date time format</td>\n</tr>\n<tr>\n<td>outboundLineNumber</td>\n<td>Yes</td>\n<td>e164 format is required</td>\n</tr>\n<tr>\n<td>mobileNumber</td>\n<td>No*</td>\n<td>Required if groupName not used. Otherwise it does not need to be in the request.</td>\n</tr>\n<tr>\n<td>groupName</td>\n<td>No*</td>\n<td>Required if mobileNumber is not used. Otherwise it does not need to be in the request. (Only available on accounts that have the Reply-All Group Messaging feature.)</td>\n</tr>\n<tr>\n<td>outputAsJson</td>\n<td>Yes</td>\n<td>Default is false, which delivers a CSV.</td>\n</tr>\n<tr>\n<td>callbackUrl</td>\n<td>No</td>\n<td>If provided, we will push an event to the webhook when the report is successfully queued.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["clientapi","v1","report","conversation-history-report"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"1f9bbd1a-4255-4bb5-aa79-9210e24ab675","name":"Queue Conversation History Report","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"startDate\": \"2023-01-01T15:00:00Z\",\r\n    \"endDate\": \"2023-01-30T15:00:00Z\",    \r\n    \"outboundLineNumber\": \"+18888888888\",\r\n    \"mobileNumber\": \"+15555800403\",\r\n    \"outputAsJson\": false,\r\n    \"callbackUrl\": \"https://mywebhookurl.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/detail-report"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"reportId\": \"a6edbf71-678a-41c7-9d5d-761d2c9ef44d\",\n    \"reportStatus\": 1,\n    \"callbackUrl\": \"https://mycallbackurl.com\",\n    \"message\": null,\n    \"success\": true\n}"}],"_postman_id":"10645679-2345-406c-94c7-df360ef21280"},{"name":"Download Report","id":"860df27d-cabe-400b-a1ab-b3f3f0b2e0ea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/report/download/{reportGUID}","description":"<p>To use this endpoint, you must provide a report Id from the response of a queue endpoint and populate it in the request URL.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","report","download","{reportGUID}"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"c469475d-ce01-421c-a8ad-9473a97741c9","name":"Download Report","originalRequest":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/report/download/0d93616b-a99b-4f06-b579-ef2a76a4e058"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Length","value":"4271"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Date","value":"Wed, 08 Mar 2023 02:05:49 GMT"},{"key":"Server","value":"Kestrel"},{"key":"Request-Context","value":"appId=cid-v1:98d9d3fa-0a03-4e9c-9c15-8f9c3cffeabd"},{"key":"api-supported-versions","value":"1.0"}],"cookie":[],"responseTime":null,"body":"{\n    \"file\": {\n        \"fileContents\": \"T3V0Ym91bmQgTGluZSBOYW1lLE91dGJvdW5kIExpbmUgTnVtYmVyLEdyb3VwIENoYXQgSWQsQ29udmVyc2F0aW9uIElkLEFnZW50IElkLERlc3RpbmF0aW9uIE51bWJlcnMsU291cmNlIE51bWJlcixJcyBPdXRnb2luZyxVVEMgVGltZVN0YW1wLE1lc3NhZ2UgQm9keSxIYXMgQXR0YWNobWVudCxBdHRhY2htZW50IFVSTChzKSxNZXNzYWdlIFR5cGUNClRleHRlbCBTdXBwb3J0LCsxODQ0NDgzOTgzNSwzMmNjNjAxNy04Y2RhLTQwN2YtODU3ZS1iNWZjZTliNjhmMWIsZDNiZjA3MGQtYzA0ZS00MzZlLWIwNTktM2E5MjM3NzNjZjY3LDZlOGY4NDg5LWE1MTMtNDYwNi1iNjIzLTU2NDI0NjllZmExNCwrMTMxNDUwNDIxNzAsKzE4NDQ0ODM5ODM1LE91dGdvaW5nLDEvMjcvMjAyMyAyOjI2OjAxIEFNLCJkZmRzZmRzZA0KDQpLZWxseSIsRmFsc2UsLFRPDQpUZXh0ZWwgU3VwcG9ydCwrMTg0NDQ4Mzk4MzUsMzJjYzYwMTctOGNkYS00MDdmLTg1N2UtYjVmY2U5YjY4ZjFiLGQzYmYwNzBkLWMwNGUtNDM2ZS1iMDU5LTNhOTIzNzczY2Y2NywsKzE4NDQ0ODM5ODM1LCsxMzE0NTA0MjE3MCxJbmNvbWluZywxLzI3LzIwMjMgMjoyNjoxMyBBTSwiIFRlc3QiLEZhbHNlLCxNTw0KVGV4dGVsIFN1cHBvcnQsKzE4NDQ0ODM5ODM1LDMyY2M2MDE3LThjZGEtNDA3Zi04NTdlLWI1ZmNlOWI2OGYxYixkM2JmMDcwZC1jMDRlLTQzNmUtYjA1OS0zYTkyMzc3M2NmNjcsLCsxMzE0NTA0MjE3MCwrMTg0NDQ4Mzk4MzUsT3V0Z29pbmcsMS8yNy8yMDIzIDI6MjY6MTMgQU0sIlRoYW5rIHlvdSBmb3IgdGV4dGluZyBUZXh0ZWwuIFdlJ3JlIGNsb3NlZCBhdCB0aGlzIHRpbWUsIGFuZCB3aWxsIHRleHQgeW91IGJhY2sgZHVyaW5nIG5vcm1hbCBidXNpbmVzcyBob3VycyAoTS1GOyA4LTUgQ1NUKS4gSWYgeW91IGhhdmUgcXVlc3Rpb25zIGFib3V0IDEwRExDIHBsZWFzZSByZWFkIG91ciBibG9nIGhlcmUgaHR0cHM6Ly90ZXh0ZWwubmV0LzEwZGxjLXJlZ2lzdHJhdGlvbi1wcm9jZXNzLy4gSWYgeW91IG5lZWQgdG8gc3VibWl0IHlvdXIgMTBETEMgcmVnaXN0cmF0aW9uIHlvdSBjYW4gZG8gdGhhdCBoZXJlIGh0dHBzOi8vZm9ybXMub2ZmaWNlLmNvbS9yL1V4ODBBV1JzNVcuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFRleHRlbCB0ZXh0IHVzIElORk8iLEZhbHNlLCxUTw0KVGV4dGVsIFN1cHBvcnQsKzE4NDQ0ODM5ODM1LDMyY2M2MDE3LThjZGEtNDA3Zi04NTdlLWI1ZmNlOWI2OGYxYixkM2JmMDcwZC1jMDRlLTQzNmUtYjA1OS0zYTkyMzc3M2NmNjcsLCsxODQ0NDgzOTgzNSwrMTMxNDUwNDIxNzAsSW5jb21pbmcsMS8yNy8yMDIzIDI6MjY6MzkgQU0sSG1tLEZhbHNlLCxNTw0KVGV4dGVsIFN1cHBvcnQsKzE4NDQ0ODM5ODM1LDMyY2M2MDE3LThjZGEtNDA3Zi04NTdlLWI1ZmNlOWI2OGYxYixkM2JmMDcwZC1jMDRlLTQzNmUtYjA1OS0zYTkyMzc3M2NmNjcsLCsxMzE0NTA0MjE3MCwrMTg0NDQ4Mzk4MzUsT3V0Z29pbmcsMS8yNy8yMDIzIDI6MjY6NDEgQU0sIlRoYW5rIHlvdSBmb3IgdGV4dGluZyBUZXh0ZWwuIFdlJ3JlIGNsb3NlZCBhdCB0aGlzIHRpbWUsIGFuZCB3aWxsIHRleHQgeW91IGJhY2sgZHVyaW5nIG5vcm1hbCBidXNpbmVzcyBob3VycyAoTS1GOyA4LTUgQ1NUKS4gSWYgeW91IGhhdmUgcXVlc3Rpb25zIGFib3V0IDEwRExDIHBsZWFzZSByZWFkIG91ciBibG9nIGhlcmUgaHR0cHM6Ly90ZXh0ZWwubmV0LzEwZGxjLXJlZ2lzdHJhdGlvbi1wcm9jZXNzLy4gSWYgeW91IG5lZWQgdG8gc3VibWl0IHlvdXIgMTBETEMgcmVnaXN0cmF0aW9uIHlvdSBjYW4gZG8gdGhhdCBoZXJlIGh0dHBzOi8vZm9ybXMub2ZmaWNlLmNvbS9yL1V4ODBBV1JzNVcuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFRleHRlbCB0ZXh0IHVzIElORk8iLEZhbHNlLCxUTw0KVGV4dGVsIFN1cHBvcnQsKzE4NDQ0ODM5ODM1LDMyY2M2MDE3LThjZGEtNDA3Zi04NTdlLWI1ZmNlOWI2OGYxYixkM2JmMDcwZC1jMDRlLTQzNmUtYjA1OS0zYTkyMzc3M2NmNjcsLCsxODQ0NDgzOTgzNSwrMTMxNDUwNDIxNzAsSW5jb21pbmcsMS8yNy8yMDIzIDI6MjY6NTcgQU0sSGV5LEZhbHNlLCxNTw0KVGV4dGVsIFN1cHBvcnQsKzE4NDQ0ODM5ODM1LDMyY2M2MDE3LThjZGEtNDA3Zi04NTdlLWI1ZmNlOWI2OGYxYixjZDQ3NjdmMC01ZDFjLTQ1NzQtOTE4NS1jZDE2OTQyYWJiY2YsLCsxODQ0NDgzOTgzNSwrMTMxNDUwNDIxNzAsSW5jb21pbmcsMS8yNy8yMDIzIDI6Mjc6MTkgQU0sSGksRmFsc2UsLE1PDQpUZXh0ZWwgU3VwcG9ydCwrMTg0NDQ4Mzk4MzUsMzJjYzYwMTctOGNkYS00MDdmLTg1N2UtYjVmY2U5YjY4ZjFiLGNkNDc2N2YwLTVkMWMtNDU3NC05MTg1LWNkMTY5NDJhYmJjZiw2ZThmODQ4OS1hNTEzLTQ2MDYtYjYyMy01NjQyNDY5ZWZhMTQsKzEzMTQ1MDQyMTcwLCsxODQ0NDgzOTgzNSxPdXRnb2luZywxLzI3LzIwMjMgMjoyNzo1NyBBTSwiaGV5DQoNCktlbGx5IixGYWxzZSwsVE8NClRleHRlbCBTdXBwb3J0LCsxODQ0NDgzOTgzNSwzMmNjNjAxNy04Y2RhLTQwN2YtODU3ZS1iNWZjZTliNjhmMWIsY2Q0NzY3ZjAtNWQxYy00NTc0LTkxODUtY2QxNjk0MmFiYmNmLCwrMTg0NDQ4Mzk4MzUsKzEzMTQ1MDQyMTcwLEluY29taW5nLDEvMjcvMjAyMyAyOjI4OjU1IEFNLEhleSxGYWxzZSwsTU8NClRleHRlbCBTdXBwb3J0LCsxODQ0NDgzOTgzNSwzMmNjNjAxNy04Y2RhLTQwN2YtODU3ZS1iNWZjZTliNjhmMWIsY2Q0NzY3ZjAtNWQxYy00NTc0LTkxODUtY2QxNjk0MmFiYmNmLDZlOGY4NDg5LWE1MTMtNDYwNi1iNjIzLTU2NDI0NjllZmExNCwrMTMxNDUwNDIxNzAsKzE4NDQ0ODM5ODM1LE91dGdvaW5nLDEvMjcvMjAyMyAyOjI5OjA4IEFNLCJvawoNCg0KS2VsbHkiLEZhbHNlLCxUTw0KVGV4dGVsIFN1cHBvcnQsKzE4NDQ0ODM5ODM1LDMyY2M2MDE3LThjZGEtNDA3Zi04NTdlLWI1ZmNlOWI2OGYxYixjZDQ3NjdmMC01ZDFjLTQ1NzQtOTE4NS1jZDE2OTQyYWJiY2YsLCsxODQ0NDgzOTgzNSwrMTMxNDUwNDIxNzAsSW5jb21pbmcsMS8yNy8yMDIzIDI6Mjk6MDkgQU0sRnVuLEZhbHNlLCxNTw0K\",\n        \"contentType\": \"text/csv\",\n        \"fileDownloadName\": \"0d93616b-a99b-4f06-b579-ef2a76a4e058.csv\",\n        \"lastModified\": null,\n        \"entityTag\": null,\n        \"enableRangeProcessing\": false\n    },\n    \"fileAvailable\": true,\n    \"message\": \"\",\n    \"success\": true\n}"}],"_postman_id":"860df27d-cabe-400b-a1ab-b3f3f0b2e0ea"},{"name":"Queue Link Click Detail Report","id":"5df463c1-5256-478e-8954-3b24b998bb9e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"startDate\": \"datetime\",\r\n  \"endDate\": \"datetime\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/queue-link-click-detail-report","description":"<p>NOTE: This endpoint only queues the report. You will need to go to the Download Report endpoint with the report Id to retreive the report contents.</p>\n<p>This report provides the opt in/out statuses of your contacts, allowing you to have visibility across the account or certain lines.</p>\n<h4 id=\"questions-this-report-can-answer\">Questions This Report Can Answer</h4>\n<p>Using the output of this report, you can review and roll up the data in a number of ways to answer these questions and more.</p>\n<ul>\n<li>How many contacts have opted out of receiving texts? On which lines?</li>\n<li>Which contacts have opted into receiving texts from our business? On which lines?</li>\n<li>How many contacts have opted in/out in the last month?</li>\n</ul>\n<h4 id=\"expected-report-contents\">Expected Report Contents</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Data Column Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Outbound Line ID</td>\n<td>The GUID of the line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Name</td>\n<td>The name of the phone line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Number</td>\n<td>The e164 formatted phone number of your outbound line.</td>\n</tr>\n<tr>\n<td>Mobile Number</td>\n<td>The mobile phone number of the contact.</td>\n</tr>\n<tr>\n<td>First Name</td>\n<td>The contact's first name.</td>\n</tr>\n<tr>\n<td>Last Name</td>\n<td>The contact's last name.</td>\n</tr>\n<tr>\n<td>Updated</td>\n<td>The date and time in which the contact's Opt In/Out status was last updated.</td>\n</tr>\n<tr>\n<td>Opt Status</td>\n<td>The consent status of the contact, either Opted Out or Opted In. Contacts without a defined status will not show up in the report.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["clientapi","v1","report","queue-link-click-detail-report"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"0df47113-6d66-4124-8fa5-c55281721bf5","name":"Queue Blast Detail Report","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"startDate\": \"datetime\",\r\n  \"endDate\": \"datetime\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/queue-blast-detail-report"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"reportId\": \"a6edbf71-678a-41c7-9d5d-761d2c9ef44d\",\r\n    \"reportStatus\": 1,\r\n    \"callbackUrl\": \"https://mycallbackurl.com\",\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"5df463c1-5256-478e-8954-3b24b998bb9e"},{"name":"Queue Link Click Summary Report","id":"93bc8135-2d11-49ed-a9ce-8860b88488c1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"startDate\": \"datetime\",\r\n  \"endDate\": \"datetime\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/queue-link-click-summary-report","description":"<p>NOTE: This endpoint only queues the report. You will need to go to the Download Report endpoint with the report Id to retreive the report contents.</p>\n<p>This report provides the opt in/out statuses of your contacts, allowing you to have visibility across the account or certain lines.</p>\n<h4 id=\"questions-this-report-can-answer\">Questions This Report Can Answer</h4>\n<p>Using the output of this report, you can review and roll up the data in a number of ways to answer these questions and more.</p>\n<ul>\n<li>How many contacts have opted out of receiving texts? On which lines?</li>\n<li>Which contacts have opted into receiving texts from our business? On which lines?</li>\n<li>How many contacts have opted in/out in the last month?</li>\n</ul>\n<h4 id=\"expected-report-contents\">Expected Report Contents</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Data Column Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Outbound Line ID</td>\n<td>The GUID of the line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Name</td>\n<td>The name of the phone line in your account.</td>\n</tr>\n<tr>\n<td>Outbound Line Number</td>\n<td>The e164 formatted phone number of your outbound line.</td>\n</tr>\n<tr>\n<td>Mobile Number</td>\n<td>The mobile phone number of the contact.</td>\n</tr>\n<tr>\n<td>First Name</td>\n<td>The contact's first name.</td>\n</tr>\n<tr>\n<td>Last Name</td>\n<td>The contact's last name.</td>\n</tr>\n<tr>\n<td>Updated</td>\n<td>The date and time in which the contact's Opt In/Out status was last updated.</td>\n</tr>\n<tr>\n<td>Opt Status</td>\n<td>The consent status of the contact, either Opted Out or Opted In. Contacts without a defined status will not show up in the report.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["clientapi","v1","report","queue-link-click-summary-report"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"6216a0fb-b0a8-4ae3-9060-190373cf58fa","name":"Queue Link Click Summary Report","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"startDate\": \"datetime\",\r\n  \"endDate\": \"datetime\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/report/queue-link-click-summary-report"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"reportId\": \"a6edbf71-678a-41c7-9d5d-761d2c9ef44d\",\r\n    \"reportStatus\": 1,\r\n    \"callbackUrl\": \"https://mycallbackurl.com\",\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"93bc8135-2d11-49ed-a9ce-8860b88488c1"}],"id":"aa4073a3-9a89-41d9-8fa2-a7655f7e143a","description":"<p>Our reporting endpoints are broken down into two types, queue endpoints and a download endpoint. All reports must be queued and then downloaded, we do not provide the results back instantly within the original queue request.</p>\n<p>Each queue report request will provide a report ID in the response that can then be used to hit the Download endpoint to retreive the file contents in either csv or json depending on what was specified in the queue request.</p>\n<h4 id=\"report-request-details\">Report Request Details</h4>\n<p>Across all but one of our reports, the request format is the same to queue the reports for download.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Request Parameter</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Note</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>startDate</td>\n<td>Yes</td>\n<td>Date time format</td>\n</tr>\n<tr>\n<td>endDate</td>\n<td>Yes</td>\n<td>Date time format</td>\n</tr>\n<tr>\n<td>outboundLineNumbers</td>\n<td>Yes*</td>\n<td>This can support an array or be left empty. If empty, the report will be scoped for the entire account. e164 format is required for all phone numbers provided.</td>\n</tr>\n<tr>\n<td>outputAsJson</td>\n<td>Yes</td>\n<td>Default is false, which delivers a CSV.</td>\n</tr>\n<tr>\n<td>callbackUrl</td>\n<td>No</td>\n<td>If provided, we will push an event to the webhook when the report is successfully queued.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"report-statuses\">Report Statuses</h3>\n<p>Below is the breakdown of the retport status codes.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Status</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td>Queued</td>\n</tr>\n<tr>\n<td>2</td>\n<td>Running</td>\n</tr>\n<tr>\n<td>3</td>\n<td>Completed</td>\n</tr>\n<tr>\n<td>4</td>\n<td>Failed</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"aa4073a3-9a89-41d9-8fa2-a7655f7e143a"},{"name":"Short Links","item":[{"name":"List Short Links","id":"da091de9-d6c5-46f2-81d7-2bf370f0766e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/shortlink/short-links","description":"<p>This endpoint will return all of the short links in your account.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","shortlink","short-links"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"43159666-0405-4753-adad-5da444b39b8d","name":"List Short Links","originalRequest":{"method":"GET","header":[],"url":"https://foundation.textel.net/clientapi/v1/shortlink/short-links"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"shortLinks\": [\r\n        {\r\n            \"id\": \"1372fd94-1111-aaaa-5555-000000000000\",\r\n            \"linkName\": \"Custom Link Name 1\",\r\n            \"shortUrl\": \"https://cpct.ai/000000000\",\r\n            \"url\": \"https://www.fake.com/search?q=really+long+fake+url+path&rlz=1_enUS951US951&oq=really+long+fake+url+path1233\",\r\n            \"isActive\": true,\r\n            \"created\": \"2023-04-18T18:26:03.7167\"\r\n        },\r\n        {\r\n            \"id\": \"94a3f72a-1111-aaaa-5555-000000000000\",\r\n            \"linkName\": \"Custom Link Name 2\",\r\n            \"shortUrl\": \"https://cpct.ai/000000000\",\r\n            \"url\": \"https://www.fake.com/search?q=really+long+fake+url+path&rlz=1_enUS951US951&oq=really+long+fake+url+path11\",\r\n            \"isActive\": true,\r\n            \"created\": \"2023-04-18T18:26:42.4767\"\r\n        },\r\n        {\r\n            \"id\": \"892f97b8-1111-aaaa-5555-000000000000\",\r\n            \"linkName\": \"Custom Link Name 3\",\r\n            \"shortUrl\": \"https://cpct.ai/000000000\",\r\n            \"url\": \"https://www.fake.com/search?q=really+long+fake+url+path&rlz=1_enUS951US951&oq=really+long+fake+url\",\r\n            \"isActive\": true,\r\n            \"created\": \"2023-05-18T15:02:33.3433\"\r\n        },\r\n        {\r\n            \"id\": \"ac1cc47d-1111-aaaa-5555-000000000000\",\r\n            \"linkName\": \"Custom Link Name 4\",\r\n            \"shortUrl\": \"https://cpct.ai/000000000\",\r\n            \"url\": \"https://www.fake.com/search?q=really+long+fake+url+path&rlz=1_enUS951US951&oq=really+long+fake+url+pathoo\",\r\n            \"isActive\": true,\r\n            \"created\": \"2023-05-18T15:05:42.6867\"\r\n        },\r\n        {\r\n            \"id\": \"2c3001b4-1111-aaaa-5555-000000000000\",\r\n            \"linkName\": \"Custom Link Name 5\",\r\n            \"shortUrl\": \"https://cpct.ai/000000000\",\r\n            \"url\": \"https://www.fake.com/search?q=really+long+fake+url+path&rlz=1_enUS951US951&oq=really+long+fake+url+path\",\r\n            \"isActive\": true,\r\n            \"created\": \"2023-05-18T15:08:30.39\"\r\n        },\r\n        {\r\n            \"id\": \"85a772c6-1111-aaaa-5555-000000000000\",\r\n            \"linkName\": \"Custom Link Name 6\",\r\n            \"shortUrl\": \"https://cpct.ai/000000000\",\r\n            \"url\": \"https://www.fake.com/search?q=really+long+fake+url+path&rlz=1_enUS951US951&oq=really+long+fake+url+path\",\r\n            \"isActive\": true,\r\n            \"created\": \"2023-05-18T19:21:15.14\"\r\n        }\r\n    ],\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"da091de9-d6c5-46f2-81d7-2bf370f0766e"},{"name":"Create Short Link","id":"3724a478-2633-40b2-b202-6e69461bd915","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"linkName\" : \"string\",\r\n    \"destinationUrl\" : \"url\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/shortlink/create","description":"<p>This endpoint will generate a short link using the details provided. You will need to provide a link name for reference and reporting as well as the destination URL.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","shortlink","create"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"b995aca8-2aa0-404d-8baa-3073390f5399","name":"Create Short Link","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"linkName\" : \"Custom API Link\",\r\n    \"destinationUrl\" : \"https://www.fake.com/search?q=really+long+fake+url+path&rlz=1_enUS951US951&oq=really+long+fake+url+path1233\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/shortlink/create"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"shortLink\": {\r\n        \"id\": \"4d3b89af-0000-0000-0000-000000000000\",\r\n        \"linkName\": \"Custom API Link\",\r\n        \"shortUrl\": \"https://cpct.ai/000000000\",\r\n        \"url\": \"https://www.fake.com/search?q=really+long+fake+url+path&rlz=1_enUS951US951&oq=really+long+fake+url+path1233\",\r\n        \"isActive\": true,\r\n        \"created\": \"2023-07-05T19:13:35.3733\"\r\n    },\r\n    \"message\": null,\r\n    \"success\": true\r\n}"}],"_postman_id":"3724a478-2633-40b2-b202-6e69461bd915"},{"name":"Update Short LInk","id":"72a99752-f6f9-4177-9761-f7987a6d6dca","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"linkName\" : \"string\",\r\n    \"isActive\" : true\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/shortlink/{shortLinkId}","description":"<p>This endpoint allows you to update an existing short link's name or active status. Deactivating a link will stop the redirect from happening to the destination URL.</p>\n","urlObject":{"protocol":"https","path":["clientapi","v1","shortlink","{shortLinkId}"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[],"_postman_id":"72a99752-f6f9-4177-9761-f7987a6d6dca"}],"id":"99da9fc8-9c84-4330-8601-c930ab52e538","description":"<p>Textel provides our clients access to our private link shortener. While this feature is available natively in our UI, we offer the ability to create, update, and get a list of Short Links in your account via the API as well.</p>\n<p>Short Links are beneficial because they:</p>\n<ul>\n<li>Reduce the character count for most links, leaving more space for actual text content</li>\n<li>Provide link click analytics</li>\n<li>Private link shorteners are generally more accepted by the carriers compared to commercial link shorteners</li>\n</ul>\n<p>Links that are created can be used in text messages, emails, on your website, etc.</p>\n","_postman_id":"99da9fc8-9c84-4330-8601-c930ab52e538"},{"name":"API Status Codes","item":[],"id":"68a38e9c-b3e7-4435-8781-910410b7ff63","description":"<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td><code>SUCCESS</code> Success</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>ERROR</code> Bad Request</td>\n</tr>\n<tr>\n<td>401</td>\n<td><code>ERROR</code> Unauthorized Request</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>ERROR</code> Forbidden - Access Denied</td>\n</tr>\n<tr>\n<td>409</td>\n<td><code>ERROR</code> Conflict Request</td>\n</tr>\n<tr>\n<td>415</td>\n<td><code>ERROR</code> Unsupported Media Type</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>ERROR</code> Internal Server Error</td>\n</tr>\n<tr>\n<td>503</td>\n<td><code>ERROR</code> Service Unavailable</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"68a38e9c-b3e7-4435-8781-910410b7ff63"},{"name":"Okta","item":[{"name":"Process Okta Telephony Webhook","id":"94830196-4890-4ad0-9136-87d336ca5856","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{apiKey}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"eventId\": \"bOKLUNOtTZm6H8FVts4-FA\",\r\n    \"eventTime\": \"2024-08-26T19:06:36.000Z\",\r\n    \"eventType\": \"com.okta.telephony.provider\",\r\n    \"eventTypeVersion\": \"1.0\",\r\n    \"contentType\": \"application/json\",\r\n    \"cloudEventVersion\": \"0.1\",\r\n    \"source\": \"https://trial-7106823.okta.com/api/v1/inlineHooks/calhawlks9zOkRrau0h7\",\r\n    \"requestType\": \"com.okta.user.telephony.mfa-verification\",\r\n    \"data\": {\r\n        \"context\": {\r\n            \"request\": {\r\n                \"id\": \"1dbc669c03cf18626775f9b29823a510\",\r\n                \"method\": \"POST\",\r\n                \"url\": {\r\n                    \"value\": \"/api/internal/v1/inlineHooks/com.okta.telephony.provider/generatePreview\"\r\n                },\r\n                \"ipAddress\": \"97.85.168.26\"\r\n            }\r\n        },\r\n        \"userProfile\": {\r\n            \"firstName\": \"Andrew\",\r\n            \"lastName\": \"Flynn\",\r\n            \"login\": \"andrew.flynn@capacity.com\",\r\n            \"userId\": \"00uhzm9zdjAgtiFnY697\"\r\n        },\r\n        \"messageProfile\": {\r\n            \"msgTemplate\": \"Your code is 11111\",\r\n            \"phoneNumber\": \"3149389670\",\r\n            \"otpExpires\": \"2024-08-26T19:11:31.564Z\",\r\n            \"deliveryChannel\": \"SMS\", // \"voice call\" for voice OTP delivery\r\n            \"otpCode\": \"11111\",\r\n            \"locale\": \"EN-US\"\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/okta/process-okta-telephony-webhook","urlObject":{"protocol":"https","path":["clientapi","v1","okta","process-okta-telephony-webhook"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[],"_postman_id":"94830196-4890-4ad0-9136-87d336ca5856"}],"id":"ed227374-97c5-4b98-822d-10831590ca0d","_postman_id":"ed227374-97c5-4b98-822d-10831590ca0d","description":""},{"name":"Bot IVA","item":[{"name":"Start SMS Bot Flow","id":"e2ee46d5-d1e8-45f2-84e3-6a030be6b2ae","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"outboundLine\": \"+15558552059\",\r\n    \"mobileNumber\": \"+15554443159\",\r\n    \"exchangeId\": \"1600549\",\r\n    \"endExistingSession\": false,\r\n    \"contextValue\":\"{\\\"PolicyNumber\\\": \\\"88374784\\\", \\\"Region\\\": \\\"MO\\\"\"\r\n}\r\n    ///End existing session will kill any existing bot flow conversation in progress. Context value is a SmartAction request to pass in additional variables that can be passed into the GC. Context Value is JSON-stringified object of key-value pairs to pass into the conversation as context variables. All values inside contextValue must be strings (no native JSON booleans or nulls).\r\n    ///","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/ChatBot/start-bot-flow","description":"<p><strong>NOTE:</strong> This endpoint is only available to clients who have purchased the virtual agent feature. It will not work unless properly enabled and configured on your account.</p>\n<p>The Start Bot Flow endpoint allows you to trigger an SMS virtual agent conversation with the specified recipient.</p>\n<p>A few important things to consider:</p>\n<ol>\n<li><p>The <code>endExistingSession</code> parameter, if set to TRUE, will automatically terminate any existing bot conversation that may be in progress with the recipient.</p>\n</li>\n<li><p>The <code>contextValue</code> parameter is entirely optional but it does allow for additional data to be passed into the virtual agent conversation.</p>\n<ol>\n<li><p>The format of this is a JSON-stringified object of key-value pairs.</p>\n</li>\n<li><p>All values inside of this parameter MUST be strings. No native JSON booleans or nulls</p>\n</li>\n<li><p>The following variables are already recognized as system variables and are set to pull from our native CRM values. If you want to define similar data from another system, different variable names will need to be used, e.g. first_name instead of FirstName.</p>\n<ol>\n<li>{{MobileNumber}}<br /> {{EmailAddress}}<br /> {{FirstName}}<br /> {{LastName}}<br /> {{AttachmentUrls}</li>\n</ol>\n</li>\n</ol>\n</li>\n</ol>\n","urlObject":{"protocol":"https","path":["clientapi","v1","ChatBot","start-bot-flow"],"host":["foundation","textel","net"],"query":[],"variable":[]}},"response":[{"id":"7a434433-74b2-46e8-9a3f-72c1c083d3fa","name":"Start SMS Bot Flow","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"outboundLine\": \"+15558552059\",\r\n    \"mobileNumber\": \"+15554443159\",\r\n    \"exchangeId\": \"1600549\",\r\n    \"endExistingSession\": false,\r\n    \"contextValue\":\"{\\\"PolicyNumber\\\": \\\"88374784\\\", \\\"Region\\\": \\\"MO\\\"\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://foundation.textel.net/clientapi/v1/ChatBot/start-bot-flow"},"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":""}],"_postman_id":"e2ee46d5-d1e8-45f2-84e3-6a030be6b2ae"}],"id":"29f449e3-ba83-4551-bb3f-1770f58fe555","description":"<p>This section provides endpoints that support SMS and mobile messaging virtual agents.</p>\n","_postman_id":"29f449e3-ba83-4551-bb3f-1770f58fe555"}]}