Table of Contents
Your product will change the future, but first it must adapt to the present. Drive product adoption, customer loyalty, and team innovation with Pendo.
API Overview
Pendo is a cloud-based software platform that provides product analytics, user onboarding, and in-app guidance to help businesses improve their user experience and drive product adoption. It offers a comprehensive suite of features, including real-time user behavior tracking, personalized onboarding flows, interactive in-app guides, and advanced analytics to measure the impact of product changes. Pendo integrates seamlessly with popular development tools and platforms, enabling businesses to easily embed these capabilities into their software applications.
Pendo API provides a comprehensive set of REST APIs, webhooks, and documentation to enable developers to integrate Pendo's functionality into their own applications. The REST APIs allow developers to programmatically access and manage Pendo data, such as user behavior events, onboarding flows, and in-app guidance content. Webhooks provide a mechanism for Pendo to send real-time notifications to external systems when specific events occur, such as when a user completes an onboarding flow or interacts with an in-app guide. Pendo's API documentation provides detailed information on all available endpoints, request and response formats, and code samples to assist developers in integrating with the platform. Additionally, Pendo enforces rate limits to prevent excessive API usage and ensure optimal performance for all users.
API Request Limits
Free Plan
100 requests per minute
Growth Plan
500 requests per minute
Enterprise Plan
1,000 requests per minute
APIs
Method: GET
Description: Retrieve a list of accounts.
Endpoint: accounts
Parameters:
Method: GET
Description: Retrieve a specific account.
Endpoint: accounts/{account_id}
Parameters:
Method: PUT
Description: Update a specific account.
Endpoint: accounts/{account_id}
Parameters: account_name, is_active, manage_access_tokens
Method: POST
Description: Create an account.
Endpoint: accounts
Parameters: account_name, is_active, manage_access_tokens
Method: DELETE
Description: Delete a specific account.
Endpoint: accounts/{account_id}
Parameters:
Method: GET
Description: List all access tokens for an account.
Endpoint: accounts/{account_id}/access_tokens
Parameters:
Method: POST
Description: Create an access token for an account.
Endpoint: accounts/{account_id}/access_tokens
Parameters: account_access_token_name, account_access_token_description, access_token_scopes
Method: DELETE
Description: Delete a specific access token.
Endpoint: accounts/{account_id}/access_tokens/{access_token_id}
Parameters:
Method: PUT
Description: Update a specific access token.
Endpoint: accounts/{account_id}/access_tokens/{access_token_id}
Parameters: account_access_token_name, account_access_token_description, access_token_scopes
Method: GET
Description: Retrieve a specific access token.
Endpoint: accounts/{account_id}/access_tokens/{access_token_id}
Parameters:
Method: POST
Description: Generate a long-lived access token.
Endpoint: accounts/{account_id}/access_tokens/generate_long_lived
Parameters:
Method: GET
Description: Retrieve a Pendo API key.
Endpoint: accounts/{account_id}/pendo_api_key
Parameters:
Method: PUT
Description: Update card data.
Endpoint: assists/{assist_id}/cards/{card_id}
Parameters: device_id, is_deleted, icon, location, name, metadata
Method: GET
Description: Retrieve card data.
Endpoint: assists/{assist_id}/cards/{card_id}
Parameters:
Method: DELETE
Description: Delete card data.
Endpoint: assists/{assist_id}/cards/{card_id}
Parameters:
Method: POST
Description: Create card data.
Endpoint: assists/{assist_id}/cards
Parameters: device_id, is_deleted, icon, location, name, metadata
Method: POST
Description: Create a new prompt.
Endpoint: assists/{assist_id}/prompts
Parameters: audience, context, content, creation_time, icon_url, name, state
Method: GET
Description: Retrieve a specific prompt.
Endpoint: assists/{assist_id}/prompts/{prompt_id}
Parameters:
Method: PUT
Description: Update a specific prompt.
Endpoint: assists/{assist_id}/prompts/{prompt_id}
Parameters: audience, context, content, icon_url, name, state
Method: DELETE
Description: Delete a specific prompt.
Endpoint: assists/{assist_id}/prompts/{prompt_id}
Parameters:
Method: GET
Description: Retrieve a list of all assists.
Endpoint: assists
Parameters:
Method: GET
Description: Retrieve a specific assist.
Endpoint: assists/{assist_id}
Parameters:
Method: PUT
Description: Update a specific assist.
Endpoint: assists/{assist_id}
Parameters: name, description, is_active, metadata
Method: POST
Description: Create a new assist.
Endpoint: assists
Parameters: name, description, is_active, metadata
Method: DELETE
Description: Delete a specific assist.
Endpoint: assists/{assist_id}
Parameters:
Method: GET
Description: Retrieve a list of audiences.
Endpoint: audiences
Parameters:
Method: POST
Description: Create a new audience.
Endpoint: audiences
Parameters: name, description, member_count, created_date
Method: GET
Description: Retrieve a specific audience.
Endpoint: audiences/{audience_id}
Parameters:
Method: PUT
Description: Update a specific audience.
Endpoint: audiences/{audience_id}
Parameters: name, description, member_count, created_date
Method: DELETE
Description: Delete a specific audience.
Endpoint: audiences/{audience_id}
Parameters:
Method: GET
Description: Retrieve a list of audience names.
Endpoint: audiences/names
Parameters:
Method: GET
Description: Retrieve a list of members in an audience.
Endpoint: audiences/{audience_id}/members
Parameters:
Method: POST
Description: Add members to an audience.
Endpoint: audiences/{audience_id}/members/add|audiences/{audience_id}/members/replace
Parameters: members
Method: DELETE
Description: Delete members from an audience.
Endpoint: audiences/{audience_id}/members/remove
Parameters: members
Method: GET
Description: Retrieve a list of all audience rules.
Endpoint: audiences/rules
Parameters:
Method: POST
Description: Create a new audience rule.
Endpoint: audiences/rules
Parameters: audience_id, rule_definition, rule_id, rule_name, rule_priority
Method: GET
Description: Retrieve a specific audience rule.
Endpoint: audiences/rules/{rule_id}
Parameters:
Method: PUT
Description: Update a specific audience rule.
Endpoint: audiences/rules/{rule_id}
Parameters: audience_id, rule_definition, rule_name, rule_priority
Method: DELETE
Description: Delete a specific audience rule.
Endpoint: audiences/rules/{rule_id}
Parameters:
Method: GET
Description: List members of an audience that satisfy a given set of conditions.
Endpoint: audiences/members/satisfy_rule_definitions
Parameters: rule_definitions, page_size, page_index, include_total_count
Method: GET
Description: List members of an audience that satisfy a given set of rule names.
Endpoint: audiences/members/satisfy_rule_names
Parameters: rule_names, page_size, page_index, include_total_count
Method: GET
Description: List members of an audience that satisfy the conditions in a given rule definition.
Endpoint: audiences/members/satisfy_rule_definition
Parameters: rule_definition, page_size, page_index, include_total_count
Method: GET
Description: List members of an audience that satisfy the conditions in a given rule name.
Endpoint: audiences/members/satisfy_rule_name
Parameters: rule_name, page_size, page_index, include_total_count
Method: GET
Description: Retrieve a list of all data sources.
Endpoint: data_sources
Parameters:
Method: GET
Description: Retrieve a specific data source.
Endpoint: data_sources/{data_source_id}
Parameters:
Method: POST
Description: Create a new data source.
Endpoint: data_sources
Parameters: name, description, format, created_date, is_public, source_metadata
Method: PUT
Description: Update a specific data source.
Endpoint: data_sources/{data_source_id}
Parameters: name, description, format, is_public
Method: DELETE
Description: Delete a specific data source.
Endpoint: data_sources/{data_source_id}
Parameters:
Method: GET
Description: Retrieve all mappings for a data source.
Endpoint: data_sources/{data_source_id}/data_mappings
Parameters:
Method: GET
Description: Retrieve a data mapping for a data source.
Endpoint: data_sources/{data_source_id}/data_mappings/{data_mapping_id}
Parameters:
Method: DELETE
Description: Delete data mapping for a data source.
Endpoint: data_sources/{data_source_id}/data_mappings/{data_mapping_id}
Parameters:
Method: GET
Description: Retrieve all products associated with a data source.
Endpoint: data_sources/{data_source_id}/products
Parameters:
Method: POST
Description: Add a product to a data source.
Endpoint: data_sources/{data_source_id}/products
Parameters: product_id
Method: DELETE
Description: Remove a product from a data source.
Endpoint: data_sources/{data_source_id}/products/{product_id}
Parameters:
Method: POST
Description: Create a new data source mapping.
Endpoint: data_sources/{data_source_id}/data_mappings
Parameters: data_source_column, data_dictionary_value, pendo_field_name
Method: GET
Description: Retrieve a list of all devices.
Endpoint: devices
Parameters:
Method: GET
Description: Retrieve a specific device.
Endpoint: devices/{device_id}
Parameters:
Method: POST
Description: Create a new device.
Endpoint: devices
Parameters: device_id, platform, first_seen_at, last_seen_at, last_interaction_at, os_version, os_build, device_model, localized_device_model, app_version, app_build, localized_app_version, metadata
Method: PUT
Description: Update a specific device.
Endpoint: devices/{device_id}
Parameters: platform, first_seen_at, last_seen_at, last_interaction_at, os_version, os_build, device_model, localized_device_model, app_version, app_build, localized_app_version, metadata
Method: DELETE
Description: Delete a specific device.
Endpoint: devices/{device_id}
Parameters:
Method: POST
Description: Create a new device interaction.
Endpoint: devices/{device_id}/interactions
Parameters: interaction_metadata, interaction_timestamp, interaction_type
Method: DELETE
Description: Delete a device interaction.
Endpoint: devices/{device_id}/interactions/{interaction_id}
Parameters:
Method: GET
Description: Retrieve a list of all integrations.
Endpoint: integrations
Parameters:
Method: GET
Description: Retrieve a specific integration.
Endpoint: integrations/{integration_id}
Parameters:
Method: PUT
Description: Update a specific integration.
Endpoint: integrations/{integration_id}
Parameters: enabled, is_syncing, sync_status
Method: POST
Description: Create a new integration.
Endpoint: integrations
Parameters: integration_type, enabled, data_source_id, connector_id, metadata
Method: DELETE
Description: Delete a specific integration.
Endpoint: integrations/{integration_id}
Parameters:
Method: POST
Description: Sync the specified integration.
Endpoint: integrations/{integration_id}/sync
Parameters:
Method: GET
Description: Import data into the specified data source.
Endpoint: data_sources/{data_source_id}/import
Parameters:
Method: GET
Description: Retrieve a list of all Pendo Field (PDC) connections.
Endpoint: pendo_connections
Parameters:
Method: GET
Description: Retrieve a specific Pendo Field (PDC) connection.
Endpoint: pendo_connections/{pendo_connection_id}
Parameters:
Method: POST
Description: Create a new Pendo Field (PDC) connection.
Endpoint: pendo_connections
Parameters: workspace_id, pendo_field_product_id
FAQ
How do I authenticate to the Pendo APIs?
To authenticate, you must use a personal access token. You can create one in the Pendo UI under Settings > Integrations > API.
What are the rate limits for the Pendo APIs?
The rate limits vary depending on the API you are using. You can find the specific rate limits for each API in the API documentation.
How do I create a sandbox account for development purposes?
To create a sandbox account, you must contact Pendo support. They will provide you with instructions on how to create the account.
What is the difference between a developer account and a production account?
A developer account is meant for testing and development purposes only. A production account is for use with live data.
How do I create a new data source?
To create a new data source, you must make a POST request to the Data Sources API.