# Delete identifiers from preference records (/docs/api-reference/preference-record-identifiers/post-v1-preferences-delete-identifiers)

Batch delete identifier values from preference records. This endpoint deletes identifiers from preference records and does not trigger DSR workflows. Set returnIdentifiers to include remaining identifiers in the response.

## POST /v1/preferences/{partition}/delete-identifiers

```json
{
  "servers": [
    {
      "url": "https://multi-tenant.sombra.transcend.io",
      "description": "Multi-tenant (EU)"
    },
    {
      "url": "https://multi-tenant.sombra.us.transcend.io",
      "description": "Multi-tenant (US)"
    },
    {
      "description": "Self-hosted",
      "url": "https://_yourOrganizationSombraURL_.com"
    },
    {
      "description": "Preference Store in Europe",
      "url": "https://consent.transcend.io"
    },
    {
      "description": "Preference Store in the U.S.",
      "url": "https://consent.us.transcend.io"
    },
    {
      "description": "Rules Automation webhook ingestion (EU)",
      "url": "https://rule-automation.transcend.io"
    },
    {
      "description": "Rules Automation webhook ingestion (US)",
      "url": "https://rule-automation.us.transcend.io"
    }
  ],
  "security": [
    {
      "Transcend_API_Key": [],
      "Sombra_Token": [],
      "Transcend_API_Key_If_Multitenant": []
    }
  ],
  "operation": {
    "summary": "Delete identifiers from preference records",
    "description": "Batch delete identifier values from preference records.\nThis endpoint deletes identifiers from preference records and does not trigger DSR workflows.\nSet `returnIdentifiers` to include remaining identifiers in the response.\n\n**Rate Limits**\n\n- 100 requests per organization per minute (default).\n- This limit can be increased upon request.\n\n**Rate Limiting Headers**\n\n- `X-RateLimit-Limit`: The maximum number of requests allowed in the current window.\n- `X-RateLimit-Remaining`: The number of requests remaining in the current window.\n- `X-RateLimit-Reset`: The time at which the current rate limit window resets in ISO 8601 format.\n- `Retry-After`: (on 429) The number of seconds to wait before making a new request.\n\n**Transcend ID Restrictions**\n\n- Use `{ \"name\": \"transcend\", \"value\": \"<uuid>\" }` as the `anchorIdentifier` to locate a preference record.\n- You cannot delete the `transcend` identifier itself — doing so fails with: \"The transcend identifier cannot be added, changed, or removed through this request; it is system-managed.\"",
    "operationId": "post-v1-preferences-delete-identifiers",
    "parameters": [
      {
        "$ref": "#/components/parameters/authorization"
      },
      {
        "$ref": "#/components/parameters/x-sombra-authorization"
      },
      {
        "$ref": "#/components/parameters/content-type-application-json"
      },
      {
        "name": "partition",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "description": "The ID of the partition in the Preference Store ."
        }
      }
    ],
    "requestBody": {
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "required": [
              "records"
            ],
            "properties": {
              "records": {
                "description": "List of identifier delete operations to apply in a single batch. Max 10 records.",
                "type": "array",
                "maxItems": 10,
                "items": {
                  "type": "object",
                  "required": [
                    "anchorIdentifier",
                    "delete",
                    "timestamp"
                  ],
                  "properties": {
                    "anchorIdentifier": {
                      "description": "The primary identifier that identifies the preference record to delete identifiers from.",
                      "type": "object",
                      "required": [
                        "name",
                        "value"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Identifier name (e.g. \"email\", \"phone\", \"transcend\")"
                        },
                        "value": {
                          "type": "string",
                          "description": "Identifier value for locating the preference record"
                        }
                      }
                    },
                    "delete": {
                      "description": "The identifier to delete from the anchored preference record. Cannot be the `transcend` identifier.",
                      "type": "object",
                      "required": [
                        "name",
                        "value"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Identifier name to delete (e.g. \"email\", \"phone\"). Cannot be \"transcend\"."
                        },
                        "value": {
                          "type": "string",
                          "description": "Identifier value to delete"
                        }
                      }
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time",
                      "description": "ISO 8601 timestamp when the operation was requested. This is used for auditing and bookkeeping purposes."
                    },
                    "options": {
                      "description": "Optional flags that control response behavior.",
                      "type": "object",
                      "properties": {
                        "returnIdentifiers": {
                          "type": "boolean",
                          "default": false,
                          "description": "If true, include the record's current identifiers in the response for each record."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "examples": {
            "Delete phone for xyz@foo.com": {
              "value": {
                "records": [
                  {
                    "anchorIdentifier": {
                      "name": "email",
                      "value": "xyz@foo.com"
                    },
                    "delete": {
                      "name": "phone",
                      "value": "+1231231234"
                    },
                    "timestamp": "2025-11-26T17:33:13.515Z"
                  }
                ]
              }
            },
            "Batch delete example": {
              "value": {
                "records": [
                  {
                    "anchorIdentifier": {
                      "name": "email",
                      "value": "user1@example.com"
                    },
                    "delete": {
                      "name": "phone",
                      "value": "+15551234567"
                    },
                    "timestamp": "2025-11-26T17:33:13.515Z"
                  },
                  {
                    "anchorIdentifier": {
                      "name": "phone",
                      "value": "+15557654321"
                    },
                    "delete": {
                      "name": "email",
                      "value": "old@example.com"
                    },
                    "timestamp": "2025-11-26T17:34:00.000Z"
                  }
                ]
              }
            },
            "Delete with returned identifiers example": {
              "value": {
                "records": [
                  {
                    "anchorIdentifier": {
                      "name": "email",
                      "value": "xyz@foo.com"
                    },
                    "delete": {
                      "name": "phone",
                      "value": "+19998887777"
                    },
                    "timestamp": "2025-11-26T17:35:13.515Z",
                    "options": {
                      "returnIdentifiers": true
                    }
                  }
                ]
              }
            },
            "Delete identifier using Transcend ID as anchor": {
              "value": {
                "records": [
                  {
                    "anchorIdentifier": {
                      "name": "transcend",
                      "value": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
                    },
                    "delete": {
                      "name": "phone",
                      "value": "+1231231234"
                    },
                    "timestamp": "2025-11-26T17:33:13.515Z"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "security": [
      {
        "Transcend_API_Key": [
          "Modify User Stored Preferences"
        ]
      }
    ],
    "responses": {
      "200": {
        "description": "The response payload contains the results of the batch delete identifiers operation. Each record in the records array corresponds to an input record and indicates whether the delete operation succeeded or failed, along with any relevant error messages or remaining identifiers. Note: When the response includes failures, clients can only retry the failed items from the original request after addressing the reported errors. When the response includes errors, clients should retry the entire batch after addressing the reported errors.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "records": {
                  "description": "Per-record results for each input operation. Order matches the input `records` array.",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "identifiers": {
                        "description": "Current list of identifiers on the preference record (only present when `returnIdentifiers` was true).",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Identifier name"
                            },
                            "value": {
                              "type": "string",
                              "description": "Identifier value"
                            }
                          }
                        }
                      },
                      "success": {
                        "type": "boolean",
                        "description": "Whether the delete operation for this record succeeded."
                      },
                      "errorMessage": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Human-readable error message when `success` is false."
                      }
                    }
                  }
                },
                "failures": {
                  "description": "List of failed operations within the batch. Use `index` to map back to the input record.",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "index": {
                        "type": "number",
                        "description": "Position of the failed record in the input request `records` array."
                      },
                      "error": {
                        "type": "string",
                        "description": "Human-readable explanation of the failure."
                      }
                    }
                  }
                },
                "errors": {
                  "description": "Top-level errors that caused the entire batch to fail. If present, clients should retry the entire request.",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            "examples": {
              "Successful batch delete": {
                "value": {
                  "records": [
                    {
                      "success": true
                    },
                    {
                      "success": true
                    }
                  ],
                  "failures": [
                    {
                      "index": 1,
                      "error": "The deleteValue identifier \"+1231231234\" for identifier name \"phone\" is not linked to the preference record"
                    }
                  ],
                  "errors": []
                }
              },
              "Successful delete with returned identifiers": {
                "value": {
                  "records": [
                    {
                      "identifiers": [
                        {
                          "name": "transcend",
                          "value": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
                        },
                        {
                          "name": "email",
                          "value": "user1@example.com"
                        }
                      ],
                      "success": true
                    }
                  ],
                  "failures": [],
                  "errors": []
                }
              },
              "Partial Success": {
                "value": {
                  "records": [
                    {
                      "success": false,
                      "errorMessage": "The deleteValue identifier \"+1231231234\" for identifier name \"phone\" is not linked to the preference record"
                    },
                    {
                      "success": true
                    }
                  ],
                  "failures": [
                    {
                      "index": 0,
                      "error": "The deleteValue identifier \"+1231231234\" for identifier name \"phone\" is not linked to the preference record"
                    }
                  ],
                  "errors": []
                }
              }
            }
          }
        }
      },
      "400": {
        "description": "Bad Request",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "errors": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "An error message describing the bad request."
                  }
                }
              }
            }
          }
        }
      },
      "401": {
        "description": "There was a problem authenticating your request. This may be an issue with the Transcend API key (\"authorization\" header), or the Sombra API key (\"x-sombra-authorization\" header used for self-hosted gateways only).",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "properties": {}
            }
          }
        }
      },
      "413": {
        "description": "The request body is too large. JSON and raw bodies must be less than 50MB. URL encoded bodies must be less than 30MB.",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "properties": {}
            }
          }
        }
      },
      "429": {
        "description": "You are sending requests too quickly and have hit our rate limit. If you hit this, you'll need to throttle your request velocity or try again later.",
        "headers": {
          "Retry-After": {
            "description": "The number of seconds to wait before retrying.",
            "schema": {
              "type": "integer"
            }
          },
          "X-RateLimit-Limit": {
            "description": "The maximum number of requests allowed in the time window.",
            "schema": {
              "type": "integer"
            }
          },
          "X-RateLimit-Remaining": {
            "description": "The number of requests remaining in the time window.",
            "schema": {
              "type": "integer"
            }
          },
          "X-RateLimit-Reset": {
            "description": "The time at which the rate limit will reset.",
            "schema": {
              "type": "integer"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "properties": {}
            }
          }
        }
      },
      "500": {
        "description": "A 5xx error means there is either an issue with your self-hosted gateway, or a Transcend server is having issues. You check our system status at status.transcend.io. Please reach out to Transcend support if you're experiencing this error.",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "properties": {}
            }
          }
        }
      },
      "502": {
        "description": "An upstream service on Transcend's side is having issues. You check our system status at status.transcend.io. Please reach out to Transcend support if you're experiencing this error.",
        "headers": {},
        "content": {
          "application/json": {
            "schema": {
              "description": "",
              "type": "object",
              "properties": {}
            }
          }
        }
      }
    },
    "tags": [
      "Preference record identifiers"
    ]
  }
}
```