AWS End User Messaging Social

2026/09/03 - AWS End User Messaging Social - 2 new 2 updated api methods

Changes  Adding support for WhatsApp Flows with endpoints.

PutWhatsAppBusinessPublicKey (new) Link ¶

Sets the business public key used to encrypt the data exchanged with the endpoint of a data exchange Flow.

See also: AWS API Documentation

Request Syntax

client.put_whats_app_business_public_key(
    originationPhoneNumberId='string',
    businessPublicKey='string',
    kmsKeyArn='string'
)
type originationPhoneNumberId:

string

param originationPhoneNumberId:

[REQUIRED]

The unique identifier of the phone number to associate with the business public key.

type businessPublicKey:

string

param businessPublicKey:

PEM-encoded RSA public key. Mutually exclusive with kmsKeyArn.

type kmsKeyArn:

string

param kmsKeyArn:

Customer-managed KMS asymmetric RSA key ARN. Mutually exclusive with businessPublicKey.

rtype:

dict

returns:

Response Syntax

{}

Response Structure

  • (dict) --

GetWhatsAppBusinessPublicKey (new) Link ¶

Retrieves the business public key for a phone number and its signature status.

See also: AWS API Documentation

Request Syntax

client.get_whats_app_business_public_key(
    originationPhoneNumberId='string'
)
type originationPhoneNumberId:

string

param originationPhoneNumberId:

[REQUIRED]

The unique identifier of the phone number whose business public key to retrieve.

rtype:

dict

returns:

Response Syntax

{
    'businessPublicKey': 'string',
    'businessPublicKeySignatureStatus': 'string'
}

Response Structure

  • (dict) --

    • businessPublicKey (string) --

      The stored RSA business public key (PEM), if present.

    • businessPublicKeySignatureStatus (string) --

      Meta's signing status: "VALID" | "MISMATCH".

CreateWhatsAppFlow (updated) Link ¶
Changes (request)
{'endpointUri': 'string'}

Creates a new WhatsApp Flow. Flows enable businesses to create rich, interactive forms and experiences that users can complete without leaving WhatsApp. The Flow is created in DRAFT status. If publish is set to true and a valid flowJson is provided, the Flow is published immediately.

See also: AWS API Documentation

Request Syntax

client.create_whats_app_flow(
    id='string',
    flowName='string',
    categories=[
        'SIGN_UP'|'SIGN_IN'|'APPOINTMENT_BOOKING'|'LEAD_GENERATION'|'SHOPPING'|'CONTACT_US'|'CUSTOMER_SUPPORT'|'SURVEY'|'OTHER',
    ],
    flowJson=b'bytes',
    publish=True|False,
    cloneFlowId='string',
    endpointUri='string'
)
type id:

string

param id:

[REQUIRED]

The ID of the WhatsApp Business Account to associate with this Flow.

type flowName:

string

param flowName:

[REQUIRED]

The name of the Flow. Must be unique within the WhatsApp Business Account.

type categories:

list

param categories:

[REQUIRED]

The categories that classify the business purpose of the Flow. At least one category is required.

  • (string) --

    The category that classifies the business purpose of a WhatsApp Flow.

type flowJson:

bytes

param flowJson:

The Flow JSON definition that describes the screens, components, and logic of the Flow. Maximum size is 10 MB.

type publish:

boolean

param publish:

Set to true to publish the Flow immediately after creation. Requires a valid flowJson that passes Meta's validation.

type cloneFlowId:

string

param cloneFlowId:

The ID of an existing Flow within the same WhatsApp Business Account to clone.

type endpointUri:

string

param endpointUri:

Optional HTTPS endpoint for a dynamic Flow, registered with Meta as the Flow's endpoint_uri and called by Meta directly. When omitted, the Flow has no endpoint (static Flow). Meta only calls the endpoint when the Flow JSON also declares data_api_version. To verify that requests originate from Meta, attach your own Meta app via UpdateWhatsAppFlow.

rtype:

dict

returns:

Response Syntax

{
    'flowId': 'string',
    'validationErrors': [
        'string',
    ]
}

Response Structure

  • (dict) --

    • flowId (string) --

      The unique identifier assigned to the Flow by Meta.

    • validationErrors (list) --

      A list of validation errors returned by Meta, if any. Validation errors must be resolved before the Flow can be published.

      • (string) --

UpdateWhatsAppFlow (updated) Link ¶
Changes (request)
{'endpointUri': 'string', 'metaAppId': 'string'}

Updates the metadata of a WhatsApp Flow, such as its name or categories. This does not update the Flow JSON definition. Use UpdateWhatsAppFlowAssets to update the Flow JSON.

See also: AWS API Documentation

Request Syntax

client.update_whats_app_flow(
    id='string',
    flowId='string',
    flowName='string',
    categories=[
        'SIGN_UP'|'SIGN_IN'|'APPOINTMENT_BOOKING'|'LEAD_GENERATION'|'SHOPPING'|'CONTACT_US'|'CUSTOMER_SUPPORT'|'SURVEY'|'OTHER',
    ],
    endpointUri='string',
    metaAppId='string'
)
type id:

string

param id:

[REQUIRED]

The ID of the WhatsApp Business Account associated with this Flow.

type flowId:

string

param flowId:

[REQUIRED]

The unique identifier of the Flow to update.

type flowName:

string

param flowName:

The updated name for the Flow.

type categories:

list

param categories:

The updated categories for the Flow.

  • (string) --

    The category that classifies the business purpose of a WhatsApp Flow.

type endpointUri:

string

param endpointUri:

Optional HTTPS endpoint for a dynamic Flow, registered with Meta as the Flow's endpoint_uri and called by Meta directly. When omitted, the Flow's endpoint is unchanged.

type metaAppId:

string

param metaAppId:

Optional Meta app ID to attach to the Flow. Meta signs data-exchange requests with the attached app's secret, so attaching your own app is what enables X-Hub-Signature-256 and flow_token_signature verification at your endpoint. Meta requires the app to be owned by the same business that owns the WABA. Attaching your own app is one-way: the service's app cannot be re-attached afterwards. When omitted, the attached app is unchanged. (Set via update because Meta ignores application_id at creation time.)

rtype:

dict

returns:

Response Syntax

{}

Response Structure

  • (dict) --