Pipedrive
Manage deals, persons, organizations, and pipelines through the Pipedrive REST API.
This tool wraps the current Pipedrive resource endpoints (/api/v2/...) on the
official base URL https://api.pipedrive.com. It uses Python standard library
only (urllib, json) — no third-party dependencies. Non-2xx HTTP responses
are returned (status + body) rather than raised, so the caller can inspect the
Pipedrive error payload.
Operations
| operation | Method & path | Required input | Notes |
|---|---|---|---|
list_deals |
GET /api/v2/deals |
— | limit (1-500, default 10) |
get_deal |
GET /api/v2/deals/{id} |
id |
Single deal by id |
create_deal |
POST /api/v2/deals |
title |
Optional: value, currency, personId |
list_persons |
GET /api/v2/persons |
— | limit (1-500, default 10) |
create_person |
POST /api/v2/persons |
name |
Optional: email, phone |
list_organizations |
GET /api/v2/organizations |
— | limit (1-500, default 10) |
list_pipelines |
GET /api/v2/pipelines |
— | limit (1-500, default 10) |
API token setup
- In Pipedrive, go to Settings > Personal preferences > API.
- Copy your personal API token (one active token per user per company).
- Pass it as the
apiKeyinput. The tool appends it as the?api_token=<token>query parameter on every request — Pipedrive's stateless token authentication scheme. No OAuth or bearer header is needed for a single-user token.
Each user has a separate token per company they belong to. Treat the token as a secret; in InTouch, store it in a credential or runtime-environment variable rather than hardcoding it.
Output
Every run publishes:
result— the raw Pipedrive JSON response body, as a string.status— the HTTP status code as a string ("200","201","401", ...).
On a transport-level failure the tool prints {"result": "", "status": "0",
"error": "..."} and exits non-zero so the InTouch step is marked FAILED.
Examples
List the 5 most recent deals:
{
"apiKey": "YOUR_PIPEDRIVE_TOKEN",
"operation": "list_deals",
"limit": "5"
}
Get a single deal:
{
"apiKey": "YOUR_PIPEDRIVE_TOKEN",
"operation": "get_deal",
"id": "1234"
}
Create a deal linked to a person:
{
"apiKey": "YOUR_PIPEDRIVE_TOKEN",
"operation": "create_deal",
"title": "Acme — annual renewal",
"value": "12000",
"currency": "USD",
"personId": "987"
}
Create a person:
{
"apiKey": "YOUR_PIPEDRIVE_TOKEN",
"operation": "create_person",
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+1-555-0100"
}
List pipelines:
{
"apiKey": "YOUR_PIPEDRIVE_TOKEN",
"operation": "list_pipelines"
}
Publishes
The keys a later task may reference as {{taskName.key}}. Referencing anything not listed here resolves to nothing at run time.
errorresultstatus
Input Properties
Every property this tool accepts, from its own tool.iml.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
apiKey |
string | yes | — | Pipedrive API token. Found in Pipedrive > Settings > Personal preferences > API. Sent as the ?api_token= query parameter on every request. |
operation |
string | yes | — | One of: list_deals, get_deal, create_deal, list_persons, create_person, list_organizations, list_pipelines |
id |
string | no | — | Record id — required for get_deal (GET /api/v2/deals/{id}). |
title |
string | no | — | Deal title — required for create_deal. |
value |
string | no | — | Deal monetary value — optional for create_deal. |
currency |
string | no | — | ISO currency code for the deal value — optional for create_deal. |
personId |
string | no | — | Linked person id — optional for create_deal. |
name |
string | no | — | Person name — required for create_person. |
email |
string | no | — | Person email address — optional for create_person. |
phone |
string | no | — | Person phone number — optional for create_person. |
limit |
string | no | — | Max items to return for list_* operations (1-500, default 10). |