Wrap API

Contacts, companies, conversations, deals, notes, reminders and nine reports.

Base: https://wrap.eel.software/api/public/v1

The largest surface in the suite: you can run a whole CRM from outside it. Every route follows the shared rules.

Contacts and companies

Method Path Scope
GET /contacts wrap:contacts:read
POST /contacts wrap:contacts:write
GET /contacts/{id} wrap:contacts:read
PATCH /contacts/{id} wrap:contacts:write
GET /companies wrap:contacts:read
POST /companies wrap:contacts:write
GET /companies/{id} wrap:contacts:read
PATCH /companies/{id} wrap:contacts:write

The list returns live contacts, meaning unarchived and undeleted, newest first. Fetching one returns more fields than its row in the list.

A contact needs at least a name, an email or a phone. Companies carry a name unique in the workspace, a domain and a tax id.

Conversations

Method Path Scope
GET /conversations wrap:conversations:read
GET /conversations/{id} wrap:conversations:read
PATCH /conversations/{id} wrap:conversations:write
GET /conversations/{id}/messages wrap:conversations:read

The PATCH is what lets you assign, close, snooze or reopen a thread from outside.

Messages come newest first, the opposite of nearly everything else. What you almost always need is the last thing said, and then to page backwards from there.

You cannot send messages through this API. Writing to a customer runs through messaging windows, templates and consent, and that lives inside the app.

Deals

Method Path Scope
GET /deals wrap:deals:read
POST /deals wrap:deals:write
GET /deals/{id} wrap:deals:read
PATCH /deals/{id} wrap:deals:write
GET /deal-stages wrap:deals:read

/deal-stages returns the pipeline in board order, which is what you need to move a deal: the PATCH takes a stage id, not a stage name.

Method Path Scope
GET /notes wrap:notes:write
POST /notes wrap:notes:write
GET /follow-ups wrap:follow-ups:write
POST /follow-ups wrap:follow-ups:write
GET /links wrap:links:write
POST /links wrap:links:write and flow:partners:write

Watch the scopes: reading notes and reminders requires the write scope, because no read scope exists for them. A credential that only needs to look at them can create them too.

/links declares that a Wrap contact or company is a Flow partner. Creating one needs both scopes on the same credential.

Reports

Nine projections, all GET and all under wrap:reports:read:

Method Path What it answers
GET /reports/pipeline Count and value per stage
GET /reports/volume Conversations opened, closed and reopened
GET /reports/sla Time to first response
GET /reports/agent-activity Messages, closes and assignments per person
GET /reports/lost-reasons Lost deals grouped by reason
GET /reports/segments New contacts and revenue by tag or field
GET /reports/segment-dimensions Which values dimension accepts
GET /reports/inbox-snapshot The inbox right now
GET /reports/top-contacts Customers ranked by open deals

Call /reports/segment-dimensions first: it is the list of valid groupings, and it saves you guessing.

Date ranges cap at 92 days. Asking for a longer range returns an error that says so.