Companies
A company groups the prospects that share an email domain or a company_name. Each company has an account temperature that anymail computes from the events of its people. Companies are read-only in the API.
| Method | Path | Action |
|---|---|---|
GET |
/api/v1/companies |
List companies with temperature |
GET |
/api/v1/companies/{id} |
Get a company card |
List companies#
| Parameter | Type | Notes |
|---|---|---|
search |
string | Matches the name, the name given by the operator and the domain. A leading www. is ignored. |
temperature |
string | One of hot, warm, cold, quiet. |
limit |
integer | 1 to 100. Default 50. |
cursor |
string | An offset cursor. See Pagination. |
curl "https://app.anymail.watch/api/v1/companies?temperature=hot&limit=2" \
-H "Authorization: Bearer $ANYMAIL_TOKEN"
Response 200
{
"data": [
{
"id": "1b4e28ba-2fa1-11d2-883f-0016d3cca427",
"display_name": "Example Ltd",
"name": "Example Ltd",
"group_name": null,
"domain": "example.com",
"tags": ["enterprise"],
"people": 3,
"temperature": {
"band": "hot",
"score": 8,
"replies": 1,
"event_count": 5,
"window_days": 7,
"trend": { "direction": "up", "change_percent": 60, "previous_score": 5 }
},
"last_activity_at": "2026-09-03T10:00:00.000+00:00",
"created_at": "2026-08-19T12:00:00.000+00:00"
}
],
"next_cursor": "eyJvIjo1MH0"
}
Account temperature#
The temperature is the value that the Companies screen draws as a bar. It sums the events of the last 7 days, weighted by type.
| Event | Weight |
|---|---|
| Reply with positive intent | 5 |
| Reply | 3 |
| Return to an offer | 2.5 |
| Click | 2 |
| Offer open | 2 |
| Delivery | 0.5 |
| Sent | 0 |
| Bounce or unsubscribe | −2 |
| Band | Score |
|---|---|
hot |
6 or more |
warm |
2 or more |
cold |
below 2 |
quiet |
no events in the window. The app shows this as "No signal". |
trend compares the current 7 days with the previous 7 days. direction: "unknown" and change_percent: null mean there is no earlier period to compare with.
last_activity_at is the latest event in the whole history of the company, which can be older than the 7 day window. display_name is the name, then the name given by the operator, then the domain, then Unnamed company.
Errors: 400 for an invalid temperature, a search value that is too long, or an invalid limit or cursor.
Get a company#
GET /api/v1/companies/{id} returns the row above, with the same temperature value as the list, plus the company card.
curl "https://app.anymail.watch/api/v1/companies/1b4e28ba-2fa1-11d2-883f-0016d3cca427" \
-H "Authorization: Bearer $ANYMAIL_TOKEN"
Response 200 (the fields of the list row are shortened)
{
"id": "1b4e28ba-2fa1-11d2-883f-0016d3cca427",
"display_name": "Example Ltd",
"domain": "example.com",
"people": 3,
"people_list": [
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"email": "ada@example.com",
"name": "Ada Lovelace",
"position": "CTO",
"timezone": null,
"enrollments": [
{ "campaignId": "3f2b1c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "campaignName": "Q3 outbound", "status": "stopped", "lastError": "replied" }
],
"last_activity_at": "2026-09-03T10:00:00.000+00:00",
"latest_reply": {
"classification": "interested",
"receivedAt": "2026-09-03T10:00:00.000+00:00",
"campaignId": "3f2b1c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"campaignName": "Q3 outbound"
},
"has_responded": true
}
],
"campaigns": [
{ "id": "3f2b1c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "name": "Q3 outbound", "status": "active", "people": 3, "replies": 1 }
],
"recent_events": [
{
"id": "c4d5e6f7-0000-4000-8000-000000000001",
"type": "replied",
"occurred_at": "2026-09-03T10:00:00.000+00:00",
"prospect_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"campaign_id": "3f2b1c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
}
]
}
people_listfollows the order of the company view in the app: people who replied first, then by recent activity, then alphabetically.positionis a heuristic from custom fields and snippet slots. It isnullwhen there is nothing to show.- The API returns the fact and the classification of a reply. The text of a reply is not returned.
campaigns[].peopleis the number of enrolled people from this company.campaigns[].repliesis the number of replies from this company in that campaign.statusis the status of the campaign.recent_eventsholds up to 50 of the latest events of the people of this company, of every type.
Errors: 404 with {"error":"Company not found."}.