{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"c23c7b9b-8924-4856-ad2a-c37da8841af0","name":"Pulse API","description":"The Pulse API allows you to programmatically access the data stored in your Pulse account with ease.\n\n<h1 id=\"overview\">Overview</h1>\n\n<ol>\n<li><p>You just need a valid API Key to send requests to the API endpoints. You can get your key from the Admin > Setup > API section.</p>\n</li>\n\n<li><p>The response to every request is sent in <a href=\"https://en.wikipedia.org/wiki/JSON\" target=\"_blank\">JSON format</a>. If the API request results in an error, it is represented by an <code>\"error\": {}</code> key in the JSON response.</p>\n</li>\n<li><p>The request method (verb) determines the nature of action that you intend to perform. A request made by using the <code>GET</code> method implies that you want to fetch something. Similarly, a request made by using the <code>POST</code> method implies you want to save something new to Pulse.</p>\n</li>\n<li><p>The API calls will respond with appropriate <a href=\"https://en.wikipedia.org/wiki/List_of_HTTP_status_codes\" target=\"_blank\">HTTP status codes</a> for all requests. A <code>200 OK</code> indicates that the response was successfully sent, while <code>4XX</code> or <code>5XX</code> response codes indicate an error from the requesting client or our API servers respectively.</p>\n</li>\n</ol>\n<h1 id=\"Authentication\">Authentication</h1>\n<hr>\n<h2 id=\"APIKeyAuthentication\">API Key-based Authentication</h2>\n<br/>\nAn API Key is required to be sent as part of every request to the Pulse API. All the APIs use API Key to authenticate the requests and identify your account.\n<br/>\n<br/>\n<blockquote>\nIf you do not have an API Key, you can easily generate one by going to Admin > Setup > API section. \n</blockquote>\n\nTo hit Pulse APIs, you must pass the <b>api_key</b> (that you obtained from the Admin Panel) as <b>Authorization</b> header in the following format:\n<br/>\n<br/>\n<blockquote>\nApi-key {{api_key}} \n</blockquote>\n\nAn API Key tells our API server that the request it received came from you. Everything that you have access to in Pulse is accessible with an API Key that is generated by you.\n\nAPI keys should be kept confidential and only stored on your own servers. Your account’s API key can perform any API request to Pulse without restriction. Its is suggested to rotate API Keys at regular interval.\n\n<h2 id=\"TokenAuthentication\">Token-based Authentication</h2>\n<br/>\nWe currently don't support Token-based Authentication. Please check back later. \n<br/>\n<br/>\n\n<h1 id=\"Support\">Support</h1>\n<hr>\n<br/>\nIf you require any help related to accessing the Pulse API, reach out to us at <a href=\"mailto:support@pulsepro.ai\" target=\"_blank\">support@pulsepro.ai</a>.\n<br/>\n<br/>\nIf you receive a 503 response from our servers, it implies that we have hit an unexpected spike in API access traffic and would usually be operational within the next 5 minutes. If the outage persists or if you receive any other form of 5XX error, do let us know.\n\n<h1 id=\"RateLimits\">Rate Limits</h1>\nPulse uses Rate Limits to ensure faster API response times and to maintain overall stability. If we receive a large quantity of API call requests within a small period, those requests may be throttled. <br/><br/>\n\nIf the Rate Limit feature is enabled for your organization, here is a sample of the response headers that are displayed when only the organization (account)-level limit is defined:\n\n## Rate Limit Response Headers\n| Name                           | Value     | \n|--------------------------------|----------|\n| Organization-RateLimit-Limit | 60;w=60;b=60 |\n| RateLimit-Remaining | 48 |\n| RateLimit-Reset | 50 |\n\nThe interpretation of the Rate Limit response headers is as follows:\n\n| Response Header                           | Description     | \n|--------------------------------|----------|\n| Organization-RateLimit-Limit | 60;w=60;b=60<br> This indicates that the refill rate is <b>60 calls per 60 seconds</b> (where, <b>w=60 sec</b>). After every 1 minute, 60 calls will be added to the bucket.<br> <br><b>b=60</b> indicates that the maximum number of calls that can get accumulated over time is 60. In other words, even if you do not make any API call for 2 hours, a maximum of 60 calls will get accumulated. No more call accumulation can occur beyond this value, because 60 is the maximum capacity of the bucket.|\n| RateLimit-Remaining | The value of this response header indicates the number of remaining API calls that you can make within that particular 48 seconds. This value continuously gets updated after every API call you make and is refreshed after the end of every 48 seconds. |\n| RateLimit-Reset | The value of this response header indicates the time in seconds for the next refill of API calls. If the value is 50, it means that the rate limit will be refreshed to the maximum value of 60 after 50 seconds. |\n\nFor a detailed explanation on the use cases of different request policies and the interpretation of the respective values of the Rate Limit Response Headers, refer to [this Help article](http://help.Pulse.com/en/articles/4774922-rate-limit-response-headers).\n\n> <b>The standard applicable rate limit is 60 calls per minute.</b> To opt for a higher-volume API rate limit, reach out to your Pulse account manager and the relevant team will share the available add-on options with you.\n\n \n#### Strategies to Effectively Manage Rate Limits\nTo avoid reaching your rate limits, you must make only the essential requests that you require.\nHere are a few strategies that can help you to reduce the number of requests and avoid getting rate limit exception responses.<br>\n- <b>Eliminate unnecessary API calls</b>.<br>\nAre some of your requests receiving data items that are not used in your application? You can optimize your code to only fetch the data that your app requires.<br>\n- <b>Cache frequently used data</b>.<br>\nYou can cache data on the server or on the client by using DOM storage. You can also save relatively static information in a database or serialize it in a file.<br>\nFor example, you can cache the list of services, therapists performing the services, and their pricing details for a service booking workflow.<br>\n- <b>Use Retry Logic</b>.<br>\nYou can implement Retry logic after a certain amount of time if you receive an API rate limit exception as a response.<br>\nFor instance, Pulse recommends that you verify the API responses after each API call you make. If you get an API rate limit exception, you must implement the Sleep option for some time and then try again.<br>\nYou should include code that catches errors. If you ignore such API rate limit exception errors and continue to make requests, your app will not be able to recover in a graceful manner.<br>\nYou can use the Retry-After header if you receive a 429 response for the back-off time. Alternatively, you can use metadata (included with all API responses) for your app’s API usage to dynamically control the app’s behavior.<br>\n- <b>Queue API requests.</b><br>\nTo queue your API requests for effectively managing API rate limits, use any one of several cloud applications that are available in the market. Here are a few such cloud applications that you can try out: \n [Amazon Simple Queue Service](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Welcome.html), \n [Apache ActiveMQ](http://activemq.apache.org/restful-queue.html), and [Rackspace Cloud Queues API 1.0](https://developer.rackspace.com/docs/cloud-queues/v1/).\n\n\n<h1 id=\"APIReference\">API Reference</h1>\nThis section explains in detail about the various API categories and their respective API endpoints in Pulse.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"10216348","team":4937358,"collectionId":"c23c7b9b-8924-4856-ad2a-c37da8841af0","publishedId":"Tz5wVDgm","public":true,"publicUrl":"https://docs.pulsepro.ai","privateUrl":"https://go.postman.co/documentation/10216348-c23c7b9b-8924-4856-ad2a-c37da8841af0","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-single-column","customisation":null,"version":"8.10.1","publishDate":"2021-03-23T08:18:04.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"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/5f2e51220f90bc360f355801eacacf0f529f445ccb42e91c2f26b89baf8a353e","favicon":"https://res.cloudinary.com/postman/image/upload/v1616484918/team/ou2c9hktrxc6zuveairt.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"}],"canonicalUrl":"https://docs.pulsepro.ai/view/metadata/Tz5wVDgm"}