Copper CRM
Sync people, companies, and opportunities in Copper CRM via its developer REST API. Search the three core record types and create new people — no SDK, standard-library Python only.
What it does
The tool branches on operation and calls the real Copper Developer API
(https://api.copper.com/developer_api/v1). It returns the raw JSON response
body as result and the HTTP status code as status. Non-2xx responses are
returned (not thrown) so you can inspect Copper's error payload.
Operations
| operation | Copper endpoint | Purpose |
|---|---|---|
search_people |
POST /people/search |
List/search people (contacts) |
search_companies |
POST /companies/search |
List/search companies |
search_opportunities |
POST /opportunities/search |
List/search opportunities (deals) |
create_person |
POST /people |
Create a new person |
Search operations accept optional name (filter), sortBy, pageSize (1-200,
default 20) and pageNumber (1-based, default 1).
apiKey setup
Copper authenticates every request with three headers, so this tool needs two credentials: your API key and the email of the user who generated it.
- In the Copper web app, go to System settings > API Keys.
- Click GENERATE API KEY and copy the key — this is your
apiKey(sent as theX-PW-AccessTokenheader). - Use the email address of the user who generated the key as
userEmail(sent as theX-PW-UserEmailheader).
The tool always sends X-PW-Application: developer_api and
Content-Type: application/json for you.
Examples
Search the first page of people, sorted by name:
apiKey: <your key>
userEmail: [email protected]
operation: search_people
sortBy: name
pageSize: 25
Find companies whose name matches "Acme":
apiKey: <your key>
userEmail: [email protected]
operation: search_companies
name: Acme
List the most recently modified opportunities:
apiKey: <your key>
userEmail: [email protected]
operation: search_opportunities
sortBy: date_modified
Create a new person with a work email:
apiKey: <your key>
userEmail: [email protected]
operation: create_person
name: John Doe
email: [email protected]
Output
result— the Copper JSON response body (people/companies/opportunities array for searches, or the created person object forcreate_person), as a JSON string.status— the HTTP status code (e.g.200,201,401).
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 | — | Copper API key. Generate it in the Copper web app under System settings > API Keys > GENERATE API KEY (sent as the 'X-PW-AccessToken' header). |
userEmail |
string | yes | — | Email address of the user who generated the API key (sent as the 'X-PW-UserEmail' header). Required by Copper auth. |
operation |
string | yes | — | One of: search_people, search_companies, search_opportunities, create_person |
name |
string | no | — | For search_* this filters records whose name matches. For create_person this is the person's full name (required for create_person). |
email |
string | no | — | Email address attached to the new person on create_person (added as a work email). Ignored by search operations. |
sortBy |
string | no | — | Field to sort search results by (e.g. name, date_modified, date_created). Defaults to Copper's default sort when empty. |
pageSize |
string | no | — | Number of records per page for search operations (1-200). Defaults to 20 when empty. |
pageNumber |
string | no | — | 1-based page number for search operations. Defaults to 1 when empty. |