I want to retrieve all engagements (CALL, NOTE, EMAIL, MEETING, TASK) associated with a specific contact, including their contents (such as metadata.body) using the HubSpot API.
Current setup:
-
All notes and calls are manually logged directly on contacts, not on deals or companies.
-
I’m using a Private App with a Bearer token.
-
The following scopes are enabled in the app:
-
crm.objects.contacts.read
-
crm.objects.engagements.read
-
(as well as nearly every other available scope)
What has been tested (unsuccessfully):1. The documented endpoint for retrieving engagements associated with a contact:
bash
KopiërenBewerken
GET https://api.hubapi.com/engagements/v1/engagements/associated/contact/{contactId}/paged?limit=100
-
Response: 200 OK, but always an empty results[] array.
-
Tested with 6 different contact IDs that I manually confirmed (via the HubSpot UI) have notes and calls logged on them.
#### 2\. Verified contacts in the HubSpot UI:-
The timeline shows manually added notes and call logs.
-
These engagements are not linked to any deals or companies — only the contact.
#### 3\. Used a general fallback test to fetch any engagement records in the portal: bash KopiërenBewerken GET [https://api.hubapi.com/engagements/v1/engagements/paged?limit=5](https://api.hubapi.com/engagements/v1/engagements/paged) ` `-
Expected: at least a few engagement records returned from the portal
-
Result: also empty
--- ### 🔍 Additional clarifications:-
Token is valid and active (scopes double-checked) -
Headers are correct:pgsql KopiërenBewerken Authorization: Bearer pat-eu1-xxxx Content-Type: application/json -
All contact IDs are valid (double-checked in UI) -
Notes and calls are manually created (not from third-party syncs) -
Using correct HTTP method (GET) -
Tested in both Make.com and external REST tools (Hoppscotch, Postman)--- ### ❌ What’s not working:-
/engagements/associated/contact/{contactId} always returns empty
-
/engagements/paged also returns empty
-
Even test notes manually created on the contact timeline are not returned
-
No filtering applied, so all engagement types should be included
--- ### ✅ What has been ruled out:- Not a wrong contact ID
- Not a bad HTTP method or formatting
- Not an auth issue (200 responses received)
- Not an association issue (everything is on contact only)
- Not a Make integration issue (also tested externally)
-
-
-
-
-
-


