---
title: "Batch unlink child keys from a parent key"
method: DELETE
path: "/projects/{project_id}/keys/{id}/key_links"
tags: ["Linked Keys"]
---

# Batch unlink child keys from a parent key

`DELETE /projects/{project_id}/keys/{id}/key_links`

Removes one or more child keys from a parent key's linked-key group, or dissolves the entire group by setting unlink_parent to true.

Use this when you need to detach specific child keys from a shared translation source, or to fully break apart a linked-key group so each key manages its own translations independently. When child keys are unlinked, their translations are updated with a copy of the parent's current content (strategy keep_content, the default) or cleared (strategy remove_content).

This operation is only available on main projects. It returns 422 when a child key in `child_key_ids` is not currently linked to the parent, or when a translation update fails while unlinking.

## Path parameters

- `project_id` string, required
- `id` string, required

## Headers

- `X-PhraseApp-OTP` string

## Request body

- object
  - `child_key_ids` string[], required — Codes of the child keys to unlink. Required when unlink_parent is false or omitted. Ignored when unlink_parent is true.
  - `unlink_parent` boolean — When true, dissolves the entire linked-key group by unlinking all children and removing the group. The child_key_ids field is ignored when this is set to true.
  - `strategy` 'keep_content' | 'remove_content' — Controls what happens to child key translation content after unlinking. keep_content (default) copies the parent translation into each child; remove_content clears each child translation.

## Response `200`

Updated linked-key group reference after the unlink operation.

- KeyLink
  - `created_at` string, date-time — The timestamp when the link was created.
  - `updated_at` string, date-time — The timestamp when the link was last updated.
  - `created_by` UserPreview
    - `id` string
    - `username` string
    - `name` string
    - `gravatar_uid` string
  - `updated_by` UserPreview
    - `id` string
    - `username` string
    - `name` string
    - `gravatar_uid` string
  - `account` Account
    - `id` string
    - `name` string
    - `slug` string
    - `company` string
    - `created_at` string, date-time
    - `updated_at` string, date-time
    - `company_logo_url` string
  - `parent` KeyPreview
    - `id` string
    - `name` string
    - `plural` boolean
    - `use_ordinal_rules` boolean
  - `children` KeyPreview[] — The child translation keys linked to the parent.
    - `id` string
    - `name` string
    - `plural` boolean
    - `use_ordinal_rules` boolean

## Other responses

- `400` — Bad request. The request could not be parsed or a parameter failed validation. Verify the request body, the content type, and the parameter types, then retry.
- `401` — Unauthorized. Authentication failed because the access token is missing, expired, or invalid. Supply a valid access token and retry.
- `403` — Forbidden. The credentials are valid but not permitted for this request: the access token may lack the required scope, the user may lack permission on the resource, or the account plan may not include the feature. Use a token with the required scope on an account and user that hold the necessary permissions.
- `404` — Not found. The requested resource does not exist or is not visible to the authenticated user. Verify the identifiers in the request path and that the token has access to them, then retry.
- `422` — Unprocessable entity. The request was well-formed but failed validation. The response body lists each offending field in the `errors` array, with its resource, field, and a human-readable message. Correct the listed fields and retry.
- `429` — Too many requests. The rate limit has been exceeded. Wait until the time indicated by the `X-Rate-Limit-Reset` response header before retrying.

---

[API](https://skmtc.net/phrase/apis/control-hub-service.md) · [All operations](https://skmtc.net/phrase/apis/control-hub-service/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/phrase/control-hub-service/revisions/98ecac7ba2bf/schema)
