Delete a preference
/v1/preferences/{preference_id}const result = await bird.preferences.delete("prf_01krdgeqcxet5s7t44vh8rt9mg");
if (!result.applied) {
console.log("refused — a newer statement survived:", result.preference?.status);
}result = client.preferences.delete("prf_01krdgeqcxet5s7t44vh8rt9mg")
if not result.applied and result.preference:
print("refused, current statement:", result.preference.status)result, err := client.Preferences.Delete(context.Background(), "prf_01krdgeqcxet5s7t44vh8rt9mg")
if err != nil {
log.Fatal(err)
}
// A newer statement recorded since refuses the delete: Applied comes back
// false and Preference carries the statement that survived.
switch {
case result.Applied == nil:
case !*result.Applied && result.Preference != nil:
fmt.Println("delete refused, surviving statement:", result.Preference.Id)
default:
fmt.Println("deleted")
}// applied:false means a newer statement survived the request; the surviving
// record comes back on the result rather than being deleted out from under it.
$result = $bird->preferences->delete('prf_01krdgeqcxet5s7t44vh8rt9mg');
if ($result->getApplied() === false) {
$survivor = $result->getPreference();
echo 'refused: ', $survivor?->getStatus();
}bird preferences delete <preference-id> --yescurl -X DELETE "https://us1.platform.bird.com/v1/preferences/{preference_id}" \
-H "Authorization: Bearer $TOKEN"{
"transition_id": "prt_01krdgeqcxet5s7t44vh8rt9mg",
"preference": {
"id": "prf_01krdgeqcxet5s7t44vh8rt9mg",
"channel": "sms",
"handle": "+15550001234",
"sender_scope": "+15557654321",
"topic_id": null,
"status": "revoked",
"coverage": "non_transactional",
"origin": "api_key",
"source": "signup-form-v2",
"contact_id": "con_01krdgeqcxet5s7t44vh8rt9mg",
"created_at": "2026-05-20T09:14:52Z",
"updated_at": "2026-05-25T16:42:01Z"
}
}
Deletes a preference, returning its key to having no record, as if nothing had ever been stated. The deletion itself is kept on the key's history, so a later statement is still ordered against what was deleted.
A statement the person made themselves cannot be deleted. An unsubscribe or a stop keyword is their statement to reverse: it ends when they opt back in, and attempts to delete it return 422. To restore messaging with the person's consent, record a granted statement with consented_at evidence instead; that records the change of mind rather than erasing the opt-out.
A delete is ordered like any statement, using the time it is received: if the record carries a statement made after that moment, the delete is refused and returned with applied: false alongside the surviving record. An ID that does not exist in the workspace returns 404.
Parameters
preference_idstringID of the preference, as returned when it was recorded or listed. The ID stays stable while the key holds a record; deleting and re-recording the same key mints a new one.
Response Payload
appliedWhether the request took effect. False only when it was refused as out of order; the surviving, newer statement is returned in preference.
transition_idIdentifies this write on the key's record, for applied and refused requests alike. Null when the write was a repeat of the current statement and recorded nothing new.
preferenceThe key's surviving statement. Null after an applied delete, when the key is back to having no record.
Gerelateerde bronnen
Ga verder met de documentatie, handleidingen en voorbeelden voor dit onderwerp.