Sign inGet Started

Update a WhatsApp conversation

PATCH
/v1/whatsapp/conversations/{conversation_id}
// labels replaces the whole set, so send every label to keep.
const conversation = await bird.whatsapp.conversations.update("wacv_01krdgeqcxet5s7t44vh8rt9mg", {
  assigned_to: "usr_01krdgeqcxet5s7t44vh8rt9mg",
  labels: ["billing", "vip"],
  inbox_status: "resolved",
});
console.log(conversation.inbox_status);
Respons200
{
  "id": "wacv_01krdgeqcxet5s7t44vh8rt9mg",
  "business_phone_number": "+15550001234",
  "recipient": {
    "bsuid": "US.13491208655302741918",
    "phone_number": "+15550001111",
    "display_name": "Jamie Rivera",
    "username": "jamierivera"
  },
  "inbox_status": "open",
  "control": "bird",
  "assigned_to": "usr_01krdgeqcxet5s7t44vh8rt9mg",
  "service_window": {
    "status": "open",
    "ends_at": "2026-09-23T10:35:00Z"
  },
  "last_message": {
    "id": "wam_01krdgeqcxet5s7t44vh8rt9mg",
    "direction": "outbound"
  },
  "labels": [
    "billing",
    "vip"
  ]
}

Updates assignment, inbox status, labels, or shared workspace read state. Every field is optional and an omitted one is left unchanged.

assigned_to takes a user ID, me for the user making the request, or null to unassign. The user must be a member of this workspace. me needs a request made as a user: an API key has no user, so passing me with one returns a 422.

labels replaces the conversation's labels with the set you send, so include every label you want to keep. Pass an empty array to clear them.

Pass read with a date-time cutoff for message created_at to acknowledge received inbound messages at or before it in the workspace inbox. Messages sharing the timestamp are included together; later arrivals remain unread. This does not send the customer a WhatsApp read receipt.

Labels are yours alone: Bird sets none of its own, and changing them does not mark the conversation read or unread.

Set inbox_status to resolved to finish the inbox work, or open to reopen it. New inbound messages reopen resolved conversations. Inbox status does not change read state or the customer-service window.

Control is not changed here. Moving a conversation between the agent and your application needs WhatsApp's agreement and can be refused, so you take and release control in the dashboard inbox.

Parameter

conversation_idstring

Conversation identifier. Starts with wacv_.

Payload Permintaan

assigned_to
nullable string

User to assign this conversation to. Pass a workspace member's user ID, me for the signed-in user, or null to unassign it. An API key cannot use me and receives a 422 response.

inbox_status
string

Whether the conversation needs attention in the workspace inbox. Set it to resolved when the work is finished. A new inbound message reopens the same conversation. Changing inbox status preserves message history and does not change the channel's permission to send messages or mark messages read.

Possible values: open, resolved

labels
array of string

Labels chosen by your workspace. On update, this replaces the full set; pass an empty array to clear every label. Labels do not change read state or inbox status.

Each label must contain 1 to 64 characters, with no commas, control characters, or leading or trailing whitespace. Duplicate labels are rejected. The names all, archived, assigned, closed, deleted, draft, drafts, flagged, important, inbox, junk, muted, none, open, pinned, read, snoozed, spam, starred, trash, and unread are reserved in every casing.

read
string

Mark received inbound messages with created_at at or before this timestamp as read in the shared workspace inbox. Messages sharing the timestamp are included together. Later arrivals remain unread until another read update. This does not send a read receipt to the customer or change inbox status. Omit to leave read state unchanged.

Payload Respons

id
string
wajib

Conversation ID.

business_phone_number
nullable string
wajib

Your WhatsApp business phone number this conversation runs on, in E.164 format. It stays the same when you remove the number and connect it again. Null when Bird holds no phone number for it.

recipient
object
wajib

The other side of the conversation: the contact, or the group it takes place in. A group conversation carries group_id and null contact identity fields.

Tampilkan atribut turunan
recipient.bsuid
nullable string
wajib

Meta's business-scoped user ID for the contact, or null when unknown.

recipient.phone_number
nullable string
wajib

Contact phone number in E.164 format, or null when unknown.

recipient.display_name
nullable string
wajib

Display name from the contact's WhatsApp profile, or null when none has been recorded.

recipient.username
nullable string
wajib

Contact's WhatsApp username without a leading @, or null when none has been recorded. Messages cannot be addressed by username.

recipient.group_id
string

Group this conversation belongs to. Omitted for a conversation with one contact.

inbox_status
string
wajib

Whether the conversation needs attention in the workspace inbox. Set it to resolved when the work is finished. A new inbound message reopens the same conversation. Changing inbox status preserves message history and does not change the channel's permission to send messages or mark messages read.

Possible values: open, resolved

control
string
wajib

Who answers this conversation right now. You take and release control in the dashboard inbox.

Possible values (may grow over time): bird, meta_business_agent

assigned_to
nullable string
wajib

The user this conversation is assigned to. Null when unassigned. Assignment is not rechecked against workspace membership on read, so it can still name a user whose access was removed.

service_window
nullable object
wajib

Customer-service window for a contact. Null for group conversations.

Tampilkan atribut turunan
last_message
nullable object
wajib

A pointer to the most recent message in this conversation. It names the message; read its content through the conversation's message list. Null when the conversation has no message yet.

Tampilkan atribut turunan
unread_count
integer
wajib

Number of inbound messages the workspace has not acknowledged. Shared across the workspace. Sending a reply does not mark messages read.

labels
array of string
wajib

Workspace labels on this conversation. Labels do not change read state or inbox status.

created_at
string
wajib

When Bird opened this conversation.

updated_at
string
wajib

When this conversation last changed.