{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"ded8d9bb-679b-41df-a93f-7ecf3acf2acf","name":"Pendo API","description":"## API Status\n\nStatus for the API can be found at [https://status.pendo.io/](https://status.pendo.io/)\n\n## Release Notes\n\nRelease notes for new stable web SDK versions are published at [https://web-sdk.pendo.io/versions](https://web-sdk.pendo.io/versions)[.](https://developers.pendo.io/agent-sdk-updates/.) Updates are promoted to stable on Thusdays with hotfixes and beta releases pushing more frequently.\n\n## Additional Resources\n\nIf you're looking for how to install Pendo into your application, how Pendo collects visitor and account analytics from your application, or how you can retrieve or extract those analytics data from Pendo for external consumption, Pendo provides the following APIs and integration kits for customers:\n\n- The [Pendo Web SDK API](https://web-sdk.pendo.io) allows developers to programmatically interact with Pendo's Web SDK, the JavaScript client that collects user interactions and displays in-app messaging.\n    \n- The [Feedback API](https://feedbackapi.pendo.io) is available in a separate Postman collection.\n    \n- The [<b>Pendo Resource Center Integration Kit</b>](https://github.com/pendo-io/resource-center-integration-kit) provides an integration framework that allows third party developers to create applications that Pendo customers can activate and provide to their users.\n    \n- The Pendo Tech Corner offers an introduction to Pendo's API here: [https://academy.pendo.io/api-setup](https://academy.pendo.io/api-setup)\n    \n\n# Getting Started\n\nThe easiest way to start using the Pendo API is by clicking the **Run in Postman** button at the top of the collection. [Postman](https://www.getpostman.com/) is a free tool which helps developers run and debug API requests, and is the source of truth for this documentation. Every endpoint you see documented here is readily available by running our Postman collection.\n\n### Get an integration key\n\nYou must have a Pendo integration key from your Pendo subscription to use this collection. Access to this API is dependent on your level of service with Pendo. Check with your Pendo admin at your company or a Pendo representative if you don't know if you have API access.\n\nIntegration keys are created in Pendo Settings > Integrations. Please visit [this help center page](https://support.pendo.io/hc/en-us/articles/9491198203547-Pendo-Integration-Key) for more information. When enabled for the subscription, admins can create and manage those keys [here](https://app.pendo.io/admin/integrationkeys).\n\n**Integration keys should be kept secret!** It is how you securely access and update information about your users and accounts in Pendo. Do not share them in client-side javascript, publicly accessible code repositories, etc.\n\nTo create an Integration Key:\n\n1. Login to the Pendo Application as an Admin user.\n    \n2. Visit the **Integrations** section in the Pendo App, and then click on **Integration Keys**.\n    \n3. Click on the **Add Integration Key** button at the top right-hand side of the screen.\n    \n4. Give your new key an appropriate description.\n    \n5. If a read-write key is needed, tick the box marked **Allow Write Access**.\n    \n6. Click on **Create** to finish.\n    \n7. Securely capture and store your new key outside of Pendo.\n    \n\nIntegration keys are only displayed at the time of creation and aren't listed in the UI. We can't recover a lost integration key. If you're unable to find the value for an existing key, you must create a new key. Pendo doesn't limit the number of keys generated.\n\n### Add your integration key to the collection\n\nThe Engage API collection is built to propagate the API key down to all requests when it is added to the Authorization tab for the collection.\n\n1. Select the Pendo API collection.\n    \n2. Open the Authorization tab.\n    \n3. Add your integration key to the Value field.\n    \n4. All other fields are preconfigured.\n    \n    1. Type = API Key\n        \n    2. Key = x-pendo-integration-key\n        \n    3. Add to = Header\n        \n\nAll folders and requests are set to inherit auth from their parent and adding the integration key to the collection automatically pushes the integration key to the request header for all requests.\n\n### Add your base URL to the collection\n\nThe main URL used to access the Pendo API corresponds to the region and web address that you use when logging into Pendo's UI. Those URLs are:\n\n[https://app.pendo.io](https://app.pendo.io)  \n[https://app.eu.pendo.io](https://app.eu.pendo.io)  \n[https://us1.app.pendo.io<br>](https://us1.app.pendo.io)[https://app.jpn.pendo.io<br>](https://app.jpn.pendo.io)[https://app.au.pendo.io](https://app.au.pendo.io)\n\nAll endpoints in this collection are configured to use a variable, `baseUrl`, to represent these. This collection is defaulted to [https://app.pendo.io](https://app.pendo.io). If you log into Pendo using one of the other domains, please follow these steps to update the collection with the relevant base URL for your subscription.\n\n1. Select the Pendo API collection.\n    \n2. Open the Variables tab.\n    \n3. Add your baseURL to the Current Value field.\n    \n4. Click Save.\n    \n\n### Send a request\n\nMany GET methods in the Pendo API are functional without any additional variables or configuration changes. Try `GET Return List of All Pages` or `GET Return List of All Features` to see a request without any additional changes.\n\nTargeted requests for individual objects need an ID. The ID is returned in the list of all objects using the API. This ID is also available in the page URL when viewing the object in Pendo for most objects. For example, when viewing guide details in Pendo the URL path is:\n\n`app.pendo.io/s/[subscriptionId]/guides/[guideId]`\n\nAdd IDs to the Value column in the Params tab in the request. The Key is already filled in.\n\n# Pendo API Overview\n\nWelcome to Pendo's API documentation. This is a [RESTful API](https://en.wikipedia.org/wiki/Representational_state_transfer) used to query, update, and reset Pendo data primarily by running [Aggregation queries](https://engageapi.pendo.io/#7c8479b8-3843-403c-94a9-04cbdf542db9) or modifying [Guide resources](https://engageapi.pendo.io/#b071f706-e996-4018-8e88-295c586edfe3).\n\n#### How Does Pendo Work?\n\nOnce installed the Pendo snippet in your application, visitor activity is collected automatically by the Pendo agent and sent via [Image Beacons](https://en.wikipedia.org/wiki/Web_beacon) to Pendo for data processing. Pendo accepts these events immediately but ingests and processes visitor data asynchronously. Events sent by the agent are not immediately available via the API but they are usually available within 15 minutes of receipt.\n\n#### What can I access using the Pendo API?\n\nThe Pendo API allows developers to\n\n- request and modify resources like guides, visitor metadata, and reports\n    \n- create [track events](https://support.pendo.io/hc/en-us/articles/360032294151-Track-Events) to record events not associated with simple browser events\n    \n- use powerful aggregation queries to retrieve and transform your visitor data\n    \n\n#### What's an aggregation?\n\nPendo's [Aggregation API](#aggregation-api) allows you to request structured transformations of the events collected by the agent using a MongoDB-like query language. It supports arbitrary grouping, filtering, and projections, as well as selecting and merging object-specific analytics for pages, features, track events, and guides. Many of the charts, graphs, and reports provided in the Pendo interface are generated by the sources and operations provided.\n\n**Note:** All request and response bodies, including errors, are encoded in [JSON](http://www.json.org/).\n\n## Status Codes\n\nWe use conventional HTTP response codes to indicate the success or failure of an API request. The various HTTP status codes we might return are listed below, but in general, consider the following:\n\n- **2xx** range indicates success\n    \n- **4xx** range indicates an error that failed given the information provided (e.g., a required parameter was omitted, a resource was not able to be found or updated, etc.)\n    \n- **5xx** range indicates an error on the server side. These calls should be retried within a reasonable timeframe. We recommend one second or more.\n    \n\n| Status Code | Definition |\n| --- | --- |\n| 200 - OK | Everything worked as expected. |\n| 400 - Bad Request | The request was unacceptable, often due to missing a required parameter. |\n| 401 - Unauthorized | No valid integration key provided. |\n| 402 - Request Failed | The parameters were valid but the request failed. |\n| 404 - Not Found | The requested resource doesn't exist. |\n| 422 - Unprocessable Entity | The request could not process the payload. The syntax may be correct, but may be semantically wrong |\n| 429 - Too Many Requests | Too many requests hit the API too quickly. Slow down. |\n| 500, 502, 503, 504 - Server Errors | It's not you, it's us. We're sorry. |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"16265887","collectionId":"ded8d9bb-679b-41df-a93f-7ecf3acf2acf","publishedId":"Tzm6jvKG","public":true,"publicUrl":"https://engageapi.pendo.io","privateUrl":"https://go.postman.co/documentation/16265887-ded8d9bb-679b-41df-a93f-7ecf3acf2acf","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"ec2059"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.0","publishDate":"2022-09-20T18:07:15.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/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":"https://pendo.io/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"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/Tzm6jvKG"}