Skip to main content
Pipedrive REST API access for querying and managing CRM records (Deals, Persons, Organizations, Leads, Activities, and Pipelines) in a connected user’s account. Use when an agent needs to search the CRM, look up or create records, update fields, move deals through pipeline stages, or discover an account’s custom-field schema. Routes through Pipedream Connect — the user sees one Pipedrive consent screen on connect that says “Pipedream wants access” (Pipedream owns the verified app), and all calls run under that user’s own Pipedrive permissions. Works with any company account without the caller needing to know the account’s Pipedrive subdomain. 9 example endpoints available through Lava’s AI Gateway. See the Pipedrive API docs for full documentation.
This provider requires your own credentials — connect your API key or OAuth account before use.
This is a catch-all provider — any valid URL under https://company.pipedrive.com is supported. Pipedrive REST API v1 endpoints. Construct URLs as https://company.pipedrive.com/api/v1/{path} — the literal host company.pipedrive.com always works because the gateway routes by path and Pipedream resolves the connected org’s real subdomain automatically (the org’s actual host works too). Common roots: deals, persons, organizations, leads, activities, pipelines, stages, notes, products, users/me, itemSearch. Search with itemSearch?term={q}&item_types=deal,person,organization (term needs 2+ chars). List endpoints paginate with start (offset) + limit (max 500); the response’s additional_data.pagination tells you more_items_in_collection and the next_start to pass as start for the next page. Create with POST, update with PUT (Pipedrive applies partial updates — send only the fields you are changing), delete with DELETE. The Lava gateway requires a JSON body on every non-GET call — for DELETE, send an empty object as body_json. Person email/phone are arrays of {value,label,primary} objects. Custom fields have 40-char hash keys — discover them via dealFields / personFields / organizationFields. Every successful response wraps its payload under data. See https://developers.pipedrive.com/docs/api/v1 for the full reference. The endpoints below are curated examples.

Endpoints

Get the connected Pipedrive account (user email, name, company name, and currency). Use this as a cheap auth probe after connect — confirms the OAuth grant is healthy without enumerating CRM records.

GET https://company.pipedrive.com/api/v1/users/me — Free
const data = await lava.gateway('https://company.pipedrive.com/api/v1/users/me', { method: 'GET' });

List deals — the workhorse for “what is in the pipeline” questions. Filter with status (open/won/lost/deleted/all_not_deleted), user_id, stage_id, or filter_id. Paginate with start + limit (max 500); read additional_data.pagination.next_start for the next page.

GET https://company.pipedrive.com/api/v1/deals?status=open&limit=50 — Free
const data = await lava.gateway('https://company.pipedrive.com/api/v1/deals?status=open&limit=50', { method: 'GET' });

Full-text search across the CRM. Use when you have a free-text term (a person’s name, a company) and don’t know its ID. Scope with item_types — any of deal, person, organization, product, lead, file, mail_attachment, project (omit to search all) — and limit fields per result; term needs 2+ characters.

GET https://company.pipedrive.com/api/v1/itemSearch?term=Acme&item_types=organization,person&limit=10 — Free
const data = await lava.gateway('https://company.pipedrive.com/api/v1/itemSearch?term=Acme&item_types=organization,person&limit=10', { method: 'GET' });

Read a single person (contact) by numeric ID. Returns the full record under data, including email/phone arrays and any custom fields. Person IDs come from itemSearch or the persons list.

GET https://company.pipedrive.com/api/v1/persons/123 — Free
const data = await lava.gateway('https://company.pipedrive.com/api/v1/persons/123', { method: 'GET' });

List the field schema for persons: field keys (custom fields use 40-char hash keys), names, types, and the options for enum/set fields — what you need to read custom values and build valid create/update bodies. Equivalent endpoints exist for deals (dealFields) and organizations (organizationFields).

GET https://company.pipedrive.com/api/v1/personFields — Free
const data = await lava.gateway('https://company.pipedrive.com/api/v1/personFields', { method: 'GET' });
POST https://company.pipedrive.com/api/v1/persons — Free
const data = await lava.gateway('https://company.pipedrive.com/api/v1/persons', {
  body: {
"name": "Ada Lovelace",
"email": [
  {
    "value": "ada@example.com",
    "primary": true,
    "label": "work"
  }
],
"phone": [
  {
    "value": "+1-555-0100",
    "primary": true,
    "label": "work"
  }
]
},
});
POST https://company.pipedrive.com/api/v1/deals — Free
const data = await lava.gateway('https://company.pipedrive.com/api/v1/deals', {
  body: {
"title": "Acme — Enterprise plan",
"value": 50000,
"currency": "USD",
"status": "open"
},
});

Update a person. Pipedrive applies partial updates on PUT — send only the fields you are changing; omitted fields are left untouched. Returns the updated record under data. (The same PUT-with-id shape updates deals and organizations.)

PUT https://company.pipedrive.com/api/v1/persons/123 — Free
const data = await lava.gateway('https://company.pipedrive.com/api/v1/persons/123', { method: 'PUT', body: {"name":"Ada B. Lovelace"} });

Delete a person. Returns data: { id } on success. The gateway requires a JSON body on every non-GET call, so send an empty object as body_json. Prefer this only when the workflow truly needs a hard delete — Pipedrive deletes are recoverable from the UI for a limited window.

DELETE https://company.pipedrive.com/api/v1/persons/123 — Free
const data = await lava.gateway('https://company.pipedrive.com/api/v1/persons/123', { method: 'DELETE', body: {} });

Next Steps

All Providers

Browse all supported AI providers

Forward Proxy

Learn how to construct proxy URLs and authenticate requests