[{"data":1,"prerenderedAt":1743},["ShallowReactive",2],{"docs-page:\u002Fdocs\u002Fwebhooks\u002Finbound-mms":3,"docs-navigation":1375,"docs-surround:\u002Fdocs\u002Fwebhooks\u002Finbound-mms":1516,"icon:building-bank":1521,"icon:building-store":1547,"icon:chart-bar":1562,"icon:chart-pie":1575,"icon:code":1582,"icon:discount":1592,"icon:heart-handshake":1606,"icon:mail-forward":1619,"icon:messages":1632,"icon:microphone-2":1639,"icon:photo":1646,"icon:plug-connected":1659,"icon:school":1678,"icon:speakerphone":1685,"icon:stethoscope":1695,"icon:trophy":1711,"icon:user-plus":1730},{"id":4,"title":5,"body":6,"description":1364,"extension":1365,"group":1366,"meta":1367,"navTitle":1366,"navigation":250,"path":1368,"rawbody":1369,"seo":1370,"status":1371,"stem":1372,"updated":1373,"__hash__":1374},"docs\u002Fdocs\u002F08.webhooks\u002F03.inbound-mms.md","Inbound SMS and MMS",{"type":7,"value":8,"toc":1360},"minimark",[9,13,30,39,44,49,52,98,126,152,156,1356],[10,11,12],"p",{},"This webhook delivers MMS (picture messages) as well as SMS. Wire2Air receives the message from the carrier, matches it to your account by short code and keyword, and calls your URL.",[14,15,18],"callout",{"type":16,"question":17},"pending","OQ-18",[10,19,20,21,25,26,29],{},"The previous docs said senders must start an MMS with ",[22,23,24],"code",{},"@"," and your keyword (for example ",[22,27,28],{},"@DemoMMS",") for it to reach you. Whether that is still required has not been confirmed.",[31,32,36],"endpoint",{"auth":33,"method":34,"url":35},"none","GET","https:\u002F\u002Fyour-server.example\u002Fwire2air\u002Finbound-mms",[10,37,38],{},"Your URL. Wire2Air appends the parameters below as a query string.",[40,41,43],"h2",{"id":42},"parameters","Parameters",[45,46],"param-table",{":params":47,"id":48},"[{\"name\":\"mobilenumber\",\"in\":\"query\",\"type\":\"string\",\"required\":true,\"description\":\"The sender's mobile number.\"},{\"name\":\"message\",\"in\":\"query\",\"type\":\"string\",\"required\":false,\"description\":\"Text the sender wrote.\"},{\"name\":\"rcvd\",\"in\":\"query\",\"type\":\"string\",\"required\":true,\"example\":\"1\u002F1\u002F2009 03:00:00PM\",\"description\":\"When Wire2Air received the message.\"},{\"name\":\"shortcode\",\"in\":\"query\",\"type\":\"string\",\"required\":true,\"example\":\"27126\",\"description\":\"Your short code the message was sent to.\"},{\"name\":\"subject\",\"in\":\"query\",\"type\":\"string\",\"required\":false,\"example\":\"demo mms\",\"description\":\"The MMS subject.\"},{\"name\":\"baseurl\",\"in\":\"query\",\"type\":\"string\",\"required\":false,\"example\":\"http:\u002F\u002Fmms.wire2air.com\u002Fmms\u002Fmmsinbox\u002F\",\"description\":\"Where the message's files are stored. Join it with each file name in `attachments` to download a file.\"},{\"name\":\"attachments\",\"in\":\"query\",\"type\":\"string\",\"required\":false,\"example\":\"0.smil,1.jpg,2.txt\",\"description\":\"Comma-separated file names.\"},{\"name\":\"keyword\",\"in\":\"query\",\"type\":\"string\",\"required\":false,\"example\":\"@demomms\",\"description\":\"The keyword the message was sent with. Shown in the previous example request but not in its parameter list.\"}]","param",[10,50,51],{},"An example request, URL-encoded:",[53,54,60],"pre",{"className":55,"code":56,"filename":57,"language":58,"meta":59,"style":59},"language-http shiki shiki-themes github-light-high-contrast github-dark-high-contrast","GET \u002Fwire2air\u002Finbound-mms?mobilenumber=12125551234&rcvd=1%2F1%2F2009%2003%3A00%3A00PM&shortcode=27126&subject=demo%20mms&baseurl=http%3A%2F%2Fmms.wire2air.com%2Fmms%2Fmmsinbox%2F&attachments=0.smil%2C1.jpg%2C2.txt&keyword=%40demomms HTTP\u002F1.1\nHost: your-server.example\n","Request from Wire2Air","http","",[22,61,62,84],{"__ignoreMap":59},[63,64,67,70,74,77,80],"span",{"class":65,"line":66},"line",1,[63,68,34],{"class":69},"sHUrx",[63,71,73],{"class":72},"suds8"," \u002Fwire2air\u002Finbound-mms?mobilenumber=12125551234&rcvd=1%2F1%2F2009%2003%3A00%3A00PM&shortcode=27126&subject=demo%20mms&baseurl=http%3A%2F%2Fmms.wire2air.com%2Fmms%2Fmmsinbox%2F&attachments=0.smil%2C1.jpg%2C2.txt&keyword=%40demomms ",[63,75,76],{"class":69},"HTTP",[63,78,79],{"class":72},"\u002F",[63,81,83],{"class":82},"s-5SL","1.1\n",[63,85,87,91,94],{"class":65,"line":86},2,[63,88,90],{"class":89},"sne4z","Host",[63,92,93],{"class":69},":",[63,95,97],{"class":96},"sT6z2"," your-server.example\n",[14,99,101],{"type":16,"question":100},"OQ-25",[10,102,103,104,107,108,111,112,115,116,121,122,125],{},"The previous docs wrote these names in lower case, but their PHP example read ",[22,105,106],{},"MobileNumber",", ",[22,109,110],{},"Message"," and ",[22,113,114],{},"Rcvd"," in mixed case, as on the ",[117,118,120],"a",{"href":119},"\u002Fdocs\u002Fwebhooks\u002Finbound-sms\u002F","inbound SMS"," webhook. Which case Wire2Air sends, and the time zone of ",[22,123,124],{},"rcvd",", are not confirmed. The examples below accept both spellings of the sender's number.",[14,127,130],{"type":128,"title":129},"warning","Media URLs use plain HTTP",[10,131,132,133,136,137,140,141,144,145,148,149,151],{},"The documented ",[22,134,135],{},"baseurl"," is an ",[22,138,139],{},"http:\u002F\u002F"," address on ",[22,142,143],{},"mms.wire2air.com",", which also redirects ",[22,146,147],{},"https:\u002F\u002F"," requests to ",[22,150,139],{},". Media fetched from it is not encrypted in transit.",[40,153,155],{"id":154},"examples","Examples",[157,158,159,443,789,1120],"code-group",{},[53,160,165],{"className":161,"code":162,"filename":163,"language":164,"meta":59,"style":59},"language-php shiki shiki-themes github-light-high-contrast github-dark-high-contrast","\u003C?php\n\u002F\u002F Wire2Air's casing is unconfirmed, so accept both spellings.\nfunction param(string $lower, string $mixed): string\n{\n    return $_GET[$lower] ?? $_GET[$mixed] ?? '';\n}\n\n$sender = param('mobilenumber', 'MobileNumber');\n$subject = $_GET['subject'] ?? '';\n$baseUrl = $_GET['baseurl'] ?? '';\n$files = array_filter(array_map('trim', explode(',', $_GET['attachments'] ?? '')));\n\nforeach ($files as $file) {\n    \u002F\u002F Download each file from $baseUrl . $file and store it.\n    error_log('MMS file from ' . $sender . ': ' . $baseUrl . $file);\n}\nhttp_response_code(200);\n","PHP","php",[22,166,167,175,181,210,216,239,245,252,276,299,320,366,371,386,392,425,430],{"__ignoreMap":59},[63,168,169,172],{"class":65,"line":66},[63,170,171],{"class":69},"\u003C?",[63,173,174],{"class":82},"php\n",[63,176,177],{"class":65,"line":86},[63,178,180],{"class":179},"sLBg1","\u002F\u002F Wire2Air's casing is unconfirmed, so accept both spellings.\n",[63,182,184,187,191,194,197,200,202,205,207],{"class":65,"line":183},3,[63,185,186],{"class":69},"function",[63,188,190],{"class":189},"sKwhi"," param",[63,192,193],{"class":72},"(",[63,195,196],{"class":69},"string",[63,198,199],{"class":72}," $lower, ",[63,201,196],{"class":69},[63,203,204],{"class":72}," $mixed)",[63,206,93],{"class":69},[63,208,209],{"class":69}," string\n",[63,211,213],{"class":65,"line":212},4,[63,214,215],{"class":72},"{\n",[63,217,219,222,225,228,231,233,236],{"class":65,"line":218},5,[63,220,221],{"class":69},"    return",[63,223,224],{"class":72}," $_GET[$lower] ",[63,226,227],{"class":69},"??",[63,229,230],{"class":72}," $_GET[$mixed] ",[63,232,227],{"class":69},[63,234,235],{"class":96}," ''",[63,237,238],{"class":72},";\n",[63,240,242],{"class":65,"line":241},6,[63,243,244],{"class":72},"}\n",[63,246,248],{"class":65,"line":247},7,[63,249,251],{"emptyLinePlaceholder":250},true,"\n",[63,253,255,258,261,263,265,268,270,273],{"class":65,"line":254},8,[63,256,257],{"class":72},"$sender ",[63,259,260],{"class":69},"=",[63,262,190],{"class":189},[63,264,193],{"class":72},[63,266,267],{"class":96},"'mobilenumber'",[63,269,107],{"class":72},[63,271,272],{"class":96},"'MobileNumber'",[63,274,275],{"class":72},");\n",[63,277,279,282,284,287,290,293,295,297],{"class":65,"line":278},9,[63,280,281],{"class":72},"$subject ",[63,283,260],{"class":69},[63,285,286],{"class":72}," $_GET[",[63,288,289],{"class":96},"'subject'",[63,291,292],{"class":72},"] ",[63,294,227],{"class":69},[63,296,235],{"class":96},[63,298,238],{"class":72},[63,300,302,305,307,309,312,314,316,318],{"class":65,"line":301},10,[63,303,304],{"class":72},"$baseUrl ",[63,306,260],{"class":69},[63,308,286],{"class":72},[63,310,311],{"class":96},"'baseurl'",[63,313,292],{"class":72},[63,315,227],{"class":69},[63,317,235],{"class":96},[63,319,238],{"class":72},[63,321,323,326,328,331,333,336,338,341,343,346,348,351,354,357,359,361,363],{"class":65,"line":322},11,[63,324,325],{"class":72},"$files ",[63,327,260],{"class":69},[63,329,330],{"class":82}," array_filter",[63,332,193],{"class":72},[63,334,335],{"class":82},"array_map",[63,337,193],{"class":72},[63,339,340],{"class":96},"'trim'",[63,342,107],{"class":72},[63,344,345],{"class":82},"explode",[63,347,193],{"class":72},[63,349,350],{"class":96},"','",[63,352,353],{"class":72},", $_GET[",[63,355,356],{"class":96},"'attachments'",[63,358,292],{"class":72},[63,360,227],{"class":69},[63,362,235],{"class":96},[63,364,365],{"class":72},")));\n",[63,367,369],{"class":65,"line":368},12,[63,370,251],{"emptyLinePlaceholder":250},[63,372,374,377,380,383],{"class":65,"line":373},13,[63,375,376],{"class":69},"foreach",[63,378,379],{"class":72}," ($files ",[63,381,382],{"class":69},"as",[63,384,385],{"class":72}," $file) {\n",[63,387,389],{"class":65,"line":388},14,[63,390,391],{"class":179},"    \u002F\u002F Download each file from $baseUrl . $file and store it.\n",[63,393,395,398,400,403,406,409,412,415,417,420,422],{"class":65,"line":394},15,[63,396,397],{"class":82},"    error_log",[63,399,193],{"class":72},[63,401,402],{"class":96},"'MMS file from '",[63,404,405],{"class":69}," .",[63,407,408],{"class":72}," $sender ",[63,410,411],{"class":69},".",[63,413,414],{"class":96}," ': '",[63,416,405],{"class":69},[63,418,419],{"class":72}," $baseUrl ",[63,421,411],{"class":69},[63,423,424],{"class":72}," $file);\n",[63,426,428],{"class":65,"line":427},16,[63,429,244],{"class":72},[63,431,433,436,438,441],{"class":65,"line":432},17,[63,434,435],{"class":82},"http_response_code",[63,437,193],{"class":72},[63,439,440],{"class":82},"200",[63,442,275],{"class":72},[53,444,449],{"className":445,"code":446,"filename":447,"language":448,"meta":59,"style":59},"language-python shiki shiki-themes github-light-high-contrast github-dark-high-contrast","from http.server import BaseHTTPRequestHandler, HTTPServer\nfrom urllib.parse import parse_qs, urlparse\n\n\nclass InboundMms(BaseHTTPRequestHandler):\n    def do_GET(self):\n        params = parse_qs(urlparse(self.path).query)\n\n        def param(lower, mixed):\n            # Wire2Air's casing is unconfirmed, so accept both spellings.\n            values = params.get(lower) or params.get(mixed) or [\"\"]\n            return values[0]\n\n        sender = param(\"mobilenumber\", \"MobileNumber\")\n        base_url = params.get(\"baseurl\", [\"\"])[0]\n        files = [f.strip() for f in params.get(\"attachments\", [\"\"])[0].split(\",\") if f.strip()]\n        for name in files:\n            print(f\"MMS file from {sender}: {base_url}{name}\")\n        self.send_response(200)\n        self.end_headers()\n\n\nHTTPServer((\"\", 8080), InboundMms).serve_forever()\n","Python 3","python",[22,450,451,465,477,481,485,502,513,529,533,543,548,575,588,592,613,638,685,698,742,755,763,768,773],{"__ignoreMap":59},[63,452,453,456,459,462],{"class":65,"line":66},[63,454,455],{"class":69},"from",[63,457,458],{"class":72}," http.server ",[63,460,461],{"class":69},"import",[63,463,464],{"class":72}," BaseHTTPRequestHandler, HTTPServer\n",[63,466,467,469,472,474],{"class":65,"line":86},[63,468,455],{"class":69},[63,470,471],{"class":72}," urllib.parse ",[63,473,461],{"class":69},[63,475,476],{"class":72}," parse_qs, urlparse\n",[63,478,479],{"class":65,"line":183},[63,480,251],{"emptyLinePlaceholder":250},[63,482,483],{"class":65,"line":212},[63,484,251],{"emptyLinePlaceholder":250},[63,486,487,490,494,496,499],{"class":65,"line":218},[63,488,489],{"class":69},"class",[63,491,493],{"class":492},"soyes"," InboundMms",[63,495,193],{"class":72},[63,497,498],{"class":82},"BaseHTTPRequestHandler",[63,500,501],{"class":72},"):\n",[63,503,504,507,510],{"class":65,"line":241},[63,505,506],{"class":69},"    def",[63,508,509],{"class":189}," do_GET",[63,511,512],{"class":72},"(self):\n",[63,514,515,518,520,523,526],{"class":65,"line":247},[63,516,517],{"class":72},"        params ",[63,519,260],{"class":69},[63,521,522],{"class":72}," parse_qs(urlparse(",[63,524,525],{"class":82},"self",[63,527,528],{"class":72},".path).query)\n",[63,530,531],{"class":65,"line":254},[63,532,251],{"emptyLinePlaceholder":250},[63,534,535,538,540],{"class":65,"line":278},[63,536,537],{"class":69},"        def",[63,539,190],{"class":189},[63,541,542],{"class":72},"(lower, mixed):\n",[63,544,545],{"class":65,"line":301},[63,546,547],{"class":179},"            # Wire2Air's casing is unconfirmed, so accept both spellings.\n",[63,549,550,553,555,558,561,564,566,569,572],{"class":65,"line":322},[63,551,552],{"class":72},"            values ",[63,554,260],{"class":69},[63,556,557],{"class":72}," params.get(lower) ",[63,559,560],{"class":69},"or",[63,562,563],{"class":72}," params.get(mixed) ",[63,565,560],{"class":69},[63,567,568],{"class":72}," [",[63,570,571],{"class":96},"\"\"",[63,573,574],{"class":72},"]\n",[63,576,577,580,583,586],{"class":65,"line":368},[63,578,579],{"class":69},"            return",[63,581,582],{"class":72}," values[",[63,584,585],{"class":82},"0",[63,587,574],{"class":72},[63,589,590],{"class":65,"line":373},[63,591,251],{"emptyLinePlaceholder":250},[63,593,594,597,599,602,605,607,610],{"class":65,"line":388},[63,595,596],{"class":72},"        sender ",[63,598,260],{"class":69},[63,600,601],{"class":72}," param(",[63,603,604],{"class":96},"\"mobilenumber\"",[63,606,107],{"class":72},[63,608,609],{"class":96},"\"MobileNumber\"",[63,611,612],{"class":72},")\n",[63,614,615,618,620,623,626,629,631,634,636],{"class":65,"line":394},[63,616,617],{"class":72},"        base_url ",[63,619,260],{"class":69},[63,621,622],{"class":72}," params.get(",[63,624,625],{"class":96},"\"baseurl\"",[63,627,628],{"class":72},", [",[63,630,571],{"class":96},[63,632,633],{"class":72},"])[",[63,635,585],{"class":82},[63,637,574],{"class":72},[63,639,640,643,645,648,651,654,657,659,662,664,666,668,670,673,676,679,682],{"class":65,"line":427},[63,641,642],{"class":72},"        files ",[63,644,260],{"class":69},[63,646,647],{"class":72}," [f.strip() ",[63,649,650],{"class":69},"for",[63,652,653],{"class":72}," f ",[63,655,656],{"class":69},"in",[63,658,622],{"class":72},[63,660,661],{"class":96},"\"attachments\"",[63,663,628],{"class":72},[63,665,571],{"class":96},[63,667,633],{"class":72},[63,669,585],{"class":82},[63,671,672],{"class":72},"].split(",[63,674,675],{"class":96},"\",\"",[63,677,678],{"class":72},") ",[63,680,681],{"class":69},"if",[63,683,684],{"class":72}," f.strip()]\n",[63,686,687,690,693,695],{"class":65,"line":432},[63,688,689],{"class":69},"        for",[63,691,692],{"class":72}," name ",[63,694,656],{"class":69},[63,696,697],{"class":72}," files:\n",[63,699,701,704,706,709,712,715,718,721,724,726,729,732,735,737,740],{"class":65,"line":700},18,[63,702,703],{"class":82},"            print",[63,705,193],{"class":72},[63,707,708],{"class":69},"f",[63,710,711],{"class":96},"\"MMS file from ",[63,713,714],{"class":69},"{",[63,716,717],{"class":72},"sender",[63,719,720],{"class":69},"}",[63,722,723],{"class":96},": ",[63,725,714],{"class":69},[63,727,728],{"class":72},"base_url",[63,730,731],{"class":69},"}{",[63,733,734],{"class":72},"name",[63,736,720],{"class":69},[63,738,739],{"class":96},"\"",[63,741,612],{"class":72},[63,743,745,748,751,753],{"class":65,"line":744},19,[63,746,747],{"class":82},"        self",[63,749,750],{"class":72},".send_response(",[63,752,440],{"class":82},[63,754,612],{"class":72},[63,756,758,760],{"class":65,"line":757},20,[63,759,747],{"class":82},[63,761,762],{"class":72},".end_headers()\n",[63,764,766],{"class":65,"line":765},21,[63,767,251],{"emptyLinePlaceholder":250},[63,769,771],{"class":65,"line":770},22,[63,772,251],{"emptyLinePlaceholder":250},[63,774,776,779,781,783,786],{"class":65,"line":775},23,[63,777,778],{"class":72},"HTTPServer((",[63,780,571],{"class":96},[63,782,107],{"class":72},[63,784,785],{"class":82},"8080",[63,787,788],{"class":72},"), InboundMms).serve_forever()\n",[53,790,795],{"className":791,"code":792,"filename":793,"language":794,"meta":59,"style":59},"language-javascript shiki shiki-themes github-light-high-contrast github-dark-high-contrast","import { createServer } from \"node:http\";\n\ncreateServer((req, res) => {\n  const params = new URL(req.url, \"http:\u002F\u002Flocalhost\").searchParams;\n  \u002F\u002F Wire2Air's casing is unconfirmed, so accept both spellings.\n  const param = (lower, mixed) => params.get(lower) ?? params.get(mixed) ?? \"\";\n\n  const sender = param(\"mobilenumber\", \"MobileNumber\");\n  const baseUrl = params.get(\"baseurl\") ?? \"\";\n  const files = (params.get(\"attachments\") ?? \"\").split(\",\").map((f) => f.trim()).filter(Boolean);\n  for (const file of files) {\n    console.log(`MMS file from ${sender}: ${baseUrl}${file}`);\n  }\n  res.writeHead(200).end();\n}).listen(8080);\n","Node","javascript",[22,796,797,811,815,839,865,870,918,922,943,968,1030,1049,1081,1086,1106],{"__ignoreMap":59},[63,798,799,801,804,806,809],{"class":65,"line":66},[63,800,461],{"class":69},[63,802,803],{"class":72}," { createServer } ",[63,805,455],{"class":69},[63,807,808],{"class":96}," \"node:http\"",[63,810,238],{"class":72},[63,812,813],{"class":65,"line":86},[63,814,251],{"emptyLinePlaceholder":250},[63,816,817,820,823,826,828,831,833,836],{"class":65,"line":183},[63,818,819],{"class":189},"createServer",[63,821,822],{"class":72},"((",[63,824,825],{"class":492},"req",[63,827,107],{"class":72},[63,829,830],{"class":492},"res",[63,832,678],{"class":72},[63,834,835],{"class":69},"=>",[63,837,838],{"class":72}," {\n",[63,840,841,844,847,850,853,856,859,862],{"class":65,"line":212},[63,842,843],{"class":69},"  const",[63,845,846],{"class":82}," params",[63,848,849],{"class":69}," =",[63,851,852],{"class":69}," new",[63,854,855],{"class":189}," URL",[63,857,858],{"class":72},"(req.url, ",[63,860,861],{"class":96},"\"http:\u002F\u002Flocalhost\"",[63,863,864],{"class":72},").searchParams;\n",[63,866,867],{"class":65,"line":218},[63,868,869],{"class":179},"  \u002F\u002F Wire2Air's casing is unconfirmed, so accept both spellings.\n",[63,871,872,874,876,878,881,884,886,889,891,893,896,899,902,904,906,908,911,913,916],{"class":65,"line":241},[63,873,843],{"class":69},[63,875,190],{"class":189},[63,877,849],{"class":69},[63,879,880],{"class":72}," (",[63,882,883],{"class":492},"lower",[63,885,107],{"class":72},[63,887,888],{"class":492},"mixed",[63,890,678],{"class":72},[63,892,835],{"class":69},[63,894,895],{"class":72}," params.",[63,897,898],{"class":189},"get",[63,900,901],{"class":72},"(lower) ",[63,903,227],{"class":69},[63,905,895],{"class":72},[63,907,898],{"class":189},[63,909,910],{"class":72},"(mixed) ",[63,912,227],{"class":69},[63,914,915],{"class":96}," \"\"",[63,917,238],{"class":72},[63,919,920],{"class":65,"line":247},[63,921,251],{"emptyLinePlaceholder":250},[63,923,924,926,929,931,933,935,937,939,941],{"class":65,"line":254},[63,925,843],{"class":69},[63,927,928],{"class":82}," sender",[63,930,849],{"class":69},[63,932,190],{"class":189},[63,934,193],{"class":72},[63,936,604],{"class":96},[63,938,107],{"class":72},[63,940,609],{"class":96},[63,942,275],{"class":72},[63,944,945,947,950,952,954,956,958,960,962,964,966],{"class":65,"line":278},[63,946,843],{"class":69},[63,948,949],{"class":82}," baseUrl",[63,951,849],{"class":69},[63,953,895],{"class":72},[63,955,898],{"class":189},[63,957,193],{"class":72},[63,959,625],{"class":96},[63,961,678],{"class":72},[63,963,227],{"class":69},[63,965,915],{"class":96},[63,967,238],{"class":72},[63,969,970,972,975,977,980,982,984,986,988,990,992,995,998,1000,1002,1004,1007,1009,1011,1013,1015,1018,1021,1024,1027],{"class":65,"line":301},[63,971,843],{"class":69},[63,973,974],{"class":82}," files",[63,976,849],{"class":69},[63,978,979],{"class":72}," (params.",[63,981,898],{"class":189},[63,983,193],{"class":72},[63,985,661],{"class":96},[63,987,678],{"class":72},[63,989,227],{"class":69},[63,991,915],{"class":96},[63,993,994],{"class":72},").",[63,996,997],{"class":189},"split",[63,999,193],{"class":72},[63,1001,675],{"class":96},[63,1003,994],{"class":72},[63,1005,1006],{"class":189},"map",[63,1008,822],{"class":72},[63,1010,708],{"class":492},[63,1012,678],{"class":72},[63,1014,835],{"class":69},[63,1016,1017],{"class":72}," f.",[63,1019,1020],{"class":189},"trim",[63,1022,1023],{"class":72},"()).",[63,1025,1026],{"class":189},"filter",[63,1028,1029],{"class":72},"(Boolean);\n",[63,1031,1032,1035,1037,1040,1043,1046],{"class":65,"line":322},[63,1033,1034],{"class":69},"  for",[63,1036,880],{"class":72},[63,1038,1039],{"class":69},"const",[63,1041,1042],{"class":82}," file",[63,1044,1045],{"class":69}," of",[63,1047,1048],{"class":72}," files) {\n",[63,1050,1051,1054,1057,1059,1062,1064,1067,1070,1073,1076,1079],{"class":65,"line":368},[63,1052,1053],{"class":72},"    console.",[63,1055,1056],{"class":189},"log",[63,1058,193],{"class":72},[63,1060,1061],{"class":96},"`MMS file from ${",[63,1063,717],{"class":72},[63,1065,1066],{"class":96},"}: ${",[63,1068,1069],{"class":72},"baseUrl",[63,1071,1072],{"class":96},"}${",[63,1074,1075],{"class":72},"file",[63,1077,1078],{"class":96},"}`",[63,1080,275],{"class":72},[63,1082,1083],{"class":65,"line":373},[63,1084,1085],{"class":72},"  }\n",[63,1087,1088,1091,1094,1096,1098,1100,1103],{"class":65,"line":388},[63,1089,1090],{"class":72},"  res.",[63,1092,1093],{"class":189},"writeHead",[63,1095,193],{"class":72},[63,1097,440],{"class":82},[63,1099,994],{"class":72},[63,1101,1102],{"class":189},"end",[63,1104,1105],{"class":72},"();\n",[63,1107,1108,1111,1114,1116,1118],{"class":65,"line":394},[63,1109,1110],{"class":72},"}).",[63,1112,1113],{"class":189},"listen",[63,1115,193],{"class":72},[63,1117,785],{"class":82},[63,1119,275],{"class":72},[53,1121,1126],{"className":1122,"code":1123,"filename":1124,"language":1125,"meta":59,"style":59},"language-csharp shiki shiki-themes github-light-high-contrast github-dark-high-contrast","\u002F\u002F ASP.NET Core minimal API (.NET 6+, project SDK Microsoft.NET.Sdk.Web).\nvar app = WebApplication.CreateBuilder(args).Build();\n\napp.MapGet(\"\u002Fwire2air\u002Finbound-mms\", (HttpRequest request) =>\n{\n    \u002F\u002F Query keys in ASP.NET Core are case-insensitive, so both spellings match.\n    var sender = request.Query[\"mobilenumber\"].ToString();\n    var baseUrl = request.Query[\"baseurl\"].ToString();\n    var files = request.Query[\"attachments\"].ToString()\n        .Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);\n    foreach (var file in files)\n    {\n        app.Logger.LogInformation(\"MMS file from {Sender}: {Url}\", sender, baseUrl + file);\n    }\n    return Results.Ok();\n});\n\napp.Run();\n","C#","csharp",[22,1127,1128,1133,1157,1161,1188,1192,1197,1219,1237,1256,1277,1294,1299,1321,1326,1338,1343,1347],{"__ignoreMap":59},[63,1129,1130],{"class":65,"line":66},[63,1131,1132],{"class":179},"\u002F\u002F ASP.NET Core minimal API (.NET 6+, project SDK Microsoft.NET.Sdk.Web).\n",[63,1134,1135,1138,1141,1143,1146,1149,1152,1155],{"class":65,"line":86},[63,1136,1137],{"class":69},"var",[63,1139,1140],{"class":492}," app",[63,1142,849],{"class":69},[63,1144,1145],{"class":72}," WebApplication.",[63,1147,1148],{"class":189},"CreateBuilder",[63,1150,1151],{"class":72},"(args).",[63,1153,1154],{"class":189},"Build",[63,1156,1105],{"class":72},[63,1158,1159],{"class":65,"line":183},[63,1160,251],{"emptyLinePlaceholder":250},[63,1162,1163,1166,1169,1171,1174,1177,1180,1183,1185],{"class":65,"line":212},[63,1164,1165],{"class":72},"app.",[63,1167,1168],{"class":189},"MapGet",[63,1170,193],{"class":72},[63,1172,1173],{"class":96},"\"\u002Fwire2air\u002Finbound-mms\"",[63,1175,1176],{"class":72},", (",[63,1178,1179],{"class":492},"HttpRequest",[63,1181,1182],{"class":492}," request",[63,1184,678],{"class":72},[63,1186,1187],{"class":69},"=>\n",[63,1189,1190],{"class":65,"line":218},[63,1191,215],{"class":72},[63,1193,1194],{"class":65,"line":241},[63,1195,1196],{"class":179},"    \u002F\u002F Query keys in ASP.NET Core are case-insensitive, so both spellings match.\n",[63,1198,1199,1202,1204,1206,1209,1211,1214,1217],{"class":65,"line":247},[63,1200,1201],{"class":69},"    var",[63,1203,928],{"class":492},[63,1205,849],{"class":69},[63,1207,1208],{"class":72}," request.Query[",[63,1210,604],{"class":96},[63,1212,1213],{"class":72},"].",[63,1215,1216],{"class":189},"ToString",[63,1218,1105],{"class":72},[63,1220,1221,1223,1225,1227,1229,1231,1233,1235],{"class":65,"line":254},[63,1222,1201],{"class":69},[63,1224,949],{"class":492},[63,1226,849],{"class":69},[63,1228,1208],{"class":72},[63,1230,625],{"class":96},[63,1232,1213],{"class":72},[63,1234,1216],{"class":189},[63,1236,1105],{"class":72},[63,1238,1239,1241,1243,1245,1247,1249,1251,1253],{"class":65,"line":278},[63,1240,1201],{"class":69},[63,1242,974],{"class":492},[63,1244,849],{"class":69},[63,1246,1208],{"class":72},[63,1248,661],{"class":96},[63,1250,1213],{"class":72},[63,1252,1216],{"class":189},[63,1254,1255],{"class":72},"()\n",[63,1257,1258,1261,1264,1266,1268,1271,1274],{"class":65,"line":301},[63,1259,1260],{"class":72},"        .",[63,1262,1263],{"class":189},"Split",[63,1265,193],{"class":72},[63,1267,350],{"class":96},[63,1269,1270],{"class":72},", StringSplitOptions.RemoveEmptyEntries ",[63,1272,1273],{"class":69},"|",[63,1275,1276],{"class":72}," StringSplitOptions.TrimEntries);\n",[63,1278,1279,1282,1284,1286,1288,1291],{"class":65,"line":322},[63,1280,1281],{"class":69},"    foreach",[63,1283,880],{"class":72},[63,1285,1137],{"class":69},[63,1287,1042],{"class":492},[63,1289,1290],{"class":69}," in",[63,1292,1293],{"class":72}," files)\n",[63,1295,1296],{"class":65,"line":368},[63,1297,1298],{"class":72},"    {\n",[63,1300,1301,1304,1307,1309,1312,1315,1318],{"class":65,"line":373},[63,1302,1303],{"class":72},"        app.Logger.",[63,1305,1306],{"class":189},"LogInformation",[63,1308,193],{"class":72},[63,1310,1311],{"class":96},"\"MMS file from {Sender}: {Url}\"",[63,1313,1314],{"class":72},", sender, baseUrl ",[63,1316,1317],{"class":69},"+",[63,1319,1320],{"class":72}," file);\n",[63,1322,1323],{"class":65,"line":388},[63,1324,1325],{"class":72},"    }\n",[63,1327,1328,1330,1333,1336],{"class":65,"line":394},[63,1329,221],{"class":69},[63,1331,1332],{"class":72}," Results.",[63,1334,1335],{"class":189},"Ok",[63,1337,1105],{"class":72},[63,1339,1340],{"class":65,"line":427},[63,1341,1342],{"class":72},"});\n",[63,1344,1345],{"class":65,"line":432},[63,1346,251],{"emptyLinePlaceholder":250},[63,1348,1349,1351,1354],{"class":65,"line":700},[63,1350,1165],{"class":72},[63,1352,1353],{"class":189},"Run",[63,1355,1105],{"class":72},[1357,1358,1359],"style",{},"html pre.shiki code .sHUrx, html code.shiki .sHUrx{--shiki-default:#A0111F;--shiki-dark:#FF9492}html pre.shiki code .suds8, html code.shiki .suds8{--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .s-5SL, html code.shiki .s-5SL{--shiki-default:#023B95;--shiki-dark:#91CBFF}html pre.shiki code .sne4z, html code.shiki .sne4z{--shiki-default:#024C1A;--shiki-dark:#72F088}html pre.shiki code .sT6z2, html code.shiki .sT6z2{--shiki-default:#032563;--shiki-dark:#ADDCFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sLBg1, html code.shiki .sLBg1{--shiki-default:#66707B;--shiki-dark:#BDC4CC}html pre.shiki code .sKwhi, html code.shiki .sKwhi{--shiki-default:#622CBC;--shiki-dark:#DBB7FF}html pre.shiki code .soyes, html code.shiki .soyes{--shiki-default:#702C00;--shiki-dark:#FFB757}",{"title":59,"searchDepth":183,"depth":183,"links":1361},[1362,1363],{"id":42,"depth":86,"text":43},{"id":154,"depth":86,"text":155},"Wire2Air forwards picture messages (and text) sent to your short code to your server as a GET request with the subject, the media location and the file names.","md",null,{},"\u002Fdocs\u002Fwebhooks\u002Finbound-mms","---\ntitle: Inbound SMS and MMS\ndescription: Wire2Air forwards picture messages (and text) sent to your short code to your server as a GET request with the subject, the media location and the file names.\nupdated: '2026-10-06'\n---\n\nThis webhook delivers MMS (picture messages) as well as SMS. Wire2Air receives the message from the carrier, matches it to your account by short code and keyword, and calls your URL.\n\n::callout{type=\"pending\" question=\"OQ-18\"}\nThe previous docs said senders must start an MMS with `@` and your keyword (for example `@DemoMMS`) for it to reach you. Whether that is still required has not been confirmed.\n::\n\n::endpoint{method=\"GET\" url=\"https:\u002F\u002Fyour-server.example\u002Fwire2air\u002Finbound-mms\" auth=\"none\"}\nYour URL. Wire2Air appends the parameters below as a query string.\n::\n\n## Parameters\n\n::param-table{id=\"param\"}\n---\nparams:\n  - name: mobilenumber\n    in: query\n    type: string\n    required: true\n    description: \"The sender's mobile number.\"\n  - name: message\n    in: query\n    type: string\n    required: false\n    description: \"Text the sender wrote.\"\n  - name: rcvd\n    in: query\n    type: string\n    required: true\n    example: \"1\u002F1\u002F2009 03:00:00PM\"\n    description: \"When Wire2Air received the message.\"\n  - name: shortcode\n    in: query\n    type: string\n    required: true\n    example: \"27126\"\n    description: \"Your short code the message was sent to.\"\n  - name: subject\n    in: query\n    type: string\n    required: false\n    example: \"demo mms\"\n    description: \"The MMS subject.\"\n  - name: baseurl\n    in: query\n    type: string\n    required: false\n    example: \"http:\u002F\u002Fmms.wire2air.com\u002Fmms\u002Fmmsinbox\u002F\"\n    description: \"Where the message's files are stored. Join it with each file name in `attachments` to download a file.\"\n  - name: attachments\n    in: query\n    type: string\n    required: false\n    example: \"0.smil,1.jpg,2.txt\"\n    description: \"Comma-separated file names.\"\n  - name: keyword\n    in: query\n    type: string\n    required: false\n    example: \"@demomms\"\n    description: \"The keyword the message was sent with. Shown in the previous example request but not in its parameter list.\"\n---\n::\n\nAn example request, URL-encoded:\n\n```http [Request from Wire2Air]\nGET \u002Fwire2air\u002Finbound-mms?mobilenumber=12125551234&rcvd=1%2F1%2F2009%2003%3A00%3A00PM&shortcode=27126&subject=demo%20mms&baseurl=http%3A%2F%2Fmms.wire2air.com%2Fmms%2Fmmsinbox%2F&attachments=0.smil%2C1.jpg%2C2.txt&keyword=%40demomms HTTP\u002F1.1\nHost: your-server.example\n```\n\n::callout{type=\"pending\" question=\"OQ-25\"}\nThe previous docs wrote these names in lower case, but their PHP example read `MobileNumber`, `Message` and `Rcvd` in mixed case, as on the [inbound SMS](\u002Fdocs\u002Fwebhooks\u002Finbound-sms\u002F) webhook. Which case Wire2Air sends, and the time zone of `rcvd`, are not confirmed. The examples below accept both spellings of the sender's number.\n::\n\n::callout{type=\"warning\" title=\"Media URLs use plain HTTP\"}\nThe documented `baseurl` is an `http:\u002F\u002F` address on `mms.wire2air.com`, which also redirects `https:\u002F\u002F` requests to `http:\u002F\u002F`. Media fetched from it is not encrypted in transit.\n::\n\n## Examples\n\n::code-group\n```php [PHP]\n\u003C?php\n\u002F\u002F Wire2Air's casing is unconfirmed, so accept both spellings.\nfunction param(string $lower, string $mixed): string\n{\n    return $_GET[$lower] ?? $_GET[$mixed] ?? '';\n}\n\n$sender = param('mobilenumber', 'MobileNumber');\n$subject = $_GET['subject'] ?? '';\n$baseUrl = $_GET['baseurl'] ?? '';\n$files = array_filter(array_map('trim', explode(',', $_GET['attachments'] ?? '')));\n\nforeach ($files as $file) {\n    \u002F\u002F Download each file from $baseUrl . $file and store it.\n    error_log('MMS file from ' . $sender . ': ' . $baseUrl . $file);\n}\nhttp_response_code(200);\n```\n```python [Python 3]\nfrom http.server import BaseHTTPRequestHandler, HTTPServer\nfrom urllib.parse import parse_qs, urlparse\n\n\nclass InboundMms(BaseHTTPRequestHandler):\n    def do_GET(self):\n        params = parse_qs(urlparse(self.path).query)\n\n        def param(lower, mixed):\n            # Wire2Air's casing is unconfirmed, so accept both spellings.\n            values = params.get(lower) or params.get(mixed) or [\"\"]\n            return values[0]\n\n        sender = param(\"mobilenumber\", \"MobileNumber\")\n        base_url = params.get(\"baseurl\", [\"\"])[0]\n        files = [f.strip() for f in params.get(\"attachments\", [\"\"])[0].split(\",\") if f.strip()]\n        for name in files:\n            print(f\"MMS file from {sender}: {base_url}{name}\")\n        self.send_response(200)\n        self.end_headers()\n\n\nHTTPServer((\"\", 8080), InboundMms).serve_forever()\n```\n```javascript [Node]\nimport { createServer } from \"node:http\";\n\ncreateServer((req, res) => {\n  const params = new URL(req.url, \"http:\u002F\u002Flocalhost\").searchParams;\n  \u002F\u002F Wire2Air's casing is unconfirmed, so accept both spellings.\n  const param = (lower, mixed) => params.get(lower) ?? params.get(mixed) ?? \"\";\n\n  const sender = param(\"mobilenumber\", \"MobileNumber\");\n  const baseUrl = params.get(\"baseurl\") ?? \"\";\n  const files = (params.get(\"attachments\") ?? \"\").split(\",\").map((f) => f.trim()).filter(Boolean);\n  for (const file of files) {\n    console.log(`MMS file from ${sender}: ${baseUrl}${file}`);\n  }\n  res.writeHead(200).end();\n}).listen(8080);\n```\n```csharp [C#]\n\u002F\u002F ASP.NET Core minimal API (.NET 6+, project SDK Microsoft.NET.Sdk.Web).\nvar app = WebApplication.CreateBuilder(args).Build();\n\napp.MapGet(\"\u002Fwire2air\u002Finbound-mms\", (HttpRequest request) =>\n{\n    \u002F\u002F Query keys in ASP.NET Core are case-insensitive, so both spellings match.\n    var sender = request.Query[\"mobilenumber\"].ToString();\n    var baseUrl = request.Query[\"baseurl\"].ToString();\n    var files = request.Query[\"attachments\"].ToString()\n        .Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);\n    foreach (var file in files)\n    {\n        app.Logger.LogInformation(\"MMS file from {Sender}: {Url}\", sender, baseUrl + file);\n    }\n    return Results.Ok();\n});\n\napp.Run();\n```\n::\n",{"title":5,"description":1364},"current","docs\u002F08.webhooks\u002F03.inbound-mms","2026-10-06","71A3nuwxUzw7AsLeKicWaXFKYMvhFYsFZBnAn3ozAFs",[1376],{"title":1377,"path":1378,"stem":1379,"children":1380,"navTitle":1382,"group":1366,"status":1371},"Wire2Air developer docs","\u002Fdocs","docs\u002F01.index",[1381,1383,1387,1391,1395,1399,1418,1441,1456,1499,1512],{"title":1377,"path":1378,"stem":1379,"navTitle":1382,"group":1366,"status":1371},"Overview",{"title":1384,"path":1385,"stem":1386,"navTitle":1366,"group":1384,"status":1371},"Getting started","\u002Fdocs\u002Fgetting-started","docs\u002F02.getting-started",{"title":1388,"path":1389,"stem":1390,"navTitle":1366,"group":1384,"status":1371},"Authentication","\u002Fdocs\u002Fauthentication","docs\u002F03.authentication",{"title":1392,"path":1393,"stem":1394,"navTitle":1366,"group":1384,"status":1371},"Errors","\u002Fdocs\u002Ferrors","docs\u002F04.errors",{"title":1396,"path":1397,"stem":1398,"navTitle":1366,"group":1384,"status":1371},"Rate limits","\u002Fdocs\u002Frate-limits","docs\u002F05.rate-limits",{"title":1400,"navTitle":1366,"group":1366,"status":1371,"path":1401,"stem":1402,"children":1403,"page":1417},"Guides","\u002Fdocs\u002Fguides","docs\u002F06.guides",[1404,1409,1413],{"title":1405,"path":1406,"stem":1407,"navTitle":1408,"group":1366,"status":1371},"Character encoding and message length","\u002Fdocs\u002Fguides\u002Fencoding","docs\u002F06.guides\u002F01.encoding","Encoding and length",{"title":1410,"path":1411,"stem":1412,"navTitle":1366,"group":1366,"status":1371},"Bulk messaging","\u002Fdocs\u002Fguides\u002Fbulk-messaging","docs\u002F06.guides\u002F02.bulk-messaging",{"title":1414,"path":1415,"stem":1416,"navTitle":1366,"group":1366,"status":1371},"Scheduling messages","\u002Fdocs\u002Fguides\u002Fscheduling","docs\u002F06.guides\u002F03.scheduling",false,{"title":1419,"path":1420,"stem":1421,"children":1422,"navTitle":1366,"group":1366,"status":1371},"REST API v1","\u002Fdocs\u002Frest","docs\u002F07.rest\u002F01.index",[1423,1424,1437],{"title":1419,"path":1420,"stem":1421,"navTitle":1382,"group":1366,"status":1371},{"title":1425,"navTitle":1366,"group":1366,"status":1371,"path":1426,"stem":1427,"children":1428,"page":1417},"Messages","\u002Fdocs\u002Frest\u002Fmessages","docs\u002F07.rest\u002F02.messages",[1429,1433],{"title":1430,"path":1431,"stem":1432,"navTitle":1366,"group":1366,"status":1371},"Send a message","\u002Fdocs\u002Frest\u002Fmessages\u002Fsend","docs\u002F07.rest\u002F02.messages\u002F01.send",{"title":1434,"path":1435,"stem":1436,"navTitle":1366,"group":1366,"status":1371},"List received messages","\u002Fdocs\u002Frest\u002Fmessages\u002Flist","docs\u002F07.rest\u002F02.messages\u002F02.list",{"title":1438,"path":1439,"stem":1440,"navTitle":1366,"group":1366,"status":1371},"Campaigns","\u002Fdocs\u002Frest\u002Fcampaigns","docs\u002F07.rest\u002F03.campaigns",{"title":1442,"path":1443,"stem":1444,"children":1445,"navTitle":1366,"group":1366,"status":1371},"Webhooks","\u002Fdocs\u002Fwebhooks","docs\u002F08.webhooks\u002F01.index",[1446,1447,1451,1452],{"title":1442,"path":1443,"stem":1444,"navTitle":1382,"group":1366,"status":1371},{"title":1448,"path":1449,"stem":1450,"navTitle":1366,"group":1366,"status":1371},"Inbound SMS","\u002Fdocs\u002Fwebhooks\u002Finbound-sms","docs\u002F08.webhooks\u002F02.inbound-sms",{"title":5,"path":1368,"stem":1372,"navTitle":1366,"group":1366,"status":1371},{"title":1453,"path":1454,"stem":1455,"navTitle":1366,"group":1366,"status":1371},"Delivery reports","\u002Fdocs\u002Fwebhooks\u002Fdelivery-reports","docs\u002F08.webhooks\u002F04.delivery-reports",{"title":1457,"path":1458,"stem":1459,"children":1460,"navTitle":1366,"group":1366,"status":1462},"HTTP API","\u002Fdocs\u002Fhttp-api","docs\u002F09.http-api\u002F01.index",[1461,1463,1467,1471,1475,1479,1483,1487,1491,1495],{"title":1457,"path":1458,"stem":1459,"navTitle":1382,"group":1366,"status":1462},"legacy",{"title":1464,"path":1465,"stem":1466,"navTitle":1366,"group":1366,"status":1462},"Send SMS","\u002Fdocs\u002Fhttp-api\u002Fsend-sms","docs\u002F09.http-api\u002F02.send-sms",{"title":1468,"path":1469,"stem":1470,"navTitle":1366,"group":1366,"status":1462},"Send MMS","\u002Fdocs\u002Fhttp-api\u002Fsend-mms","docs\u002F09.http-api\u002F03.send-mms",{"title":1472,"path":1473,"stem":1474,"navTitle":1366,"group":1366,"status":1462},"Credit balance","\u002Fdocs\u002Fhttp-api\u002Fcredit-balance","docs\u002F09.http-api\u002F04.credit-balance",{"title":1476,"path":1477,"stem":1478,"navTitle":1366,"group":1366,"status":1462},"Carrier lookup","\u002Fdocs\u002Fhttp-api\u002Fcarrier-lookup","docs\u002F09.http-api\u002F05.carrier-lookup",{"title":1480,"path":1481,"stem":1482,"navTitle":1366,"group":1366,"status":1462},"Keyword lookup","\u002Fdocs\u002Fhttp-api\u002Fkeyword-lookup","docs\u002F09.http-api\u002F06.keyword-lookup",{"title":1484,"path":1485,"stem":1486,"navTitle":1366,"group":1366,"status":1462},"Keyword register","\u002Fdocs\u002Fhttp-api\u002Fkeyword-register","docs\u002F09.http-api\u002F07.keyword-register",{"title":1488,"path":1489,"stem":1490,"navTitle":1366,"group":1366,"status":1462},"Keyword credits","\u002Fdocs\u002Fhttp-api\u002Fkeyword-credits","docs\u002F09.http-api\u002F08.keyword-credits",{"title":1492,"path":1493,"stem":1494,"navTitle":1366,"group":1366,"status":1462},"Subscribe user","\u002Fdocs\u002Fhttp-api\u002Fsubscribe-user","docs\u002F09.http-api\u002F09.subscribe-user",{"title":1496,"path":1497,"stem":1498,"navTitle":1366,"group":1366,"status":1462},"Send invitation","\u002Fdocs\u002Fhttp-api\u002Fsend-invitation","docs\u002F09.http-api\u002F10.send-invitation",{"title":1500,"navTitle":1366,"group":1366,"status":1371,"path":1501,"stem":1502,"children":1503,"page":1417},"Integrations","\u002Fdocs\u002Fintegrations","docs\u002F10.integrations",[1504,1508],{"title":1505,"path":1506,"stem":1507,"navTitle":1366,"group":1366,"status":1371},"RSA Authentication Manager","\u002Fdocs\u002Fintegrations\u002Frsa-authentication-manager","docs\u002F10.integrations\u002F01.rsa-authentication-manager",{"title":1509,"path":1510,"stem":1511,"navTitle":1366,"group":1366,"status":1371},"Zapier","\u002Fdocs\u002Fintegrations\u002Fzapier","docs\u002F10.integrations\u002F02.zapier",{"title":1513,"path":1514,"stem":1515,"navTitle":1366,"group":1366,"status":1371},"Changelog","\u002Fdocs\u002Fchangelog","docs\u002F11.changelog",[1517,1519],{"title":1448,"path":1449,"stem":1450,"description":1518,"children":-1},"Wire2Air forwards each text sent to your short code to your server as a GET request with the sender, the message, the time and the short code.",{"title":1453,"path":1454,"stem":1455,"description":1520,"children":-1},"Wire2Air calls your server with the status of each message you sent, identified by its outbox ID.",[1522,1526,1529,1532,1535,1538,1541,1544],[1523,1524],"path",{"d":1525},"M3 21l18 0",[1523,1527],{"d":1528},"M3 10l18 0",[1523,1530],{"d":1531},"M5 6l7 -3l7 3",[1523,1533],{"d":1534},"M4 10l0 11",[1523,1536],{"d":1537},"M20 10l0 11",[1523,1539],{"d":1540},"M8 14l0 3",[1523,1542],{"d":1543},"M12 14l0 3",[1523,1545],{"d":1546},"M16 14l0 3",[1548,1550,1553,1556,1559],[1523,1549],{"d":1525},[1523,1551],{"d":1552},"M3 7v1a3 3 0 0 0 6 0v-1m0 1a3 3 0 0 0 6 0v-1m0 1a3 3 0 0 0 6 0v-1h-18l2 -4h14l2 4",[1523,1554],{"d":1555},"M5 21l0 -10.15",[1523,1557],{"d":1558},"M19 21l0 -10.15",[1523,1560],{"d":1561},"M9 21v-4a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v4",[1563,1566,1569,1572],[1523,1564],{"d":1565},"M3 13a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -6",[1523,1567],{"d":1568},"M15 9a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -10",[1523,1570],{"d":1571},"M9 5a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -14",[1523,1573],{"d":1574},"M4 20h14",[1576,1579],[1523,1577],{"d":1578},"M10 3.2a9 9 0 1 0 10.8 10.8a1 1 0 0 0 -1 -1h-6.8a2 2 0 0 1 -2 -2v-7a.9 .9 0 0 0 -1 -.8",[1523,1580],{"d":1581},"M15 3.5a9 9 0 0 1 5.5 5.5h-4.5a1 1 0 0 1 -1 -1v-4.5",[1583,1586,1589],[1523,1584],{"d":1585},"M7 8l-4 4l4 4",[1523,1587],{"d":1588},"M17 8l4 4l-4 4",[1523,1590],{"d":1591},"M14 4l-4 16",[1593,1596,1600,1603],[1523,1594],{"d":1595},"M9 15l6 -6",[1523,1597],{"d":1598,"fill":1599},"M9 9.5a.5 .5 0 1 0 1 0a.5 .5 0 1 0 -1 0","currentColor",[1523,1601],{"d":1602,"fill":1599},"M14 14.5a.5 .5 0 1 0 1 0a.5 .5 0 1 0 -1 0",[1523,1604],{"d":1605},"M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",[1607,1610,1613,1616],[1523,1608],{"d":1609},"M19.5 12.572l-7.5 7.428l-7.5 -7.428a5 5 0 1 1 7.5 -6.566a5 5 0 1 1 7.5 6.572",[1523,1611],{"d":1612},"M12 6l-3.293 3.293a1 1 0 0 0 0 1.414l.543 .543c.69 .69 1.81 .69 2.5 0l1 -1a3.182 3.182 0 0 1 4.5 0l2.25 2.25",[1523,1614],{"d":1615},"M12.5 15.5l2 2",[1523,1617],{"d":1618},"M15 13l2 2",[1620,1623,1626,1629],[1523,1621],{"d":1622},"M12 18h-7a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",[1523,1624],{"d":1625},"M3 6l9 6l9 -6",[1523,1627],{"d":1628},"M15 18h6",[1523,1630],{"d":1631},"M18 15l3 3l-3 3",[1633,1636],[1523,1634],{"d":1635},"M21 14l-3 -3h-7a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1h9a1 1 0 0 1 1 1v10",[1523,1637],{"d":1638},"M14 15v2a1 1 0 0 1 -1 1h-7l-3 3v-10a1 1 0 0 1 1 -1h2",[1640,1643],[1523,1641],{"d":1642},"M15 12.9a5 5 0 1 0 -3.902 -3.9",[1523,1644],{"d":1645},"M15 12.9l-3.902 -3.899l-7.513 8.584a2 2 0 1 0 2.827 2.83l8.588 -7.515",[1647,1650,1653,1656],[1523,1648],{"d":1649},"M15 8h.01",[1523,1651],{"d":1652},"M3 6a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3v-12",[1523,1654],{"d":1655},"M3 16l5 -5c.928 -.893 2.072 -.893 3 0l5 5",[1523,1657],{"d":1658},"M14 14l1 -1c.928 -.893 2.072 -.893 3 0l3 3",[1660,1663,1666,1669,1672,1675],[1523,1661],{"d":1662},"M7 12l5 5l-1.5 1.5a3.536 3.536 0 1 1 -5 -5l1.5 -1.5",[1523,1664],{"d":1665},"M17 12l-5 -5l1.5 -1.5a3.536 3.536 0 1 1 5 5l-1.5 1.5",[1523,1667],{"d":1668},"M3 21l2.5 -2.5",[1523,1670],{"d":1671},"M18.5 5.5l2.5 -2.5",[1523,1673],{"d":1674},"M10 11l-2 2",[1523,1676],{"d":1677},"M13 14l-2 2",[1679,1682],[1523,1680],{"d":1681},"M22 9l-10 -4l-10 4l10 4l10 -4v6",[1523,1683],{"d":1684},"M6 10.6v5.4a6 3 0 0 0 12 0v-5.4",[1686,1689,1692],[1523,1687],{"d":1688},"M18 8a3 3 0 0 1 0 6",[1523,1690],{"d":1691},"M10 8v11a1 1 0 0 1 -1 1h-1a1 1 0 0 1 -1 -1v-5",[1523,1693],{"d":1694},"M12 8l4.524 -3.77a.9 .9 0 0 1 1.476 .692v12.156a.9 .9 0 0 1 -1.476 .692l-4.524 -3.77h-8a1 1 0 0 1 -1 -1v-4a1 1 0 0 1 1 -1h8",[1696,1699,1702,1705,1708],[1523,1697],{"d":1698},"M6 4h-1a2 2 0 0 0 -2 2v3.5a5.5 5.5 0 0 0 11 0v-3.5a2 2 0 0 0 -2 -2h-1",[1523,1700],{"d":1701},"M8 15a6 6 0 1 0 12 0v-3",[1523,1703],{"d":1704},"M11 3v2",[1523,1706],{"d":1707},"M6 3v2",[1523,1709],{"d":1710},"M18 10a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",[1712,1715,1718,1721,1724,1727],[1523,1713],{"d":1714},"M8 21l8 0",[1523,1716],{"d":1717},"M12 17l0 4",[1523,1719],{"d":1720},"M7 4l10 0",[1523,1722],{"d":1723},"M17 4v8a5 5 0 0 1 -10 0v-8",[1523,1725],{"d":1726},"M3 9a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",[1523,1728],{"d":1729},"M17 9a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",[1731,1734,1737,1740],[1523,1732],{"d":1733},"M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0",[1523,1735],{"d":1736},"M16 19h6",[1523,1738],{"d":1739},"M19 16v6",[1523,1741],{"d":1742},"M6 21v-2a4 4 0 0 1 4 -4h4",3529977955]