{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"0fa70722-7e93-4348-9e88-0870fa684a5f","name":"Spryng REST API (Documentation)","description":"# 1\\. Authorization\n\nWhen you login to your [account](https://www.spryng.nl), under Your Profile > Security you can generate a new REST API key which you can use as **Bearer Token** for your API requests.\n\nWith the above generated Bearer Token you can set an _Authorization header_. This header consists of a bearer token. See example below:\n\n``` console\nAuthorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjRkNWJlZjg3NjZhNWVjMzk5NmRiYzliZDQ3NjU3YzYxNjdhZWI2OTRkOGUwYWZmMDU3MTY4MGY5ZDcxNjQzZDI2M2ZhY2I1MTEyYjA0MmFmIn0.eyJhdWQiOiIzIiwianRpIjoiNGQ1YmVmODc2NmE1ZWMzOTk2ZGJjOWJkNDc2NTdjNjE2N2FlYjY5NGQ4ZTBhZmYwNTcxNjgwZjlkNzE2NDNkMjYzZmFjYjUxMTJiMDQyYWYiLCJpYXQiOjE1NTA2NzEwNjksIm5iZiI6MTU1MDY3MTA2OSwiZXhwIjoxNTgyMjA3MDY5LCJzdWIiOiI1MzU0OCIsInNjb3BlcyI6W119.w_axNwBr3UraOrO9BTsNDHS2JBJb-oOZYTcMLkDRv6romb__Q_4UmSg97HCmUTUY0o8PcbiefNHSqMhUB6GTCOduqRvQEQ0yaZ3TAldi6xj5Jcj1I4JP5_A3gORmoiUX0f_BuXCN_rTelZgC0F6IGUI0bJOafVdY1n-ADCzlXTAbVXqWvy40oPnI36Ny7mwmeLGO1eKmRnywlvK6-igZ3V37meGtFDyxOrZ2sBKUAWwUzuwl3oKEyxArRLUIkfYRVu4-OeEYBBTuLCXYyz0DvcTbjM9Up6cU1S-j01bpQIMgi3udk8WYCMF5dzNExWIRYfZc04r3uDHgYD2JL0v2FsDPLdQCjP8glBAi2qVJrc2QEteMBPzEvhW_36kw_cxAx_UqeZdr8QxdL8r3SR_xtFPk9ePzbkXQKsQBGvf0lCV6ydICMiLXaVihr4SDshoAMiZZXD8FegclAhU4q4UcWQSZlhEHubiCDJqfPnyw2VWpKGgiGMNvFyW9zgg50DXassIAc3KwLo2Zo6JFinze3XuAF7dGZVwJdV5589J4LVKkJIokh28LapR1Sm9K-SkhnFsczci2ZLpfZIh1v_HVqi41XiJVBYRci6YbUNUEKT8qr1JVZEi2IQYS7rTNsUO7rraBadeWslKngZxWaKdfRnM_S_cLS0v-uJeMpnXFIECU\n\n ```\n\nThis token can be retreived via the Spryng portal on your profile page ([https://portal.spryngsms.com/portal/account](https://portal.spryngsms.com/portal/account))\n\nThe required headers for each endpoint are listed under the header section of the endpoint documentation.\n\n# 2\\. Rate Limits\n\nAPI access rate limits are applied at a per-key basis in unit time. Access to the API using a key is limited to 1200 requests per minute. This is a **soft limit** which can be increased by mailing a request to [info@spryng.nl](https://mailto:info@spryng.nl).\n\nIn addition, every API response is accompanied by the following set of headers to identify the status of your consumption.\n\n| Header | Description |\n| --- | --- |\n| X-RateLimit-Limit | The maximum number of requests that the consumer is permitted to make per minute. |\n| X-RateLimit-Remaining | The number of requests remaining in the current rate limit window. |\n\nOnce you hit the rate limit, you will receive a response similar to the following JSON, with a status code of `429 Too Many Requests`.\n\n``` json\n{\n    \"message\": \"Too Many Attempts.\"\n}\n\n ```\n\n# 3\\. HTTP Status Codes\n\n## 3.1 HTTP Statuses\n\nThe REST API returns an HTTP status and code each time a request is made. The following HTTP status codes are used by our API. Additional codes might be added in the future and if you encounter a code not in this list please consult the HTTP specification for a definition.\n\n| Status | Description |\n| --- | --- |\n| 200 OK | The request was successful. |\n| 401 Unauthorized | Authentication token is invalid |\n| 404 Not Found | The path is invalid or no resource exists with the given ID. |\n| 405 Method Not Allowed | The path is valid but not for this method. |\n| 422 Unprocessable Entity | The request has missing or invalid parameters. |\n| 429 Too Many Requests | The user or path has too many outstanding requests. |\n| 500 Internal Server Error | An unexpected internal error occurred and the request was not processed. |\n| 503 Service Unavailable | The service is unable to perform the request at this point. Most likely due to a required subsystem being unavailable. |\n\n## 3.2 HTTP Validation Errors\n\nResponses with status 422 Unprocessable Entity implies that the request has missing or invalid request parameters. In this case a JSON object is returned explaining the error:\n\n| Name | Description | JSON Type |\n| --- | --- | --- |\n| message | An generic description of the issue. | String |\n| errors | Human readable description of each parameter with an explanatory message | Array |\n\nFor example:\n\n``` json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"originator\": [\n      \"The originator must be a valid format.\"\n    ],\n    \"recipients.0\": [\n      \"Recipient 9999999 is invalid format. Format should look like 31612345678.\"\n    ]\n  }\n}\n\n ```\n\n# 4\\. Filters\n\nFilters provide the ability to query, sort and paginate an endpoint for its information.  \nLet's take a look at the query string that would be required to filter for the criteria in the previous sentence:\n\n`/v1/messages?filters[created_from]=2017-05-01&filters[status]=send&limit=10&sort=!created_at`.\n\nNotice how `limit` and `sort` do not belong to `filters[]`. Parameters passed to `filters[]` are unique to that endpoint. The available filters will be listed per endpoint. We also have a few generic filters that are available all the time. These include: `limit`, `page` & `sort`.\n\n## 4.1 Generic Filters\n\nGeneric filters are applicable to all filterable endpoints. They provide standard functionality such as sorting the result data set and paginating through it.\n\n| Filter | Example Usage | Description |\n| --- | --- | --- |\n| limit | ?limit=10 | Defines the amount of records you want to return. There is a hard limit of 100. |\n| page | ?page=1 | Skips the amount of records defined in limit multiplied by the page number. This is used for paginating through the results. |\n| sort | ?sort=!created_at | The sortable value is dependent on what is available per endpoint. Use _!_ before the value to reverse the order. Consult the endpoint for which values can be sorted. |\n\n## 4.2 Unique Filters\n\nUnique filters are only applicable to a specific endpoint. They are documented under each endpoint.\n\n## 4.3 Chaining Filters\n\nFilters can be chained by attaching as many as you want (e.g. `?filters[status]=active&filters[age]=25`). Parameters will be automatically casted.\n\n# 5\\. Includes\n\nSome endpoints have includeables. Includeables are defined by passing the query parameter with (e.g. `?with[]=recipients`). The include will return an extra data that is not normally returned. Only add includes when the data is needed. Including any unnecessary date will only slow down the response, creating worse perceived performance for the end user. Available includes will be listed per endpoint.\n\n# 6\\. Character Sets\n\n### 6.1 GSM 03.38 Character Set\n\nWhen using the `plain` encoding only _GSM 03.38 basic characters_ are visible which allows you to send up to 160 characters per SMS message. Below a table of all available characters in the GSM 03.38 basic characters.\n\n|  |  |  |  |  |  |  |  |  |  |  |  |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| @ | Δ | SP | Ø | , | 0 | A | K | V | a | l | w |\n| £ | _ | ! | ø | \\- | 1 | B | L | W | b | m | x |\n| $ | Φ | \" | CR | . | 2 | C | M | X | c | n | y |\n| ¥ | Γ | # | Å | / | 3 | D | N | Y | d | o | z |\n| è | Λ | ¤ | å | ; | 4 | E | O | Z | e | p | ä |\n| é | Ω | % | ESC | < | 5 | F | P | Ä | f | q | ö |\n| ù | Π | & | Æ | \\= | 6 | G | Q | Ö | g | r | ñ |\n| ì | Ψ | ' | æ | \\> | 7 | H | R | Ñ | h | s | ü |\n| ò | Σ | ( | ß | ? | 8 | I | S | Ü | i | t | à |\n| Ç | Θ | ) | É | ¡ | 9 | J | T | § | j | u | ¿ |\n| LF | Ξ | \\* | + | : |  | K | U |  | k | v |  |\n\n`LF` is the Line Feed character - for JSON format, enter this as `\\n`\n\n`SP` is the Space character\n\n### 6.2 Extended Character Set\n\nThe following characters are also available, but they take up two characters in the SMS message instead of one.\n\n`|` , `^` , `€` , `{` , `}` , `[` , `]` , `~` , `\\`\n\n### 6.3 Unicode Character Set\n\nIf you require to sent other characters than shown above you'll have to use the **unicode** encoding type. You achieve this by setting the `encoding` value to either `auto` or `unicode`.  \nUnicode allows you to sent up to 70 characters per SMS message.\n\n### 6.4 Long Messages\n\nThe message body in a batch request can contain up to 10 messages. Depending on the characters used in the message, this will equate to the following numbers of SMS messages.\n\n#### 6.4.1 Plain encoded message:\n\n| Message Length | Number of SMS Parts |\n| --- | --- |\n| 1 - 160 | 1 |\n| 161 - 306 | 2 |\n| 307 - 459 | 3 |\n| 460 - 612 | 4 |\n| 613 - 765 | 5 |\n| 766 - 918 | 6 |\n| 919 - 1071 | 7 |\n| 1072 - 1224 | 8 |\n| 1225 - 1377 | 9 |\n| 1378 - 1530 | 10 |\n| 1521 - 1600 | 11 |\n\n#### 6.4.2 Unicode encoded message:\n\n| Message Length | Number of SMS Parts |\n| --- | --- |\n| 1 - 70 | 1 |\n| 71 - 134 | 2 |\n| 135 - 201 | 3 |\n| 202 - 268 | 4 |\n| 269 - 335 | 5 |\n| 336 - 402 | 6 |\n| 403 - 469 | 7 |\n| 470 - 536 | 8 |\n| 537 - 603 | 9 |\n| 604 - 670 | 10 |\n| 661 - 726 | 11 |\n| 727 - 792 | 12 |\n| 792 - 858 | 13 |\n| 859 - 924 | 14 |\n| 925 - 990 | 15 |\n| 991 - 1056 | 16 |\n| 1057 - 1122 | 17 |\n| 1123 - 1188 | 18 |\n| 1189 - 1254 | 19 |\n| 1255 - 1320 | 20 |\n| 1321 - 1386 | 21 |\n| 1387 - 1452 | 22 |\n| 1453 - 1518 | 23 |\n| 1519 - 1584 | 24 |\n| 1585 - 1600 | 25 |\n\n# 7\\. Delivery Reports callback\n\n### 7.1 Setup\n\nTo enable delivery reports, login into your account on the Spryng portal and by selecting the menu item ‘Settings’ in your SMS dashboard. Here you can enter the url of your script (servlet, php script, perl, etc…) on which you wish to receive your delivery reports.\n\nThis script should expect the below parameters via an HTTP GET call.\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| `ID` | string | The `uuid` of the message |\n| `RECIPIENT` | string | The phone number of the destination in format `31612345678` |\n| `STATUS` | enum | 10(=Delivered), 20(=Not Delivered) |\n| `REASONCODE` | string | See **#7.2 Error Reason Codes** below for expected values and their meaning |\n| `REFERENCE` | string | value given by you in the API call |\n| `ADDED` | string | Timestamp when the messages was created in the Spryng service in `YYYYmmddHHiiss` format |\n| `RESULTDATE` | string | Timestamp when the messages was sent from the Spryng service in `YYYYmmddHHiiss` format |\n| `OPERATOR_STATUS_AT` | string | Timestamp of the response from the originating SMSC in `YYYYmmddHHiiss` format |\n| `OPERATOR` | string | The [MCCMNC](https://en.wikipedia.org/wiki/Mobile_country_code) code of the network provider operator if available |\n\n**When you require a delivery report you should not specify more than 1 DESTINATION in your request. You can expect the following parameters:**\n\nThe HTTP request conducted by Spryng must be answered by your server with a status code of **2xx** which means that the message was successfully accepted by your system. If either the HTTP server cannot be reached, for example it returns an 500 internal server error, Spryng assumes that the message was not successfully accepted by your system and the request will be retried exponentially (which means more times at the beginning and less and less afterwards). The message will not be retried forever, the current setting around 2,5 days.\n\n### 7.2 Error Reason Codes\n\nBelow an overview of the possible **error reason codes** which you can retrieve.\n\n| Value | Description |\n| --- | --- |\n| `0` | No error |\n| `20` | Recipient number unreachable |\n| `21` | Recipient number incorrect |\n| `22` | Delivery Failure |\n| `31` | The recipient is blacklisted (e.g. People that respond \"STOP\" to an earlier message can appear in the blacklist) |\n| `32` | The originator is not registered for this country |\n\n# 8\\. MO Gateway\n\nSpryng delivers a HTTP POST request to a script on your server whenever a mobile originated (MO) message arrives. You must set up a script that can handle HTTP POST data to receive the requests.\n\nThe HTTP request conducted by Spryng must be answered by your server in the response HTTP body with status code 200, which means that the message was successfully accepted by your system. We don't follow redirects (301/302). If the HTTP server cannot be reached and if it returns e.g. 500 internal server error, Spryng assumes that the message was not successfully accepted by your system and the request will be retried once every minute. The message will not be retried forever, the current setting is 24 hours.\n\nYou can set a return url in our [Spryng Portal](https://portal.spryngsms.com/messages-received/settings). You can expect the following parameters\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| `MSISDN` | string | The phone number from which the response originated |\n| `SHORTCODE` | string | The shortcode to which the response was sent |\n| `KEYWORD` | string | The keyword with which the message text starts |\n| `PARM` | string | All message text after the KEYWORD |\n| `OPERATOR` | string | The [MCCMNC](https://en.wikipedia.org/wiki/Mobile_country_code) code of the network provider operator if available |\n| `TIMESTAMP` | string | Time that message was received by SMSC or system |\n| `COUNTRY` | string | The two-letter country code (ISO 3166-1 alpha-2) |\n| `REFERENCE` | string | Reference linked to the original message if applicable |\n\n# 9\\. Simple HTTP API\n\nYou can also still use our [simple API](https://simple.docs.spryngsms.com/). However it's recommended to use our REST API since the Simple API has less functionality.\n\n# 10\\. RCS\n\nRCS (Rich Communication Services) allows you to send richer messages compared to SMS.\n\n**Important:** You need to have RCS enabled for your account before you can start using this. If you don’t have this enabled yet, please contact Spryng Support.\n\nSetup:\n\n- RCS uses the same API endpoint and parameters as SMS. No changes to your integration are needed.\n    \n- A dedicated route must be configured for RCS traffic. Spryng will set this up for you.\n    \n- If the recipient’s operator or operating system does not support RCS, the message will automatically be delivered as SMS.\n    \n- Delivery receipts (DLRs) are available via the webhook you already use for SMS.\n    \n- RCS messages can contain up to **160 characters**.\n    \n\n# 11\\. Support\n\nPlease contact [info@spryng.nl](https://mailto:info@spryng.nl) for any questions or problems related to the API.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"6569146","team":264477,"collectionId":"0fa70722-7e93-4348-9e88-0870fa684a5f","publishedId":"S1EH53S1","public":true,"publicUrl":"https://docs.spryngsms.com","privateUrl":"https://go.postman.co/documentation/6569146-0fa70722-7e93-4348-9e88-0870fa684a5f","customColor":{"top-bar":"FFFFFF","right-sidebar":"DDF8FF","highlight":"EE6445"},"documentationLayout":"classic-double-column","version":"8.10.1","publishDate":"2019-04-05T06:08:50.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[{"name":"Production API","id":"e729a487-7db8-44c9-a629-ad30a9a1a25f","owner":"6569146","values":[{"key":"server","value":"https://rest.spryngsms.com","description":"","enabled":true},{"key":"token","value":"xxxxxx","description":"","enabled":true}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/43d96e8530db279af9f334b18aaf562fc218d67a037d0e76b8c3dc97a93c8f79","favicon":"https://res.cloudinary.com/postman/image/upload/v1550232129/team/bjg9vknj5kuevjbckwbo.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Production API","value":"6569146-e729a487-7db8-44c9-a629-ad30a9a1a25f"}],"canonicalUrl":"https://docs.spryngsms.com/view/metadata/S1EH53S1"}