curl --request PUT \
--url https://api.attio.com/v2/activities/{activity}/records \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"values": {
"direction": "Outbound"
}
}
}
'{
"data": {
"id": {
"workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c",
"activity_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
"record_id": "5f4f2d9c-2b3e-4a83-9c76-1de3a3f14f26"
},
"created_at": "2022-11-21T13:22:49.061281000Z",
"values": {}
}
}{
"status_code": 400,
"type": "invalid_request_error",
"code": "value_not_found",
"message": "No attribute was found for matching_attribute slug/ID \"my_attribute\"."
}{
"status_code": 403,
"type": "auth_error",
"code": "unauthorized",
"message": "You do not have the necessary permissions to create or update records of this activity."
}{
"status_code": 404,
"type": "invalid_request_error",
"code": "not_found",
"message": "Activity with slug/ID \"phone_calls\" not found."
}{
"status_code": 409,
"type": "invalid_request_error",
"code": "concurrent_write_conflict",
"message": "The record was modified by another request while this write was being validated. Please try again."
}Upsert an activity record
Use this endpoint to create or update an activity record. A matching attribute is used to search for existing activity records. If a record is found with the same value for the matching attribute, that record will be updated. If no record with the same value for the matching attribute is found, a new record will be created instead. If you would like to avoid matching, please use the Create activity record endpoint.
If the matching attribute is a multiselect attribute, new values will be added and existing values will not be deleted. For any other multiselect attribute, all values will be either created or deleted as necessary to match the list of supplied values.
This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.
Required scopes: activity_record:read-write, activity_configuration:read, object_configuration:read, record_permission:read.
Supported token levels: workspace, user.
curl --request PUT \
--url https://api.attio.com/v2/activities/{activity}/records \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"values": {
"direction": "Outbound"
}
}
}
'{
"data": {
"id": {
"workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c",
"activity_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
"record_id": "5f4f2d9c-2b3e-4a83-9c76-1de3a3f14f26"
},
"created_at": "2022-11-21T13:22:49.061281000Z",
"values": {}
}
}{
"status_code": 400,
"type": "invalid_request_error",
"code": "value_not_found",
"message": "No attribute was found for matching_attribute slug/ID \"my_attribute\"."
}{
"status_code": 403,
"type": "auth_error",
"code": "unauthorized",
"message": "You do not have the necessary permissions to create or update records of this activity."
}{
"status_code": 404,
"type": "invalid_request_error",
"code": "not_found",
"message": "Activity with slug/ID \"phone_calls\" not found."
}{
"status_code": 409,
"type": "invalid_request_error",
"code": "concurrent_write_conflict",
"message": "The record was modified by another request while this write was being validated. Please try again."
}Authorizations
This API uses OAuth 2.0 with the authorization code grant flow.
Path Parameters
A UUID or slug to identify the activity.
"phone_calls"
Query Parameters
The ID or slug of the attribute to use to check if an activity record already exists. The attribute does not have to be unique, but a value that matches more than one record is rejected. We recommend a unique attribute, such as a domain, an email address or an ID from your own system.
"41252299-f8c7-4b5e-99c9-4ff8321d2f96"
Body
Show child attributes
Show child attributes
Response
Success
Success
Show child attributes
Show child attributes
Was this page helpful?