{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"f93dc8d6-8e88-4fe1-9c89-7913f717fb6d","name":"Alert API","description":"> All rights reserved. The Material may not be reproduced or distributed, in whole or in part, without prior written permission by F24 Norge AS. \n  \n\nWelcome to the the official documentation for our Alert API!\n\nBuild amazing alert broadcast experiences easily with our API. Read the API documentation and see how the API works for you, in any programming language.\n\n## Updates\n\nUpdates contains bugfixes and enhancements to the Alert API in chronological order:\n\n**February 2024**  \nThis update does not affect existing integrations:\n\n> Z733 Added support for UnitId (bruksenhetsnr)  \nZxxx Minor fixes \n  \n\n## Introduction\n\n#### Authentication\n\nContact us for API endpoint and token.\n\n#### Interface\n\n\\* Use HTTP POST for methods calls  \n\\* Use UTF-8 encoding  \n\\* HTTP StatusCode = 200 means success. HTTP StatusCode <> 200 means failure. In case of failure the response body contains more detailed information about the error.  \n\\* Request/Response uses JSON objects. Please note the JSON format we use is `case-sensitive`.\n\n#### HTTP Status Codes\n\nBelow is a list of HTTP StatusCodes:\n\n| StatusCode | Description | Details |\n| --- | --- | --- |\n| 200 | OK |  |\n| 400 | Bad request | Invalid json format in request |\n| 401 | Not authorized | Invalid password or account is closed |\n| 404 | Not found | Search for data failed |\n| 460 | Invalid request data | Invalid or missing data in json request |\n| 461 | Duplicate entity | A unique entity in DB already exists |\n| 462 | Entity in use | Entity cannot be deleted because it is referred to by another entity |\n| 500 | System Error | An exception occurred |\n| 520 | Database Error | An exception occurred during DB read/write |\n\nIf the HTTP StatusCode <> 200 then reponse body contains an `Errors` array.\n\nBelow are example reponses:\n\n```\n{\n  \"Errors\": [\n    {\n      \"Title\": \"Not authorized\",\n      \"Details\": \"\",\n      \"Code\": 401\n    }\n  ]\n}\n\n ```\n\n```\n{\n    \"Errors\": [\n        {\n            \"Title\": \"Not found\",\n            \"Details\": \"AlertId not found\",\n            \"Code\": 404,\n        }\n    ]\n}\n\n ```\n\n## Alerts\n\nAn alert holds information required to send messages to a group of recipients.  \nThe Alert API provides methods to send two types of alerts: GroupAlert and AddressAlerts. Both types of alerts are explained further below.\n\nThere are common characteristics for both types of alerts:\n\n#### Lifespan of alerts\n\nAn alert will have a status-flag depending on its state (planned, active, completed and archived) Archived alerts will be (hard) deleted based on a specific set of rules.\n\n| Number of months | Action | Content |\n| --- | --- | --- |\n| 1-12 | Delete personal data | Recipients including contact data are deleted.  <br>  <br>The automatic deletion of personal data can vary from 1 to 12 months. This period is defined by an account setup.  <br>  <br>Get in touch with customer service to set this value |\n| 1 | Delete alert | Alert in \"simulation\" mode only. Alert and address data are deleted |\n| 36 | Delete alert | Regular alerts. Alert and address data are deleted |\n\n#### Simulation mode\n\nAlerts can be simulated. Alerts will not send out messages when the Simulation parameter is set to true. Everything else will work as normal.\n\n#### SpamFilter\n\nBe aware of the duplicate check! The Alert API has a built in spam filter/duplicate check that prevents sending of identical messages to a recipient within a period of time. The spamfilter checks sms, email and voice messages. The table shows the time period for group and address alert types:\n\n| AlertType | TimePeriod |\n| --- | --- |\n| GroupAlert | 10 minutes |\n| AddressAlert | 4 hours |\n\n**Testing:** Be aware of this when you are integrating with the Alert API. You may have to change the message text if you are testing with the same address or recipients over and over again, like in an automated test.\n\n#### E.164 (GSM) number formatting\n\nThe client must use E.164 (GSM) number formatting for phone numbers. The E.164 format is a 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 15 digits and are written as follows:\n\n> \\[+\\]\\[country code\\]\\[subscriber number\\] \n  \n\n## Common fields\n\n#### Alert\n\n| **Field name** | **Required** | **Description** |\n| --- | --- | --- |\n| AlertId |  | Unique ID for an alert |\n| Name | Yes | Name of alert |\n| StartTime | No  <br>(default is \"now\") | Set StartTime to a future time to schedule an alert.  <br>  <br>UTC format: \"2022-09-03T13:48:00.000+01:00\", |\n| Simulation | No  <br>(default = false) | True = Alert is in simulation mode. Messages are not sent.  <br>  <br>False = Alert is in live mode. Messages are sent |\n| Channel |  | Contains objects with settings for SMS, voice or email. See tables below for details |\n| Recipients | No | Array of additional recipients |\n\n##### Channel.SMS\n\n| **Field name** | **Required** | **Description** |\n| --- | --- | --- |\n| Content | Yes | One SMS unit per 160 characters. Some characters counts as to characters.  <br>  <br>(additional info required here...) |\n| Sender | Yes | Sender cannot be more then 11 charactes and must contain only letters and/or numbers. |\n\n##### Channel.Email fields\n\n| **Field name** | **Required** | **Description** |\n| --- | --- | --- |\n| SenderName | Yes | Email sender name.  <br>  <br>Please note: The email sender will always be [ikke_svar@varsling24.no](https://mailto:ikke_svar@varsling24.no) |\n| Title | Yes | Email title  <br>(Max 80 chars) |\n| Content | Yes | Plain or HTML formatted text |\n\n##### Channel.Voice\n\nYou can define response options in the `Keys` object. These options will be read to the receiver and any response will be stored and can will be exposed in the GetAlertInfo request.\n\nUsing `ResponseOptions` you can also defined how many attempts should be done if no response is given. \"Count\" decides how many attempts shoud be done. Delay defines the wait, in seconds, between each attempt.\n\nSet the confirm message (for example \"Thank you for response\") in the `Confirm`field\n\n| **Field name** | **Required** | **Description** |\n| --- | --- | --- |\n| Voice | Yes | TTS Voice Name  <br>  <br>Se `GetAlertVoices` for list of all available TTS voices |\n| Main | Yes | Main content. Message text that will be text-to-speech converted and read to the receiver when call is answered. |\n| Confirm | Yes | Reply and goodbye message |\n| Keys | Yes |  |\n| RepeatOptions | Yes | Set number of repeats if not confirmed |\n\n##### Channel.Response\n\n| **Field name** | **Required** | **Description** |\n| --- | --- | --- |\n| Response<1..8> | No | Response alternative for recipient. We recommend to keep this text short (< 30 chars) for maximum readability |\n\n##### Recipient fields\n\n| **Field name** | **Required** | **Description** |\n| --- | --- | --- |\n| Name | Yes | Name of recipient (max 50 chars) |\n| Contacts | Yes | List of contact information |\n| Contact.Contact | Yes | Contactdata. I.e. mobile or e-mail address |\n| Contact.Type | Yes | M = Mobile  <br>F = Fixed/LandLine  <br>E = Email |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"1565332","collectionId":"f93dc8d6-8e88-4fe1-9c89-7913f717fb6d","publishedId":"VUjPHQzn","public":true,"publicUrl":"https://alertapi.framweb.net","privateUrl":"https://go.postman.co/documentation/1565332-f93dc8d6-8e88-4fe1-9c89-7913f717fb6d","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/0f4321a6-a042-4931-9026-619726ce583e/RjI0IExvZ28gd2hpdGVibHVlLnBuZw==","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":"https://content.pstmn.io/e9bc9e4b-fb32-4d40-ac73-9fa6c5fe261e/RjI0IExvZ28gZGFya2JsdWUucG5n","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"}}]}},"version":"8.10.0","publishDate":"2025-07-01T09:38:29.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/e9bc9e4b-fb32-4d40-ac73-9fa6c5fe261e/RjI0IExvZ28gZGFya2JsdWUucG5n","logoDark":"https://content.pstmn.io/0f4321a6-a042-4931-9026-619726ce583e/RjI0IExvZ28gd2hpdGVibHVlLnBuZw=="}},"statusCode":200},"environments":[{"name":"PublicTemplate","id":"65b2b09b-4a90-f03e-ebf3-06889370be6e","owner":"1565332","values":[{"key":"accessToken","value":"yourAccessToken","enabled":true},{"key":"url","value":"apiUrl","enabled":true},{"key":"mobil","value":"+4712345678","enabled":true},{"key":"svarurl","value":"https://myapp.net/reply","enabled":true},{"key":"epost","value":"ole.olsen@online.no","enabled":true},{"key":"brukerid","value":"userid","enabled":true},{"key":"passord","value":"password","enabled":true},{"key":"mottaker","value":"John Smith","enabled":true},{"key":"accessKey","value":"yourAccessKey","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/1156389589184656aa4ebfd9c46999b49bd4d4b5bb052dd522684c47f4b2b978","favicon":"https://framweb.net/favicon.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":"PublicTemplate","value":"1565332-65b2b09b-4a90-f03e-ebf3-06889370be6e"}],"canonicalUrl":"https://alertapi.framweb.net/view/metadata/VUjPHQzn"}