Skip to the documentation
API

Read activity with a contact

The numbers behind the Activity tab on a contact in the app, over a window that ends now: messages received from the address and sent to it per bucket, the threads that moved, the threads waiting on a reply from the mailbox, when each side last wrote, and the median time each side takes to answer.

GETapi.openemail.uk/contacts/{email}/activity

Runs the real call against your workspace, with your own key.

GET /contacts/{email}/activity

The numbers behind the Activity tab on a contact in the app, over a window that ends now: messages received from the address and sent to it per bucket, the threads that moved, the threads waiting on a reply from the mailbox, when each side last wrote, and the median time each side takes to answer.

Example

Needs threads:read. minutes sets how far back the window reaches and defaults to 90 days; grain is minute, hour or day; offsetMinutes is the reader's offset from UTC.

curl
curl "$OE/contacts/ada%40example.com/activity?minutes=43200&grain=day&offsetMinutes=120" -H "$AUTH"
Response
{  "object": "contact_activity",  "email": "[email protected]",  "since": "2026-08-24T22:00:00.000Z",  "until": "2026-09-23T10:30:00.000Z",  "grain": "day",  "buckets": [    { "bucket": "2026-09-21", "received": 2, "sent": 1 },    { "bucket": "2026-09-22", "received": 1, "sent": 0 }  ],  "totals": {    "received": 3,    "sent": 1,    "threads": 2,    "waiting": 1,    "lastReceivedAt": "2026-09-22T16:04:11.000Z",    "lastSentAt": "2026-09-21T09:40:00.000Z"  },  "replyTime": { "yours": 5400000, "theirs": 12600000 }}

buckets holds only the buckets with mail in them, oldest first, keyed in the reader's time, so a chart fills the gaps. waiting counts the threads whose newest message is from this address.

replyTime is the median in milliseconds, yours for the mailbox answering them and theirs for them answering the mailbox, and null when there is no reply to measure. Mail in the bin or in spam is left out.