Skip to content

Update user relationship

patch

/custom_objects/objects/{type_name}/{external_id}/users

Use this endpoint to merge attributes into an existing user relationship.

Prerequisites

To use this endpoint, you need an API key with custom_objects.user_relationships.update.

Rate limit

This endpoint is in the Custom Objects write bucket with a default limit of 50 requests per minute.

Path parameters

The following table lists and describes the path parameters for the /custom_objects/objects/{type_name}/{external_id}/users endpoint.

Parameter Required Data Type Description
type_name Required String Object type
external_id Required String Object identifier

Request parameters

The following table lists and describes the JSON request body parameters for the /custom_objects/objects/{type_name}/{external_id}/users endpoint.

Parameter Required Data Type Description
braze_id Required String Braze user ID
rel_kind Required String Relationship kind
attributes Optional Object Relationship attributes to merge

Example request

This section includes a sample JSON payload and a sample cURL request.

Sample request payload

1
2
3
4
5
6
7
{
  "braze_id": "507f1f77bcf86cd799439011",
  "rel_kind": "account_user",
  "attributes": {
    "role": "billing_admin"
  }
}

Sample cURL request

This example changes the role attribute on the existing account_user relationship to billing_admin, leaving the relationship’s other attributes unchanged.

1
2
3
4
5
6
7
8
9
10
curl --location --request PATCH 'https://rest.iad-01.braze.com/custom_objects/objects/account/acct-123/users' \
--header 'Authorization: Bearer YOUR_REST_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "braze_id": "507f1f77bcf86cd799439011",
  "rel_kind": "account_user",
  "attributes": {
    "role": "billing_admin"
  }
}'

Response

This section includes a sample successful response and the response fields.

Example success response

The status code 200 could return the following response body.

1
2
3
4
5
6
7
8
9
{
  "user_relationship": {
    "type_name": "account",
    "external_id": "acct-123",
    "rel_kind": "account_user",
    "user": { "braze_id": "507f1f77bcf86cd799439011" },
    "attributes": { "role": "billing_admin" }
  }
}

Response parameters

The following table lists and describes the fields in a successful response.

Parameter Required Data Type Description
user_relationship Required Object Updated user relationship record
user_relationship.type_name Required String Custom object type machine name
user_relationship.external_id Required String Custom object identifier
user_relationship.rel_kind Required String Relationship kind value
user_relationship.user Required Object Linked user object
user_relationship.user.braze_id Required String Braze user identifier
user_relationship.attributes Required Object Relationship attributes after merge

Errors

The following table lists common errors for this endpoint and how to resolve them.

Status Cause Guidance
400 Validation error Confirm rel_kind is valid for the object type and attributes match the relationship schema.
404 Relationship not found (custom-object-relationship-not-found) Confirm the object, user, and relationship key values all exist.
401 Missing or invalid REST API key Verify the Authorization header uses Bearer YOUR_REST_API_KEY and that the key is active.
403 API key lacks permission or request is blocked by allowlist Confirm the key has custom_objects.user_relationships.update and that your source IP is on the key allowlist, if configured.
429 Rate limit exceeded Retry after X-RateLimit-Reset and reduce request frequency.
New Stuff!