{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"bbbd4240-7148-4f0c-aa6c-020a6cd702f0","name":"NPS.Today API Docs v1","description":"Documentation of the _**v1**_ API\n\n## Getting Started\n\nNPS.Today's API expose most of NPS.Today features. This document is non-exhaustive and are in constant development. If you have previously recieved any API documentation directly from us, it may be outdated. In that case please refere to the documentation here.\n\n## API Status\n\nIf you are unsure if our service is up and responsive, please check our status page [https://status.nps.today/](https://) for other checks go to the \"Platform status\" section\n\n## Security\n\nWe have a high priority on good security. So every request you send to our service has to use `TLS 1.2`. Since all the tech giants have chosen to no longer support older SSL/TLS versions, we just follow the trend.\n\nWe also know that a lot of you are running on older or even legacy systems. If something returns an unknown error, check that your system is actually using `TLS 1.2` before you ask for help. If the correct protocol is not used, your request wont even reach our service, thus not our logs.\n\n## Authorization\n\nTo authorize any api requests, you need to get yourself an `APIKEY`.\n\n<p>You can find your API key under \"Account\" -&gt; \"Api Keys\". You can also click &nbsp;<a href=\"https://docs.nps.today/guides/HowtocreateanAPIkey/\">here</a>&nbsp; to see a GIF.</p>\n\nThis key should be included as an authorization header in every request.\n\n```\nAuthorization: apikey \n\n ```\n\n## Rate Limit\n\nTo ensure optimal performance of our API so all our customers and partners have a great experience we urge all developers to give the concept of fair use a thought when developing integrations.\n\nUnless a separate agreement has been made with nps.today, the following applies: API access is limited to a maximum of 10 calls per second per API key. If this limit is exceeded we do return a `429 Too many requests` error. This rate limit is subject to change dynamically depending on the load on our servers, so we suggest that you implement logic to expect a `429` if you plan to use our API for stuff like batch jobs.\n\nAnd don't worry, you will not be locked out, only temporarly so our servers can can catch up to the work you throw at them.\n\n## Paging Result\n\nIf you need _GET_ a lot of data, you can use pagination. If you query everything at once, you will probably get a timeout anyways, so take it in smaller chunks. Instead of pages we let you set a specific number of records to skip and take with each request.\n\nNote that any rediculously large use of `take` will be scaled down automatically, so you wont get the full data even if you try. We suggest taking at most 1000 records at once, anything above this may be restricted to ensure fair use.\n\n| Query String Parameter | Required | Description |\n| --- | --- | --- |\n| skip | optional | Number of records to skip (default: 0) |\n| take | optional | Number of records in this result (default: varies) |\n\nExample:\n\n```\nhttps://api.nps.today/campaigns/responses?skip=0&take=1000\n\n ```\n\n## Common errors\n\n### HTTP Status code 404 (page not found)\n\nAs of our backend change to .net6 our 404 Not Found status code may mean two things.\n\n1. If you get an empty 404, that means the url/path you requested does not exist.\n    \n2. If you get a json response including values for `type`, `title`, `status` and `traceId` this means you hit an existing endpoint, but the resource you are looking for does not exist.\n    \n\n## Need Help?\n\nIf this documentation does not answer all your questions please feel free to contact us at [support@npstoday.com](https://)\n\nAnd don't worry, our support team knows they just need to redirect API related questions to the developers so you get the correct information.\n\n# Terminology\n\n## Campaign\n\nA `Campaign` can be seen as a specific survey with its own design, settings, method of delivery and question set. Someone who participates in a campaign is called a `campaign member`.\n\n## Template\n\nEvery `Campaign` has a `Template` that defines the content of a campaign. Think of it as the styling images and texts presented for a given `Campaign`\n\nA `Template` can be in two three states. `default`, `template`, `campaign`\n\n1. `default` is a set of predefined templates that comes with your account\n    \n2. `template` are templates is user created presets that can be used as baseline when creating new a new\n    \n3. `campaign` are templates assigned to a specific campaign. This is the underlying object you change when editing a campaign.\n    \n\n## Campaign Member\n\nA `Campaign Member` is a `Respondent` (person) who has been invited to participate in a `Campaign` (survey). A `campaign` can have the same `Respondent` multiple times depending on the settings of the `campaign`\n\n## Respondent\n\nA `Respondent` is reference a physical person or contact. Respondents are unique and a single person should only exist as one `respondent` in a single account. Any new email address or phonenumber not tied together is seen as a new Respondent. If you have multiple sub-accounts, a `respondent` should appear only once in every account, but are not linked across accounts.\n\nThe `Respndent` object is updated with the newest information given every time they are added to a `campaign` as a `campaign member` such that any contact info is always up to date.\n\n## Response\n\nA `response` is **ALWAYS** tied to one, and only one, `campaign member`. in database terms:\n\n```\nOne `respondent` has multiple `campaign members` that has zero or one `response`\n\n ```\n\nOr in other words\n\n```\nOne `Person` can `participate` in many surveys, and each participation can have one `answer`\n\n ```\n\n## Company\n\nA `Company` is a field on a `Respondent` that refers to the real world company this respondent belongs to such that multiple `respondents` from the same `company` can be grouped together.\n\n## Employee\n\nAn `Employee` is a field on `Respondent` that referes to the employee in your organization who is responsible for a specific `respondent` / customer. T\n\n## P-Gap\n\nP-Gap is short for **Perception Gap**. It is a way to measure the difference in perception of an interaction between a employee and a customer who gets a survey where we ask the employee first, before sending a survey to the customer. The difference in the answers is then what we call a **P-Gap**. This data can be used as training data for the employee to improve their performance.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"9005532","collectionId":"bbbd4240-7148-4f0c-aa6c-020a6cd702f0","publishedId":"SzmmWFSB","public":true,"publicUrl":"https://v1docs.nps.today","privateUrl":"https://go.postman.co/documentation/9005532-bbbd4240-7148-4f0c-aa6c-020a6cd702f0","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.1","publishDate":"2021-03-09T11:41:18.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[{"name":"NPS API","id":"ff21d170-56ca-467c-9f86-d42e5fe8bd0b","owner":"9005532","values":[{"key":"baseUrl","value":"https://api.nps.today","enabled":true},{"key":"apiKey","value":"APIKEY_VALUE","enabled":true},{"key":"AuthToken","value":"AUTHTOKEN HERE","enabled":true},{"key":"campaignId","value":"{{campaignId}}","enabled":true},{"key":"respondentId","value":"{{respondentId}}","enabled":false}],"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/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":"https://nps.today/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":"NPS API","value":"9005532-ff21d170-56ca-467c-9f86-d42e5fe8bd0b"}],"canonicalUrl":"https://v1docs.nps.today/view/metadata/SzmmWFSB"}