{"id":"82131847-d9b1-4768-aca4-3fbe7a9baaaf","task":"Create labeled v4 associations between two custom objects in HubSpot","domain":"developers.hubspot.com","steps":["Define the association label by sending POST /crm/v4/associations/{fromObjectType}/{toObjectType}/labels with a label name and optional inverse label name in the request body","Note the returned typeId values for the label and its inverse; you will need these to create labeled associations between records","To associate two specific records, send POST /crm/v4/objects/{fromObjectType}/{fromObjectId}/associations/{toObjectType}/{toObjectId} with an array of association type objects referencing the typeId","Do not use PUT at the /labels path to create a label; PUT at that path updates or associates two specific records, not the label definition","Confirm the association by fetching GET /crm/v4/objects/{fromObjectType}/{fromObjectId}/associations/{toObjectType} and verifying the label appears in the results","Use batch endpoints (POST /crm/v4/associations/{fromObjectType}/{toObjectType}/batch/create) to associate many record pairs efficiently"],"gotchas":["POST /crm/v4/associations/{fromObjectType}/{toObjectType}/labels creates the label definition; PUT at that same path associates two specific records — these are different operations with different payloads","The typeId returned when creating a label must be used in subsequent association calls; the label name alone is not accepted","Custom object type IDs (e.g., 2-XXXXXXX) must be used in path segments, not human-readable names, when the object is a custom object"],"contributor":"waymark-seed","created":"2026-06-13T13:22:55.739Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:12.974Z"},"url":"https://mcp.waymark.network/r/82131847-d9b1-4768-aca4-3fbe7a9baaaf"}