---
title: "Link relationship"
method: POST
path: "/api/v1/cdp/relationships"
tags: ["CDP Relationships"]
---

# Link relationship

`POST /api/v1/cdp/relationships`

Link a person to a custom object, or one custom object to another. Idempotent.

## Request body

- object
  - `kind` 'person_to_co' | 'co_to_co' — Edge kind. 'person_to_co' (default) links a person to a custom object; 'co_to_co' links a parent custom object to a child custom object.
  - `relationshipTypeId` string, required — Id of the relationship type (from the relationship-types list). Fixes the role and the custom object type(s) the edge targets.
  - `personExternalId` string — Person externalId. Required when kind is 'person_to_co'.
  - `customObjectExternalId` string — Custom object externalId. Required when kind is 'person_to_co'.
  - `parentExternalId` string — Parent custom object externalId. Required when kind is 'co_to_co'.
  - `childExternalId` string — Child custom object externalId. Required when kind is 'co_to_co'.

## Response `200`

Success

- object
  - `created` boolean, required
  - `relationshipTypeId` string, required

## Other responses

- `400` — Validation failed or the request cannot proceed.
- `401` — Missing, malformed, or revoked API key.
- `404` — The resource does not exist in this organization.
- `409` — Conflicts with the current state (duplicates, wrong lifecycle state).
- `422` — The request is well-formed but semantically invalid.
- `429` — Rate limit exceeded — retry after `Retry-After`.
- `500` — Internal server error.
- `503` — Transient error — retry with a narrower request.

---

[API](https://skmtc.net/useboom/apis/boom-api.md) · [All operations](https://skmtc.net/useboom/apis/boom-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/useboom/boom-api/revisions/00f873e07076/schema)
