Connection
- Authentication: API key (Pipeline CRM API token).
In Pipeline CRM, an account administrator first turns API access on: Account Settings → API → API Keys → Enable API Access (asks for a technical contact e-mail). Then, in My Profile → API tokens (app.pipelinecrm.com/user/api_tokens) → Add API Token: name it, choose “Read only” or “Read and write” (agents that create or update records need read-write) and an expiry, then copy the token (starts with pcrm_live_, shown only once). The token acts as your user and sees what you see.See Pipeline CRM’s documentation.
Read actions (14)
| Action | Description |
|---|---|
get_company | Get a company by id (integer, from list_companies). |
get_deal | Get a deal by id (integer, from list_deals), with stage, owner, company, people and custom fields. |
get_person | Get a person by id (integer, from list_people). |
get_profile | Get the user the token belongs to (id, name, is_account_admin). The api_key field is removed. |
list_calendar_entries | List tasks and events. Useful conditions keys: when ({from_date: “2026-09-01”, to_date: “2026-09-30”}), owner (array of user ids), incomplete (true). Optional page, per_page (1-200), sort (record attribute such as “-value” or “name”, ”-” prefix = descending) and conditions (object of filters). The answer is { entries: […], pagination: { page, per_page, total } }. |
list_companies | List or search companies. Useful conditions keys: company_name (starts with), company_name_eq (exact), company_web, company_city, company_owner (user id), company_is_customer (“Yes”/“No”), company_tags (ids), company_created ({selection: “last_30”}). Sort by a company attribute: name or created_at, e.g. “name” (company_name is NOT a sort key: it answers 500). Optional page, per_page (1-200), sort (record attribute such as “-value” or “name”, ”-” prefix = descending) and conditions (object of filters). The answer is { entries: […], pagination: { page, per_page, total } }. |
list_deal_pipelines | List the deal pipelines (id, name, default, won and lost stages). Optional page, per_page (1-200). |
list_deal_stages | List the deal stages (id, name, percent, deal_pipeline_id): ids to use as deal_stage_id or in the deal_stage filter. Optional page, per_page (1-200). |
list_deal_statuses | List the deal statuses (id, name): ids to use as status on a deal. Optional page, per_page (1-200). |
list_deals | List or search deals. Useful conditions keys: deal_name, deal_stage (ids), deal_status (id), deal_owner (user id), deal_pipeline (id), deal_company_name, deal_primary_contact_id, deal_value ({from, to}), deal_created ({selection: “last_30”}), deal_is_archived (“Yes”/“No”). Sort by a deal attribute: name, value or created_at, e.g. “-value” (the deal_* condition keys are NOT sort keys: they answer 500). Optional page, per_page (1-200), sort (record attribute such as “-value” or “name”, ”-” prefix = descending) and conditions (object of filters). The answer is { entries: […], pagination: { page, per_page, total } }. |
list_event_categories | List the task and event categories (id, name): ids to use as category_id in create_calendar_entry. Optional page, per_page (1-200). |
list_notes | List the notes of a record. At least one of deal_id, company_id, person_id (integers) is required. Optional page, per_page (1-200). |
list_people | List or search people (contacts and leads). Useful conditions keys: person_name, person_email, person_full_name, person_company_name, person_company_id, person_owner (user id), person_type (“Lead”/“Contact”), person_status (lead status id), person_tags (ids), person_created ({selection: “last_30”}). Sort by a person attribute: last_name, first_name or created_at, e.g. “-created_at” (person_name is NOT a sort key: it answers 500). Optional page, per_page (1-200), sort (record attribute such as “-value” or “name”, ”-” prefix = descending) and conditions (object of filters). The answer is { entries: […], pagination: { page, per_page, total } }. |
list_users | List the users you can see (ids to use as user_id / owner_id). Optional page, per_page (1-200). |
Write actions (8)
| Action | Description |
|---|---|
create_calendar_entry | Create a task or an event; returns the record with its id. Arguments: type (CalendarTask or CalendarEvent, required); category_id (integer from list_event_categories, required); name (string, required); description (string); due_date (string, tasks); start_time, end_time (strings “YYYY-MM-DD HH:MM:SS”, events); all_day (boolean); association_type (Deal, Company or Person) with association_id (integer) to attach it to a record; send_assignment_email (boolean). |
create_company | Create a company; returns the record with its id. Arguments: name (string, required); description, email, web, phone1, phone2, address_1, address_2, city, state, postal_code, country, linked_in_url (strings); owner_id (integer from list_users); tag_ids (array of integers); custom_fields (object { “custom_label_<id>”: value }); send_assignment_email (boolean, false = no e-mail to the owner). |
create_deal | Create a deal; returns the record with its id. Arguments: name (string, required); summary (string); value (number or numeric string); expected_close_date (string YYYY-MM-DD); user_id (owner, integer from list_users); deal_stage_id (integer from list_deal_stages); status (integer from list_deal_statuses); probability (integer 0-100); company_id (integer from list_companies) or company_name (string, creates the company); primary_contact_id (integer from list_people); person_ids (array of integers); deal_source (integer); tag_ids (array of integers); address_1, address_2, city, state, postal_code, country (strings); custom_fields (object { “custom_label_<id>”: value }); send_assignment_email (boolean, false = no e-mail to the owner). |
create_note | Add a note to a deal, a company or a person; returns the record with its id. Arguments: content (string, required); title (string); deal_id, company_id, person_id (integers, give at least one); note_category_id (integer). |
create_person | Create a person; returns the record with its id. Arguments, all optional: first_name, last_name, summary, position, email, email2, home_email, phone, mobile, home_phone, website, linked_in_url, relationship (strings); company_id (integer from list_companies) or company_name (string, created if none matches); user_id (owner, integer from list_users); type (Contact or Lead); lead_status_id, lead_source_id (integers); is_key_contact (boolean); predefined_contacts_tag_ids (array of integers); work_address_1, work_address_2, work_city, work_state, work_country, work_postal_code (strings); custom_fields (object { “custom_label_<id>”: value }); send_assignment_email (boolean, false = no e-mail to the owner). |
update_company | Update a company: only the arguments sent change. id (integer, required, from list_companies); then any of name, description, email, web, phone1, phone2, address_1, address_2, city, state, postal_code, country, linked_in_url (strings); owner_id (integer); tag_ids (array of integers); custom_fields (object); send_assignment_email (boolean). |
update_deal | Update a deal: only the arguments sent change. id (integer, required, from list_deals); then any of name (string); summary (string); value (number or numeric string); expected_close_date (string YYYY-MM-DD); user_id (integer); deal_stage_id (integer, moves the deal to that stage); status (integer from list_deal_statuses); probability (integer 0-100, 0 or 100 closes the deal); company_id, primary_contact_id (integers); person_ids (array of integers); deal_loss_reason_id / deal_won_reason_id (integers) and deal_loss_reason_notes / deal_won_reason_notes (strings); tag_ids (array of integers); is_archived (boolean); address fields (strings); custom_fields (object { “custom_label_<id>”: value }); send_assignment_email (boolean). |
update_person | Update a person: only the arguments sent change. id (integer, required, from list_people); then any of the create_person arguments (first_name, last_name, summary, position, email, email2, home_email, phone, mobile, home_phone, website, linked_in_url, relationship: strings; company_id, user_id, lead_status_id, lead_source_id: integers; company_name: string; type: Contact or Lead, converts the record; is_key_contact: boolean; predefined_contacts_tag_ids: array of integers; work_* address fields: strings; custom_fields: object; send_assignment_email: boolean). |
Permissions
Every action above must be explicitly granted to an agent before it can be used. See Permissions for the grant model and Security for how credentials are protected.Last reviewed against the provider API: October 2026.