canonical: https://jentic.com/apis/copper.com/copper

# Copper CRM API

Jentic publishes the only available OpenAPI specification for Copper CRM API, keeping it validated and agent-ready. Copper is a CRM built on top of Google Workspace, and its developer API exposes 59 endpoints covering people, companies, leads, opportunities, projects, tasks, activities, pipelines, custom fields, related items and webhooks. Authentication requires three headers together: an API token, an X-PW-Application identifier and an X-PW-UserEmail value identifying the calling user. Search and fetch operations are POST-based with body filters, and pipeline-related endpoints expose pipelines, stages, contact types, customer sources and loss reasons for opportunity reporting.

## For AI agents

Manage people, companies, leads, opportunities and pipelines in Copper CRM, including custom fields, related items and webhook subscriptions.

## Scope

Does not handle email sending, marketing automation, or invoicing - use for CRM contact, opportunity and pipeline management only.

## Capabilities

- Create or update a person record and attach related companies and tags
- Move an opportunity through pipeline stages and record loss reasons when it closes lost
- Search people or companies with filtered POST /search bodies returning paginated results
- Fetch a person by email address to deduplicate inbound leads
- Log activities such as calls, meetings and notes against any CRM record
- Register webhooks to receive lead, opportunity and task change events

## Use cases

### Lead Capture from Marketing Forms

Marketing teams using Copper alongside their website forms can push every form submission straight into Copper as a lead. POST /people creates the contact, POST /people/fetch_by_email handles deduplication, and the leads endpoints take inbound leads through to qualification. Custom fields defined in Copper can be populated on creation to carry source, campaign and UTM data.

Example prompt: POST /people/fetch_by_email with the form submitter's email; if no match, POST /people to create the contact with the campaign UTM stored in a custom field.

### Opportunity Pipeline Reporting

Sales operations teams can pull the live pipeline by listing pipelines, stages and opportunities, then aggregate by stage to drive forecast dashboards. POST /opportunities/search returns filtered opportunities, and the pipeline-stage and loss-reason endpoints provide the dimensional values to slice the report.

Example prompt: List pipelines, then POST /opportunities/search filtered to the 'Enterprise' pipeline and group results by pipeline stage to compute weighted forecast.

### Activity Logging from Voice Tools

Voice and meeting platforms can log call summaries directly onto the relevant Copper person or company by creating activity records. The activities endpoints support custom activity types so teams can distinguish demo calls from check-ins, and webhooks alert the Copper UI when new activities appear.

Example prompt: Create an activity of type 'meeting' against the person matching the meeting attendee's email, with a summary string and the meeting date.

### AI Sales Assistant via Jentic

An AI sales assistant agent can read incoming emails, classify the intent, and execute Copper updates such as creating a person, logging an activity or advancing an opportunity stage. Through Jentic, the agent never holds the API token or the X-PW-UserEmail header - both are injected at execution time from the vault.

Example prompt: Use Jentic to look up a person by email via POST /people/fetch_by_email and update their tags to add 'demo-scheduled'.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /people | Create a person |
| POST | /people/search | Search or list people with filters |
| POST | /people/fetch_by_email | Fetch a person by email for deduplication |
| GET | /companies/{id} | Get a company by ID |
| GET | /account | Get the authenticated Copper account details |
| PUT | /people/{id} | Update a person |
| DELETE | /people/{id} | Delete a person |

## Key resources

- **People** — Contact CRUD, search and fetch-by-email endpoints
- **Companies** — Account records with related people, opportunities and tasks
- **Leads** — Inbound leads pre-qualification with conversion to person and opportunity
- **Opportunities** — Sales opportunities tracked through pipeline stages
- **Pipelines** — Pipelines and pipeline stages defining the sales process
- **Activities** — Calls, meetings, notes and tasks logged against CRM records
- **Tasks** — Action items with due dates and assignees
- **Projects** — Post-sale project records linked to opportunities and customers
- **Custom Field Definitions** — Custom fields configured for the Copper account
- **Webhooks** — Event subscriptions for record changes

## Why Jentic

- **Setup:** Wiring Copper by hand means sending three coordinated headers on every call, the X-PW-AccessToken, X-PW-Application, and X-PW-UserEmail, and shaping its contact, opportunity, and pipeline requests yourself. Through Jentic you install once, import the Copper CRM API from the API Directory, store all three values once, and your agent calls it.
- **Permission scoping:** Copper's people and company operations work over record collections with the target carried in the request or as a record id, so scope this by operations: allow the agent the calls it needs, such as creating and searching people, and leave record deletion out unless you add it. Each operation you credit the agent with stays inside that allowed set.
- **Credential handling:** Your Copper access token, application id, and user email are stored once, encrypted, by your own Jentic One instance and injected together at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a Copper person' or 'search Copper opportunities', and Jentic returns the matching search or upsert operation with its body schema for filters and custom fields so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **HubSpot CRM Objects API** — Larger CRM platform with deeper marketing automation than Copper
- **Salesforce API** — Enterprise CRM with extensive customisation and a broader object model
- **Slack API** — Send sales notifications to channels when Copper webhooks fire
- **Zoho CRM API** — Mid-market CRM alternative with a similar object model to Copper

## FAQ

### Why is there no official OpenAPI spec for Copper CRM API?

Copper does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Copper CRM API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Copper CRM API use?

Copper requires three headers on every call: X-PW-AccessToken (the API key), X-PW-Application (the integration identifier) and X-PW-UserEmail (the calling user's email). All three are stored in your Jentic One instance and attached together at execution time.

### Can I deduplicate contacts when syncing leads into Copper CRM?

Yes. POST /people/fetch_by_email returns the existing person record if one is already attached to that email. Call it before POST /people so you upsert rather than duplicate when ingesting marketing form submissions.

### How do I report on the Copper sales pipeline?

List pipelines and pipeline stages, then POST /opportunities/search filtered to the pipeline ID. Combine the results with the loss-reason and customer-source endpoints to attribute closed-lost deals and source channels.

### What rate limits apply to the Copper CRM API?

The OpenAPI spec does not declare formal rate limits. Use webhook subscriptions for change events rather than polling, and implement retry-with-backoff on HTTP 429 responses to stay within Copper's documented per-minute caps.

### How do I log a call against a person through Jentic with the Copper CRM API?

Run pip install jentic, search Jentic with 'log activity in Copper', load the operation schema for POST /activities and execute with the related person ID, activity type and summary text.

### Can I limit what my agent is allowed to do with the Copper CRM API?

Yes. Because Jentic One is self-hosted, you set the rules that decide which Copper operations and credentials your agent may use, and you grant it only the calls it needs. The Copper people and company operations work over record collections, with the target carried in the request or as a record id, so you can allow reads and upserts such as searching and creating people while leaving record deletion out of the agent's allowed set. Each operation you credit the agent with stays inside that scope, so it cannot invoke a call you never granted.
