This guide assumes you have a Panora account, or a working self-hosted version

The Panora API uses uses two elements to indentify requests: API keys and a connection_token.

API Keys are used to authenticate yourself to our backend, while a connection_token serves to identify which of your user’s you’re making API calls for.

Depending on your setup, you should make requests to one of those endpoints:

Learn how to generate your API Keys and catch connection tokens.


Creating your API Key

Go to your dashboard, and visit the API Keys section. Click the Create New Key button.


Safely store your API Key

Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.


Catch your first `connection_token`

A connection_token is created everytime a user connects an account to your platform. You need to setup a webhook and listen to events connection.created to catch a connection_token. connection_token is a string, located in the “data” object, inside a connection.created event.

Read about webhooks here
Example connection.created event
    "id_event": "dc2d12b9-dd07-4e33-a244-d0560a9eeed7",
    "type": "connection.created",
    "data": {
        "id" : "6fc7017a-6596-4b05-81b6-595296a59f87"
        "connection_token": "CONNECTION_TOKEN_HERE",
        "provider_slug": "hubspot",

Congrats! You have everything you need to make authenticated requests.

Make your first API request with your API Key and a connection_token

Take a look at these examples to understand the concept. We also recommend practising by looking at the specific verticals you want to integrate.


Setup your API Key in your code:

import { PanoraSDK } from '@panora/typescript-sdk';
const sdk = new PanoraSDK({ accessToken: "MY_API_KEY" });

Make your first unified API call:

In this example, we will create a contact in a CRM. Visit other sections of the documentation to find category-specific examples
curl --request POST \
--url \
--header 'Authorization: Bearer dfsdf' \
--header 'Content-Type: application/json' \
--header 'x-connection-token: <connection_token>' \
--data '{
"first_name": "Mark",
"last_name": "Zuckerbeg",
"email_addresses": [
    "email_address": "",
    "email_address_type": "personal",
    "owner_type": "contact"
"phone_numbers": [
    "phone_number": "+33694837462",
    "phone_type": "personal",
    "owner_type": "contact"
"field_mappings": {}

Read more about our SDKs in TypeScript, Java, Python