---
title: "Batch link / unlink"
method: POST
path: "/api/v1/cdp/relationships/batch"
tags: ["CDP Relationships"]
---

# Batch link / unlink

`POST /api/v1/cdp/relationships/batch`

Link or unlink up to 1000 relationships in one request.

## Request body

- object
  - `items` union[], required — Relationships to link or unlink.
    - union
      - object
        - `kind` 'person_to_co', required
        - `personExternalId` string, required — Person externalId.
        - `customObjectExternalId` string, required — Custom object externalId.
        - `relationshipTypeId` string, required — Relationship type id (from the relationship-types list).
        - `remove` boolean — Set true to unlink (soft-delete) instead of link.
      - object
        - `kind` 'co_to_co', required
        - `parentExternalId` string, required — Parent custom object externalId.
        - `childExternalId` string, required — Child custom object externalId.
        - `relationshipTypeId` string, required — Relationship type id (from the relationship-types list).
        - `remove` boolean — Set true to unlink (soft-delete) instead of link.

## Response `200`

Success

- object
  - `summary` object, required
    - `total` integer, required
    - `created` integer, required
    - `reactivated` integer, required — Previously-unlinked edges that were re-activated.
    - `removed` integer, required
    - `failed` integer, required
  - `errors` object[], required
    - `index` integer, required — Zero-based index of the failed item.
    - `externalId` string
    - `error` object, required
      - `code` string, required — Stable machine-readable error code (snake_case).
      - `message` 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)
