v1

latestOpenAPI 3.0.0Proprietary2026-07-26316155742.7 KB
Linked Keys

Batch unlink child keys from a parent key

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.

delete/projects/{project_id}/keys/{id}/key_links

Path parameters

project_idstring required

Project ID

idstring required

Parent Translation Key ID

Headers

X-PhraseApp-OTPstring

Two-Factor-Authentication token (optional)

Request body

child_key_idsstring[] required

Codes of the child keys to unlink. Required when unlink_parent is false or omitted. Ignored when unlink_parent is true.

unlink_parentboolean

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.

Example request

{
  "child_key_ids": [
    "feature.subtitle",
    "nav.home"
  ]
}

Response

Updated linked-key group reference after the unlink operation.

created_atstring date-time

The timestamp when the link was created.

updated_atstring date-time

The timestamp when the link was last updated.

Example response

{
  "created_at": "2024-03-15T10:22:00Z",
  "updated_at": "2024-03-15T10:22:00Z",
  "created_by": {
    "id": "usr1a2b3c4d5e6f7a8b9c",
    "username": "jane.doe",
    "name": "Jane Doe",
    "gravatar_uid": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
  },
  "updated_by": {
    "id": "usr1a2b3c4d5e6f7a8b9c",
    "username": "jane.doe",
    "name": "Jane Doe",
    "gravatar_uid": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
  },
  "account": {
    "id": "acct9z8y7x6w5v4u3t2s",
    "name": "Acme Translations",
    "slug": "acme-translations",
    "company": "Acme Corp",
    "created_at": "2023-01-10T08:00:00Z",
    "updated_at": "2023-06-01T12:00:00Z",
    "company_logo_url": "https://example.com/logos/acme.png"
  },
  "parent": {
    "id": "ijkl9012mnop3456ijkl9012",
    "name": "home.hero.title",
    "plural": false,
    "use_ordinal_rules": false,
    "data_type": "string",
    "tags": [
      "ui",
      "homepage"
    ]
  },
  "children": [
    {
      "id": "ijkl9012mnop3456ijkl9012mnop3456",
      "name": "home.hero.title_short",
      "plural": false,
      "use_ordinal_rules": false,
      "data_type": "string",
      "tags": [
        "ui",
        "homepage"
      ]
    },
    {
      "id": "abcd1234efgh5678abcd1234efgh5678",
      "name": "home.hero.title_long",
      "plural": false,
      "use_ordinal_rules": false,
      "data_type": "string",
      "tags": [
        "ui",
        "homepage"
      ]
    }
  ]
}