To create and update contacts in bulk programmatically, use the Papo REST API. With secret key authentication (Bearer token) and the account's public key, you can send requests that insert new records or modify existing data in the CRM — ideal for syncing external databases, migrating lists, or keeping records always up to date without manual intervention.
The Papo API exposes write endpoints that allow you to create a contact (with name, email, and/or phone) and update an existing contact. Combined with simple authentication and JSON format, these endpoints enable bulk operations when executed in sequence by scripts, automation tools (such as n8n), or custom integrations.
Integration process summary
| Step | Action | Important detail |
|---|---|---|
| 1. Get the keys | Generate the secret key (sk_live_…) and copy the public key (pk_live_…) in the Papo dashboard. | The secret key appears only once; store it in a safe place. |
| 2. Authenticate calls | Include the header Authorization: Bearer sk_live_… in all write requests. |
The public key can be sent in the X-Papo-Public-Key header (optional). |
| 3. Prepare the payload | Build a JSON object with the contact fields (name, email, phone, etc.). | Required fields and exact format are in the API documentation. |
| 4. Send requests | Make a POST to the creation endpoint or PUT/PATCH for updates. | Each request processes one contact; for many records, automate sending in a loop. |
| 5. Check responses | The API returns success: true and the created/updated contact data. |
If there is an error, the body includes the code and message for correction. |
How authentication and endpoints work
Every call that modifies data (creation, update) requires the account's secret key. It must be sent as a Bearer token in the Authorization header or, alternatively, in the X-Papo-Secret-Key header. The public key (fixed per account) can accompany the request in the X-Papo-Public-Key header — its use is optional, but if sent it must match the same account as the secret key.
The API base URL is https://app.papo.global/api/v1. From there, the contact endpoints accept the appropriate HTTP verbs to create a new record or modify an existing one. Since the complete documentation details the paths, parameters, and accepted fields, we recommend consulting the official API reference before coding.
Authentication example (test request)
To validate that your keys are working, you can call the GET /api/v1/me endpoint, which returns the account data. The authentication pattern is the same used in all other endpoints:
curl https://app.papo.global/api/v1/me \
-H "Authorization: Bearer sk_live_…" \
-H "X-Papo-Public-Key: pk_live_…"
A successful response includes success: true and the data object with the account information. From there, simply replace the endpoint and HTTP method according to the desired operation with contacts.
Creating and updating contacts in bulk
Although the API processes one contact per request, bulk operation is achieved by executing multiple calls in sequence. A script in Python, Node.js, or an automation in n8n can:
- Read a list of contacts from a CSV file, database, or ERP.
- For each record, build the JSON payload with the necessary fields.
- Send the request to the creation endpoint (if the contact does not exist) or update endpoint (using the contact identifier).
- Collect the responses and handle any errors (duplicate email, invalid field, etc.).
Since the API is REST and uses JSON, any language with HTTP support works. Papo also provides examples in JavaScript and Python on the documentation page, which can be adapted for the contact endpoints.
Automatic triggers after creation
Whenever a new contact is created via API, the same internal CRM events are triggered. If you have a Flow configured with the “Contact created” trigger, the automation will run automatically — for example, sending a welcome message via WhatsApp or notifying the sales team. This means that API integration not only populates the database but also activates the communication flows already existing in the account.
Who this integration is for
- Companies migrating from another CRM or spreadsheet that need to import thousands of contacts at once, keeping the Papo database synchronized.
- Operations that capture leads in external systems (landing pages, ERPs, e-commerce) and want them to automatically enter the Papo CRM, ready to receive service or campaigns.
- IT teams building custom integrations between Papo and internal tools, using the API as a bridge to keep customer data always up to date.
- White label resellers who manage multiple accounts and want to automate contact creation at scale for their clients.
Frequently asked questions
Do I need a secret key to create or update contacts?
Yes. All write operations (creation, update) require authentication with the account's secret key. The public key alone does not authorize modifications.
Can I send thousands of contacts at once?
The API processes one contact per request. For large volumes, you must automate sequential sending, respecting the rate limits described in the official documentation.
Do contacts created via API trigger the “Contact created” Flow?
Yes. The creation event is the same, regardless of origin. If there is an active Flow with this trigger, it will run for each contact inserted via API.
How do I know if a contact already exists to avoid duplicates?
You can use the search endpoints (filtering by email or phone) before creating. The API documentation details the available query parameters.
Does the API allow updating only some fields of the contact?
Yes. In the update request body, send only the fields you want to modify. The others remain unchanged.
Where can I find the complete list of endpoints and parameters?
The complete reference is available on the API documentation page. There you will find the paths, methods, payloads, and updated examples.
Read also
- How to automatically trigger a Flow when a new contact is created in the CRM
- How to export contacts extracted in the Extractor to CSV and import them into the Papo CRM
Start for free and integrate your CRM with Papo via API →
With the first user free, you can already generate your API keys and test bulk contact creation at no initial cost.