{"info":{"_postman_id":"9920a6f0-8d96-8a47-cff6-36efea64c7d8","name":"Moonbeam Short Code API","description":"Welcome to moonbeam!  cloudwi.re is pleased to present our short code SMS API to the masses.  Our job is to keep you compliant, provide a high degree of message deliverability, provide rocket throttle and crush your long code filtering woes.  \n\nWe're a happy bunch here.  We want to make you a happy developer.  You'll find that some of our documentation can be redundant.  It is designed that way to make life a bit easier when learning concepts and hopefully prevent you from having to re-review to find something.  Let's get started.  \n\n## Compliance\nThe cloudwi.re SMS API is built for compliance in line with the Mobile Marketing Association guide to best practices, which meets the TCPA guidelines set forth by the FCC.  cloudwi.re handles the opt-in logic and the developer can focus on sending/receiving messages without worry.  By our Terms & Conditions, you must also be responsible for compliance.  So don't send opt-in requests or confirmations to subscribers who haven't granted you consent.  \n\nNO, you cannot send opt-in requests to subscribers blindly just because you have a business relationship with them.  You must have consent.\n\n## Proud Twilio Partner\nIt's a 9 out of 10 chance you are here because someone @Twilio referred you to us.  In turn, we are here because of Twilio.  The Twilio-cloudwi.re partnership is nearly eight years old and those benefits are extended to the developer by way of a fully featured shared short code platform.  cloudwi.re is a Premier Twilio partner.\n\n## Subscriber Experience\ncloudwire is built for speed as much for the developer as it is for the subscriber.  cloudwi.re generally processes an inbound keyword and returns the proper template to our aggregator for delivery in an average of 1 tenth of a second.  All in a process that requires searching over 20k accounts and 40M subscriber records.  \n\nAdditionally, cloudwire breaks down campaigns into a separate bucket so as not to eat away at short code bandwidth and create unnecessary message latency for someone simply trying to get a coupon.  \n\nThe result is a happier subscriber with snappy responses to their inquiries.\n\n## Read the Docs and Guides!\nWe get it.  It's a long read and nobody likes to read! But the documentation is detailed to help you.  It is rare that you will need us to answer any questions.  But we are here if you do need us.  Support is always free and responsive.  But please keep it that way by exploring the documentation first! \n\nKeep in mind when reading that some use cases are not supported by the published API.  These features are hidden for compliance reasons.  Don't hesitate to contact us if that means you.  We can just about handle any use case. \n\nAnd please forgive our redundancy in some sections.  We do this only to reinforce learning the platform.\n\n## Getting Support\nWe are easily accessible at <a href=\"mailto:support@cloudwi.re\">support@cloudwi.re</a> free of charge.  But PLEASE......help us help you.  We cannot solve problems when you tell us you didn't get a text.  If you are having trouble connecting to the API make sure you include your code.  Can't send a message?  We need your <i>accountId</i>, <i>mobileId</i> and the relative time the message was attempted.  The more data you can educate us with the better chance we can solve your problem in a timely manner.\n\n## Platform Status\ncloudwi.re maintains and reports errors from our status page for API, UI and carrier delivery issues.  Status updates are only sent to those signed up on the status page.  You can sign up <a href=\"http://at4armed.cloudwi.re\">HERE.</a>\n\n## Message Deliverability\ncloudwi.re is built to give the developer the best chance of getting your message to the end user device.  If the subscriber carrier you are messaging isn't short code supported, we got you covered and we'll fire your message on a long code.  If the carrier is not MMS supported we'll fire a link to your image inside an SMS body.  And in some cases, if a fail or undelivered receipt is returned to us from the carrier we will fire the message on a long code.  Additionally, cloudwi.re is capable of 2-way messaging in many countries of the world using local long codes and sending 1-way outbound messaging to every country using global enabled USA long codes.  \n\n## USA SMS/MMS\ncloudwi.re is primarily built for USA short code messaging and supports 2-way SMS/MMS on most USA Carriers.  If a message is sent to a USA subscriber who is on a carrier that is not short code supported, the SMS API will send the message on a long code.  We support up to 1600 characters in a message but advise that you keep your character count to 160 or less.\n\nUSA Supported short code carriers can be found here <a href=\"https://cloudwire.gelato.io/guides/understanding-short-codes#us-short-codes-carrier-support\" target=\"_blank\">HERE.</a> Read on to learn about how the SMS API sends/receives SMS Canada and the rest of the world.\n\n## Globally Agnostic\nAlthough cloudwi.re is primarily built for USA short code messaging, the SMS API supports messaging to many countries.  It's important to note that international numbers cannot communicate with USA short codes.  This is especially important for anyone doing keyword campaigns.  The SMS API uses local and global enabled long codes to accomplish this.  \n\nFurther, the developer does not need to concern themselves with what countries their subscribers reside in or what numbers to utilize when transmitting SMS with them.  \n\nWe do that for you :)\n\n## Communicating With The API\nThe cloudwi.re SMS API is tuned to consume your API messaging request and either successfully acknowledge receipt or error out based on certain conditions within the response synchronously. With regards to the messaging methods, it's important to note that a successful response from the SMS API does not indicate whether your message passed opt-in checks or was attempted or delivered.  It simply means we received it successfully and are processing your request.  You should prepare for both synchronous and asynchronous responses from the API.  \n\n## Time Zones\nThe SMS API will deliver information to you in GMT only.  It is up to you to convert your time.  However, the store portal dashboards will convert your message logs into the selected store time zone. \n\n## Migrating an Opt-in List\ncloudwi.re does not allow developers to upload opt-in data from a different vendor.  That task can be completed only by cloudwi.re team members.  Read up on list migrations if that means you. It will require you to fill out a cloudwi.re list migration form.  For more information on migration and to find the form, click <a href=\"https://cloudwire.gelato.io/guides/short-code-and-or-list-migration\">here</a>.\n\ncloudwi.re will load data for you unless this form is filled out for your account. It is not negotiable.  For more information, contact <a href=\"mailto:support@cloudwi.re?Subject=I%20Am%20Migrating%20From%20Another%20Vendor\" target=\"_top\">Support</a>.\n\n## How You Are Billed for Messaging\nFor SMS, the carriers bill us in 160 character segments in most cases.  If you send an SMS that is 422 characters, it will be billed as 3 message segments.    Additionally, MMS is delivered as one payload by the carriers.  That means if you send an MMS, any SMS attached to that message is not included and you only pay the price of the MMS, regardless of the SMS character count.  \n\nAny message that passes opt-in checks and is attempted for delivery is billable.\n\nUSA and Canadian SMS are priced the same.  \n\nAdditionally, some carriers charge extra jack to communicate with their subscribers on short codes.  This cost is included in cloudwi.re message pricing and there is no additional mark-up.\n\n## Billing Portal\nBilling is automated and outsourced by cloudwi.re.  It is separately hosted and the link to your account page can be accessed through the admin portal.  2-Factor authentication is required via email every 30 days in order to access your billing portal should you wish to review statements or change your billing information.  \n\nBilling occurs on right around Net 30 of your subscription sign-up date.  Additionally, cloudwi.re runs billing scripts in the wee hours of the night daily.  Usage is not updated in real-time.\n\n## Smart Encoding\nIn most cases, message segments are counted in 160 character increments.  However, certain characters must be converted to UCS2 encoding.  These are billed in 70 character segments.  Bear in mind that unless you are getting a little crazy with characters, this will not affect you except for emojis (See Below).\n\nThe SMS API will convert most UCS2 characters to GSM so there is nothing the developer needs to worry about.  Although we advise playing it safe and stick to sending GSM characters.  You can check encoding with this tool:\n\n<a href=\"http://chadselph.github.io/smssplit/\">SMS Encoding Check</a>\n\n<a href=\"https://en.wikipedia.org/wiki/GSM_03.38#GSM_7_bit_default_alphabet_and_extension_table_of_3GPP_TS_23.038_.2F_GSM_03.38\">GSM Characters Wiki</a>\n\n## Emojis are encoded to UCS2!\nThe above is important to keep in mind when sending messages containing emojis 😬 👍 ❤️.  Any message with emojis will be encoded to UCS2 and bill in 70 character increments.  That greatly changes the amount of content you can fit into a message without being billed for 2 message segments.  Plan wisely.\n\nOur take is that emojis do add a personal effect to the message and Clients that utilize them have reported higher response rates to their campaigns.\n\n## How You Are Billed for Keywords\nKeywords are added to your bill as soon as you reserve them.  They are pro-rated within your billing cycle.  If you sign-up for a keyword 15 days before your billing cycle is refreshed, you will only be charged for half the keyword fee.  \n\n## Billing Methods\nYou can configure your billing preferences in the cloudwi.re admin portal.  cloudwi.re primarily accepts only USA/Canada addressed major credit cards.\n\n# 2-Way Guaranteed SMS\nExcept where noted above with short code 345345, cloudwi.re guarantees 2-way SMS/MMS between opted-in subscribers and the store. There are no timing algorithms or sequences like our competitors utilize with only one short code. We achieve this by binding the opted-in subscriber to a short or long code to communicate with the store for the life of the opt-in.\n\nThe easiest way to understand this is to think of sending texts to your friends or significant other. All of them have unique phone numbers, right? Well, cloudwi.re kind of does the same thing.\n\nWe assign a unique short or long code for each subscriber to communicate with the store they are opted-in to for the life of the opt-in. The short code acts more like a proxy. But it's basically the same idea. That assignment, or bind, remains in place for the life of the opt-in. So, for example, if you opt-in to Jim's Pizza and you get a text from 24411 with your opt-in confirmation, you will always communicate with Jim's Pizza on 24411 while you are opted-in. But if you turn around and opt-in to Mercari, you'll be assigned a new short or long code to communicate with them and so on. \n\nWhat this does is allow cloudwi.re to determine, with 100% accuracy, that any inbound message after an opt-in event is routed to the correct store. So, if you text \"I want a Pizza\" to 24411, cloudwi.re knows that you are binded to Jim's Pizza on 24411 and we will pass the message on to the correct store. That happens even if the subscriber moved away for 4 years (while remaining opted-in) and then returned wanting your pizza.\n\n## Building Keyword Decision Trees on Communication Codes (24411, 36546, 55398)\nBy way of the above, building keyword decision trees for subscribers binded to the communication short codes is rather easy.  cloudwi.re knows what subscriber is binded to what store via the communication short code proxy set up as the communication channel.  You can now ask for anything you want from the subscriber and cloudwi.re will post it to your webhook.  There are no timing algorithms or concerns for subscribers accidentally opt-in to other stores.  You can create a unique webhook for each store you create on cloudwi.re or you may use the same one.  We will post what store ID the subscriber is opted-in to when we receive the inbound message.  Then the developer can take whatever action that they choose.\n\nThe communication codes come into play whenever you call the API to opt-in a subscriber.  Additionally, subscribers are binded to the store via a communication short code when they utilize an opt-in keyword on the marketing code, 444999.  More on that as you read on.\n\n## Building Keyword Decision Trees on Sticky Code (345345)\nIf you are going to opt-in subscribers via keyword and then put them into a decision tree, it's our recommendation that you do so with short code 444999 for reasons stated in <a href=\"https://cloudwire.gelato.io/docs/versions/moonbeam/the-cloudwi-re-short-code-concept\">The cloudwe.re Short Code Concept</a>.  But sometimes that keyword you need might not be available and since you really want it, you book it on the sticky code (345345).  Since an opt-in keyword on 345345 will bind the subscriber for 2-way communications to 345345, there is the risk that a decision tree of back and forth messaging could result in the accidental opt-in of your subscriber to another cloudwi.re store.  \n\nHowever, you can get around that with a little bit of creativity.  We recommend that you utilize a hash tag.  cloudwi.re does not allow special characters inside of a keyword.  That means that anyone that replies with a hash tag in front of what you are looking for is going to have their message posted to your store.  \n\nYou can collect birthdays, names and phone numbers.....or whatever.  Remember, in collecting email addresses, they have the @ symbol.  So you do not need to concern yourself with this since that symbol cannot be registered as a keyword.  \n\nFair warning though, if you are going to do natural language 2-way messaging with your opted-in subscribers and you are opting them in using a keyword, utilize short code 444999 even if the keyword you want is not available.  We are sure you can brainstorm an alternative.\n\nA sample flow:\n\n<p style=\"margin-left: 60px;\">\n  <p=\"margin-right: 120px;\">\n<b>Subscriber Handset:</b> {Keyword} to 345345\n<br>\n<b>Short Code:</b> You Opted-in to {Store Name} {Program Name}!<br> Msg&Data rates may apply.  <br>{Message frequency}<br> Reply HELP for help, STOP to cancel.<br>\nFor Age Verification please reply with a hash tag in front of your age. (E.G. #25).<br>\n<b>Subscriber Handset:</b> #25\n<br>\n<b>Short Code:</b> Thank you!  Please tell us your zip code with a hash tag in front.  (E.G. #95107).<br>\n<b>Subscriber Handset:</b> #60015\n \n## Keywords Cost?\nRemember, there is no charge for keywords that you use in your internal 2-way messaging decision trees.  Only keywords leased on 444999 or 345345 will incur any cost.  So feel free to ask away after the subscriber opts-in to recurring messaging.\n\n\n# The cloudwi.re Short Code Concept\ncloudwi.re is not your typical shared short code platform and is built to support guaranteed 2-way messaging.  This concept is supported by our US Patent and a stack of multiple short codes.  There are a total of five short codes in the stack.  This gives the cloudwi.re SMS API a host of advantages over any single shared short code vendor.  To better understand how and why, read on.\n\n## Short Code Classes\ncloudwi.re maintains two classes of short codes.  Pay attention to how they differ.  They are as follows:\n\n#### Keyword Marketing Short Codes (345345 & 444999)\nIf your application will be making use of a keyword, you may skip this section on the keyword marketing short codes as your subscribers will only interact with the communication short codes.  \n\n<b>Standard Marketing Short Code (444999)</b>:<br>\nThe standard marketing short code, 444999, is utilized solely for keyword marketing.  These keywords can be used for app distribution, couponing or they can be used to opt-in to a particular store.  Recurring 2-way messaging between opted-in subscribers and the store NEVER occurs on a standard marketing short code (I.E. 444999)\n\nIt's additionally important to note that an opt-in event that is driven by a keyword to a standard marketing short code will trigger a response from a communication short code. 2-way messaging will then continue on the assigned communication short code.  Opt-ins on this short code guarantee 2-way communication with the store and the subscriber.\n\n<b>Sticky Marketing Code (345345)</b>:<br>\nThe sticky marketing code, 345345 works a bit differently.  2-way messaging between the opted-in subscriber and the store <b>can</b> occur on this short code.  By default, a subscriber using an opt-in keyword sent to 345345 will be binded to the store with 345345.  HOWEVER, if the subscriber is opted-in to another account or store on 345345, they will be assigned to a new short code for 2-way messaging.  \n\n#### NOTE\nWe built the sticky code to give Clients the option of holding most SMS communication on just one code.  However, if you are planning a keyword campaign and then doing natural 2-way communication with subscribers after opt-in, we highly recommend that you select your keywords on short code 444999.  It's possible that subscribers can opt-in to other stores if they are sending traffic back on 345345 on a consistent basis.  Make sure you ask yourself that question before selecting a keyword and don't hesitate to contact us if you aren't sure!\n\nThere are two short codes in this class.  444999 is throttled at 100 messages per second (MPS) and 345345 is throttled at 200 MPS. \n\n## A Quick Note about Keywords in Canada\nWe love Labatt's Blue here.  And if you want to advertise keywords up North to the hockey lovers you can do so on Canadian Long Codes.  cloudwi.re maintains four Canadian long codes for keyword campaigns. However, all of them behave like short code 444999.  We do not offer Canadian Sticky long codes like 345345 in Canada due to filtering concerns.  But, if you wish to ignore this advice you can certainly contact us, and we can enable one for you.  Just understand that fixing carrier filtering issues is a very low priority for us.\n\nIn order to utilize keywords on any of the four long codes you <b>MUST</b> create keywords on them via the API using the below long codes as the 'shortCode' value.  Pass them to the API in the following example format: '16477992400'  \n\n### Canadian Marketing Keyword Long Codes (Like 444999)\n\n(587) 319-2400<br>\n(647) 799-2400\n\n\n\n#### Communication Short Codes (24411, 36546 & 55398)\nThe communication short code is utilized for 2-way recurring messaging between opted-in subscribers and the store.  When a subscriber opts-in either from an API request or a keyword on 444999, they are assigned and binded to one of the three communication short codes.  Only global compliance keywords work on the communication short codes.  This means that a subscriber cannot opt-in via a keyword to any of these three short codes.\n\nIf a subscriber is opted-in and binded to the sticky code (345345) and then attempts to opt-in to another store using a keyword reserved on 345345, the SMS API will assign a communication short code to bind that subscriber to the store.  \n\nThere are three short codes in this class and each is throttled at 200 MPS.\n\n\n## When a Subscriber is Opted-in to More Than 3 Stores\nIn the event that a subscriber is opted-in to 3 (If 345345 is included it would be four stores) or more stores thus using up their allotment of short codes, the SMS API then starts using long codes to bind the subscriber to that store.  This even is somewhat rare and only generally affects developers.  As cloudwi.re continues to grow and we run into more subscribers opting into multiple stores, we will add short codes to our pool of communication short codes.\n\n## Load Balancing Opt-ins\nThe other advantage of our patent is that we load balance opt-ins on the cloudwi.re communication short code stack.  The store concept guide outlines how we load balance opt-ins.  But one of the key takeaways is that if you opt-in thirty-thousand subscribers to a store, the cloudwi.re SMS API will just about evenly balance that opt-in load to the three communication short codes through a round-robin process.  It's not a perfect balance due to a few different reasons.  But it will be relatively close.  The end result is the pooling of our bandwidth on those three short codes which reduces message latency and increases campaign speed.\n\n## Message Bandwidth and Queueing\ncloudwi.re maintains two classes of messaging queues.  They are as follows:\n\n<b>Single Messaging Class</b>:<br>\nThis class is reserved for individual messaging to one subscriber.  This could be an opt-in or a responder keyword message reply, or you could just be asking a subscriber what they want to order.  Even mass sign-up notifications that are coming in to your application one by one at a high rate will use this class for the reply message.  \n\nFor this class, the SMS API holds open one dedicated queue of 250 MPS (Communication Codes: 50 MPS per code per queue---Sticky Code: 100 MPS per queue) of throttle per short code to keep message latency low.  This throttle is held open regardless if large outbound campaigns are running.\n\n<b>Campaign Messaging</b>:<br>\nThis class is for sending an SMS/MMS campaign to many subscribers.  The messages may be the same or customized to each subscriber.  For campaign messaging the SMS API holds open two dedicated queues throttled at 275 MPS each (Communication Codes: 75 MPS per code per queue---Sticky Code: 50 MPS per queue).  Campaigns are queued up in the order received.  \n\nThe maximum potential for each of the two campaign queues are 275 MPS....or roughly around 16,500 messages per minute.  However, bandwidth will be reduced when developers segment opt-ins out of their database for a campaign. That segmented data taken could have a higher occurrence on one or two communication short codes rather than even dispersal on all three.  Those occurrences are generally rare.  However, when it does occur, the minimum campaign bandwidth is around 75 MPS.  \n\n<b>Messaging Methods</b>:<br>\nPlease pay close attention to the messaging resource in the API docs.  If you are going to send any bulk outbound messaging campaigns, you must use the campaign methods.  If you begin utilizing the one-to-one messaging methods to send outbound campaigns you will be contacted and asked to move that traffic to the campaign methods.  If you do not comply, we will throttle your concurrency down to a drip.  We understand and totally get that large event sign-ups could lead to higher traffic events that must use the single messaging classes to deliver your messages.  Please work with us to throttle that type of traffic on your end to no more than 15 requests per second.  If that's a no go, then we would advise that you use the campaign methods to collect up those notification events and take advantage of the Hight throttle allotment in campaigns.  We offer three ways to send bulk message campaigns and we are sure that one of them would satisfy your needs.  Contact us to discuss and we'll walk you through the best way forward.  \n\n\n# Terms Glossary\n\n<table >\n<tr>\n<td><b>Term</b></td>\n<td ><b>Description</b></td>\n<tr>\n<td >Account (accountId or Parent)</td>\n<td>Your main account with cloudwi.re which can be used to create and manage stores or sub-accounts under.</td>\n</tr>\n<tr>\n<td >Assignable (Communication Short Codes)</td>\n<td>Cloudwi.re reserves a handful of short codes to ensure and guarantee two way messaging between a store and an opted-in subscriber. These short codes are <b>NEVER</b> used for opt-in or responder keywords.</td>\n</tr>\n<tr>\n<td >Campaign</td>\n<td>A mass or bulk text message blast to multiple opted-in subscribers of a store.</td>\n</tr>\n<td >Carriers</td>\n<td>Mobile telecommunications companies like Sprint, AT&T, Rogers, Bell or Verizon.</td>\n</tr>\n<tr>\n<td >Double Opt-In (2 Step Opt-In)</td>\n<td>Sometimes referred to as two step opt-in, this opt-in method requires the consent of the mobile subscriber who will receive and opt-in request. Before any additional messages can be sent, the mobile subscriber must reply YES to the opt-in request. It is generally required for non-handset initiated opt-ins, such as from a web form or phone call. The SMS API will automatically deliver the opt-in request template to the subscriber.  If the subscriber then replies Y or YES, the SMS API will deliver the confirmation template.\n</td>\n</tr>\n<tr>\n<td >Locked</td>\n<td>If single opt-in is attempted three times to a subscriber with no response the opt-in status of the subscriber is changed to locked.  A locked subscriber cannot receive messages from the store except in the event of a handset initiated keyword.  If this creates any issues, please contact Support. </td>\n</tr>\n<tr>\n<td >Long Code</td>\n<td>A 10 digit telephone number (somtimes longer with international numbers) that can be used solely for sending and receiving SMS.  cloudwi.re utilizes long codes when a subscriber is on an unsupported short code carrier or when certain errors arise.  They are also used for international messaging.</td>\n</tr>\n<tr>\n<td >Marine Corps</td>\n<td>Mother Green's Machine founded in 1775......in a bar people!  cloudwi.re was founded by and employs several former US Marines.  If you are wondering why we use terms like 'go fasters', 'moonbeam', 'silver bullet' and 'AT-4' you are now in the know.</td>\n</tr>\n<tr>\n<td >Marketing Short Code (Opt-in or Responder Short Code) (444999)</td>\n<td>A short code Sub-class the cloudwi.re SMS API uses to accept handset initiated opt-in and responder keywords. Keywords recognized by our system will generate the response created by the developer. It is <b>NEVER</b> used for 2 way communication between the opted-in subscriber and the store.</td>  Keywords on short code 444999 should be utilized for applications running natural 2-way recurring messaging between the store and subscriber.\n</tr>\n<tr>\n<td >Sticky Marketing Short Code (Opt-in or Responder Short Code) (345345)</td>\n<td>Another short code Sub-class the cloudwi.re SMS API uses to accept handset initiated opt-in and responder keywords. Keywords recognized by our system will generate the response created by the developer. By default, opted-in subscribers will be binded to this code unless a pre-existing bind exists.  If that is the case, the subscriber will be assigned to communicate with the store on one of the communication short codes.  It is not recommended for applications doing recurring 2-way messaging between the store and subscriber.  It is better suited for campaigns that are sending outbound subscriber messaging.</td>\n</tr>\n<tr>\n<td >mobileId</td>\n<td>The unique mobile number of a subscriber and the primary identifier in the cloudwi.re architecture.\n</td>\n</tr>\n<tr>\n<td >Mobile Originated (Inbound Message)</td>\n<td>An SMS or MMS sent from a mobile subscriber to the store.</td>\n</tr>\n<tr>\n<td >Mobile Terminated (Outbound Message)</td>\n<td>An SMS or MMS sent from a store to a mobile subscriber.\n</td>\n</tr>\n<tr>\n<td >Multi-Media Message (MMS) (Picture Message)</td>\n<td>An image sent to/from a mobile subscriber to a store.  This image can be a picture, audio or video, although for now, cloudwi.re only supports pictures in .jpg, .gif or .png formats.\n</td>\n</tr>\n<tr>\n<td >New</td>\n<td>cloudwi.re assigns a subscriber who has sent a responder type keyword to a store but has never opted-in or out of that store a status of 'new'.\n</td>\n</tr>\n<tr>\n<td >Opt-in Keyword</td>\n<td>When initiated by the mobile subscriber the opt-in keyword opts them into a store for further SMS communication. It uses the single opt-in process. The cloudwi.re SMS API assigns a dedicated short code to that customer’s mobile number to which they will always communicate with that store through the life of their opt-in.\n</td>\n</tr>\n<tr>\n<td >Opted-out</td>\n<td>A mobile subscriber who is opted-out from your store and cannot receive any messages other than the opt-in request. The SMS API will automatically deliver the opt-in confirmation template.\n</td>\n</tr>\n<tr>\n<td >Pending</td>\n<td>A mobile subscriber who has received the opt-in request message but has not responded YES. Until the subscriber responds YES no text messages can be delivered to them.\n</td>\n</tr>\n<td >Responder Keyword</td>\n<td>When initiated by the mobile subscriber the responder keyword will respond with only one text message. The mobile subscriber will not be opted-in and no further message can be sent except for the opt-in request or confirmation. It is usually used for promotions or general information. You can use internal responder keywords within your application after the mobile subscriber is opted-in.\n</td>\n</tr>\n<tr>\n<td >Segment</td>\n<td>Segments are utilized to keep track of SMS and MMS billing.  For SMS, in most cases, segments are counted in 160 character increments.  If you send a message that is 180 characters, it will appear as 2 SMS segments and bill as 2 SMS.  For MMS, each URL is counted as a segment, but you can only send 1 MMS segment at a time.\n</td>\n</tr>\n<tr>\n<td >Short Code (Short Numbers)</td>\n<td>A 5 or 6 digit number that allows a text message to communicate with a software application. Short codes allow for higher bandwidth delivery of messages.  They are pre-approved by the carriers making them a better choice for higher volume messaging than long codes.\n</td>\n</tr>\n<tr>\n<td >Single Opt-In (1 Step Opt-In)</td>\n<td>Used primarily when the mobile subscriber initiates and opt-in keyword to 444999 from their mobile device. This opt-in method does not require any additional actions by the mobile subscriber. The mobile subscriber receives a confirmation that they have opted-in to the store and the store can now communicate freely with that subscriber. The cloudwi.re SMS API automates this process and delivers the opt-in confirmation template.  The SMS API can also deliver a single opt-in confirmation without the subscriber initiating it through a keyword.  \n</td>\n</tr>\n<tr>\n<td >Short Message Service (SMS)</td>\n<td>A text message. \"Just text me dude!\" That notification your parents get on their phones because you don't call anymore.  \n</td>\n</tr>\n<tr>\n<td >Store (Sub-Account or storeId)</td>\n<td>Sometimes referred to as sub-accounts or child accounts, the store is basically a bucket to house opted-in customers in. It allows the cloudwi.re SMS API to properly route text messages to and from the store and is used by the developer to tell the SMS API which store you wish to administrate when calling.\n</td>\n</tr>\n<tr>\n<td >Subscriber</td>\n<td>A person with a unique Mobile ID.  All things equal though, a subscriber and Mobile ID are essentially the same thing.  #Semantics\n</td>\n</tr>\n</table>\n\n# Understanding Keywords\nMany of you have come to cloudwi.re for keyword campaigns.  Keywords are initiated by mobile subscribers.  They tell cloudwi.re what the subscriber is looking for or what store they wish to opt-in too.  \n\n## Note\nKeywords are not case sensitive.  While we recommend advertising them in all caps, you do not need to reserve them as such....or you can.  Regardless, it doesn't matter.\n\nA friendly reminder, keywords created on cloudwi.re will only work on the marketing short codes 444999 and 345345 and their Canadian long code counterparts.\n\nThere are three types of keywords maintained in the cloudwi.re SMS API.  The developer can choose to control only the opt-in and responder keywords.  cloudwi.re retains automation rights over any STOP or HELP request.  The three types of keywords are:\n\n## Opt-in Keyword\nThis keyword, when initiated by a mobile subscriber will immediately opt them into the store that the keyword is assigned too.  The mobile subscriber will thus be known as an opted-in subscriber to the store and cloudwi.re will assign a dedicated short code for the store and subscriber to communicate with for the life of the opt-in.  Since the subscriber is opted-in, you now have permission to send recurring messaging.\n\nDevelopers are free to respond to opt-in keywords dynamically if it is so desired via a settings toggle in method Edit Store Settings.\n\n## Responder Keyword\ncloudwi.re also provides the ability to set a keyword as a responder only.  When initiated by a mobile subscriber, the responder keyword can only return ONE response.  The response comes from the keyword short code (345345 or 444999) that the keyword is assigned too.  There is no change to a subscriber's opt-in status when this keyword type is triggered.  It is generally used for marketing initiatives, link driving, app downloads, one-time coupons or general information requests. \n\nResponder keyword responses can be automated by the SMS API  or you can respond dynamically if you wish.\n\n## Global Compliance Keywords\nFor compliance reasons, the following keywords cannot be reserved.  They are; STOP, END, QUIT, UNSUBSCRIBE, ARRET, CANCEL, HELP, INFO, AIDE, YES, YEA, YEAH and NO.  These keywords are automated by the cloudwi.re SMS API for compliance purposes.  \n\n## Keywords with Spaces\ncloudwi.re also supports registering keywords with their natural spaces.  Many campaigns involve natural two word keywords (Like GOBUCKEYES), which comes with subscriber loss and frustration risks due to auto-correct.  To account for the example above, you can register both GOBUCKEYES and GO BUCKEYES as your keywords.  \n\nTo state the obvious, yes, that means you're paying cloudwi.re for two keywords instead of one.  And true, we like money, but that amount of money is minimal compared to the cost of one radio spot.  This gives your creative team the difficult task of how to market the keyword versus what to do when folks get upset because they couldn't get their offer.  It's cheap insurance.  No leads are lost due to auto-correct or consumer confusion.\n\nYou can register both opt-in or responder keywords with spaces.  \n\n## Wild Carding Keywords\ncloudwi.re also supports wild card keywords. For example, let's say you register keyword CLOUD to one of the marketing short codes, 444999. Any message received to 444999 with the keyword CLOUD will be posted to your store. But so will the rest of the body of the message.....as long as there is a space after the initial keyword! So......if a subscriber sends you CLOUD WIRE or CLOUD IS GREY, the SMS API will post both messages to the store you registered keyword CLOUD with.\n\nWild card keywords are best used for asking subscribers to text a keyword and then a space followed by either an email address or a coupon code.\n\nThere is no charge for wild carding! So in the above example, only CLOUD is a billable keyword.  Additionally, wild carding works for both opt-in and responder keyword types.  \n\n## Keywords & Inbound MMS\nA keyword will work normally if you are running a campaign that asks the subscriber for a picture.  For example, you have keyword BUCKEYE for Buckeye Pizza.  You want to generate opt-ins by asking subscribers to opt-in with keyword BUCKEYE to any of the marketing short codes.  You also want them to send a picture of them eating Buckeye Pizza wearing their Ohio State gear.  It could be for a contest or social media campaign.  \n\nThe inbound keyword will post to your URL along with the image link.  cloudwi.re will then treat the keyword as it would normally with any opt-in or responder keyword.\n\n## Keywords After a Subscriber is Opted-In\nIt’s important to note that you can create keywords within your application as well, <b>but only AFTER the subscriber has opted-in to your store</b>!  If you want to do responder games or surveys, use the opt-in keyword or Send Opt-In method as your first path to get the mobile subscriber opted-in.\n\nOnce done, you can assign any keywords (except for the global compliance keywords) outside of the cloudwi.re SMS API because the subscriber is already opted-in to your store.  You can use the inbound listener to listen for the keywords you want to respond to.  There is no keyword charge for internal keywords because they are not registered to the marketing short codes.  \n\nReminder though, we don't recommend this with subscribers that are opted-in on short code 345345.  \n\n# Number Formatting-International SMS\nThe cloudwi.re SMS API ONLY supports messaging to the <a href=\"https://en.wikipedia.org/wiki/E.164\">E.164 Numbering Format</a> with a caveat that the + in front of the number is not accepted.  This format is the internationally-standardized format for all phone numbers, and it includes all the relevant information to route calls and SMS messages globally. E.164 numbers can have a maximum of fifteen digits and are usually written as follows: [country code][subscriber number including area code]. \n\nA good reference to find a country’s calling code is this <a href=\"https://en.wikipedia.org/wiki/List_of_country_calling_codes#Alphabetical_listing_by_country_or_region\">Wiki Page</a> that lists countries and their calling codes.\n\nFor example, to convert a US phone number like 415-100-1000 to E.164 format, you need to add the country code (which is 1) in front of the number so it will be sent to the SMS API as '14151001000'. \n\nIn the UK, and many other countries internationally, local dialing requires the addition of a ‘0’ in front of the subscriber number. \n\n<b>However</b>, to use E.164 formatting, this ‘0’ must be removed. A number such as 020 7183 8750 in the UK would be formatted as '442071838750' when sent to cloudwi.re.\n\ncloudwi.re provides an E.164 lookup tool via the API.  It's free to use it if you need to!  Any request you make involving messaging that does not pass the E.164 check will synchronously error out in your echo.\n\n## US Short Codes Carrier Support\nFor now and the foreseeable future, cloudwi.re only maintains short codes in the United States.  When a message is sent to a subscriber on a short code supported carrier, a short code will be used.  If the message is sent on a non-supported short code carrier, the SMS API will select a long code.  In the USA, those carriers are as follows:\n\n<b>Major carriers</b>: AT&T, Verizon Wireless, Sprint, and T-Mobile USA.\n\n<b>Minor carriers</b>: Advantage Cellular (DTC Wireless), Aio Wireless, Alaska Communications Systems (ACS), Appalachian Wireless (EKN), Bluegrass Cellular, Boost Mobile, Carolina West Wireless, CellCom, Cellular One of East Central IL (ECIT), Cellular One of Northeast Arizona, Cellular One of Northeast Pennsylvania, Chariton Valley Cellular, Cricket, Coral Wireless (Mobi PCS), Cross, C-Spire (CellSouth), Duet IP (Maximum Communications New Core Wireless), Element Mobile (Flat Wireless), Epic Touch (Elkhart Telephone), GCI, Golden State, Google Voice, Hawkeye (Chat Mobility), Hawkeye (NW Missouri), Illinois Valley Cellular, Inland Cellular, iWireless (Iowa Wireless), Keystone Wireless (Immix Wireless/PC Man), Metro PCS, Mosaic (Consolidated or CTC Telecom), MTA Communications , MTPCS (Cellular One Nation), Nex-Tech Wireless, NTelos, Panhandle Communications, Peoples Wireless, Pine Cellular, Pioneer, Plateau (Texas RSA 3 Ltd), RINA, Sagebrush Cellular (Nemont), SI Wireless/Mobile Nation, Simmetry (TMP Corporation), SouthernLinc, SRT Wireless, Thumb Cellular, Union Wireless, United Wireless, U.S. Cellular, Viaero Wireless, Virgin Mobile, and West Central (WCC or 5 Star Wireless).\n\nMMS-enabled US short codes are able to deliver MMS messages to the following mobile phone carriers: AT&T, Verizon Wireless, Sprint, and T-Mobile.  For carriers that do not offer MMS support, cloudwi.re will use long codes to deliver your MMS message.\n\n<b>Puerto Rico</b>: Puerto Rico is supported in the US on only 3 of the 4 major carriers. However, delivery is not guaranteed. Supported carriers are: AT&T, T-Mobile and Sprint. Verizon is not supported.  cloudwi.re will generally select long codes to send to Puerto Rico. \n\n## Canada Opt-in Communications\nThe cloudwi.re SMS API retains a robust amount of Canadian long codes to support sending up to 24 messages per second in Canada. MMS is supported on the major Canadian carriers.\n\n## Canadian Keyword Long Codes\nA reminder, cloudwi.re maintains two Canadian long codes for keyword campaigns that act like 444999.\n\nIn order to utilize keywords on any of the two long codes you <b>MUST</b> create them as keywords via the API using the below long codes as the 'shortCode' value.  \n\n### Canadian Marketing Keyword Long Codes (Like 444999)\n\n(587) 319-2400<br>\n(647) 799-2400\n\n## Other Countries\ncloudwi.re short codes are only available to USA mobile subscribers.  \n\nHowever, cloudwi.re additionally carries communication long codes (SMS Support Only!) in the following countries:\n\nCanada,\nUnited Kingdom,\nBelgium,\nSweden,\nFrance,\nPuerto Rico,\nEstonia,\nLithuania,\nLatvia,\nPoland,\nSpain,\nGermany,\nMalaysia,\nNetherlands,\nAustria,\nAustralia,\nCroatia,\nIreland,\nSwitzerland,\nChile\n\nAs stated, mobile subscribers in these countries cannot opt-in on a cloudwi.re short code.  However, you can utilize the Send Opt-In method to initiate communication with subscribers in the above stated countries.  When you do so, cloudwi.re will automatically select the country matched long code to deliver the message and that long code will now act as the binded 2-way communication code for all SMS between the store and that subscriber.\n\nMMS is not supported outside of the USA/Canada.  We recommend that you send links when communicating SMS outside of the USA/Canada.\n\n## Other International Locations\nOther than what is mentioned above, cloudwi.re carries global enabled USA long codes that can send messages to nearly every country in the world.\n\nBear in mind that sending messages to subscribers in Peru or South Africa from a US Mobile Number can increase the expense for those respective subscribers to receive them in those countries.  If you intend to send higher volumes to any country other than what is listed above, please contact <a href=\"mailto:support@cloudwi.re?Subject=I%20Need%International%Long%Codes\" target=\"_top\">support</a>.  \n\nTell us the country you need and the projected volume.  It's a simple task to add both marketing and communication long codes to the SMS API from the country codes you wish to send messages too.\n\n## Alphanumeric Sender ID\nAlphanumeric Sender ID is not supported in the United States and Canada due to compliance concerns by the carriers.  Additionally, cloudwi.re does not support it outside of North America. \n\n# Understanding the Opt-In Process\nIn order to send recurring messaging to a mobile subscriber, the subscriber must be opted-in to a store to receive those messages.  The cloudwi.re SMS API is built to keep you compliant.  However, the developer may choose how they want to opt-in subscribers in the Send Opt-In method.  We highly recommend reading all compliance guides.\n\nAs a reminder, if you are sending alerts such as banking notifications or appointment reminders, you can contact us at <a href=\"mailto:support@cloudwi.re?Subject=Notifications%20anyone?\" target=\"_top\">support@cloudwi.re</a> to enable one-time alerts that do not require an opt-in confirmation.\n\nTo see flow charts of the opt-in/out process with or without keywords, click <a href=\"https://cloudwire.gelato.io/guides/categories/architecture-message-flow-diagrams\" target=\"_blank\">here.</a>\n\n## Single Opt-In (Handset Initiated)\nSingle opt-in does not require any additional actions by the mobile subscriber. The mobile subscriber receives a confirmation that they have opted-in to the store and the store can now send recurring messaging. The cloudwi.re SMS API automates single opt-in and delivers the opt-in confirmation template.\n\nA single opt-in can be generated in two ways.  First, the subscriber can send a mobile originated keyword to one of the marketing short codes.  If that keyword is designated as an opt-in keyword, an opt-in confirmation message will be delivered to the subscriber.  That compliant message flow and confirmation language will look like this:  \n\n<p style=\"margin-left: 60px;\">\n  <p=\"margin-right: 120px;\">\n<b>Subscriber Handset:</b> {Keyword}\n<br>\n<b>Short Code:</b> You Opted-in to {Store Name} {Program Name}!<br> Msg&Data rates may apply.  <br>{Message frequency}<br> Reply HELP for help, STOP to cancel.\n</p>\nThe “program name” should be a single word to define the kind of alerts, e.g. “Account Alerts,” “News Alerts,” “Coupons” etc.  \n\nThe message frequency must be specific, but can be any interval, for example: “1 msg/day,” “4 msgs/month,” “2 msgs/transaction,” etc. If the message frequency will vary based on user interaction, “1 msg/user request” is standard.\n\n## Single Opt-In (Non-Handset Initiated Via the SMS API)\nThe second way is via the API using Send Opt-In.  The flow is similar to what you just read above, except the subscriber did not initiate an opt-in keyword to the keyword short code.  The Send Opt-In method looks up the subscriber's current opt-in status.  If there is no previous subscriber status for the subscriber's mobile number then an opt-in confirmation message is fired to the subscriber and the subscriber's status is changed to opted-in.  Single opt-in via the API requires express written consent from the subscriber to be opted-in.  Except in instances where you capture express written consent, such as a paper form or in employment Agreements, cloudwi.re highly recommends using the double opt-in process.  Consult your Legal Advisors if you have questions.  \n\nIn both instances above, recurring messaging may now occur between the subscriber and the store. \n\n## Non-Handset Opt-in (Double Opt-in)\nSometimes referred to as two step opt-in, this opt-in method requires the consent of the mobile subscriber via an opt-in request message.\n\nWhen a user initially signs up by any means other than from a mobile handset, or when express written consent isn't available, a double opt-in process is required. In the Double opt-in, an opt-in request is sent to the subscriber.  The subscriber is now in pending status.  \n\nIn order to complete the opt-in process, the subscriber must take action and reply on their handset with a YES or Y to the opt-in request.  After that event takes place, an opt-in confirmation is sent, and the subscriber's status is updated to opted-in.  Recurring messaging can now occur between the subscriber and the store.  A compliant message flow and request/confirmation language will look like this:\n\n<p style=\"margin-left: 60px;\">\n  <p=\"margin-right: 60px;\">\n<b>Short Code:</b>{Store Name} {Program Name}. <br>Reply YES to opt-in. <br>Msg&data rates may apply.<br> {Message frequency} <br>Reply HELP for help, STOP to cancel.\n<br>    \n<b>Subscriber Handset:</b> Yes\n<br>\n<b>Short Code:</b> You Opted-in to {Store Name} {Program Name}!<br> Msg&Data rates may apply. <br> {Message frequency}<br> Reply HELP for help, STOP to cancel.\n</p>\nThe “program name” should be a single word to define the kind of alerts, e.g. “Account Alerts,” “News Alerts,” “Coupons” etc.  \n\nThe message frequency must be specific, but can be any interval, for example: “1 msg/day,” “4 msgs/month,” “2 msgs/transaction,” etc. If the message frequency will vary based on user interaction, “1 msg/user request” is standard.\n\n## Understanding Subscriber Opt-in Status\nThere are four subscriber status categories within the SMS API that are important to understand for recurring messaging.  \n\n### Opted-In\nA subscriber who is <i>opted-in</i> can receive recurring messaging from the store.  The subscriber can opt-in using an opt-in keyword, or can be opted-in via the SMS API via single or double opt-in.  In the double opt-in, a request is sent to the subscriber to opt-in.  The subscriber must reply YES or Y in order to complete the opt-in.\n\n### Opted-Out\nThe subscriber who is <i>opted-out</i> cannot receive recurring messaging from the store.  If a message is attempted to an opted-out subscriber using Send Message or Send Campaign, the SMS API will block that message and notify you asynchronously that the subscriber is not opted-in.  Additionally, an opted-out subscriber can only be opted-in again using double opt-in or by sending in an opt-in keyword belonging to the store.\n\nThe opted-out subscriber can opt back in using an opt-in keyword at any time.  They can also send Responder keywords.  However, if the subscriber is to be opted back in via the SMS API, Double opt-in is required.  The API will send a notification webhook when that event occurs, so you know what action to take.\n\n### Pending\nThe subscriber who is <i>pending</i> has received an opt-in request but has not replied YES or Y to it to complete the opt-in process.  If a message is attempted to a pending subscriber using Send Message or Send Campaign, the SMS API will block that message and notify you asynchronously that the subscriber is pending.  However, you may retry Send Opt-In (The Double Opt-in) again up to 3x to initiate a YES or Y response from the subscriber. After 3 attempts, the subscriber's status is updated to locked.  \n\nThe pending subscriber can opt-in using an opt-in keyword at any time.  They can also send Responder keywords.  \n\n### Locked\nThe subscriber who is <i>locked</i> has received an opt-in request from the store 3 times but has failed to reply YES or Y to the request and complete the opt-in process.  Additionally, the subscriber may reply NO or N to a double opt-in request which will also lock their status.  If a message is attempted to a locked subscriber using Send Message, Send Campaign or Send Opt-In, the SMS API will block that message and notify you asynchronously  that the subscriber is locked.  However, a locked subscriber can still initiate both opt-in and responder keywords to the SMS API.  Initiation of an opt-in keyword will opt the subscriber back in and remove the locked status.\n\nIn certain cases, a subscriber can get confused and accidentally lock themselves.  In that event, please <a href=\"mailto:support@cloudwi.re\" target=\"_top\">contact us</a> and we can help.  \n\n# Authentication-Concurrency-Security\nThe SMS API returns synchronous and asynchronous data in JSON only.\n\n## Authentication\nWhen signing up with cloudwi.re you'll establish an email address as your primary account ID username.  cloudwi.re will also issue you an <i>accountId</i> and JSON authentication token as well.  The token can be found in your administrative panel and is passed to the SMS API within the header of the request.  It is also available via API request which you'll find in the API reference. \n\n## Base URL\nThe cloudwi.re SMS REST API is served over HTTPS and available via the following base URL for each request.\n\n```javascript\nhttps://moonbeamapi.cloudwi.re\n```\n\n## Request Formatting\nAlthough not required, cloudwi.re advises you to set the following in the header of the request: \n\n```javascript\n--header 'accept: application/json' \\\n--header 'content-type: multipart/form-data; boundary=---011000010111000001101001' \\\n```\n\n## Token\nPass your token in the request header as follows:\n```javascript\nauthorization: Bearer Token\n```\n## Web Apps\nOur sample code only shows authentication being passed in the header.  However, for those of you building web apps that struggle with different browser issues related to passing authentication in the header, we do allow the token to be passed in the URL of the request.  No header required.  An example of how to pass the token in this instance is as follows:\n\n```javascript\nhttps://moonbeamapi.cloudwi.re/account/addstore?token=T0KENHERE\n```\n\n## Create a Store\nYou <b>MUST</b> create a store before you can send or receive any messages with a mobile subscriber!\n\n```javascript\ncurl --request POST \\\n  --url 'https://moonbeamapi.cloudwi.re/account/addstore' \\\n  --header 'accept: application/json' \\\n  --header 'authorization: Bearer SOME.JWT.TOKEN' \\\n  --header 'content-type: multipart/form-data; boundary=---011000010111000001101001' \\\n```\n\nAfter you create a store, a <i>storeId</i> will be issued to you.  In most calls to the SMS API the <i>storeId</i> will be required in the method parameters so that we know which store you wish to administrate.  You can now opt-in subscribers and send/receive messages.\n\n## Concurrency\nEach cloudwi.re account is limited to 100 concurrent requests per second.  If you exceed your concurrency limit, cloudwi.re will respond with a '429' fail code and drop the request.  You are free to retry it. \n\nConcurrency limits can be raised for large keyword campaigns. \n\n## USA based API Response Times\nResponse time averages vary due to the nature and payload return of the request, the location from where it is made and bandwidth speeds.  For read specific requests that involve finding one record, such as information on an individual subscriber or keyword, response times generally average 120-400ms.  Some read requests such as campaign delivery status or subscribers by store will pass 100 records per page and that will increase average response times to about 900-2000 ms.  \n\nFor write specific requests, such as sending messages or creating keywords, response times generally average 120-500ms.\n\nFor requests such as Send Campaign (The Batch Methods), which could have a sizable string, that response time will be increased depending on the amount of numbers and messages within the array.  Please keep the above in mind when setting time outs.  If you connect to the SMS API to deliver a campaign of 5k messages it's going to take a little bit for cloudwi.re to consume the request.  Plan accordingly. \n\n## Data and Payment Security\nWhen signing up for cloudwi.re, you'll note in the terms & conditions you read that we do not resell any data that is posted or received to our service.  Ok...ok....Just kidding!  We know you didn't read them!  But hey, who does?  You can here:    But it's important to us that you know this.  We're here to provide compliant short code messaging.  That's it.  The data that we maintain is only mobile numbers and their status.  Any additional data details are acquired from 3rd party vendors (Such as the intel methods) and are not stored by cloudwi.re.  We fire it to you and then forget it.\n\nPayment information is handled by a third party and is not stored by cloudwi.re under any circumstances.  Your payment information is passed on to our merchant vendor in exchange for a token to bill your account.  Our merchant vendor is PCI 1 compliant.  \n\n## Token Security\nYour AUTH token is required in every request to the API.  If it is compromised, or you believe it has been, you may request a new one in the Admin portal.  Make sure you update your services quickly with the new token.\n\n# Postman-Quick Start\ncloudwi.re does not provide an API playground for various spam concerns.  So we recommend Postman.  You probably know about it.  If you don't, get it at www.getpostman.com.  It's a rock solid tool for getting to know APIs.  After you download it, you can make live requests to the SMS API in under one minute.\n\nThe API collection is ready to go.  But in order to make the best use of Postman read up on creating an environment.  The SMS API collection will pull data from the environment in order to enable calls to the API.  You can read up on how to create an environment here: <a href=\"https://www.getpostman.com/docs/postman/environments_and_globals/manage_environments\">Creating Postman Environments</a>.\n\nFor ease of use, you will want to focus on these main keys and their values.  \n\nAuthorization<br>\naccountId<br>\nstoreId<br>\n\nOptionally, you can consider adding the following to make life a little easier:\n\nkeywordId<br>\nmobileId<br>\n\nIt will look as such below.  Just enter your token, account ID and your first Store ID.  Once done, you can then attempt to create a store and start learning the API from there.  Make sure you edit values where you don't see the curly braces like {{accountId}}<br>\n<center>![](http://crmtext.com/images/environment.png)</center>\n\nSome sample responses are withheld in our documentation due to ID exposure.\n\n## Most Common Methods\nThe cloudwi.re SMS API has its most popular methods.  We want to list them out for you for those whose patience level is somewhat challenging.  We're the same way so don't take it personally!\n\nIn order to send messages with cloudwi.re you must create a store under your account.  You can do this in the admin portal or via the API.  Go ahead and add your store.  Make sure you add an inbound message listening URL if you want to test 2-way messaging.  You can do that with:\n\nADD STORE\n\nTo enable 2-way communication between a subscriber's mobile device and your application, the subscriber must be opted-in to the store.  Go ahead and opt yourself in or out with:\n\nSEND OPT-IN<br>\nSEND OPT-OUT\n\nAfter opt-in, you'll want to send SMS or MMS. In the 2-way messaging environment, you'll want to use send message.  If you want to send bulk messages to many subscribers you'll want to use Send Campaign, which allows you to pass an array of mobile numbers with corresponding SMS, MMS messages.....or both.  You can also track the status of delivery for those messages.  \n\nSEND MESSAGE<br>\nSEND CAMPAIGN<br>\nGET MESSAGES STATUS<br>\nGET CAMPAIGN MESSAGE STATUS<br>\n\nFor keywords, you can create them on either marketing short code using Create Keyword.  If you create a responder keyword and want to manage the responses to them you can use Send Responder Keyword.  Since a responder keyword delivers content to a mobile subscriber REGARDLESS of opt-in status, cloudwi.re requires the Keyword ID to be passed with this particular method.  It's simply there for compliance purposes.  \n\nCREATE KEYWORD<br>\nSEND RESPONDER KEYWORD MESSAGE\n\n# Pre-Development Considerations\nFirst and foremost, when you get connected and set up an inbound message listener, please don't send \"Test\" as a message.  It can create all sorts of problems that require tickets up to the carrier level.  Let's move on!\n\n## Holy Crap I'm Confused.  What do I do?\nWe are here to help!  Listen, we didn't get to where we are by leaving our Clients to fend for themselves.  Talk to any of our Clients.  All of them.  They will all tell you we are easy to reach, and we'll walk you through your flow.  We get that our product can be a bit hard to grasp even for very smart people.  Don't hesitate to reach out to us with any questions.  We only ask that you come to us after reading the documentation.  Support is always free and we love to answer questions and talk about use cases :)\n\nOur products are architected for messaging.  Even if your questions are architectural, please don't hesitate.  We can walk you through how cloudwi.re is built so you can replicate and provide a solid base for high volumes of messages.\n\n## Prepare your webhooks\nAt cloudwi.re, we want to be fast.  To do so we process many requests asynchronously.  If your inbound message volume is going to be high, make sure you have a plan in place to balance large amounts of posts from the SMS API.  For now, we limit concurrent inbound webhook events to 50.  We will eventually increase that limit to 100 and possibly beyond.  So make sure you can handle it. <br><br>\nWe've been doing this for ten years.  We can help estimate what an inbound keyword campaign might generate so you can properly load test.  But if you are giving away 100 grand to the first person who texts your keyword at an NFL game, we suggest you do a lot of load testing.  There are plenty of SaaS tools out there that will allow you to dummy a cloudwi.re post and scale it.  <a href=\"https://www.loader.io\">Loader.IO</a>, and <a href=\"https://www.loadimpact.com\">Load Impact</a> are just a few.\n\nThe SMS API is tuned to deliver webhooks at 100 concurrent connections per second. Webhooks are queued up by cloudwi.re. In the event of failure, the queues will simply just keep retrying. So as traffic thins and you start consuming all of your posts you will not lose messages.\n\nHowever, if that failure is continuous, and then you fix it at 2 in the morning, that could result in your application responding to messages. So make sure you address notifications from cloudwi.re about webhook health as quickly as you can. We will only send you three webhook failure notifications. After that, it's on you.\n## Big Event with Big Traffic?\nReach out to us if you are doing keyword marketing at a sporting event.  We like to pre-prepare our infrastructure.  Send us an <a href=\"mailto:support@cloudwi.re?Subject=I'm%20going%20to%20blow%20up%20your%20server%20bill!\" target=\"_top\">email</a> with the date of the event.  We'll add some extra horsepower to make sure everything runs smooth instead of waiting for our auto-scale to kick in.  cloudwi.re is architected to take advantage of our short code bandwidth.  However, our aggregator has no limit on how many inbound messages will be sent to our service.  So a heads-up would be appreciated.  \n\n## Decision Trees or Advanced Logic\nThe same goes here.  cloudwi.re is a fire and forget system.  Our logic revolves around compliance and what keywords belong where.  If you are doing advanced logic via 2-way messaging and you expect heavy traffic, make sure you load test.  The subscriber expects quick responses from their keywords.  \n\n## Do you Need Multiple Stores?\nThat's really up to you.  cloudwi.re uses the store concept to essentially create opt-in buckets and take the opt-in logic out of the developer's hands.  If you are running a platform with multiple unrelated sub-accounts (A CRM is a good example) then it's probably a darn good idea.  If you run annual conferences for different industries, it's a good idea.\n\nHowever, If you are a singular standalone enterprise, then the only reason you might need more than one store is for Dev and UAT or maybe support versus marketing.  There is no cost for additional stores to developers.  \n\nWe are always happy to help you answer this question based on our experience.\n\n## Transaction, Store and Keyword IDs\nIt's important to have a plan to store the above IDs.  Transaction ID's will be used to retrieve message status updates.  Store IDs are used to tell cloudwi.re what store you are wanting to create messages or tasks for.  Keyword IDs are important for responder messaging and keyword deletion.\n\n## How to Send Us Messages\nThe API supports UTF-8 encoding.  But be careful with special characters.  You can feel free to send plain text or URL encode your message as well.  We will send that on to the carriers for delivery.  \n\nPlease take note that when sending individual messages as part of opt-ins, keyword responses, alerts, 2-way messaging or what not, please use the Send Message method.  Even during large sign-up campaigns, the chance of latency issues are very low.\n\nHowever, if you intend to send a bulk message campaign, please use one of the campaign methods.  They allow you to send campaigns to either all store subscribers or a sub-set with one call to the SMS API.  It creates less load on the API and allows us to properly throttle the messages to the available bandwidth.    \n\n## Timeouts\n3 Second timeouts are satisfactory for individual message requests or subscriber look ups.  Creating stores and changing store settings as well as keyword functions will also process quickly. \n\nHowever, cloudwi.re allows you to batch campaign requests of up to 5k mobile subscribers per batch.  If you are sending batch outbound message requests to cloudwi.re, the API connection will stay open much longer.  Due to network connectivity and other factors that go into cloudwi.re consuming a large set of data, please plan accordingly.  We're talking minutes!\n\nWith regards to larger read requests such as bulk subscriber lookups and campaign delivery reports, the API will generally process that information and return it to you in under 3 seconds.  However, those methods return 100 records per page and we'd recommend setting back to 10 seconds for those larger read requests.  If you are connecting to us from Diego Garcia, then you may want to consider doubling that!\n\n## Message Latency\nIt's important to note that during peak usage times message latency can occur due to bandwidth constraints.  In most cases message latency occurs on the upstream carriers end where every once in a while the queues stack up and get stuck.  Make sure you sign-up for <a href=\"at4armed.cloudwi.re\">cloudwi.re alerts</a> for those notifications.  \n\nMore important, if you are going to run a mobile originated keyword campaign at a large event like a Buckeye football game or a concert then you must prepare yourself or your Client for some mobile terminated latency back to the mobile subscriber.  Again, we are limited via bandwidth.  If a few thousand people hit a keyword within one minute, there will be a handful of seconds before they receive the response.  We can temporarily increase that bandwidth.  But please give cloudwi.re three week’s notice before your campaign is to kick off.  It isn't cheap either, so make sure your Client has the cash.\n\nWith regards to MMS, you will notice it isn't quite as snappy to get to your device as an SMS might be.  The difference is the payload.  Receiving an MMS a few seconds after you send one via the SMS API or the UI is perfectly normal.  It takes a little longer to push a 4MB payload through to the device and you can factor in your mobile signal to that equation.\n\n## These Short Codes Confuse Me\nThey confuse everyone.  So don’t worry about it and let us handle how we assign subscribers to stores.  You do not need to worry about what subscriber is binded to what code for what store.  We handle all of that logic.  \n\nThe only thing you need to remember is that when you get a keyword and want to market it, you will promote it on whichever marketing short code you registered it on, 345345 or 444999.\n\n<b>Text KEYWORD to 345345</b>\n<b>Text KEYWORD to 444999</b>\n\n## I Might Need My Own Short Code\nAlthough not a core part of our business, cloudwi.re can manage this process for you and host the code on our short code stack.  This allows enterprises to stay compliant without having to build in their own opt-in logic and have free range of keywords.  You can choose to have all communications go out only on your short code, or you can use your short code like we use our marketing short codes.  \n\nYou may choose to directly pay for hosting and lease fees or have cloudwi.re manage these for you.  cloudwi.re charges a one-time set-up fee of $1,000 to cover the costs of adding your short code to the SMS API short code stack.  There are no additional mark-ups thereafter.\n\n# What cloudwi.re Automates\nThe cloudwi.re SMS API manages additional tasks for the developer out of the box.  Some of these features can be disabled and managed by the developer and that is noted where applicable in the sections below.  Read on:\n\n## Automating Double Opt-in\nIf a developer chooses to send double opt-in, the subscriber will receive an opt-in request message and their status will be changed to pending.  Action must be taken by the subscriber to opt-in.  If the subscriber replies 'Y' or 'Yes' the cloudwi.re SMS API will change the subscriber's status to opted-in and deliver an opt-in confirmation message to the subscriber. \n\nAdditionally, if the subscriber replies 'N' or 'No' to the opt-in request, cloudwi.re will change the subscriber's status to locked and deliver an opt-out confirmation to the subscriber.\n\n## Blocking Single Opt-In to Opted-Out Subscribers\nIf a subscriber is in an opted-out state and you attempt to opt them back in using single opt-in, the attempt will be blocked.  Opted-out subscribers may only opt back in to your store via a handset initiated opted-in keyword or via double opt-in.\n\n## Blocking SMS to Non Opted-In Mobile Subscribers\nThe cloudwi.re SMS API will generally not allow text messages to non opted-in mobile subscribers except in very distinct circumstances like handset initiated responder keywords or compliance keywords.  \n\nIf your use case requires that you send messages to non opted-in mobile subscribers for alert or other notification use cases, contact <a href=\"mailto:support@cloudwi.re\">support</a>.\n\n## Handset Keyword Automation\n<b>Opt-In Keywords</b> <br>\nOut of the box, Opt-In keywords will opt a subscriber into the store the keyword is assigned too.  The SMS API will then reply automatically with the compliant store opt-in confirmation template.  No action is required by the developer and the subscriber's status will be updated to an opted-in state.  \n\nFor developers who wish to manage the replies themselves, the automation can be disabled.  We don't recommend it, but we do understand that some use cases require dynamic confirmation replies.  STAY COMPLIANT!<br><br>\n<b>Opt-out Keywords</b> <br>\nThe cloudwi.re SMS API will send the compliant opt-out template when we receive a STOP message from the mobile subscriber on the short code for which they are assigned to communicate with your store.  The subscriber will then be updated to an opted-out state.  \n\nSTOP replies cannot be managed dynamically and cloudwi.re will retain automation rights to this keyword type.  However, the template can be edited.<br><br>\n<b>Responder Keywords</b><br>\nResponder keywords can be automated as well if you want to be lazy.  And feel free!  We built this so you could be.  When you create a responder keyword you can then edit its content.  Once done, cloudwi.re will respond to the initiated responder keyword automatically.  However, if you don't store content for the keyword inside of cloudwi.re, you are responsible for managing the replies.<br><br>\n<b>Help Keyword</b><br>\nThe cloudwi.re SMS API will send the compliant help template to the mobile subscriber. The help template includes the program name, how to opt-out and so on.  HELP replies cannot be managed dynamically and cloudwi.re will retain automation rights to this keyword type.  However, the template can be edited.<br><br>\n<b>Already Opted-in Alert</b><br>\nBy default the cloudwi.re SMS API generates a template that notifies the subscriber they are already opted-in if they attempt to opt-in again. For example, let’s say your store keyword is PIZZA and the store name is Jim’s Pizza. \n\nIf a mobile subscriber is opted-in to PIZZA and sends any keyword belonging to Jim's Pizza again 5 months later, the cloudwi.re SMS API will generate a message stating, “You are already opted-in to John’s Pizza.”  This automation is turned on by default but can be disabled or edited in the store resource.\n\n## Inbound Messages Webhook Push (Mobile Originated) \nIf you set a callback URL for your store the cloudwi.re SMS API will post all inbound message traffic to it.  We allow one callback URL per store. What we push to this URL is further down in the docs.  \n\n## Notifications URL Webhook Push\ncloudwi.re will update some requests asynchronously to your notification URL.  Those include messages sent to an opted-out subscriber or notifications that certain jobs have completed off the queue like store deletion.  We allow one notification URL per store. What we push to this URL is further down in the docs.  \n\n## Unsupported Carrier Short Code SMS\nIn the event that cloudwi.re detects a send attempt to a mobile number on a carrier that does not support short codes, the SMS API will assign and send the message on a long code.  The subscriber will be binded to that long code for the life of the opt-in or whenever they port to a short code supported carrier.  In the latter event, messages will resume on the assigned short code.\n\n## Long Code on Short Code Fail or Undelivered\nUnder certain error conditions, cloudwi.re will fire a failed short code message on a long code.  This event normally occurs after receiving 30005 or 30008 errors on a short code attempt.  Other errors may be added as delivery reporting from the carriers becomes more accurate.  \n\n## Unsupported Carrier MMS\nIn the event that cloudwi.re notes an MMS slated for delivery to a carrier that does not support MMS, the SMS API will convert your MMS into a URL and deliver it as or inside an SMS, linked to the media you sent.  \n\n## UCS2 to GSM Encoding\nTo prevent your message segment counts from slipping down to 70 characters, cloudwi.re will convert UCS2 characters to GSM to keep you at 160 character segments.  It doesn't always work, so plan accordingly and try and get in the habit of checking encoding before you fire any campaigns.  \n\n## Country Origin of Number\ncloudwi.re will take any mobile number that you opt-in and select a local long code to send it on if outside the United States where available.  If not, cloudwi.re will send on a global enabled USA long code.  \n\n# Mobile Intelligence\ncloudwi.re strives to provide brands & enterprises additional insights to their subscriber base.  Whether you are running transactional 2-way message applications or running inbound keyword campaigns, cloudwi.re provides tools to help you gain an intelligence advantage to better service and sell your customers.  \n\n## Carrier Intel (Pay Per Request)\nA carrier lookup is provided in the Intelligence resource.  The lookup covers North American mobile and landline numbers.  Most international numbers can be looked up with this tool as well.  The returned payload includes the line type and carrier.  You may choose to scrub your existing list, or you can do lookups to ensure high MMS delivery probability.  \n\nEach lookup is billed at $.005 cents per successful request.  Sample Payload:\n```json\n{\n  \"status\": \"pass\",\n  \"code\": 200,\n  \"message\": \"Subscriber Intel\",\n  \"results\": {\n    \"_id\": {\n      \"$id\": \"585066f9d16a1047278\"\n    },\n    \"caller_name\": null,\n    \"country_code\": \"US\",\n    \"phone_number\": \"+19994449999\",\n    \"national_format\": \"(999) 444-9999\",\n    \"carrier\": {\n      \"mobile_country_code\": \"310\",\n      \"mobile_network_code\": \"150\",\n      \"name\": \"AT&T Wireless\",\n      \"type\": \"mobile\",\n      \"error_code\": null\n    },\n    \"type\": \"carrier\",\n    \"mCreate\": {\n      \"sec\": 1481621049,\n      \"usec\": 0\n    }\n  }\n}\n```\n\n## E.164 Intel (Free Per Request)\ncloudwi.re can help validate your collected phone numbers for country of origin lookup and the validity of the E.164 format to which your data is housed.  You are free to use this method to check your data for valid numbers and what country they belong too.  Line type is provided in this method, but it is not accurate.  It’s passed on as a courtesy.  For accurate line type, please use the Carrier Intel method.  \n\n## Number Reputation Intel (Pay Per Request)\nFor developers running commerce applications, cloudwi.re can assist with checking telephone numbers for potentials spam or fraud history and scoring the number based on risk.  Thus, allowing businesses to make more informed selling decisions to prevent fraud.  High risk numbers will be reported with the risk type associated with them.  Numbers are scored on a scale of 1-4 with 4 being the highest risk.  \n\nEach lookup is billed at $.009 cents per successful request.  Sample Payload:\n\n```json\n{\n  \"status\": \"pass\",\n  \"code\": 200,\n  \"message\": \"Reputation Intel\",\n  \"results\": {\n    \"_id\": {\n      \"$id\": \"589dd287d16a10f970199420\"\n    },\n    \"caller_name\": \"foo\",\n    \"country_code\": \"US\",\n    \"phone_number\": \"+19994448888\",\n    \"national_format\": \"(999) 444-8888\",\n    \"carrier\": \"foo\",\n    \"add_ons\": {\n      \"status\": \"successful\",\n      \"message\": \"foo\",\n      \"code\": \"foo\",\n      \"results\": {\n        \"whitepages_pro_phone_rep\": {\n          \"request_sid\": \"XRecbc0f4586d35f33bac46c831e0cb335\",\n          \"status\": \"successful\",\n          \"message\": \"foo\",\n          \"code\": \"foo\",\n          \"result\": {\n            \"results\": [\n              {\n                \"phone_number\": \"9994448888\",\n                \"reputation\": {\n                  \"level\": 1,\n                  \"details\": [\n                    {\n                      \"score\": 4,\n                      \"type\": \"Risk\",\n                      \"category\": \"Voip Scam\"\n                    }\n                  ],\n                  \"volume_score\": 1,\n                  \"report_count\": 1\n                }\n              }\n            ],\n            \"messages\": [\n              \"foo\",\n              \"foo\",\n              \"foo\"\n            ]\n          }\n        }\n      }\n    },\n    \"mCreate\": {\n      \"sec\": 1486694855,\n      \"usec\": 0\n    }\n  }\n}\n```\n\n# Understanding Message Delivery Status\nFor message status, the cloudwi.re SMS API allows polling of message IDs to retrieve the delivery status of Single Messaging class messages (Remember, those simple 1-to-1 messages like opt-ins, or regular outbound messaging in the single message class).  We recommend setting a timer of at least 5 seconds after you send a message to poll its status.  This allows the carriers to properly notify us of the correct message status. There are sometimes up to six updates to the delivery status.  The SMS API will return an Array of all status updates and their time stamps as it is.\n\nTo accomodate for any high volume or carrier lag, cloudwi.re will respond with a 200 and a message noting that your message is still queued and awaiting a carrier update.\n\n## Campaigns\nA note about campaigns.  We don't want to bomb your webhooks.  Because of that, cloudwi.re utilizes a different method to retrieve message status for the Campaign Messaging Class.  It's a GET and you can page through your delivery results.  \n\n## Accuracy of Delivery Reporting\nIt's important to note that the reporting received from the carriers is not always accurate.  Although rare, instances of delivery confirmed messages not arriving at the destination handset do occur.  Unfortunately, there is no real action that you can take other than advising that the handset be hard reset and then try again.\n\nOne thing we have seen with frequency is that subscribers toe the line in available memory to the mobile device.  If the device has no memory available, messages cannot be received.  \n\n## Status Descriptions\nBelow are the status descriptions and what they mean when received in a Get Message Status request. \n\n<table>\n<tr>\n<td><b>Status</b></td>\n<td ><b>Description</b></td>\n</tr>\n<tr>\n<td>Delivered</td>\n<td>cloudwi.re has received confirmation from the carrier, and in some cases the device, that the message has been delivered.</td>\n</tr>\n<td>Failed</td>\n<td>The upstream provider did not accept the message and hence delivery fails.</td>\n</tr>\n<tr>\n<td>Queued</td>\n<td>The message is queued at the AGGREGATOR level to be delivered to the mobile subscriber.</td>\n</tr>\n<tr>\n<td>Sent</td>\n<td>Once the nearest upstream carrier has accepted the message for delivery to the SMS network, the status is updated to sent.  This status is not a delivery receipt.  The carrier is merely telling us they sent it.</td>\n</tr>\n<tr>\n<td>Undelivered</td>\n<td>We received notice indicating that the message was not delivered. This can happen for a number of reasons including carrier content filtering, availability of the destination handset, etc.</td>\n</tr>\n</table>\n\nThe following message delivery error codes will be the most common seen by the developer in the cloudwi.re platform when retrieving delivery status.  It's important to note that some of these errors will not be received from short code attempts. Regardless, receiving one of these errors means that the subscriber did not receive your message.  A sample return body of a Get Message Status request can be found in the <a href=\"https://cloudwire.gelato.io/docs/versions/moonbeam/resources/messaging\">message resource</a>. \n\n<table>\n<tr>\n<td><b>Error Code</b></td>\n<td ><b>Possible Causes</b></td>\n</tr>\n<tr>\n<td>30003</td>\n<td>Unreachable Destination Handset - The destination handset you are trying to reach is switched off or otherwise unavailable.</td>\n</tr>\n<tr>\n<td>30004</td>\n<td>Message Blocked - The destination number you are trying to reach is blocked from receiving this message (ex. due to blacklisting).</td>\n</tr>\n<tr>\n<td>30005</td>\n<td>Unknown Destination Handset - The destination number you are trying to reach is unknown and may no longer exist.</td>\n</tr>\n<tr>\n<td>30006</td>\n<td>Landline or Unreachable Carrier - The destination number is unable to receive this message. Potential reasons could include trying to reach a landline or, in the case of short codes, an unreachable carrier.</td>\n</tr>\n<tr>\n<td>30007</td>\n<td>Carrier Violation - Your message was flagged as objectionable by the carrier. In order to protect their subscribers, many carriers have implemented content or spam filtering.  This error will only appear on outbound long code traffic</td>\n</tr>\n<tr>\n<td>30008</td>\n<td>Unknown Error - Delivery of your message failed for unknown reasons.</td>\n</tr>\n<tr>\n<td>11751</td>\n<td>Media Exceeds Mobile Operator Limit - The specified message media exceeds the maximum size limit for that number's mobile operator.</td>\n</tr>\n<tr>\n<td>21614</td>\n<td>'To' number is not a valid mobile number - Not a valid formatted number.  Sometimes occurs when messaging a landline.</td>\n</tr>\n</table>\n\n# Common API Errors\n\n## Common Synchronous Errors\nThe following errors can be triggered when calling any method to the SMS API.  In almost all circumstances, cloudwi.re will pass a status of FAIL and error code of 400 or 401 with any error.  cloudwi.re will also pass a detailed message of why your request failed.  \n\nMethod specific errors are listed in the API Method documentation further below.\n\n<table>\n<tr>\n<td><b>Error</b></td>\n<td><b>Error Code</b></td>\n<td><b>Action Message</b></td>\n</tr>\n<tr>\n<td>Account Suspension</td>\n<td>401</td>\n<td>Account Disabled due to lack of credit, spam concerns or improper content. Please contact support@cloudwi.re.\n</td>\n</tr>\n<tr>\n<td>Invalid API Key</td>\n<td>401</td>\n<td>Invalid API Key:  cloudwi.re does not recognize your API key or Account ID.  Login to https://gofasters.cloudwi.re to check your API key and Account ID.</td>\n</tr>\n<tr>\n<td>Blocked IP Address</td>\n<td>401</td>\n<td>Unrecognizable IP Address:  Your IP address has been flagged for troublemaking.  Please contact support@cloudwi.re.\n</td>\n<tr>\n<td>Invalid Method</td>\n<td>400</td>\n<td>Invalid Method:  Please check to make sure you are sending proper parameters and values.  Please review the developer reference for help:  https://cloudwire.gelato.io/reference/docs</td>\n</tr>\n<tr>\n<td>Invalid Store ID</td>\n<td>400</td>\n<td>Invalid Store ID:  Please check and try again or login to https://portal.cloudwi.re to check your store IDs. \n</td>\n<tr>\n<td>Request Limit Exceeded</td>\n<td>429</td>\n<td>The account is exceeding the allowable requests per second threshold.  Dial it down Captain! But feel free to retry your request.</td>\n</tr>\n</table>\n\n## Sample Payload\n```json\n{\n  \"status\": \"fail\",\n  \"code\": 400,\n  \"message\": \"The keyword is not available on the requested short code. Either check availability on another short code or brainstorm a new one.\",\n  \"results\": []\n}\n```\n\n# Webhook Error-Job Notifications\n## Asynchronous Errors\nReceiving an error to your notification URL means that a message you are attempting did not pass compliance checks and was blocked by cloudwi.re.  A status of 'fail' will be included in the post body.  The errors are duplicated when you retrieve your message status via Get Status.  Additionally, some job completion alerts are forwarded to this URL as well.  \n\nIt's important to note, that message delivery errors are not posted to your notification URL.  Those can only be retrieved via Get Status.\n\nThe SMS API will deliver notifications to your notification URL in multipart/form-data.  Additionally, cloudwi.re expects a 200 passed back to it in the header once your service has completed the handshake. \n\n\n## Possible Errors with Send Opt-In (Single)\n<table>\n<tr>\n<td><b>Notification Message</b></td>\n<td><b>Reason</b></td>\n</tr>\n<tr>\n</tr>\n<td>The subscriber is already opted-in. No opt-in message was sent because it is not required.</td>\n<td>When attempting to use method Send Opt-In (single or double) to a subscriber who is already opted-in.  The subscriber is already opted-in to the store and no opt-in message is required so it was blocked by cloudwi.re</td>\n</tr>\n<tr>\n<td>The subscriber is in pending status and must reply Yes from the double opt-in request before you may send a message.</td>\n<td>The subscriber is pending from a double opt-in request and cannot be opted-in via single opt-in until they reply Yes or Y from the double opt-in request.</td>\n</tr>\n<tr>\n<td>No opt-in message was sent. The subscriber is in opted-out status and be must opted-in via double opt-in to resume messaging.</td>\n<td>When attempting single opt-in to an opted-out subscriber. If a subscriber has opted-out of your store, double opt-in of that subscriber is required.</td>\n</tr>\n<tr>\n</tr>\n<td>The subscriber is locked for too many double opt-in attempts or a NO response from a double opt-in request. No message was attempted. The subscriber must send an opt-in keyword to opt-in.</td>\n<td>The subscriber is in a locked status and cannot receive messages.  They must use an opt-in keyword to opt-in.  On rare occasions, this event can be triggered by a confused subscriber and can be rectified by cloudwi.re. <a href=\"mailto:support@cloudwi.re\">Contact us</a> for help if it arises.</td>\n</tr>\n<tr>\n</table>\n\n## Possible Errors with Send Opt-In (Double)\n\n<table>\n<tr>\n<td><b>Notification Message</b></td>\n<td><b>Reason</b></td>\n</tr>\n<tr>\n</tr>\n<td>The subscriber is already opted-in. No opt-in message was sent because it is not required.</td>\n<td>When attempting to use method Send Opt-In (single or double) to a subscriber who is already opted-in.  The subscriber is already opted-in to the store and no opt-in message is required so it was by cloudwi.re</td>\n</tr>\n<tr>\n</tr>\n<td>The subscriber is locked for too many double opt-in attempts or a NO response from a double opt-in request. No message was attempted. The subscriber must send an opt-in keyword to opt-in.</td>\n<td>The subscriber is in a locked status and cannot receive opt-in messages.  They must send an opt-in keyword that belongs to the store to opt-in.  On rare occasions, this event can be triggered by a confused subscriber and can be rectified by cloudwi.re.  <a href=\"mailto:support@cloudwi.re\">Contact us</a> for help if it arises.</td>\n</tr>\n<tr>\n</table>\n\n## Possible Errors with Send Message & Send Campaign\n<table>\n<tr>\n<td><b>Notification Message</b></td>\n<td><b>Reason</b></td>\n</tr>\n<tr>\n</tr>\n<td>The subscriber is currently in Opted-Out status. Reference: https://cloudwire.gelato.io/docs/versions/moonbeam/data-posted-to-your-notification-url</td>\n<td>The subscriber is opted-out and cannot receive messages from Send Message or Send Campaign.  Double opt-in is required via Send Opt-In to opt-in the subscriber to recurring messaging.</td>\n</tr>\n<tr>\n</tr>\n<td>The subscriber is currently in Pending status. Reference: https://cloudwire.gelato.io/docs/versions/moonbeam/data-posted-to-your-notification-url</td>\n<td>The subscriber is pending from a double opt-in request and cannot receive messages from Send Message or Send Campaign until they reply Yes or Y from the double opt-in request.</td>\n</tr>\n<tr>\n<td>The subscriber is currently in Locked status. Reference: https://cloudwire.gelato.io/docs/versions/moonbeam/data-posted-to-your-notification-url</td>\n<td>The subscriber is in a locked status and cannot receive recurring messages from Send Message or Send Campaign.  They must send an opt-in keyword that belongs to the store to opt-in.  On rare occasions, this event can be triggered by a confused subscriber and can be rectified by cloudwi.re.  <a href=\"mailto:support@cloudwi.re\">Contact us</a> for help if it arises.</td>\n<tr>\n</tr>\n<td>Invalid URL: Your URL appears to be malformed. Only valid URLs beginning with HTTP:// or HTTPS:// are accepted.</td>\n<td>This error is unique to Send Campaign.  Since an array of mobile numbers are passed in a campaign, media URLs are not checked at the request level.  If a bad media URL is received in the campaign this notification will fire.</td>\n</tr>\n<tr>\n</table>\n\n## Asynchronous Updates\nThe SMS API sends two updates.  One is when double opt-in is attempted to an opted-out subscriber.  The other is for when a store deletion job is completed.\n<table>\n<tr>\n<td><b>Notification Message</b></td>\n<td><b>Reason</b></td>\n</tr>\n<tr>\n</tr>\n<td>The subscriber was sent an opt-in request. Subscriber status is pending.</td>\n<td>A friendly reminder to let you know that a double opt-in attempt to an opted-out subscriber has passed compliance checks and the message was attempted.</td>\n</tr>\n<tr>\n</tr>\n<td>The store, and its keywords and subscribers, have been removed.</td>\n<td>cloudwi.re S@#t canned the store and everything in it to the digital abyss.</td>\n</tr>\n<tr>\n</table>\n\n## Post Parameters\nThe post parameters and description of the post to your notification URL are as follows:\n\n<table>\n<tr>\n<td><b>Parameter</b></td>\n<td><b>Description</b></td>\n</tr>\n<tr>\n<td>Details</td>\n<td>This is a JSON array that includes the mobile ID, transaction ID, store ID, creation date for the message and subscriber's opt-in status.</td>\n</tr>\n<tr>\n<td>message</td>\n<td>The reason your request passed or failed.</td>\n</tr>\n<tr>\n<tr>\n<td>messageId</td>\n<td>The ID of the message.</td>\n</tr>\n<tr>\n<td>status</td>\n<td>A pass or fail.  Any fail code for status means that the SMS API has blocked your message for one of the reasons above.</td>\n</tr>\n<tr>\n<td>storeId</td>\n<td>The store ID of the store you made the request with.</td>\n</tr>\n<tr>\n<td>subscriberStatus</td>\n<td>The opt-in status of the subscriber.</td>\n</tr>\n</table>\n\n# Inbound Message Data\n\n## How cloudwi.re Send Notifications\ncloudwi.re makes HTTP requests to your application just like a regular web browser. By including parameters and values in its requests, cloudwi.re sends inbound messages, errors and job data to your application. You can configure the URL cloudwi.re uses to make its requests via your account portal or using the SMS API.\n\nThe SMS API will deliver notifications to your notification URL in multipart/form-data.  Additionally, cloudwi.re expects a 200 passed back to it in the header once your service has completed the handshake.  If you are responding to messaging dynamically and you notice latency, contact us.  We log the webhook start and end time and can help troubleshoot.\n\n## For Those of You Developing Keyword Applications\nIf you are going to use keywords extensively, take note of a few things when working with the inbound messages.  This note only applies to a scenario where one store has multiple keywords  \n\nIf a subscriber opts-in to a store via an opt-in keyword, cloudwi.re will pass that keyword and keyword ID every time the subscriber sends the store a text,  except when the subscriber uses a responder keyword.  \n\nThat means if the subscriber sends in another opt-in keyword after opting-in, cloudwi.re will still tell the developer which keyword the subscriber originally opted-in on.  If you plan to house multiple opt-in keywords then you'll want to work your development around the message body parameter instead of the keyword parameter.\n\nIf you intend to dynamically respond to responder keywords, cloudwi.re will always pass the responder keyword ID for the keyword the subscriber sent in.  You'll want to capture the keyword and the keyword ID parameters in order to send your one-time response to the subscriber.  \n\nWe will eventually update the listener to better account for subscribers that may be using multiple keywords inside of one store.  \n\n## Inbound Messages\nInbound messages from the mobile subscriber to the store are posted in real-time.  We will post any and all messages that belong to the store.  It will include MO SMS and MMS from your opted-in subscribers, opt-in and responder keywords and lastly, opt-out and help requests.\n\nThe following data is posted to your inbound message callback URL when a subscriber initiates a message from their device to your store.\n\nUpdates posted to the inbound message URL deliver in multipart/form-data. \n\n<table >\n<tr>\n<td><b>Parameter</b></td>\n<td><b>Sample Value</b></td>\n<td><b>Description</b></td>\n</tr>\n<tr>\n<td>accountId</td>\n<td>9923fefdb6d16a105c4708ad9b</td>\n<td>Your account ID number.</td>\n</tr>\n<tr>\n<td>accountName</td>\n<td>Jim's Pizzeria Parlors</td>\n<td>Your account name.</td>\n</tr>\n<tr>\n<td>commChannel</td>\n<td>+24411</td>\n<td>If Applicable. The short/long code the subscriber is binded to the store with for 2-way guaranteed messaging.  This field will only be populated when the subscriber is opted-in and sending either opt-in, stop or help keywords or regular 2-way messaging.  Responder keywords do not look up the opt-in status of the subscriber and will not display a comm channel.</td>\n</tr>\n<tr>\n<td>created</td>\n<td>03-22-2016 12:31:43</td>\n<td>If Applicable:  The very first date and time that the subscriber was opted-in to the store....even if they opt-out and opt back in.  MM/DD/YYYY H:M:S:MS Format.  All times are GMT.</td>\n</tr>\n<tr>\n<td>from</td>\n<td>+19993338888</td>\n<td>The mobile phone number of the subscriber that sent the message.</td>\n</tr>\n<tr>\n<td>fromCountry</td>\n<td>US</td>\n<td>If Applicable:  The mobile subscriber's country.  NOTE:  This does not reflect their current location.</td>\n</tr>\n<tr>\n<td>fromState</td>\n<td>CA</td>\n<td>If Applicable:  The mobile subscriber's registered State.  NOTE:  This does not reflect their current location.</td>\n</tr>\n<tr>\n<td>fromCity</td>\n<td>Brisbane</td>\n<td>If Applicable:  The mobile subscriber's Registered City.  NOTE:  This does not reflect their current location.</td>\n</tr>\n<tr>\n<td>fromZip</td>\n<td>94321</td>\n<td>If Applicable:  The mobile subscriber's Registered Zip Code.  NOTE:  This does not reflect their current location.</td>\n</tr>\n<tr>\n<td>keyword</td>\n<td>PIZZA</td>\n<td>If Applicable:  This field will populate the opt-in keyword that the subscriber first uses to opt-in.  It will be displayed for 2-way messaging and compliance keywords as well.  However, If a responder keyword is sent, it will display the keyword the subscriber utilized.</td>\n</tr><tr>\n<td>keywordId</td>\n<td>432983498234a9823dd928398239823ad32c</td>\n<td>If Applicable:  This will report the ID of responder keyword that is utilized.  If no responder keyword is present in the inbound message this body will report the opt-in keyword ID the subscriber used to opt-in....even if they opt-out and opt back in using a different opt-in keyword this data is stored as the very first opt-in keyword interaction with the subscriber.</td>\n</tr>\n<tr>\n<td>keywordType</td>\n<td>responder</td>\n<td>If Applicable:  If a responder keyword is present the keyword type will be responder.  If the subscriber utilized an opt-in, stop or help keyword, it will be populated with opt-in.</td>\n</tr>\n<tr>\n<td>mediaUrl</td>\n<td>https:\\/\\/api.twilio.com\\/2010-04-01\\/Accounts\\/ACff9c</td>\n<td>If Applicable.  The media URL of the media the subscriber sent to the store.</td>\n</tr>\n<tr>\n<td>messageBody</td>\n<td>Pizza 123</td>\n<td>If Applicable.  The inbound message body from the subscriber.</td>\n</tr>\n<tr>\n<td>messageCharcount</td>\n<td>9</td>\n<td>If Applicable:  The character count of the message.  Blank if only an MMS is sent.</td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>MM3923lke232323993988409349283981c239m</td>\n<td>The unique message ID of the message.</td>\n</tr>\n<tr>\n<td>numMedia</td>\n<td>1</td>\n<td>If Applicable. The number of media URLs.</b></td>\n</tr>\n<tr>\n<td>numSegments</td>\n<td>1</td>\n<td>If Applicable.  The number of 160 character segments of the message.  Blank if only an MMS is sent.</b></td>\n</tr>\n<tr>\n<td>optInAttempts</td>\n<td>1</td>\n<td>The number of times double opt-in has been attempted before the subscriber replied Yes to an opt-in request.</b></td>\n</tr>\n<tr>\n<td>received</td>\n<td>11/30/2016 04:50:15</td>\n<td>The date and time the message was received.  MM/DD/YYYY H:M:S:MS Format.  All times are GMT.</td>\n</tr>\n<tr>\n<td>score</td>\n<td>0.78249</td>\n<td>The message sentiment score on a scale of -1-1 provided by IBM Watson. +1 being the most positive.</b></td>\n</tr>\n<tr>\n<td>shortCode</td>\n<td>+345345</td>\n<td>If Applicable.  For a responder keyword, this value will populate with the short code the subscriber sent the responder keyword on.  For opt-in keywords it will report the keyword the subscriber first used on their very first opt-in interaction with the store....even if they opt-out and opt back in using a different keyword this data is stored as the very first opt-in keyword interaction with the subscriber.</td>\n</tr>\n<tr>\n<td>storeId</td>\n<td>ca3121d16a10e24608ad9a</td>\n<td>The store ID of the store the message is belongs to.</td>\n</tr>\n<tr>\n<td>storeName</td>\n<td>Jim's Pizza</td>\n<td>The name of the store the message is belongs to.</td>\n</tr>\n<tr>\n<td >subscriberStatus</td>\n<td>opted-In</td>\n<td>The subscriber's opt-in status, (Exp: opted-in, opted-out, pending or blank if there is no status)</td>\n</tr>\n<tr>\n<td >type</td>\n<td>Positive</td>\n<td>The overall sentiment of the inbound message from the subscriber provided by IBM Watson.  Either positive, neutral or negative.</b></td>\n</tr>\n</table>\n\n# Supported Media\n\n### Accepted URLs\nIn order to send MMS on cloudwi.re, your URL must begin with http:// or https://.  URLs containing www. will be rejected by our aggregator.  Make sure you test your URLs internally before sending media to subscribers.\n\nTo send MMS on the cloudwi.re SMS API you will be passing a URL in the parameters where allowed.  If a media type, or incorrect URL is posted that is not in this list below, cloudwi.re will reject it.  For example, a typical mediaUrl you may pass to the SMS API would look something like:  http://cloudwi.re/image/1234.png\n\nThe cloudwi.re admin console will not host images for you.  You must host the images on your side.  There are plenty of <a href=\"http://tinypic.com/\" target=\"_blank\">free image hosting</a> options out there to upload your image and generate a URL to pass as mediaUrl to the SMS API.  \n\n## Supported Media\n\nThe following types of content are fully supported by cloudwi.re. This content will be formatted by the carriers for delivery on destination devices.  Payloads up to 5 MB are accepted.  Keep in mind that the payload max remains 5 MB even if you include an SMS with your MMS.  Plan accordingly.  \n\n * image/jpeg\n * image/gif (Animate Gifs are supported)\n * image/png\n\n\n## Accepted Media\nThe cloudwi.re SMS API will accept and attempt to deliver the following media formats.  However, this media is not reformatted for delivery.  Unfortunately, cloudwi.re has only seen message sizes of 455 KB for the media types below consistently get delivered on all four carriers.  It is not a very significant amount of size to get a point across.\n\nWe do hope that changes soon, but make sure you have a plan to test any audio/video on multiple carriers for delivery.  cloudwi.re maintains test devices on all of the big four carriers.  We are happy to help you test.  Just <a href=\"mailto:support@cloudwi.re?Subject=I%20Want%20To%20Send%20Some%20Funky%20MMS\" target=\"_top\">email us</a>!\n\n * video/mpeg\n * video/mp4\n * audio/mp4\n * audio/mpeg\n \n# Testing Troubleshooting\n\n## API Connection Issues\n<ul>\n<li>Your firewall ports can interfere with connectivity to the SMS API.  The API operates on port 443.  Make sure you can access that port number through your firewall.</li>\n<li>You did not update your IP addresses in the security portion of the admin portal.  Tell cloudwi.re the IP addresses you'll be communicating with us from and we can be friends.</li>\n<li>You get invalid key or store ID errors.  Make sure your key and store IDs are correct.  You can login to the portal to check them.  Don't hesitate to contact us if you can't figure it out at <a href=\"mailto:support@cloudwi.re\">support@cloudwi.re</a> Postman is a wonderful resource to test authentication with.</li>\n</ul>\n\n#### Your Test or Subscriber's Number(s) Never Gets or Stops Getting Messages<br><br>\n\n<ul>\n<li>Some carriers, like Sprint have legacy plans that block standard rate short code messaging.  T-Mobile does this as well, but it is not as prevalent.  Try a friend’s number on another network and see if that clears your problem.  If your friend's phone works, call your provider or go to one their stores and request that you receive text messages from short codes.</li>\n<li>Make sure you didn’t opt-out, get locked or are in pending status.  You can check this with <a href=\"https://cloudwire.gelato.io/docs/versions/427198918690866548/resources/subscriber-management/endpoints/list-subscriber-managements-8ad09376-df59-4871-a349-a193367f42c0\">Get Subscriber Status</a> in the Reporting Resource.</li>\n<li>The carriers monitor their networks very closely and constant opt-ins/outs of the same mobile phone number carries red flags and sometimes results in your number being locked down from receiving short code messages.  Try sending START to the short code you were communicating with your store on, for example, START to 24411.  If that doesn’t alleviate the issue contact us at <a href=\"mailto:support@cloudwi.re\">support@cloudwi.re</a>.</li>\n<li>The cloudwi.re SMS API only allows one mobile number to be opted-in to 13 stores.  Opt-out out of your test stores by replying STOP to the codes you are  binded to them with.  If you have forgotten all the codes you are binded to no big deal.  We can manually remove you from all stores.  Just hit us up at <a href=\"mailto:support@cloudwi.re?Subject=Clear%20My%20Number\" target=\"_top\">support@cloudwi.re</a></li>\n<li>If there are no carrier issues and you did everything right, cloudwi.re has noted that sometimes a hard reset of the device or clearing some device memory will do the trick.</li>\n</ul>   \n\n#### Messages Don't Deliver to Any Test Device</u></b>\n\n<ul>\n<li>The most likely issue is that you are calling the cloudwi.re SMS API with a phone number that is not formatted properly.  Make sure you are calling the API with the country code and mobile number only.  Example:  '19995553333'</li>\n</ul>\n\n#### Your Webhook Does Not Receive cloudwi.re Posts\n\n<ul>\n<li>TTest internally for timeouts. If we receive errors we will notify you via the email address on file for each account and we'll queue up the webhooks. cloudwi.re provides an API call to retrieve message history if you need it.</li>\n<li>Make sure you have whitelisted our IP addresses which you can find in the admin portal.</li>\n<li>http://runscope.com is an excellent resource for checking and troubleshooting webhook health.  \n<li>If problems persist, email us at <a href=\"mailto:support@cloudwi.re\">support@cloudwi.re</a></li>\n</ul>\n\n#### Message Display Issues\n\nTesting messages and how they display is an important part of your development process.  Some issues you may see below.  Some of them, due to different carrier transcription processes, can be super difficult to control.  Much of this is covered in our <a href=\"https://cloudwire.gelato.io/guides/carriers-behave-differently-read-it\">carrier guide</a>.  \n<ul>\n<li>Sending special characters can have different effects on different carriers.  Sprint will be your primary culprit.  Tread carefully and make sure you test.  If you need assistance, we are an email away.</li>\n<li>Removing HTTP://, HTTPS:// or www. from a URL when sending it will make the link unclickable on some devices when embedding them in an SMS.  If you are going to send URLs inside an SMS make sure you include the complete link.  Example:  Click here for your coupon!  https://cloudwi.re/coupon.  Sure, it doesn't look a pretty, but neither does subscriber frustration with having to cut and paste.</li>\n<li>If your message is breaking into 2 or more separate messages, be careful with your character count.  Best practice is to limit your message to 160 characters or less.</li>\n</ul>\n\n#### Message Latency - Delivery Delays\n\nThis could be the result of several possibilities.  Don't panic.  It does happen once in a while and it is generally a specific carrier issue.  \n<ul>\n<li>Remember that cloudwi.re short codes are shared.  Although rare, peak usage can result in message latency in 1-to-1 messaging scenarios.</li>\n<li>Further on the above, we are constricted by messages per second bandwidth.  If you are sending a campaign of 150k SMS or MMS and your number is last on the list, it's going to take a little bit for your message to hit your phone.</li>\n<li>Most common, carriers queues do on occasion get backed up or stop working altogether.  Make sure you sign up for <a href=\"http://cloudwire.status.io/\">cloudwi.re alerts</a> for this type of event.  And don't be afraid to contact <a href=\"mailto:support@cloudwi.re\">support@cloudwi.re</a> if you think there is an outage of some sort.</li>\n</ul>\n\n#### I Get Messages From Multiple Short Codes.  \n\nYes, indeed you do.  Read more about that <a href=\"https://cloudwire.gelato.io/guides/the-store-concept\" target=\"_blank\">here</a>.  To amplify our bandwidth the cloudwi.re SMS API round robins your opt-ins across four short codes.  If you are a developer testing by constantly opting in and out this can be a tad confusing.  But remember that the subscriber is only going to interact with one unique short code when communicating with each store they've opted into.  If you are a developer and set-up more than one store, even if you use them for Dev, UAT and production, each one of those three stores you opt-in to will bind you to a different short or long code to communicate with those stores.  Perfectly normal!  \n\nSo no worries.  Grab a Red Bull and chill.  We've been doing this for eight years.  The mobile universe is pretty adaptive to replying to the received message.  We wouldn't have made it this long if they weren't.\n\n#### A Note About Delivery Status\nReminder, don't exactly count on its accuracy.  We believe it's right about 95%  of the time.  For those developers that put high use testing environments in place you may experience this.  Simply report it to us and we'll give you every detail we can find.  But keep in mind that the carriers don't exactly respond to one-off requests as to why one or two people didn't get a text.  \n\nThat's because they are busy making funny commercials with chainsaws or magenta flashing seizure graphics.\nreceived","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json"},"item":[{"name":"Store Management","item":[{"name":"Add Store","id":"89fea545-c1b4-f8f6-845a-22ec5c004b8b","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"accountId","value":"{{accountId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  Your account ID."},{"key":"storeName","value":"Your Store Name","type":"text","warning":"","description":"<b>REQUIRED:</b>  The name of the store, which must be unique to your account.  Limited to 45 Characters."},{"key":"timeZone","value":"Store Time Zone","type":"text","warning":"","description":"<b>REQUIRED:</b>   Select your time zone (Acceptable:  Hawaii, Alaska, Pacific, Mountain, Arizona, Central or Eastern.)"},{"key":"compliancePhone","value":"Store Phone Number","type":"text","warning":"","description":"<b>REQUIRED:</b> Your compliance contact phone number."},{"key":"complianceEmail","value":"Compliance Email Contact","type":"text","warning":"","description":"<b>REQUIRED:</b>:  Your compliance email contact."},{"key":"messageStatusURL","value":"Your Notification URL","description":"Optional:  Your Notification URL for errors and job updates. (Must start with http:// or https://)","type":"text"},{"key":"inboundCallbackURL","value":"Your Inbound Message URL","description":"Optional:  Your inbound messaging reciever URL.  (Must start with http:// or https://)","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/account/addstore","description":"This method allows the developer to create a store. You cannot send messages to and from subscribers without creating a store.  A store is essentially an opt-in container.  A store can be a brand or it can be a franchise location.   Subscriber's opt-in to that brand or location.  \n\nStore names are limited to 45 characters and the name must be unique within the account.  Additionally, we ask for a compliance phone number and email for automatic addition to the store compliance templates created for the store.  You also have the option to add your callback URLs inside of the request.\n\nFor some folks, the question of having one store or many is rather simple.  However, some use cases make that a little more difficult to figure out.  Remember, we are here to help.  Don't hesitate to <a href=\"mailto:support@cloudwi.re\">contact us</a> if you aren't sure!"},"response":[],"_postman_id":"89fea545-c1b4-f8f6-845a-22ec5c004b8b"},{"name":"Edit Compliance Template","id":"673b1604-e128-b846-2744-fc8c1bdb1114","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"accountId","value":"{{accountId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  Your account ID."},{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The store ID of the store you wish to edit a template for."},{"key":"type","value":"The Template Type","type":"text","warning":"","description":"<b>REQUIRED:</b>  Either 'request' 'confirmation' 'help' 'stop' or 'already'"},{"key":"template","value":"Your Template","type":"text","warning":"","description":"<b>REQUIRED:</b>  The new template limited to 160 characters."}]},"url":"https://moonbeamapi.cloudwi.re/account/store/edittemplate","description":"This method allows the developer to edit the compliant store templates.  By default, the cloudwi.re SMS API stores a default book of compliant SMS templates.  Each one can be edited as needed.  \n\nDue to delivery and compliance concerns, compliance templates are limited to 160 characters or less.\n\n<table>\n<tr>\n<td><b>Type</b></td>\n<td><b>Meaning</b></td>\n</tr>\n<tr>\n</tr>\n<td>request</td>\n<td>The opt-in request template.  The first template of double opt-in sent asking a subscriber to opt-in.</td>\n</tr>\n<tr>\n<td>confirmation</td>\n<td>The opt-in confirmation template which confirm a subscriber is opted-in.  The first template sent in single opt-in and the second sent after a subscriber replies YES to an opt-in request.</td>\n</tr>\n<tr>\n<td>stop</td>\n<td>The opt-out confirmation template confirming a subscriber has opted-out.</td>\n</tr>\n<tr>\n<td>help</td>\n<td>The reply from a help request for a subscriber describing the program name they are opted-in to and how to reach you.</td>\n</tr>\n<tr>\n<td>already</td>\n<td>The already opted-in template which is automated when a subscriber who is already opted-in attempts to opt-in again using a keyword.</td>\n</tr>\n<tr>\n</table>"},"response":[],"_postman_id":"673b1604-e128-b846-2744-fc8c1bdb1114"},{"name":"Update Store Automation","id":"dfd24a43-7fc6-2957-c725-4fff6d329864","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The store ID of the store you wish to update automation for."},{"key":"automationType","value":"Automation Type","type":"text","warning":"","description":"<b>REQUIRED:</b>  Either 'confirmation' or 'already'"},{"key":"action","value":"Your Action","type":"text","warning":"","description":"<b>REQUIRED:</b> Either 'enabled' or 'disabled'"}]},"url":"https://moonbeamapi.cloudwi.re/account/store/updateautomation","description":"This method allows the developer to toggle off two automated template types that are managed by cloudwi.re.  \n\nThe first is the opt-in confirmation message that goes out after a keyword is received.  (Note:  Only for opt-in keywords received by a mobile subscriber.  API driven opt-ins will still receive automated opt-in confirmation or requests in Send Opt-In).  \n\nBy default, cloudwi.re manages and sends the opt-in confirmation on MO generated opt-in keywords.  But for developers who wish to send customized responses to each individual subscriber that sends in a keyword the option to disable this provides the flexibility to do so.  \n\nThe second automated template that the developer can manage is the Already Opted-in Message.  By default, this template is enabled when each new store is created.  This template is fired by cloudwi.re in the event that a subscriber who is already opted-in to the store sends in an opt-in keyword again.  It's a friendly reminder.  \n\nThat template is fired on the communication short code the subscriber is binded too.   It's just a friendly reminder.  The developer is free to edit this template from what the SMS API sends in Edit Store Templates.  But this option gives the developer to turn it off altogether and manage it within their business rules.     "},"response":[{"id":"87700df9-e9db-4123-9c04-3217c710be6b","name":"400 Invalid Action","originalRequest":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}","disabled":false}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The store ID of the store you wish to update automation for."},{"key":"automationType","value":"confirmation","type":"text","warning":"","description":"<b>REQUIRED:</b>  Either 'confirmation' or 'already'"},{"key":"action","value":"enable","type":"text","warning":"","description":"<b>REQUIRED:</b> Either 'enabled' or 'disabled'"}]},"url":"https://moonbeamapi.cloudwi.re//account/store/updateautomation"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":"Used in response to a preflight request to indicate which HTTP headers can be used when making the actual request."},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":"Specifies a URI that may access the resource. For requests without credentials, the server may specify '*' as a wildcard, thereby allowing any origin to access the resource."},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":"Tells all caching mechanisms from server to client whether they may cache this object. It is measured in seconds"},{"key":"Connection","value":"close","name":"Connection","description":"Options that are desired for the connection"},{"key":"Content-Length","value":"114","name":"Content-Length","description":"The length of the response body in octets (8-bit bytes)"},{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Thu, 05 Apr 2018 21:13:08 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":"Gives the date/time after which the response is considered stale"},{"key":"Pragma","value":"no-cache","name":"Pragma","description":"Implementation-specific headers that may have various effects anywhere along the request-response chain."},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":"A name for the server"},{"key":"Status","value":"400","name":"Status","description":"Custom header"}],"cookie":[{"expires":"Sun Nov 01 2037 08:14:07 GMT+0000 (Coordinated Universal Time)","httpOnly":false,"domain":"moonbeamapi.cloudwi.re","path":"/","secure":false,"value":"c638kc0vrj1bm3otjuau4ad2a1","key":"PHPSESSID"}],"responseTime":null,"body":"{\"status\":\"fail\",\"code\":400,\"message\":\"Invalid Action:  Please select either [enabled or disabled].\",\"results\":[]}"},{"id":"d87476e2-9a22-4041-ba78-82c13f4d62d0","name":"200 ok","originalRequest":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}","disabled":false}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The store ID of the store you wish to update automation for."},{"key":"automationType","value":"confirmation","type":"text","warning":"","description":"<b>REQUIRED:</b>  Either 'confirmation' or 'already'"},{"key":"action","value":"enabled","type":"text","warning":"","description":"<b>REQUIRED:</b> Either 'enabled' or 'disabled'"}]},"url":"https://moonbeamapi.cloudwi.re//account/store/updateautomation"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":"Used in response to a preflight request to indicate which HTTP headers can be used when making the actual request."},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":"Specifies a URI that may access the resource. For requests without credentials, the server may specify '*' as a wildcard, thereby allowing any origin to access the resource."},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":"Tells all caching mechanisms from server to client whether they may cache this object. It is measured in seconds"},{"key":"Connection","value":"Keep-Alive","name":"Connection","description":"Options that are desired for the connection"},{"key":"Content-Length","value":"75","name":"Content-Length","description":"The length of the response body in octets (8-bit bytes)"},{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Thu, 05 Apr 2018 21:12:14 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":"Gives the date/time after which the response is considered stale"},{"key":"Keep-Alive","value":"timeout=5, max=100","name":"Keep-Alive","description":"Custom header"},{"key":"Pragma","value":"no-cache","name":"Pragma","description":"Implementation-specific headers that may have various effects anywhere along the request-response chain."},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":"A name for the server"},{"key":"Status","value":"200","name":"Status","description":"Custom header"}],"cookie":[{"expires":"Sun Nov 01 2037 08:14:07 GMT+0000 (Coordinated Universal Time)","httpOnly":false,"domain":"moonbeamapi.cloudwi.re","path":"/","secure":false,"value":"c638kc0vrj1bm3otjuau4ad2a1","key":"PHPSESSID"}],"responseTime":null,"body":"{\"status\":\"pass\",\"code\":200,\"message\":\"Store setting updated\",\"results\":[]}"},{"id":"ed865aad-31fb-4c8d-a6fc-9b7765a4de58","name":"400 Invalid Automation Type","originalRequest":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}","disabled":false}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The store ID of the store you wish to update automation for."},{"key":"automationType","value":"confirmatio","type":"text","warning":"","description":"<b>REQUIRED:</b>  Either 'confirmation' or 'already'"},{"key":"action","value":"enabled","type":"text","warning":"","description":"<b>REQUIRED:</b> Either 'enabled' or 'disabled'"}]},"url":"https://moonbeamapi.cloudwi.re//account/store/updateautomation"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":"Used in response to a preflight request to indicate which HTTP headers can be used when making the actual request."},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":"Specifies a URI that may access the resource. For requests without credentials, the server may specify '*' as a wildcard, thereby allowing any origin to access the resource."},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":"Tells all caching mechanisms from server to client whether they may cache this object. It is measured in seconds"},{"key":"Connection","value":"close","name":"Connection","description":"Options that are desired for the connection"},{"key":"Content-Length","value":"126","name":"Content-Length","description":"The length of the response body in octets (8-bit bytes)"},{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Thu, 05 Apr 2018 21:13:47 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":"Gives the date/time after which the response is considered stale"},{"key":"Pragma","value":"no-cache","name":"Pragma","description":"Implementation-specific headers that may have various effects anywhere along the request-response chain."},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":"A name for the server"},{"key":"Status","value":"400","name":"Status","description":"Custom header"}],"cookie":[{"expires":"Sun Nov 01 2037 08:14:07 GMT+0000 (Coordinated Universal Time)","httpOnly":false,"domain":"moonbeamapi.cloudwi.re","path":"/","secure":false,"value":"c638kc0vrj1bm3otjuau4ad2a1","key":"PHPSESSID"}],"responseTime":null,"body":"{\"status\":\"fail\",\"code\":400,\"message\":\"Invalid Automation Type: Please select either [already or confirmation].\",\"results\":[]}"}],"_postman_id":"dfd24a43-7fc6-2957-c725-4fff6d329864"},{"name":"Update Store Callback","id":"4ec05f9a-c38c-ddac-39a0-a91806401882","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The store ID of the store you wish to update the URL for."},{"key":"urlType","value":"The URL Type","type":"text","warning":"","description":"<b>REQUIRED:</b> Either 'inbound' or 'notification'."},{"key":"url","value":"The URL","type":"text","warning":"","description":"REQUIRED:  The URL.  (Must start with http:// or https://)"}]},"url":"https://moonbeamapi.cloudwi.re/account/store/updatestorecallback","description":"This method allows the developer to update or add the inbound message and notification callback URLs to an individual store.  The notification URL is sometimes referred to as the message status URL where messages that were failed by cloudwi.re due to opt-in status checks are posted."},"response":[{"id":"4424f466-ec98-cecf-c1f6-3713b8f7ee03","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"REQUIRED:  The store ID of the store you wish to update the URL for."},{"key":"urlType","value":"inbound","type":"text","warning":"","description":"REQUIRED:  Either 'inbound' or 'notification'."},{"key":"url","value":"https://cloudwi.re/inboundlistener","type":"text","warning":"","description":"REQUIRED:  The URL"}]},"url":"https://moonbeamapi.cloudwi.re/account/store/updatestorecallback"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":""},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":""},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":""},{"key":"Connection","value":"Keep-Alive","name":"Connection","description":""},{"key":"Content-Length","value":"85","name":"Content-Length","description":""},{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":""},{"key":"Date","value":"Wed, 07 Feb 2018 05:26:41 GMT","name":"Date","description":""},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":""},{"key":"Keep-Alive","value":"timeout=5, max=100","name":"Keep-Alive","description":""},{"key":"Pragma","value":"no-cache","name":"Pragma","description":""},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":""},{"key":"Status","value":"200","name":"Status","description":""}],"cookie":[{"expires":"Sun Nov 01 2037 08:14:07 GMT+0000 (Coordinated Universal Time)","httpOnly":false,"domain":"moonbeamapi.cloudwi.re","path":"/","secure":false,"value":"c638kc0vrj1bm3otjuau4ad2a1","key":"PHPSESSID"}],"responseTime":"745","body":"{\"status\":\"pass\",\"code\":200,\"message\":\"The store URL has been updated.\",\"results\":[]}"}],"_postman_id":"4ec05f9a-c38c-ddac-39a0-a91806401882"},{"name":"Store Details","id":"5371a19d-b2d6-0412-ab2d-e532816f6434","request":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"57f348c9d16a10af2c4ec432","type":"text"},{"key":"start","value":"2016-09-30","type":"text"},{"key":"end","value":"2016-10-05","type":"text"},{"key":"fileType","value":"JSON","type":"text"},{"key":"email","value":"craig@crmtext.com","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/account/store/detail/{{storeId}}","description":"This method allows the developer to retrieve pertinent store information such as store name, compliance admins, template content, callback URLs and keywords along with their type.\n\nYou will pass the storeId in the URL when making the request."},"response":[],"_postman_id":"5371a19d-b2d6-0412-ab2d-e532816f6434"},{"name":"Store Stats Snapshot","id":"bd40b896-c86d-4b5b-9b4b-75779e160012","request":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[]},"url":"https://moonbeamapi.cloudwi.re/portal/store/stats/{{storeId}}","description":"This method allows the developer to retrieve pertinent a stats snapshot of opt-ins, opt-outs and pending subscribers as well as a count of keywords for the store.  \n\nYou will pass the storeId in the URL when making the request."},"response":[],"_postman_id":"bd40b896-c86d-4b5b-9b4b-75779e160012"},{"name":"Store Subscribers","id":"841f89e2-46d5-bfb2-20dc-450710427466","request":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"57fefdefd16a10e24608ad9a","type":"text"},{"key":"mobileId","value":"14155964193","type":"text"},{"key":"message","value":"Hi there!  Ok I'm here.","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/subscriber/bystore/{{storeId}}/1","description":"The SMS API provides the developer with two methods to retrieve store subscribers by their opt-in status. This method is more reliable than the POST that sends a CSV or JSON file. We recommend when pulling subscriber data from a store with more than 15,000 subscribers that you utilize this method.\n\n100 records are returned per page number."},"response":[],"_postman_id":"841f89e2-46d5-bfb2-20dc-450710427466"},{"name":"Sent Messages By Date","id":"9a9814aa-8598-4459-8fda-70aa1a1ae0fd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"59f0c127a3b89035e755f595","type":"text","description":"<b>REQUIRED:</b>  The store ID of the store you wish to update the URL for."},{"key":"start","value":"12-06-2019","type":"text","description":"<b>REQUIRED:</b>  The start date in MM-DD-YYYY format."},{"key":"end","value":"12-06-2019","type":"text","description":"<b>REQUIRED:</b>  The end date in MM-DD-YYYY format."},{"key":"page","value":"1","type":"text","description":"<b>REQUIRED:</b>  The page number."}]},"url":"https://moonbeamapi.cloudwi.re/account/store/sentmessage/history","description":"This method will pull down a list of outbound messages 1-2-1 messages from a specified store in the account by date.  The data is returned in batches of 100 and is sorted by most recent sent."},"response":[{"id":"a50a7fb8-1245-42c9-955c-666cc446cf52","name":"Sent Messages By Date","originalRequest":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"59f0c127a3b89035e755f595","type":"text","description":"<b>REQUIRED:</b>  The store ID of the store you wish to update the URL for."},{"key":"start","value":"12-06-2019","type":"text","description":"<b>REQUIRED:</b>  The start date in MM-DD-YYYY format."},{"key":"end","value":"12-06-2019","type":"text","description":"<b>REQUIRED:</b>  The end date in MM-DD-YYYY format."},{"key":"page","value":"1","type":"text","description":"<b>REQUIRED:</b>  The page number."}]},"url":"https://moonbeamapi.cloudwi.re/account/store/sentmessage/history"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 06 Dec 2019 21:15:13 GMT"},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)"},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT"},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0"},{"key":"Pragma","value":"no-cache"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept"},{"key":"Status","value":"200"},{"key":"Content-Length","value":"487"},{"key":"Keep-Alive","value":"timeout=5, max=100"},{"key":"Connection","value":"Keep-Alive"},{"key":"Content-Type","value":"application/json; charset=utf-8"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"pass\",\n    \"code\": 200,\n    \"message\": \"Store Sent Message History\",\n    \"results\": {\n        \"itemsPerPageLimit\": 100,\n        \"totalRecords\": 1,\n        \"totalPages\": 1,\n        \"currentPage\": \"1\",\n        \"out\": [\n            {\n                \"transactionId\": \"5deac4963543e65b7a5a0e0e\",\n                \"mobile\": \"+14155964193\",\n                \"message\": \"Thanks for taking the time to learn about the world's greatest SMS platform, cloudwi.re.  Please click the link for my contact information.\\n\\nhttps://goo.gl/GjXdAh\\n\",\n                \"mediaUrl\": \"\",\n                \"created\": \"12/06/2019 21:13:58:0.67544800\",\n                \"status\": \"Sent\"\n            }\n        ]\n    }\n}"}],"_postman_id":"9a9814aa-8598-4459-8fda-70aa1a1ae0fd"},{"name":"Delete Store","id":"83380987-ace8-1f3a-b65a-319386dbda12","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","description":"<b>REQUIRED:</b> The store ID of the store you wish to delete."},{"key":"accountId","value":"{{accountId}}","type":"text","description":"<b>REQUIRED:</b>  Your account ID."}]},"url":"https://moonbeamapi.cloudwi.re/account/deletestore","description":"This method allows the developer to remove a store. Make darn sure that's what you want to do. Your account ID is required in this method and you can find it in the admin portal. A store deletion will result in the removal of all opted-in subscribers to the store and release their mobile IDs from the short codes they are binded to the store with. It will also result in the release of any keywords associated to the store. Although the data is archived, retrieving it for the sole fact that you accidentally deleted it is going to cost you some jack.\n\nThis request is placed on a job queue. When completed you will get a post to your notification URL that the store, its keywords and subscribers associated to it, were removed."},"response":[],"_postman_id":"83380987-ace8-1f3a-b65a-319386dbda12"},{"name":"Store Messages","id":"492d6b13-042e-40d5-bea1-d3aafb9e8e6a","request":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[]},"url":"https://moonbeamapi.cloudwi.re/account/store/messages/{{storeId}}/1","description":"This method will pull down a list of inbound and outbound messages from a specified store in the account.  It's built for tracking conversations and mobile history.  However, it does not return sent campaign messages.\n\nIt's in most recent order and you may page through the results.  Set the Store ID in the URL of your request."},"response":[],"_postman_id":"492d6b13-042e-40d5-bea1-d3aafb9e8e6a"}],"id":"42f6fe82-60ea-7d97-1038-5eb38cadd630","description":"In the cloudwi.re architecture, we work within the store concept.  A store is basically a sub-account.  This has multiple advantages both to us and to you. This allows us to properly route messages to the correct store, essentially by creating opt-in buckets.  It also allows us to load balance opt-ins on the cloudwi.re communication short code stack.  A store must exist for messages to flow in and out.  So the first thing you will have to do before you test anything is to add a store.  Once a mobile subscriber opts-in to one of your stores, we bind that mobile subscriber’s number to that store with a cloudwi.re short code. That bind will remain in place for the life of the opt-in or until the mobile subscriber opts-out.\n\nThe eight methods in this resource will allow you to:  Add or delete stores, edit their templates and settings and retrieve subscriber status.","auth":{"type":"noauth"},"event":[{"listen":"prerequest","script":{"id":"4bff7123-cc2c-4f1b-bcdc-13e4aec5ba9c","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"45b05f3b-f0b5-49ba-8ff1-3c88b35ccb6c","type":"text/javascript","exec":[""]}}],"_postman_id":"42f6fe82-60ea-7d97-1038-5eb38cadd630"},{"name":"Keyword Management","item":[{"name":"Is Keyword Available","id":"ebdbfc31-0a64-e2b1-32a6-c25e30f588af","request":{"auth":{"type":"noauth"},"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"keyword","value":"The Keyword","type":"text","warning":"","description":"<b>REQUIRED:</b>  The keyword you wish to check availability for."},{"key":"shortCode","value":"The Short Code","type":"text","warning":"","description":"<b>REQUIRED:</b>  Either '345345' or '444999'.  The 10 digit Canadian long codes are ok as well."}]},"url":"https://moonbeamapi.cloudwi.re/keyword/iskeywordavailable","description":"<p>This method allows the developer to check if a keyword is available on the cloudwi.re marketing/opt-in short codes. Keywords must be unique in order for cloudwi.re to know what store the opt-in or responder belongs too. As such, other cloudwi.re Clients may be using a keyword that you want. See the considerations below for other important limitations on keywords.\n</p>\n<p>\nYou will note below that special characters are not allowed.  If you wish to do an emoji keyword such as \"text 😃 to 444999\" we do allow it and you'll need to contact us to do so.  Fair warning that carrier transcriptions can vary and we highly recommend testing on as many carriers as possible outside of the big four.  \n</p>\n\n<p>If the keyword is available, then you may use CreateKeyword to lock it into the store you are calling with your authentication.  Keyword charges apply.\n</p>\n<p>Remember that you can also create keywords on our Canadian long codes.<br><br>  Canadian Marketing Keyword Long Codes (Like 444999)<br>\n\n(587) 319-2400<br>\n(647) 799-2400\n<br><br>\nCanadian Sticky Keyword Long Codes (Like 345345)<br>\n\n(587) 815-4000<br>\n(581) 221-5000\n<br><br>\n</p>\n<b>Other Considerations</b>\n<ul>\n<li>The character limit for keywords are 2-30.</li>\n<li>You may uses spaces as you wish for potential auto-correct issues.</li>\n<li>case sensitivity is not enforced for keywords.</li>\n<li>Special characters are not allowed.  Please use only alpha or numeric keywords or a blend of both.</li>\n</ul>"},"response":[{"id":"123065ec-fe45-ecde-1ba7-8f40fa03b110","name":"400 Keyword Unavailable","originalRequest":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}","disabled":false}],"body":{"mode":"formdata","formdata":[{"key":"keyword","value":"cloudwire","type":"text","warning":"","description":"REQUIRED:  The keyword you wish to check availability for."},{"key":"shortCode","value":"345345","type":"text","warning":"","description":"REQUIRED:  Either '345345' or '444999'.  The 10 digit Canadian long codes are ok as well."}]},"url":"https://moonbeamapi.cloudwi.re/keyword/iskeywordavailable"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":""},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":""},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":""},{"key":"Connection","value":"close","name":"Connection","description":""},{"key":"Content-Length","value":"184","name":"Content-Length","description":""},{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":""},{"key":"Date","value":"Fri, 09 Feb 2018 20:15:33 GMT","name":"Date","description":""},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":""},{"key":"Pragma","value":"no-cache","name":"Pragma","description":""},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":""},{"key":"Status","value":"400","name":"Status","description":""}],"cookie":[{"expires":"Sun Nov 01 2037 08:14:07 GMT+0000 (Coordinated Universal Time)","httpOnly":false,"domain":"moonbeamapi.cloudwi.re","path":"/","secure":false,"value":"c638kc0vrj1bm3otjuau4ad2a1","key":"PHPSESSID"}],"responseTime":"401","body":"{\"status\":\"fail\",\"code\":400,\"message\":\"The keyword is not available on the requested short code. Either check availability on another short code or brainstorm a new one.\",\"results\":[]}"},{"id":"1962fc67-72c3-0f9b-f1dc-3e8fb80ef61c","name":"200 Keyword Available","originalRequest":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}","disabled":false}],"body":{"mode":"formdata","formdata":[{"key":"keyword","value":"cloud","type":"text","warning":"","description":"REQUIRED:  The keyword you wish to check availability for."},{"key":"shortCode","value":"345345","type":"text","warning":"","description":"REQUIRED:  Either '345345' or '444999'.  The 10 digit Canadian long codes are ok as well."}]},"url":"https://moonbeamapi.cloudwi.re/keyword/iskeywordavailable"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":""},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":""},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":""},{"key":"Connection","value":"Keep-Alive","name":"Connection","description":""},{"key":"Content-Length","value":"169","name":"Content-Length","description":""},{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":""},{"key":"Date","value":"Fri, 09 Feb 2018 20:13:07 GMT","name":"Date","description":""},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":""},{"key":"Keep-Alive","value":"timeout=5, max=100","name":"Keep-Alive","description":""},{"key":"Pragma","value":"no-cache","name":"Pragma","description":""},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":""},{"key":"Status","value":"200","name":"Status","description":""}],"cookie":[{"expires":"Sun Nov 01 2037 08:14:07 GMT+0000 (Coordinated Universal Time)","httpOnly":false,"domain":"moonbeamapi.cloudwi.re","path":"/","secure":false,"value":"c638kc0vrj1bm3otjuau4ad2a1","key":"PHPSESSID"}],"responseTime":"446","body":"{\"status\":\"pass\",\"code\":200,\"message\":\"The desired keyword is available on the requested short code. Use method Create Keyword to assign it to your store.\",\"results\":[]}"}],"_postman_id":"ebdbfc31-0a64-e2b1-32a6-c25e30f588af"},{"name":"Create Keyword","id":"7ea21739-86ee-6df8-eed3-49e0a109231a","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The store ID for which you wish to place the keyword."},{"key":"keyword","value":"The Keyword","type":"text","warning":"","description":"<b>REQUIRED:</b>  The keyword.  Spaces are ok.  32 character limit."},{"key":"keywordType","value":"The Keyword Type","type":"text","warning":"","description":"<b>REQUIRED:</b>  Either 'responder' or 'opt-in'"},{"key":"shortCode","value":"The Short Code","type":"text","warning":"","description":"<b>REQUIRED:</b>  Either '345345' or '444999'.  The 10 digit Canadian long codes are ok as well (Exp:  '15812215000') "}]},"url":"https://moonbeamapi.cloudwi.re/account/store/keyword/create","description":"<p>This method allows the developer to add a keyword to the store you assign it to with your auth string. When you make a call to this method, the cloudwi.re SMS API will approve your keyword instantly as long as it meets the considerations listed below. Although not required, we'd advise checking keyword availability first using IsKeywordAvailable.  Additionally, in order to edit responder keyword content or delete keywords, make sure you store the keyword ID returned to you in this method.\n</p>\n<p>\nYou will note below that special characters are not allowed.  If you wish to do an emoji keyword such as \"text 😃 to 444999\" we do allow it and you'll need to contact us to do so.  Fair warning that carrier transcriptions can vary and we highly recommend testing on as many carriers as possible outside of the big four.\n</p>\n\n<p>There are two types of keywords within the cloudwi.re SMS API:<br><br>\n<b>Opt-In Keyword </b>\nThe opt-in keyword, which will opt the mobile subscriber into the store. From there, ongoing 2-way SMS communications can be implemented for as long as the subscriber remains opted-in.<br><br>\n<b>Responder Keyword</b>\nThe Responder keyword, which will only allow one response text message back to the mobile subscriber. It’s generally used for coupons or informational tips. This keyword type does not change the opt-in status of the mobile subscriber.  </p>\n<p>Remember that you can also create keywords on our Canadian long codes.<br><br>  Canadian Marketing Keyword Long Codes (Like 444999)<br>\n(587) 319-2400<br>\n(647) 799-2400\n<br><br>\nCanadian Sticky Keyword Long Codes (Like 345345)<br>\n(587) 815-4000<br>\n(581) 221-5000\n<br><br>\n<b>Other Considerations</b>\n<ul>\n<li>The character limit for keywords are 2-30.</li>\n<li>You can wild card keywords if you like</li>\n<li>case sensitivity is not enforced for keywords.</li>\n<li>You may uses spaces as you wish for potential auto-correct issues</li>\n<li>Special characters are not allowed.  Please use only alpha or numeric keywords or a blend of both.</li>\n<li>An opt-in keyword will utilize the default store opt-in template unless you have keyword automation turned off.</li>\n</ul>"},"response":[],"_postman_id":"7ea21739-86ee-6df8-eed3-49e0a109231a"},{"name":"Edit Responder Keyword Content","id":"01dde5c5-7b50-9cac-645c-9996f965a144","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The Store ID the keyword is reserved under."},{"key":"keywordId","value":"{{keywordId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The Responder keyword ID of the keyword you are editing automated response content for."},{"key":"responderContent","value":"This is why you should never go to the University of Michigan.","type":"text","warning":"","description":"The content of the outbound SMS to the subscriber after the keyword is received.  160 characters or less is recommended.  <b>Not required if mediaUrl is added.</b>"},{"key":"mediaUrl","value":"Your MMS URL","description":"The URL of the MMS you wish to send to the subscriber after the keyword is received.  (Must start with http:// or https://)  <b>Not required if responderContent is added.</b>","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/account/store/keyword/editresponderkeywordcontent","description":"<p>This method allows the developer to either add content or overwrite responder keyword content of an established keyword.  You should only need this method if cloudwi.re keyword automation is turned on.  If keyword  automation is turned off for responder keywords, you will need a special unpublished parameter for sending a message from the marketing short code.  Contact <a href=\"mailto:support@cloudwi.re\">support@cloudwi.re</a> and we'll get you hooked up.</p>\n<b>Other Considerations</b>\n<ul>\n<li>Messages are limited to 1600 characters, but we advise 160. </li>\n<li>Media URLs must begin with HTTP:// or HTTPS://</li>\n<li>MMS is limited to 5mb for pictures and 455kb for audio/video.  Refer to the supported media guide for more info on supported URL types for MMS.</li>\n<li>MMS to carriers who do not support it will be sent as a URL.</li>\n<li>You may set up responderContent or a mediaUrl or both together.  One or the other is required though.</li>\n<li>Use '\\n' for line breaks but make sure you test.</li>\n<li>Be weary of special characters...make sure you test.</li>\n<li>Your content and offer are important. The mobile subscriber is taking time to text you. Give them something good and you’ll be rewarded with high response rates.</li>\n</ul>"},"response":[],"_postman_id":"01dde5c5-7b50-9cac-645c-9996f965a144"},{"name":"Delete Keyword","id":"1cc737e5-b57c-2efb-c1d7-4c7fb9916874","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The store ID you are deleting the keyword from."},{"key":"keywordId","value":"{{keywordId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The keyword ID of the keyword you are deleting."}]},"url":"https://moonbeamapi.cloudwi.re/account/store/keyword/delete","description":"This method allows the developer delete a keyword from a store and remove it from any future billing to your cloudwi.re account.  Subscribers who used the keyword will see no change in their opt-in status.  As for what happens when you delete the keyword and a subscriber sends it in?  cloudwi.re will not know where to route the keyword and respond to the subscriber with a keyword unrecognized message.   \n\nIf you forget or did not store the keyword ID, head over to Get Store Details in the Store Management Folder.\n\nIf you have a lot of stores and are completely lost in the sauce (It happens to us all the time!) as to where the keyword you want to remove is, then head over to Get Account Details in the Account Management Folder."},"response":[],"_postman_id":"1cc737e5-b57c-2efb-c1d7-4c7fb9916874"}],"id":"ad68e365-71fe-26b7-f5e8-b88e05b3ee74","description":"The cloudwi.re SMS API allows the developer to create two types of keywords on the marketing short codes.  For opt-in keywords, responses are automated by default.  For Responder keywords, content must be added to the keyword for cloudwi.re to automate the response.   Keywords must be unique and are limited to a  length of 2-30 characters.  You may use spaces as well to account for auto-correct.  We certainly highly recommend if you reserve a keyword that is two or more words, you should reserve the keyword with it's natural spaces.  For example, CLOUDWIRE and CLOUD WIRE should be reserved.  \n\nThe keyword resource gives the developer the ability to search, create, delete and edit responder content for responder type keywords.","event":[{"listen":"prerequest","script":{"id":"c7141ded-7e2a-4d28-9ee6-81a7d1536a3f","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"d7ac028c-d655-453e-905e-9380c8852a4a","type":"text/javascript","exec":[""]}}],"_postman_id":"ad68e365-71fe-26b7-f5e8-b88e05b3ee74"},{"name":"Subscribers","item":[{"name":"Send Opt-In","id":"2389327d-2317-3b9c-a220-3b033e464e91","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>   The store ID of the store you wish to opt-in the subscriber to."},{"key":"mobileId","value":"mobile","type":"text","warning":"","description":"<b>REQUIRED:</b>   The E.164 formatted mobile number you are opting-in."},{"key":"optInType","value":"single","type":"text","warning":"","description":"the opt-in type."}]},"url":"https://moonbeamapi.cloudwi.re/subscriber/sendoptin","description":"This method allows the developer to create a subscriber for the store you assign within your auth string.  The SMS API will then deliver a compliant opt-in confirmation or request message (Depending on whether you use the single or double parameter) to the subscriber. It is required before you can send any recurring text messages to a mobile subscriber using Send Message or Send Campaign, except where otherwise noted. \n\nIt is developer discretion on using single opt-in.  Read up on compliance in the documentation.\n\nThe subscriber will now be assigned a communication short code and all 2-way SMS communication with the subscriber will occur on that assigned communication short code for the life of the opt-in.\n\nThe API will consume your request for any valid phone number and return a 200 synchronously.  If the number is invalid, the API will fail that synchronously as well.  Other failures, such as attempting to use single opt-in on a pending subscriber, will be sent asynchronously to your notification URL and available from the transaction ID via Get Message Status.  \n\nRemember to pass numbers with no spaces or + sign and include the country code.  (Exp:  '19994447777')\n\n<b>Considerations</b>\n<ul>\n<li>Store the transaction ID returned to you with a 200 if you wish to get delivery status with Get Message Status in the Messaging Folder.</li>\n<li>Opt-in templates fired to the subscriber in this method are pulled from the store templates.  They cannot be dynamically controlled for compliance reasons.</li>\n<li>For double opt-in, the subscriber must reply YES or Y to the opt-in request to complete the opt-in.  Once cloudwi.re receives the YES or Y it will automate delivery of the opt-in confirmation and switch the subscriber's status to opted-in.</li>\n<li>If the subscriber is in an opted-out or pending state and single opt-in is attempted, it will error out.  In this event Double opt-in is required.</li>\n<li>If the subscriber is in an locked state and single or double opt-in is attempted it will be blocked.</li>\n<li>If the subscriber replies NO or N to a double opt-in request they will be switched to an opted-out state.</li>\n</ul>"},"response":[],"_postman_id":"2389327d-2317-3b9c-a220-3b033e464e91"},{"name":"Send Opt-Out","id":"3cc1c0a1-3f4b-feed-b83b-4cdc3ad43e22","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"REQUIRED:   The store ID of the store you wish to opt-out the subscriber from"},{"key":"mobileId","value":"{{mobileId}}","type":"text","warning":"","description":"REQUIRED:   The E.164 formatted mobile number you are opting-out."}]},"url":"https://moonbeamapi.cloudwi.re/subscriber/sendoptout","description":"This method allows the developer to opt-out a subscriber from a store and trigger the delivery of the store opt-out confirmation. After completion, the subscriber can receive no further recurring text messages from the store and the subscriber status will change to opted-out.   After the opt-out is completed, the SMS API will release the mobile subscriber from the assigned communication short code.\n\nThe API will respond synchronously if the subscriber is already opted-out and no message will be attempted.\n\n<b>Considerations</b>\n<ul>\n<li>Store the transaction ID returned to you with a 200 if you wish to get delivery status with Get Message Status in the Messaging Folder.</li>\n</ul>"},"response":[],"_postman_id":"3cc1c0a1-3f4b-feed-b83b-4cdc3ad43e22"},{"name":"Status by Store","id":"3d36f67d-1b1a-4777-41ff-1e2db9d37608","request":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"58067cead16a10561695be16","type":"text"},{"key":"accountId","value":"57fefdb6d16a105c4708ad9b","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/subscriber/statusbystore/{{storeId}}/{{mobileId}}","description":"This method allows the developer to check the opt-in status of an individual mobile subscriber at the store level.  The store ID and the mobile number will be passed in the request URL as noted in the URL above."},"response":[{"id":"1b4e2f42-e943-4a91-dca5-17e294c1a5e6","name":"400 Subscriber Does Not Exist In Store","originalRequest":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}","disabled":false}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"58067cead16a10561695be16","type":"text"},{"key":"accountId","value":"57fefdb6d16a105c4708ad9b","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/subscriber/statusbystore/{{storeId}}/14152253800"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":""},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":""},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":""},{"key":"Connection","value":"close","name":"Connection","description":""},{"key":"Content-Length","value":"150","name":"Content-Length","description":""},{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":""},{"key":"Date","value":"Fri, 09 Feb 2018 20:23:27 GMT","name":"Date","description":""},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":""},{"key":"Pragma","value":"no-cache","name":"Pragma","description":""},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":""},{"key":"Status","value":"400","name":"Status","description":""}],"cookie":[{"expires":"Sun Nov 01 2037 08:14:07 GMT+0000 (Coordinated Universal Time)","httpOnly":false,"domain":"moonbeamapi.cloudwi.re","path":"/","secure":false,"value":"c638kc0vrj1bm3otjuau4ad2a1","key":"PHPSESSID"}],"responseTime":"393","body":"{\"status\":\"fail\",\"code\":400,\"message\":\"The subscriber does not exist in this store. Please check mobile Id of subscriber and try again.\",\"results\":[]}"},{"id":"7c1acd81-2506-6c5a-6095-d15a62fdc3cd","name":"200 Subscriber Exists in Store","originalRequest":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"58067cead16a10561695be16","type":"text"},{"key":"accountId","value":"57fefdb6d16a105c4708ad9b","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/subscriber/statusbystore/{{storeId}}/{{mobileId}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":""},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":""},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":""},{"key":"Connection","value":"Keep-Alive","name":"Connection","description":""},{"key":"Content-Length","value":"551","name":"Content-Length","description":""},{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":""},{"key":"Date","value":"Fri, 09 Feb 2018 20:22:10 GMT","name":"Date","description":""},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":""},{"key":"Keep-Alive","value":"timeout=5, max=100","name":"Keep-Alive","description":""},{"key":"Pragma","value":"no-cache","name":"Pragma","description":""},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":""},{"key":"Status","value":"200","name":"Status","description":""}],"cookie":[{"expires":"Sun Nov 01 2037 08:14:07 GMT+0000 (Coordinated Universal Time)","httpOnly":false,"domain":"moonbeamapi.cloudwi.re","path":"/","secure":false,"value":"c638kc0vrj1bm3otjuau4ad2a1","key":"PHPSESSID"}],"responseTime":"399","body":"{\"status\":\"pass\",\"code\":200,\"message\":\"Subscriber\\u2019s Opt-In Status for the store.\",\"results\":{\"id\":{\"$oid\":\"5a5be7b39b60216b6c6427c0\"},\"created\":\"01\\/14\\/2018 23:28:51:0.62681200\",\"mobileId\":\"13857432100\",\"details\":{\"commChannel\":\"+55398\",\"subscriberStatus\":\"Opted-In\",\"mCreate\":{\"$date\":{\"$numberLong\":\"1515972531626\"}},\"created\":\"01\\/14\\/2018 23:28:51:0.62689000\",\"keywordType\":\"\",\"shortCode\":\"\",\"keywordId\":\"\",\"storeId\":\"59f0c127a3b89035e755f595\",\"storeName\":\"cloudwi.re\",\"accountId\":\"59f0bd04a3b89039f2387f11\",\"keyword\":\"\",\"optInAttempts\":1}}}"}],"_postman_id":"3d36f67d-1b1a-4777-41ff-1e2db9d37608"},{"name":"Subscriber Message History","id":"045da659-5c0b-41a4-ba94-49acb130393d","request":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[]},"url":"https://moonbeamapi.cloudwi.re/subscriber/message/history/14155964193","description":"This method is built to track the inbound and outbound messages to a specified mobile ID.  It's built for tracking conversational SMS.  It does not report sent campaigns to the mobile ID.  That is available in a seperate method.  Additionally, this method will only return the most recent 200 messages.  "},"response":[],"_postman_id":"045da659-5c0b-41a4-ba94-49acb130393d"}],"id":"37e5a1a9-ce5f-2e15-94e1-567056e2ea6e","description":"The three methods that comprise the Subscriber resource exist to opt-in and opt-out subscribers to a store.  Subscriber's must be opted-in to a store for recurring messaging.  Additionally, the developer can also look up individual subscriber opt-in status at the store level via a GET with the mobile ID of the subscriber.","event":[{"listen":"prerequest","script":{"id":"32fe5c05-70e5-4e2d-bdde-0b4d15ffead3","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"598251d4-a018-4330-b1c9-8221965b4904","type":"text/javascript","exec":[""]}}],"_postman_id":"37e5a1a9-ce5f-2e15-94e1-567056e2ea6e"},{"name":"Messaging","item":[{"name":"Send Message","id":"089bdffe-e9cd-893c-bf1a-5f0655bdf10f","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The store ID of the store you are sending the message from."},{"key":"mobileId","value":"{{mobileId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The E.164 formatted mobile number you are sending a message to."},{"key":"message","value":"Your message.","type":"text","warning":"","description":"Self explanatory unless you are a Michigan fan.   1600 character maximum.  <b>*Optional if sending media</b>"},{"key":"mediaUrl","value":"The MMS URL","description":"The URL of any media you wish to send.  JPG, GIF or PNG is preferred.  (Must start with http:// or https://)  <b>*Optional if message is included</b>","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/message/send/message","description":"This method allows the developer to send a text or picture message (Or Both!) to an opted-in subscriber from the store you assign within your auth string.  By default, all calls to this method will go out on the communication short code that the customer is assigned to by cloudwi.re for the requested store.  This method is not to be utilized for sending bulk campaigns.\n\nAny message attempted to a subscriber who is not in an opted-in state will be reported as an error in the Get Status method and delivered to the store call back URL.\n\n<b>Considerations</b>\n<ul>\n<li>If the subscriber is not opted-in cloudwi.re won't attempt a message.</li>\n<li>Messages are limited to 1600 characters, but we advise 160. </li>\n<li>Store the transaction ID returned to you with a 200 if you wish to get delivery status with Get Message Status in the Messaging Folder.</li>\n<li>Media URLs must begin with HTTP:// or HTTPS://</li>\n<li>cloudwi.re Supports .JPG, .GIF and .PNG files.  Read the Supported Media guide for more information.</li>\n<li>MMS is limited to 5mb for pictures and 455kb for audio/video.  Refer to the supported media guide for more info on supported URL types for MMS.</li>\n<li>MMS to carriers who do not support it will be sent as a URL.</li>\n<li>You may set up responderContent or a mediaUrl or both together.  One or the other is required though.</li>\n<li>Use '\\n' for line breaks but make sure you test.</li>\n<li>Be weary of special characters...make sure you test.</li>\n<li>We have unpublished features for one and two way mobile alerts.  Contact <a href=\"mailto:support@cloudwi.re\">support@cloudwi.re</a>.</li>\n</ul>"},"response":[],"_postman_id":"089bdffe-e9cd-893c-bf1a-5f0655bdf10f"},{"name":"Send Responder Keyword Message","id":"b43d8c49-91a1-d9a4-5c0a-5870233fc798","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The store ID of the store you are sending the message from."},{"key":"mobileId","value":"The Mobile Number","type":"text","warning":"","description":"<b>REQUIRED:</b>   The E.164 formatted mobile number you are sending a message to."},{"key":"keywordId","value":"{{keywordId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The keyword ID of the responder keyword you are replying to."},{"key":"message","value":"your message","description":"Self explanatory unless you are a Michigan fan.   1600 character maximum.  <b>*Optional if sending media</b>","type":"text"},{"key":"mediaUrl","value":"The MMS URL","description":"The URL of any media you wish to send.  JPG, GIF or PNG is preferred.  (Must start with http:// or https://)  <b>*Optional if message is included</b>","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/message/send/responderkeywordmessage","description":"This method allows the developer to send a response to a subscriber that has sent a responder keyword to a cloudwi.re marketing short code.  Keep in mind that cloudwi.re can automate this task for you using the Edit Responder Keyword Content in the Keyword Creation & Management resource.  \n\nBut for those developers who wish to reply to responder keywords dynamically, this method will come in handy.  cloudwi.re will validate your parameters for spam prevention.  But if your parameters show the keyword and short code you request as belonging to your store, cloudwi.re will send the message and it will go out regardless of the opt-in status of the subscriber. \n\nThe subscriber is requesting only one response.  Any additional follow-up messages utilizing this method to a subscriber is not compliant and is a violation of the cloudwi.re terms & conditions.  \n\n\n<b>Considerations</b>\n<ul>\n<li>Messages are limited to 1600 characters, but we advise 160. </li>\n<li>Store the transaction ID returned to you with a 200 if you wish to get delivery status with Get Message Status in the Messaging Folder.</li>\n<li>Media URLs must begin with HTTP:// or HTTPS://</li>\n<li>cloudwi.re Supports .JPG, .GIF and .PNG files.  Read the Supported Media guide for more information.</li>\n<li>MMS is limited to 5mb for pictures and 455kb for audio/video.  Refer to the supported media guide for more info on supported URL types for MMS.</li>\n<li>MMS to carriers who do not support it will be sent as a URL.</li>\n<li>You may set up responderContent or a mediaUrl or both together.  One or the other is required though.</li>\n<li>Use '\\n' for line breaks but make sure you test.</li>\n<li>Be weary of special characters...make sure you test.</li>\n<li>We have unpublished features for one and two way mobile alerts.  Contact <a href=\"mailto:support@cloudwi.re\">support@cloudwi.re</a>.</li>\n</ul>"},"response":[],"_postman_id":"b43d8c49-91a1-d9a4-5c0a-5870233fc798"},{"name":"Message Status","id":"0aa27310-9783-d5fe-d694-5ce5d668f023","request":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"57fefdefd16a10e24608ad9a","type":"text"},{"key":"mobileId","value":"14155964193","type":"text"},{"key":"message","value":"Hi there!  Ok I'm here.","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/message/status/{{messageId}}","description":"This method allows the developer to retrieve the status of any outbound mobile terminated message sent to the SMS API that involves the Single Messaging Class.  That includes the subscriber opt-in methods, Send Message and Send Responder Keyword Message.  When using the mentioned methods, cloudwi.re will respond with a tranasactionId.  The transactionId will be used in the URL when calling Get Message Status.\n\nIt does not include any messages sent via Send Campaign.  Status reports for any campaigns can be retrieved in the Campaign Folder using Get Campaign Status.\n\ncloudwi.re recommends to developers that a timer set to a minimum of 5 seconds be set and allowed to pass before retrieving message status.  Although generally, the carriers report the final status in less than a second, this process can sometimes take longer during high queuing events. \n\n<b>Considerations</b>\n<ul>\n<li>This method will check delivery status from Opt-in, Opt-out, Send Message and Send Responder Keyword messages.</li>\n<li>Set a timer to check individual deliveries at least 5 seconds after you attempt the send.</li>\n<li>During high usage events, you may get messages that are queued.  You may flip back and check again at your leisure.</li>\n</ul>"},"response":[{"id":"4fbd1fe6-c750-0bcf-ecd0-ab8a018d52ec","name":"Awaiting response","originalRequest":{"method":"GET","header":[{"key":"authorization","value":"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50TmFtZSI6IkNyYWlncyBBY2NvdW50IiwiY3JlYXRlZCI6IjEyXC8wN1wvMjAxNiAwNTo1MToyOCIsImlkIjoiNTg0N2EzNjBkMTZhMTBlODY3ZmI0NjI1Iiwic2FsdCI6IjY0ZmVmZjUifQ.Algvj9V0wg4NCDUZgej0Sprhbym-Kzsz_314aWMM6eA"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"57fefdefd16a10e24608ad9a","type":"text"},{"key":"mobileId","value":"14155964193","type":"text"},{"key":"message","value":"Hi there!  Ok I'm here.","type":"text"}]},"url":"http://pi.cloudwi.re/message/status/58c9d9a1d16a10fc7259d630"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":""},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":""},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":""},{"key":"Connection","value":"Keep-Alive","name":"Connection","description":""},{"key":"Content-Encoding","value":"gzip","name":"Content-Encoding","description":""},{"key":"Content-Length","value":"144","name":"Content-Length","description":""},{"key":"Content-Type","value":"text/html","name":"Content-Type","description":""},{"key":"Content-Type ","value":"application/json; charset=utf-8","name":"Content-Type ","description":""},{"key":"Date","value":"Thu, 16 Mar 2017 00:17:47 GMT","name":"Date","description":""},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":""},{"key":"Keep-Alive","value":"timeout=5, max=100","name":"Keep-Alive","description":""},{"key":"Pragma","value":"no-cache","name":"Pragma","description":""},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":""},{"key":"Status","value":"200","name":"Status","description":""},{"key":"Vary","value":"Accept-Encoding","name":"Vary","description":""},{"key":"X-Powered-By","value":"PHP/5.5.9-1ubuntu4.21","name":"X-Powered-By","description":""}],"cookie":[{"expires":"Invalid Date","httpOnly":false,"domain":"pi.cloudwi.re","path":"/","secure":false,"value":"u10ogucs675q867hpdbpg22rf6","key":"PHPSESSID"}],"responseTime":"489","body":"{\"status\":\"pass\",\"code\":200,\"message\":\"The message is queued and awaiting an update from the upstream carriers.  You may retry your request later.\",\"results\":[]}"},{"id":"e165404f-4212-cf96-9cba-91b730fcf62a","name":"200 ok","originalRequest":{"method":"GET","header":[{"key":"authorization","value":"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50TmFtZSI6IkNyYWlncyBBY2NvdW50IiwiY3JlYXRlZCI6IjEyXC8wN1wvMjAxNiAwNTo1MToyOCIsImlkIjoiNTg0N2EzNjBkMTZhMTBlODY3ZmI0NjI1Iiwic2FsdCI6IjY0ZmVmZjUifQ.Algvj9V0wg4NCDUZgej0Sprhbym-Kzsz_314aWMM6eA"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"57fefdefd16a10e24608ad9a","type":"text"},{"key":"mobileId","value":"14155964193","type":"text"},{"key":"message","value":"Hi there!  Ok I'm here.","type":"text"}]},"url":"http://pi.cloudwi.re/message/status/58c8b23dd16a105a1c59d61a"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":""},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":""},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":""},{"key":"Connection","value":"Keep-Alive","name":"Connection","description":""},{"key":"Content-Encoding","value":"gzip","name":"Content-Encoding","description":""},{"key":"Content-Length","value":"356","name":"Content-Length","description":""},{"key":"Content-Type","value":"text/html","name":"Content-Type","description":""},{"key":"Content-Type ","value":"application/json; charset=utf-8","name":"Content-Type ","description":""},{"key":"Date","value":"Wed, 15 Mar 2017 03:17:27 GMT","name":"Date","description":""},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":""},{"key":"Keep-Alive","value":"timeout=5, max=100","name":"Keep-Alive","description":""},{"key":"Pragma","value":"no-cache","name":"Pragma","description":""},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":""},{"key":"Status","value":"200","name":"Status","description":""},{"key":"Vary","value":"Accept-Encoding","name":"Vary","description":""},{"key":"X-Powered-By","value":"PHP/5.5.9-1ubuntu4.21","name":"X-Powered-By","description":""}],"cookie":[{"expires":"Invalid Date","httpOnly":false,"domain":"pi.cloudwi.re","path":"/","secure":false,"value":"u10ogucs675q867hpdbpg22rf6","key":"PHPSESSID"}],"responseTime":"714","body":"{\"status\":\"pass\",\"code\":200,\"message\":\"Message Status\",\"results\":[{\"transactionId\":\"58c8b23dd16a105a1c59d61a\",\"created\":\"03\\/15\\/2017 03:17:17\",\"mobileId\":\"+14155964193\",\"message\":\"You have opted-in to Craig Four Alerts & Offers. Msg&Data rates may apply. Max 5msgs\\/mth. Reply HELP for help, STOP to quit.\",\"mediaUrl\":\"\",\"messageId\":\"SM6edbdcfe59ec463db398fb5497e44d7e\",\"errorMessage\":{},\"statuses\":[{\"action\":\"queued\",\"message\":\"\",\"errorCode\":\"\",\"created\":\"03\\/15\\/2017 03:17:19\"},{\"action\":\"sent\",\"message\":\"\",\"errorCode\":\"\",\"created\":\"03\\/15\\/2017 03:17:19\"},{\"action\":\"delivered\",\"message\":\"\",\"errorCode\":\"\",\"created\":\"03\\/15\\/2017 03:17:19\"},{\"action\":\"sent\",\"message\":\"\",\"errorCode\":\"\",\"created\":\"03\\/15\\/2017 03:17:19\"}]}]}"}],"_postman_id":"0aa27310-9783-d5fe-d694-5ce5d668f023"}],"id":"7a8a0a1d-58ba-a740-aaac-0ad91a8fb161","description":"The three methods in the messaging resource comprise of the single messaging class that allows you to send messages to opted-in subscribers or reply to subscribers that used responder keywords.  You can also track back for delivery status of any single class messages including the Opt-In and Opt-Out methods.","event":[{"listen":"prerequest","script":{"id":"81c0d8fd-5fcb-488e-a247-1d2ca151a25e","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"34ddc25c-be34-4c14-9ae8-144c1d9ebeda","type":"text/javascript","exec":[""]}}],"_postman_id":"7a8a0a1d-58ba-a740-aaac-0ad91a8fb161"},{"name":"Campaigns","item":[{"name":"Send Campaign to Store","id":"53b368da-0764-540b-19b1-f1d46a3c51ca","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b> The store ID of the store you are sending the campaign from."},{"key":"name","value":"Your Campaign Name.","description":"<b>REQUIRED:</b>  A campaign name.  It does not need to be unique.","type":"text"},{"key":"message","value":"The message","description":"Self explanatory unless you are a Michigan fan.   1600 character maximum.  <b>*Optional if sending media</b>","type":"text"},{"key":"mediaUrl","value":"The MMS URL","description":"The URL of any media you wish to send.  JPG, GIF or PNG is preferred.  (Must start with http:// or https://)  <b>*Optional if message is included</b>","type":"text"},{"key":"sendAll","value":"true","description":"<b>REQUIRED:</b>  You are notifying cloudwi.re that this is to be sent to each and every opted-in subscriber to the store.  Value will equal 'true'.","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/message/campaign/all","description":"This method allows the developer to send either an SMS or MMS (or both together) message campaign to <b>ALL</b> opted-in subscribers within your store.  By default, all calls to this method will go out on the communication short code that the subscriber is assigned to by cloudwi.re for the requested store. If the subscriber is not opted-in the message will be blocked and an update on each blocked message will be sent to the notification URL.\n\nUnlike the Send Batch Campaign method to a segmented list, this method requires that the same message and media URL that you pass to the SMS API go out to every subscriber.  It cannot be customized for each individual subscriber.\n\nThe cloudwi.re SMS API will receive the data with a 200 if successful and begin queuing up all opted-in subscribers in the store to deliver the campaign.  \n\n<b>Considerations</b>\n<ul>\n<li>Only opted-in numbers will receive the campaign</li>\n<li>Store the transaction ID returned to you with a 200 if you wish to get delivery status with Get Campaign Delivery Status in the Campaigns folder.</li>\n<li>Media URLs must begin with HTTP:// or HTTPS://</li>\n<li>cloudwi.re Supports .JPG, .GIF and .PNG files.  Read the Supported Media guide for more information.</li>\n<li>MMS is limited to 5mb for pictures and 455kb for audio/video.  Refer to the supported media guide for more info on supported URL types for MMS.</li>\n<li>MMS to carriers who do not support it will be sent as a URL.</li>\n<li>You may set up responderContent or a mediaUrl or both together.  One or the other is required though.</li>\n<li>Use '\\n' for line breaks but make sure you test.</li>\n<li>Be weary of special characters...make sure you test.</li>\n</ul>"},"response":[],"_postman_id":"53b368da-0764-540b-19b1-f1d46a3c51ca"},{"name":"Send Batch File Campaign","id":"d5a949c8-8eb6-633f-d917-de33ceb0b68c","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b> The store ID of the store you are sending the campaign from."},{"key":"name","value":"Your Campaign Name","description":"<b>REQUIRED:</b>  A campaign name.  It does not need to be unique.","type":"text"},{"key":"message","value":"The message","description":"Self explanatory unless you are a Michigan fan.   1600 character maximum.  <b>*Optional if sending media</b>","type":"text"},{"key":"mediaUrl","value":"Your MMS URL","description":"The URL of any media you wish to send.  JPG, GIF or PNG is preferred.   (Must start with http:// or https://)  <b>*Optional if message is included</b>","type":"text"},{"key":"file","value":null,"description":"<b>REQUIRED:</b>  The Windows formatted CSV file with the mobile IDs you are campaigning to.  Limited to 5000 mobile numbers per request.","type":"file"}]},"url":"https://moonbeamapi.cloudwi.re/message/import/campaign","description":"This method allows the developer to send either an SMS or MMS via a windows formatted CSV or a text file of mobile numbers.  It exists for developers building user interfaces for their end users.  By default, all calls to this method will go out on the communication short code that the subscriber is assigned to by cloudwi.re for the requested store. If the subscriber is not opted-in the message will be blocked and an update on each blocked message will be sent to the notification URL.  It is capped at 5,000 (5k) messages to a request.\n\n<b>The API will begin processing the campaign as soon as the connection is open.  Please extend your time out settings when utilizing this method when approaching 5k numbers in a batch to be more than safe!  We cannot make a recommendation based on the many factors that go into the connection.  But you should be in the minutes when making this determination.</b>\n\nUnlike the Send Campaign with an array, this method requires that the same static message and media URL that you pass to the SMS API go out to every subscriber.  It cannot be customized for each individual subscriber.  \n\nThe file is simply a list of mobile numbers that should receive the campaign.  Please be advised that cloudwi.re accepts windows formatted CSVs only or a .txt file.  Each number should be in its own row and all numbers should reside in the first column.  Make sure you format the numbers correctly as we ask in every other method....I.E., No + sign Example:\n(19995552222)\n\nThe cloudwi.re SMS API will receive the data with a 200 if successful and begin queuing up all opted-in subscribers in the store to receive the campaign.  The API will then begin sending the campaign at the maximum available throttle.\n\n<b>Considerations</b>\n<ul>\n<li><b>Did you scrub for duplicate mobile numbers?  It's a really good idea before you hit send because the SMS API does not!</b></li>\n<li>The subscriber must be opted-in or the message will be blocked.</li>\n<li>Extend your time outs to allow the API to consume the campaign.</li>\n<li>You may send a maximum of 5,000 (5k) messages per request.</li>\n<li>Messages are limited to 1600 characters, but we advise 160. </li>\n<li>Store the transaction ID returned to you with a 200 if you wish to get delivery status with Get Campaign Delivery Status in the Campaigns folder.</li>\n<li>Media URLs must begin with HTTP:// or HTTPS://</li>\n<li>cloudwi.re Supports .JPG, .GIF and .PNG files.  Read the Supported Media guide for more information.</li>\n<li>MMS is limited to 5mb for pictures and 455kb for audio/video.  Refer to the supported media guide for more info on supported URL types for MMS.</li>\n<li>MMS to carriers who do not support it will be sent as a URL.</li>\n<li>You may set up responderContent or a mediaUrl or both together.  One or the other is required though.</li>\n<li>Use '\\n' for line breaks but make sure you test.</li>\n<li>Be weary of special characters...make sure you test.</li>\n</ul>"},"response":[],"_postman_id":"d5a949c8-8eb6-633f-d917-de33ceb0b68c"},{"name":"Send Batch Campaign","id":"e81fcaf4-15fe-ff81-7569-99d0944eb3bf","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"{{storeId}}","type":"text","warning":"","description":"<b>REQUIRED:</b>  The store ID of the store you are sending the campaign from."},{"key":"mobileList","value":"[{\"number\":\"19994443333\",\"message\":\"Hey Matt, I love college football!\",\"mediaUrl\":\"http://i57.tinypic.com/muk4g4.png\"}, {\"number\":\"19993335555\",\"message\":\"Hey Craig, I love college football!\",\"mediaUrl\":\"http://i57.tinypic.com/muk4g4.png\"}]","type":"text","warning":"","description":"<b>REQUIRED:</b>  The JSON formatted string of mobile numbers and media URLs you wish to send the campaign to.  Limited to 5000 mobile IDs per request.  (mediaUrl must start with http:// or https:// or it will be dropped from the request).  Make sure you test!"}]},"url":"https://moonbeamapi.cloudwi.re/message/send/campaign","description":"This method allows the developer to send either an SMS or MMS (or both together) message campaign to a group of selected subscribers within your store.  With this method you will pass cloudwi.re a mobileList, which is a collection of numbers, messages and media URLs  that are formatted in JSON and converted to a string.  It is capped at 5,000 (5k) messages to a request.\n\n<b>The API will begin processing the campaign as soon as the connection is open.  Please extend your time out settings when utilizing this method when approaching 5k numbers in a batch to be more than safe!  We cannot make a recommendation based on the many factors that go into the connection.  But you should be in the minutes when making this determination.</b>\n\nUnique to this method, you can send a dynamic message and media URL for each subscriber you are sending the campaign too.  Within the list passed,  a 'number' is required.  A 'message' or 'mediaUrl' is required as well.  You may also pass us both.  Each can have a custom value.\n\nThe cloudwi.re SMS API will receive the data with a 200 if successful and begin queuing up the campaign and checking the opt-in status of each subscriber you wish to campaign too.  The API will then begin sending the campaign at the maximum available throttle.  You can use two other methods in this resource to look up delivery data.\n\nAny subscribers who are not in an opted-in state will be reported to the notification URL and dropped from the campaign.  Invalid parameters inside of the mobileList parameter string will not echo back and are sent to the notification URL as subscriber not opted-in errors.\n\n<b>Considerations</b>\n<ul>\n<li><b>Did you scrub for duplicate mobile numbers?  It's a really good idea before you hit send because the SMS API does not!</b></li>\n<li>The subscriber must be opted-in or the message will be blocked.</li>\n<li>Extend your time outs to allow the API to consume the campaign.</li>\n<li>You may send a maximum of 5,000 (5k) messages per request.</li>\n<li>Messages are limited to 1600 characters, but we advise 160. </li>\n<li>Store the transaction ID returned to you with a 200 if you wish to get delivery status with Get Campaign Delivery Status in the Campaigns folder.</li>\n<li>Media URLs must begin with HTTP:// or HTTPS://</li>\n<li>cloudwi.re Supports .JPG, .GIF and .PNG files.  Read the Supported Media guide for more information.</li>\n<li>MMS is limited to 5mb for pictures and 455kb for audio/video.  Refer to the supported media guide for more info on supported URL types for MMS.</li>\n<li>MMS to carriers who do not support it will be sent as a URL.</li>\n<li>You may set up responderContent or a mediaUrl or both together.  One or the other is required though.</li>\n<li>Use '\\n' for line breaks but make sure you test.</li>\n<li>Be weary of special characters...make sure you test.</li>\n</ul>"},"response":[{"id":"a1ee1e14-6745-5480-c089-aa491ac59932","name":"200 ok","originalRequest":{"method":"POST","header":[{"key":"authorization","value":"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50TmFtZSI6IkNyYWlncyBBY2NvdW50IiwiY3JlYXRlZCI6IjEyXC8wN1wvMjAxNiAwNTo1MToyOCIsImlkIjoiNTg0N2EzNjBkMTZhMTBlODY3ZmI0NjI1Iiwic2FsdCI6IjY0ZmVmZjUifQ.Algvj9V0wg4NCDUZgej0Sprhbym-Kzsz_314aWMM6eA"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"5847a690d16a10e867fb4627","type":"text","warning":""},{"key":"mobileList","value":"[{\"number\":\"14155964193\",\"message\":\"Maybe next week!\"}, {\"number\":\"14155964193\",\"message\":\"Maybe next week!\"}]","type":"text","warning":""}]},"url":"http://pi.cloudwi.re/message/send/campaign"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":""},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":""},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":""},{"key":"Connection","value":"Keep-Alive","name":"Connection","description":""},{"key":"Content-Encoding","value":"gzip","name":"Content-Encoding","description":""},{"key":"Content-Length","value":"120","name":"Content-Length","description":""},{"key":"Content-Type","value":"text/html","name":"Content-Type","description":""},{"key":"Content-Type ","value":"application/json; charset=utf-8","name":"Content-Type ","description":""},{"key":"Date","value":"Wed, 15 Mar 2017 03:13:23 GMT","name":"Date","description":""},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":""},{"key":"Keep-Alive","value":"timeout=5, max=100","name":"Keep-Alive","description":""},{"key":"Pragma","value":"no-cache","name":"Pragma","description":""},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":""},{"key":"Status","value":"200","name":"Status","description":""},{"key":"Vary","value":"Accept-Encoding","name":"Vary","description":""},{"key":"X-Powered-By","value":"PHP/5.5.9-1ubuntu4.21","name":"X-Powered-By","description":""}],"cookie":[{"expires":"Invalid Date","httpOnly":false,"domain":"pi.cloudwi.re","path":"/","secure":false,"value":"u10ogucs675q867hpdbpg22rf6","key":"PHPSESSID"}],"responseTime":"1338","body":"{\"status\":\"pass\",\"code\":200,\"message\":\"Campaign Queued\",\"results\":{\"transactionId\":\"58c8b153d16a10f91259d61a\"}}"}],"_postman_id":"e81fcaf4-15fe-ff81-7569-99d0944eb3bf"},{"name":"Send Dynamic File Campaign","id":"c8292de9-f628-4f1c-8a4c-f323cf77fe23","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"description":"<b>REQUIRED:</b> The store ID of the store you are sending the campaign from.","key":"storeId","type":"text","value":"{{storeId}}"},{"description":"<b>REQUIRED:</b>  A campaign name.  It does not need to be unique.","key":"name","type":"text","value":"Craig"},{"description":"<b>REQUIRED:</b>  The Windows formatted CSV file with the mobile IDs you are campaigning to.  Limited to 5000 mobile numbers per request.","key":"file","type":"file","value":null}]},"url":"https://moonbeamapi.cloudwi.re/message/dynamic/campaign"},"response":[],"_postman_id":"c8292de9-f628-4f1c-8a4c-f323cf77fe23"},{"name":"Campaign Delivery Status","id":"f35b5402-5c5d-246b-a67e-def851e95f23","request":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"57fefdefd16a10e24608ad9a","type":"text"},{"key":"mobileId","value":"14155964193","type":"text"},{"key":"message","value":"Hi there!  Ok I'm here.","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/message/campaign/status/{{transactionId}}/1","description":"This method allows the developer to page through campaign delivery statistics by campaign transaction ID.  Only delivery statistics of messages that passed opt-in status checks will be provided in this payload.  This includes any delivery errors.  Any message to a subscriber that was not opted-in will hit your notification URL.\n\nA maximum of 100 records are returned per page."},"response":[],"_postman_id":"f35b5402-5c5d-246b-a67e-def851e95f23"}],"id":"eea7ed71-a475-64c8-44d8-33d14abb39ec","description":"The four methods in the campaigns resource comprise of the campaign messaging class to which you are sending messages to many subscribers at once.  cloudwi.re provides three ways for you to accomplish this in order to make the developer's life a little easier.  The fourth method allows you to track back for delivery status of the campaign.","event":[{"listen":"prerequest","script":{"id":"25312465-ccfc-499c-9a08-e58968f73f25","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"eeb2959f-8ed0-4ee9-863e-442e1d3eba55","type":"text/javascript","exec":[""]}}],"_postman_id":"eea7ed71-a475-64c8-44d8-33d14abb39ec"},{"name":"Intel","item":[{"name":"E164 Intel","id":"985a3608-c604-8409-9fe5-1b4d0291a9d6","request":{"auth":{"type":"noauth"},"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"storeId","value":"57fefdefd16a10e24608ad9a","type":"text"},{"key":"mobileId","value":"14155964193","type":"text"},{"key":"message","value":"Hi there!  Ok I'm here.","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/subscriber/e164intel/{{mobileId}}","description":"This method allows the developer to validate phone numbers in the E.164 standard and return the country to which they belong.  The data returned will include the line type.  But it is not reliable and cloudwi.re provides it simply as a courtesy.  It is not updated.  If you need accurate line type data use Get Carrier Intel.  \n\nIn most messaging methods, cloudwi.re will run the check before processing your request.  However, the method is published for any additional list scrubbing or country identification you would like to do as a friendly courtesy.  \n\nYou will pass the mobile number in the URL of the request.  There is no charge for this method.  The mobile ID should include the country dialing code.  The + sign is not required."},"response":[],"_postman_id":"985a3608-c604-8409-9fe5-1b4d0291a9d6"},{"name":"Number Fraud Intel","id":"f37c2fb0-0ae6-c9c9-3af2-a9d8c795acb9","request":{"auth":{"type":"noauth"},"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[]},"url":"https://moonbeamapi.cloudwi.re/subscriber/reputationintel/{{mobileId}}/{{storeId}}","description":"This method provides the developer with a risk analysis of a mobile or landline telephone number.  The lookup is applicable to the USA, Canada, Mexico, UK, France, Spain, Italy, Sweden, Germany, Australia, Philippines, Singapore, Turkey, Hong Kong, and Israel.\n\nIt is provided for developers who are running commerce applications and wish to add an additional layer of fraud detection by scoring a mobile number based on risk.  The data returned will include a score of 1-4 with 4 being the highest risk.  The type of risk associated with high risk numbers will also be reported in the synchronous body returned.\n\nYou will pass the mobile number in question and the store ID in the URL of the request.  This data is provided to us by Whitepages Pro and it is .009 cents per request.  \n\n"},"response":[],"_postman_id":"f37c2fb0-0ae6-c9c9-3af2-a9d8c795acb9"},{"name":"Carrier Intel","id":"49a43a12-0f9d-6451-3e5f-1712ef96a94a","request":{"auth":{"type":"noauth"},"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[]},"url":"https://moonbeamapi.cloudwi.re/subscriber/carrierintel/{{mobileId}}/{{storeId}}","description":"This method allows the developer to check the carrier ID, line type, proper display format, country code and mobile network code for a specific number.  All North American lines are covered in this lookup as are many European and other international locations.  \n\nThe method can be used for list scrubbing or to check the MMS capability of a mobile device.  \n\nYou will pass the mobile number in question and the store ID in the URL of the request.  Each successful request is $.005 cents."},"response":[],"_postman_id":"49a43a12-0f9d-6451-3e5f-1712ef96a94a"}],"id":"96d42d1e-5ccc-8a82-1f23-c1894a861065","description":"Although technically part of the subscriber resource, for easier consumption we've grouped the intelligence methods into one place.  The four GET methods of the intel section  consist of E164 Intel, Carrier Intel, Subscriber Detailed Intel and Reputation Intel.  E164 Intel allows the developer to validate whether a phone number you intend to send an SMS too is valid and encompasses all international standards.  It is a free tool.  \n\nCarrier Intel allows the developer to check if a number is a mobile or landline number and also passes the country code and carrier where the number is parked.  Subscriber Detailed Intel arms the developer with additional information about subscribers including name, carrier ID, known relatives, demographics, known emails and social media handles and follower counts.  Reputation Intel reviews the carrier ID and spam history of a landline or mobile number and analyzes it for risk for commerce applications.  All three are pay per request methods.  \n\nRemember that phone numbers are passed to cloudwi.re with the country code included and without the + sign.  ","event":[{"listen":"prerequest","script":{"id":"e766965f-dffa-42f0-8503-3bb3e6c1cf2a","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"c82134f4-aaca-4913-9be8-3eb1a57b51fb","type":"text/javascript","exec":[""]}}],"_postman_id":"96d42d1e-5ccc-8a82-1f23-c1894a861065"},{"name":"Account Management","item":[{"name":"Retrieve your Key and ID","id":"0b3d3468-1a4e-4126-be0d-a2219960b41c","request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"email","value":"Your Email","description":"<b>Required:</b> The email address you signed up with.","type":"text"},{"key":"password","value":"Your Password","description":"<b>Required:</b> The password address you signed up with.","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/user/login","description":"This method allows you to retreive your API key and account ID to begin with cloudwi.re after you have signed-up."},"response":[],"_postman_id":"0b3d3468-1a4e-4126-be0d-a2219960b41c"},{"name":"Add User","id":"1bbcafb5-da16-cb9b-d79b-70842dab6009","request":{"method":"POST","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"accountId","value":"{{accountId}}","type":"text","description":"<b>REQUIRED:</b>  Your account ID."},{"key":"firstName","value":"First Name","type":"text","description":"<b>REQUIRED:</b>  User first name."},{"key":"lastName","value":"Last Name","type":"text","description":"<b>REQUIRED:</b>  User last name."},{"key":"email","value":"Users Email","type":"text","description":"<b>REQUIRED:</b>  User email."},{"key":"password","value":"User Password","type":"text","description":"<b>REQUIRED:</b>  User password."},{"key":"phone","value":"User Phone","type":"text","description":"<b>REQUIRED:</b>  User phone."}]},"url":"https://moonbeamapi.cloudwi.re/account/adduser","description":"This Method allows you to add a user to the account.  The user will have administrative access to the command portal and will be able to administrate all stores under the account in the UI."},"response":[{"id":"4dfc08a0-8b0c-df95-c1e3-7a4291642af0","name":"200ok","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"accountId","value":"58be3859d16a108118490e15","type":"text"},{"key":"firstName","value":"Jim","type":"text"},{"key":"lastName","value":"Hamhocks","type":"text"},{"key":"email","value":"hamhocks@cloudwi.re","type":"text"},{"key":"password","value":"password","type":"text"},{"key":"phone","value":"19994442323","type":"text"}]},"url":{"raw":"http://pi.cloudwi.re/account/adduser?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50TmFtZSI6IkhlbWFUZXJyYSIsImNyZWF0ZWQiOiIwM1wvMDdcLzIwMTcgMDQ6MzQ6MzMiLCJpZCI6IjU4YmUzODU5ZDE2YTEwODExODQ5MGUxNSIsInNhbHQiOiJiODAyZmY1In0.79FQ-f4eNEQYUYs4oeKQXAoOEqKSHbtbspa6uJAG6XI","protocol":"http","host":["pi","cloudwi","re"],"path":["account","adduser"],"query":[{"key":"token","value":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50TmFtZSI6IkhlbWFUZXJyYSIsImNyZWF0ZWQiOiIwM1wvMDdcLzIwMTcgMDQ6MzQ6MzMiLCJpZCI6IjU4YmUzODU5ZDE2YTEwODExODQ5MGUxNSIsInNhbHQiOiJiODAyZmY1In0.79FQ-f4eNEQYUYs4oeKQXAoOEqKSHbtbspa6uJAG6XI"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":""},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":""},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":""},{"key":"Connection","value":"Keep-Alive","name":"Connection","description":""},{"key":"Content-Encoding","value":"gzip","name":"Content-Encoding","description":""},{"key":"Content-Length","value":"87","name":"Content-Length","description":""},{"key":"Content-Type","value":"text/html","name":"Content-Type","description":""},{"key":"Content-Type ","value":"application/json; charset=utf-8","name":"Content-Type ","description":""},{"key":"Date","value":"Thu, 09 Mar 2017 17:01:11 GMT","name":"Date","description":""},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":""},{"key":"Keep-Alive","value":"timeout=5, max=100","name":"Keep-Alive","description":""},{"key":"Pragma","value":"no-cache","name":"Pragma","description":""},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":""},{"key":"Status","value":"200","name":"Status","description":""},{"key":"Vary","value":"Accept-Encoding","name":"Vary","description":""},{"key":"X-Powered-By","value":"PHP/5.5.9-1ubuntu4.21","name":"X-Powered-By","description":""}],"cookie":[{"expires":"Invalid Date","httpOnly":false,"domain":"pi.cloudwi.re","path":"/","secure":false,"value":"u10ogucs675q867hpdbpg22rf6","key":"PHPSESSID"}],"responseTime":"491","body":"{\"status\":\"pass\",\"code\":200,\"message\":\"Account Created\",\"results\":true}"}],"_postman_id":"1bbcafb5-da16-cb9b-d79b-70842dab6009"},{"name":"Account Details","id":"7f08fecd-6301-4ea5-8ad1-bb96ac517178","request":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"email","value":"craig@crmtext.com","type":"text"},{"key":"fileType","value":"JSON","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/account/details/{{accountId}}","description":"This method allows the developer to view data on all stores that exist under the account.  The data returned will include the store's compliance information and templates, keywords and subscriber counts.  \n\nThe accountId will be passed in the URL of the request."},"response":[{"id":"084f416d-cc81-e47f-a8bd-2946538bf072","name":"200 ok","originalRequest":{"method":"GET","header":[{"key":"authorization","value":"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50TmFtZSI6IlN3b3JkIiwiY3JlYXRlZCI6IjEyXC8xNVwvMjAxNiAxMjo0NDoxNyIsImlkIjoiNTg1MWU3NjFkMTZhMTAzOTIxOGI0NTY4Iiwic2FsdCI6ImEzNTczM2EifQ.7boJfKYYPB6BQBOIBEyswToTrWbJOLlunh-J5R380u0"}],"body":{"mode":"formdata","formdata":[{"key":"email","value":"craig@crmtext.com","type":"text"},{"key":"fileType","value":"JSON","type":"text"}]},"url":"http://pi.cloudwi.re/account/details/5851e761d16a1039218b4568"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept","name":"Access-Control-Allow-Headers","description":""},{"key":"Access-Control-Allow-Origin","value":"*","name":"Access-Control-Allow-Origin","description":""},{"key":"Cache-Control","value":"no-store, no-cache, must-revalidate, post-check=0, pre-check=0","name":"Cache-Control","description":""},{"key":"Connection","value":"Keep-Alive","name":"Connection","description":""},{"key":"Content-Encoding","value":"gzip","name":"Content-Encoding","description":""},{"key":"Content-Length","value":"949","name":"Content-Length","description":""},{"key":"Content-Type","value":"text/html","name":"Content-Type","description":""},{"key":"Content-Type ","value":"application/json; charset=utf-8","name":"Content-Type ","description":""},{"key":"Date","value":"Thu, 16 Mar 2017 16:53:53 GMT","name":"Date","description":""},{"key":"Expires","value":"Thu, 19 Nov 1981 08:52:00 GMT","name":"Expires","description":""},{"key":"Keep-Alive","value":"timeout=5, max=100","name":"Keep-Alive","description":""},{"key":"Pragma","value":"no-cache","name":"Pragma","description":""},{"key":"Server","value":"Apache/2.4.7 (Ubuntu)","name":"Server","description":""},{"key":"Status","value":"200","name":"Status","description":""},{"key":"Vary","value":"Accept-Encoding","name":"Vary","description":""},{"key":"X-Powered-By","value":"PHP/5.5.9-1ubuntu4.21","name":"X-Powered-By","description":""}],"cookie":[{"expires":"Invalid Date","httpOnly":false,"domain":"pi.cloudwi.re","path":"/","secure":false,"value":"u10ogucs675q867hpdbpg22rf6","key":"PHPSESSID"}],"responseTime":"415","body":"{\"status\":\"pass\",\"code\":200,\"message\":\"Account Details\",\"results\":{\"accountName\":\"Sword\",\"apiKey\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50TmFtZSI6IlN3b3JkIiwiY3JlYXRlZCI6IjEyXC8xNVwvMjAxNiAxMjo0NDoxNyIsImlkIjoiNTg1MWU3NjFkMTZhMTAzOTIxOGI0NTY4Iiwic2FsdCI6ImEzNTczM2EifQ.7boJfKYYPB6BQBOIBEyswToTrWbJOLlunh-J5R380u0\",\"created\":\"12\\/15\\/2016 12:44:17\",\"id\":\"5851e761d16a1039218b4568\",\"legacy\":false,\"mCreated\":{\"sec\":1488526949,\"usec\":0},\"salt\":\"a35733a\",\"store\":[{\"storeName\":\"Smokehouse Brewing\",\"timeZone\":\"Eastern\",\"inboundCallbackURL\":\"https:\\/\\/fuvfkf7mlzex.runscope.net\",\"messageStatusURL\":\"https:\\/\\/fuvfkf7mlzex.runscope.net\",\"compliancePhone\":\"6144850227\",\"complianceEmail\":\"matt.sword@yahoo.com\",\"_id\":{\"$id\":\"5851ed6ad16a1084248b457d\"},\"mCreated\":{\"sec\":1488850186,\"usec\":0},\"created\":\"12\\/15\\/2016 01:10:01\",\"template\":{\"helpMessage\":\"Smokehouse Brewing Alerts & Offers. Msg&Data rates may apply. Max 5msgs\\/mth. Reply HELP for help, STOP to quit. 6144850227.\",\"stopMessage\":\"optout  message\",\"requestMessage\":\"Reply YES to join Smokehouse Brewing Alerts & Offers. Msg&Data rates may apply. Max 5msgs\\/mth. Reply HELP for help, STOP to quit.\",\"confirmationMessage\":\"You have opted-in to Smokehouse Brewing Alerts & Offers. Msg&Data rates may apply. Max 5msgs\\/mth. Reply HELP for help, STOP to quit.\",\"alreadyOptedInMessage\":\"You are already opted-in to Smokehouse Brewing\"},\"keyword\":[{\"keywordType\":\"opt-in\",\"shortCode\":\"+15054046477\",\"keyword\":\"keytest\",\"mCreated\":{\"sec\":1488850186,\"usec\":0},\"created\":\"12\\/15\\/2016 01:59:04\",\"_id\":{\"$id\":\"5851f8e8d16a1047278b4579\"},\"mediaUrl\":\"\",\"responderContent\":\"\"},{\"keywordType\":\"opt-in\",\"shortCode\":\"+19182057328\",\"keyword\":\"stickygoo\",\"mCreated\":{\"sec\":1488850186,\"usec\":0},\"created\":\"12\\/15\\/2016 01:59:04\",\"_id\":{\"$id\":\"5851f8e8d16a1047278b4545\"},\"mediaUrl\":\"\",\"responderContent\":\"\"},{\"keywordType\":\"opt-in\",\"shortCode\":\"+19182057328\",\"keyword\":\"sticky\",\"mCreated\":{\"sec\":1488850186,\"usec\":0},\"created\":\"12\\/15\\/2016 01:59:04\",\"_id\":{\"$id\":\"5851f8e8d16a1047278b4544\"},\"mediaUrl\":\"\",\"responderContent\":\"\"}],\"settings\":{\"confirmation\":\"enabled\",\"already\":\"enabled\"}}],\"suspended\":false,\"user\":[{\"_id\":{\"$id\":\"5851e761d16a1039218b4567\"},\"accountName\":\"Sword\",\"firstName\":\"Matt\",\"lastName\":\"Sword\",\"email\":\"matt.sword@yahoo.com\",\"phone\":\"6142455185\",\"mCreated\":{\"sec\":1488850186,\"usec\":0},\"created\":\"12\\/15\\/2016 12:44:17\"}]}}"}],"_postman_id":"7f08fecd-6301-4ea5-8ad1-bb96ac517178"},{"name":"Subscriber Status by Account","id":"0b0557ab-a24f-e336-921c-8e59fdf6b651","request":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[{"key":"keyword","value":"october","type":"text"},{"key":"shortCode","value":"15054046477","type":"text"}]},"url":"https://moonbeamapi.cloudwi.re/subscriber/status/{{mobileId}}","description":"This method allows the developer to retrieve the opt-in status of a mobile subscriber for all stores within the account where the subscriber exists in any status.  If the subscriber has never communicated with the store at any level, they will not be displayed.\n\nThe mobileId will be inserted in the URL of the request."},"response":[],"_postman_id":"0b0557ab-a24f-e336-921c-8e59fdf6b651"},{"name":"Account Messages","id":"444789e1-0baf-474c-838e-2ff2c07c71c1","request":{"method":"GET","header":[{"key":"authorization","value":"{{Authorization}}"}],"body":{"mode":"formdata","formdata":[]},"url":"https://moonbeamapi.cloudwi.re/account/messages/{{accountId}}/1","description":"This method will pull down a list of inbound and outbound messages from all stores in the account.  It's built for tracking conversations and mobile history.  However, it does not return sent campaign messages.\n\nIt's in most recent order and you may page through the results.  Set the Account ID in the URL of your request."},"response":[],"_postman_id":"444789e1-0baf-474c-838e-2ff2c07c71c1"}],"id":"000722f9-9902-5c36-6dbf-b963b6b99a56","description":"The four methods that comprise the Subscriber resource exist to opt-in and opt-out subscribers to a store.  Subscriber's must be opted-in to a store for recurring messaging.  Additionally, the developer can also look up individual subscriber opt-in status at the store level and retrieve individual subscriber message history with a store.  ","event":[{"listen":"prerequest","script":{"id":"d88cadf0-090e-44ee-a930-26e92ac4d91f","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"8a1d9970-0d31-487b-9436-13194ee5e393","type":"text/javascript","exec":[""]}}],"_postman_id":"000722f9-9902-5c36-6dbf-b963b6b99a56"}],"event":[{"listen":"prerequest","script":{"id":"38408036-c914-4085-85c1-d1b3a7963ad4","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"ec19c08d-e2c5-4ce8-94ee-42919cc41acd","type":"text/javascript","exec":[""]}}]}