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.
Notes, reminders and links
| 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.