# Send WhatsApp agent reply (deprecated)

Deprecated. Use the unified Send an agent message (v2) with channel: WHATSAPP — one endpoint covers all channels, takes a lean request, and returns a lean MessageResponse. This endpoint takes the full internal message entity and is retained only for existing integrations.

Send a WhatsApp message from an agent to a customer (routes via WhatsApp API).

Endpoint: POST /pl4chat-service/Message/sendMessageWhatsapp
Version: 3.0.0
Security: apikeyAuth

## Request fields (application/json):

  - `id` (string)
    Example: "c9d01234-e5f6-a7b8-c9d0-1234e5f6a7b8"

  - `tempId` (string)
    Temporary client-generated ID used to correlate the request with the response.
    Example: "c9f0b308-1a0d-3f3f-7912-464f06677c6b"

  - `replyType` (string)
    Enum: "QUICKREPLY", "NOTIFICATION", "SIMPLE"

  - `direction` (string)
    Enum: "OUTGOING", "INCOMING"

  - `contentType` (string)
    Enum: "BUTTON", "CAROUSEL", "DROPDOWN", "IMAGE", "TEXT", "DATE", "FILE", "MEDIA", "LOCATION", "RATING"

  - `text` (string)
    Example: "Hello, I need help with my account."

  - `question` (string)
    Example: "What is your account number?"

  - `answer` (string)
    Example: "ACC-001234"

  - `quickReply` (boolean)

  - `createdTime` (string)
    Example: "2026-01-15T10:30:00Z"

  - `clientRef` (string)
    Example: "Growthpoint"

  - `channel` (string)
    Enum: "WHATSAPP", "WEB", "FACEBOOK"

  - `messageOwner` (string)
    Identifies who sent the message.
    Enum: "agent", "customer", "system"

  - `userOriginated` (boolean)
    Example: true

  - `agent` (object)

  - `agent.id` (string)
    Example: "e1f2a3b4-c5d6-7890-e1f2-a3b4c5d67890"

  - `agent.email` (string)
    Example: "agent@example.com"

  - `agent.password` (string)
    Example: "********"

  - `agent.tempPassword` (string,null)
    Example: "********"

  - `agent.role` (string)
    Enum: "CLIENT"

  - `agent.liveChatRole` (string)
    Enum: "SUPERVISOR", "AGENT"

  - `agent.primaryEmailAddress` (string,null)
    Example: "agent@example.com"

  - `agent.mobileNumber` (string,null)
    Example: "+27821234567"

  - `agent.sentLowerCreditLimitMail` (boolean)

  - `agent.sentZeroCreditMail` (boolean)

  - `agent.apiKey` (string)
    Example: "64a1b2c3d4e5f67890abcdef"

  - `agent.disabled` (boolean)

  - `agent.deleted` (boolean)

  - `agent.emailVerificationKey` (string,null)

  - `agent.passwordResetKey` (string,null)

  - `agent.inactivityNodeId` (string,null)
    Example: "node-inactivity-001"

  - `agent.publicHolidayInactivityNodeId` (string,null)
    Example: "node-holiday-001"

  - `agent.officeClosedInactivityNodeId` (string,null)
    Example: "node-closed-001"

  - `agent.autoResponseNodeId` (string,null)
    Example: "node-auto-001"

  - `agent.client` (object)

  - `agent.client.id` (string)
    Example: "dbdb8809-6fd0-4cd2-8574-502f0f61a69d"

  - `agent.client.clientRef` (string)
    Example: "Growthpoint"

  - `agent.client.accountType` (string)
    Example: "Postpaid"

  - `agent.client.countryCode` (string)
    Example: "ZA"

  - `agent.client.countryTimezone` (string)
    Example: "Africa/Johannesburg"

  - `agent.client.pricingModel` (string)
    Example: "PMP"

  - `agent.client.clientPlatformCharge` (number,null)
    Example: 0.1

  - `agent.client.clientNotificationCharge` (number)
    Example: 0.35

  - `agent.client.clientSession24HourCharge` (number)
    Example: 0.35

  - `agent.client.clientConversationCharge` (number)
    Example: 0.35

  - `agent.client.userInitiatedConversationCharge` (number,null)
    Example: 0.2

  - `agent.client.businessInitiatedConversationCharge` (number)
    Example: 1.25

  - `agent.client.clientWhatsAppBalance` (number)
    Example: 1000

  - `agent.client.clientSMSBalance` (number)
    Example: 10

  - `agent.client.primaryEmailAddress` (string,null)
    Example: "admin@example.com"

  - `agent.client.secondaryEmailAddress` (string,null)
    Example: "backup@example.com"

  - `agent.client.clientEmailAddress` (string,null)
    Example: "client@example.com"

  - `agent.client.upperNotificationLimit` (number,null)
    Example: 100

  - `agent.client.lowerNotificationLimit` (number,null)
    Example: 10

  - `agent.client.upperNotificationLimitMailSent` (boolean)

  - `agent.client.lowerNotificationLimitMailSent` (boolean)

  - `agent.client.zeroBalanceNotificationMailSent` (boolean)

  - `agent.client.lastUpperNotificationMailSentTime` (string,null)
    Example: "2026-01-15T10:30:00+02:00"

  - `agent.client.lastLowerNotificationMailSentTime` (string,null)
    Example: "2026-01-20T14:00:00+02:00"

  - `agent.client.lastZeroBalanceNotificationMailSentTime` (string,null)

  - `agent.client.smsMode` (string)
    Example: "fallback"

  - `agent.client.smsFallback` (boolean)
    Example: true

  - `agent.client.smsUserId` (string)
    Example: "support@ecommunicate.co.za"

  - `agent.client.smsPassword` (string)
    Example: "********"

  - `agent.client.smsClientRef` (string)
    Example: "ecomtest1"

  - `agent.client.reseller` (boolean)

  - `agent.client.parentClient` (object,null)

  - `agent.client.license` (object,null)

  - `agent.client.useParentNumber` (boolean)

  - `agent.client.useParentCredit` (boolean)

  - `agent.client.userInitiatedConversationBalance` (number)
    Example: 100

  - `agent.client.businessInitiatedConversationBalance` (number)
    Example: 973

  - `agent.client.popiaComplianceEnabled` (boolean)
    Example: true

  - `agent.client.eligible1000Free` (boolean)
    Example: true

  - `agent.client.splitConversation` (boolean)
    Example: true

  - `agent.client.monthlyFundAllocation` (boolean)
    Example: true

  - `agent.client.monthlyBusinessInitiatedBalanceAllocation` (number)
    Example: 1000

  - `agent.client.monthlyUserInitiatedBalanceAllocation` (number)
    Example: 100

  - `agent.client.useApi` (boolean)
    Example: true

  - `agent.client.headerKeyPairsJson` (string)
    JSON array of key-value header pairs.
    Example: "[{\"key\": \"Authorization\", \"value\": \"your-api-key\"}]"

  - `agent.clientRef` (string,null)

  - `agent.ticketCount` (integer,null)
    Example: 5

  - `agent.lastSeen` (string,null)

  - `agent.resetPasswordEmailSent` (boolean)

  - `agent.emailVerified` (boolean)

  - `agent.firstName` (string)
    Example: "Jane"

  - `agent.lastName` (string)
    Example: "Doe"

  - `agent.agentChatLimit` (integer)
    Max concurrent chats.
    Example: 5

  - `agent.availabilityStatus` (boolean)
    Example: true

  - `agent.initialPassword` (boolean)

  - `agent.tempAccount` (boolean)

  - `agent.loginToken` (string)
    Example: "1d368c30-c9f8-4523-b8c2-3824ba72ff5c"

  - `agent.validToken` (boolean)

  - `agent.avatar` (string)
    Example: "https://example.com/avatars/jane.jpg"

  - `agent.shouldGetNotifications` (boolean)
    Example: true

  - `agent.applicationKey` (string)
    Example: "a3b4c5d6-e7f8-9012-a3b4-c5d6e7f89012"

  - `agent.userId` (string)
    Example: "21c28d3e-bc5c-4bc9-99be-fe283df71653"

  - `agent.applicationClientId` (string)
    Example: "1d368c30-c9f8-4523-b8c2-3824ba72ff5c"

  - `agent.allowedSharedInbox` (boolean)
    Example: true

  - `agent.allowedUnassignedInbox` (boolean)
    Example: true

  - `agent.assignmentMessage` (string)
    Custom message sent to the customer when a chat is assigned to this agent. If null, defaults to 'Assigned to ``'.
    Example: "Hi, I'm Jane and I'll be assisting you today."

  - `chatParticipant` (object)

  - `chatParticipant.id` (string)
    Example: "cp-a1b2c3d4"

  - `chatParticipant.firstName` (string)
    Example: "John"

  - `chatParticipant.lastName` (string)
    Example: "Doe"

  - `chatParticipant.fullName` (string)
    Example: "John Doe"

  - `chatParticipant.phoneNumber` (string)
    Example: "27821234567"

  - `chatParticipant.userId` (string)
    Customer's durable business-scoped user id (BSUID, alpha usernames), e.g. ZA.1021033720668862. Stable across phone-number changes; present even when the phone is withheld.
    Example: "ZA.1021033720668862"

  - `chatParticipant.username` (string)
    Customer's optional WhatsApp username (display only).
    Example: "johndoe"

  - `chatParticipant.parentUserId` (string)
    BSUID of the parent WhatsApp Business portfolio, when applicable.
    Example: "ZA.1000000000000000"

  - `chatParticipant.email` (string)
    Example: "john.doe@example.com"

  - `chatParticipant.subject` (string)
    Example: "Billing Inquiry"

  - `chatParticipant.team` (string)
    Example: "Support Team"

  - `chatParticipant.whatsAppClientNumber` (string)
    Example: "+27123456789"

  - `chatParticipant.conversationClosed` (boolean)

  - `chatParticipant.missedConversation` (boolean)

  - `chatParticipant.afterHoursConversation` (boolean)

  - `chatParticipant.chatBotConversation` (boolean)
    Example: true

  - `chatParticipant.sendRatingWidget` (boolean)

  - `chatParticipant.clientRef` (string)
    Example: "Growthpoint"

  - `chatParticipant.createdTime` (string)
    Example: "2026-01-15T08:00:00Z"

  - `chatParticipant.lastMessageTime` (string)
    Example: "2026-01-15T10:35:00Z"

  - `chatParticipant.customerLastMessageTime` (string,null)
    Example: "2026-01-15T10:30:00Z"

  - `chatParticipant.channel` (string)
    Enum: same as `channel` (3 values)

  - `chatParticipant.conversationStatus` (string)
    Example: "OPEN"

  - `chatParticipant.sender` (string)
    Example: "+27821234567"

  - `chatParticipant.assignedTo` (object)

  - `chatParticipant.lastAssignedAgent` (object)

  - `chatParticipant.openedBy` (string)
    Example: "agent@example.com"

  - `chatParticipant.terminatedBy` (string)
    Example: "agent@example.com"

  - `chatParticipant.unread` (boolean)
    Example: true

  - `chatParticipant.rated` (boolean)

  - `chatParticipant.expectingRating` (boolean)

  - `chatParticipant.companyName` (string)
    Example: "Acme Corp"

  - `chatParticipant.accountNumber` (string)
    Example: "ACC-001234"

  - `chatParticipant.activeFlow` (string)
    Example: "main_support_flow"

  - `chatParticipant.nodeName` (string)
    Example: "Welcome Node"

  - `chatParticipant.botName` (string)
    Example: "Support Bot"

  - `chatParticipant.timezone` (string)
    Example: "Africa/Johannesburg"

  - `chatParticipant.gstn` (string)
    Global system tracking number
    Example: "a1b2c3d4-e5f6-7890-a1b2-c3d4e5f67890"

  - `chatParticipant.ctn` (string)
    Client tracking number
    Example: "b2c3d4e5-f6a7-8901-b2c3-d4e5f6a78901"

  - `sentTime` (string)
    Example: "2026-01-15T10:30:01Z"

  - `readTime` (string)
    Example: "2026-01-15T10:31:00Z"

  - `deliveredTime` (string)
    Example: "2026-01-15T10:30:05Z"

  - `sent` (boolean)
    Example: true

  - `read` (boolean)

  - `delivered` (boolean)
    Example: true

  - `errorCode` (string)

  - `sender` (string)
    Example: "+27821234567"

  - `receiver` (string)
    Example: "+27123456789"

  - `ctId` (string)
    Example: "ct-msg-5678"

  - `gstId` (string)
    Example: "gst-msg-1234"

  - `mediaURL` (string)
    Example: "https://example.com/media/photo.jpg"

  - `mediaType` (string)
    Enum: "DOCUMENT", "IMAGE", "VIDEO", "NULL", "BUTTON", "FILE", "AUDIO", "VOICE"

  - `latitude` (string)
    Example: "-26.2041"

  - `longitude` (string)
    Example: "28.0473"

  - `address` (string)
    Example: "123 Main St, Johannesburg"

  - `label` (string)
    Example: "Head Office"

  - `fileExtension` (string)
    Example: "jpg"

## Response 401 fields (application/json):

  - `status` (string)
    Example: "ERROR"

  - `message` (string)
    Example: "Unauthorized user"

  - `requestId` (string)
    Example: "c3a1f8e2-4b6d-11ee-be56-0242ac120002"

  - `timestamp` (string)
    Example: "2026-01-15T10:30:00Z"


