openapi: 3.0.1 info: title: WhatsApp Channel API description: 'Provides methods for configuring and managing WhatsApp Cloud API channels within an API Space. Supports creating and retrieving WhatsApp configurations, registering and removing phone numbers, and retrieving WhatsApp message templates from a given WhatsApp Business Account.' version: 1.0.1 servers: - url: https://{region}-api.dotdigital.com variables: region: description: The Dotdigital region id your account belongs to enum: - r1 - r2 - r3 default: r1 security: - basicAuth: [] paths: /cpaas/channels/whatsapp/cloud: get: tags: - WhatsApp configurations summary: Get WhatsApp configuration for API Space description: Retrieves all Cloud WhatsApp Channel configuration for an API Space parameters: - name: includeDeleted in: query description: Indicates whether deleted channels should be returned. required: false schema: type: boolean - name: configurationStatus in: query description: Indicates the current configuration status of the configurations to be returned. required: false schema: type: string - name: wabaIds in: query description: The list of wabaIds to filter by required: false style: form explode: false schema: type: array items: type: string - name: phoneNumbers in: query description: An array of phone numbers for which to to filter by. If not provided, all phone numbers added to the WABA are included required: false style: form explode: false schema: type: array items: pattern: ^\+?[1-9]\d{1,14}$ type: string responses: '200': description: The WhatsApp channel configuration content: application/json: schema: type: array items: $ref: '#/components/schemas/whatsAppCloudConfiguration' '400': description: Bad request '401': description: Unauthorized '500': description: Internal server error post: tags: - WhatsApp configurations summary: Creates WhatsApp configuration description: Creates a new Cloud WhatsApp configuration. requestBody: description: Details of the WhatsApp Cloud Channel configuration to create content: application/json: schema: $ref: '#/components/schemas/whatsAppCloudConfigurationCreate' required: true responses: '202': description: The request to create a WhatsApp Cloud Channel configuration was accepted '400': description: Validation errors were found '401': description: Unauthorized '409': description: The Cloud configuration already exists '500': description: Internal server error /cpaas/channels/whatsapp/cloud/{phoneNumber}: get: tags: - WhatsApp numbers summary: Get WhatsApp number description: Retrieves the WhatsApp configuration for a number. parameters: - name: phoneNumber in: path description: A WhatsApp-registered number in [E164 format](https://en.wikipedia.org/wiki/E.164) associated with a WhatsApp Business Messaging account. required: true schema: type: string responses: '200': description: The WhatsApp channel configuration headers: ETag: description: A unique value representing the version of the WhatsApp configuration, optionally used for optimistic concurrency control on PUT and DELETE schema: type: string Last-Modified: description: The date the WhatsApp channel configuration was last updated in ISO 8601 format schema: type: string format: date-time content: application/json: schema: $ref: '#/components/schemas/whatsAppCloudConfiguration' '400': description: Bad request '401': description: Unauthorized '404': description: The WhatsApp channel configuration was not found '500': description: Internal server error delete: tags: - WhatsApp numbers summary: Removes WhatsApp number description: 'Removes a WhatsApp number configuration permaently.

**Warning: This action cannot be undone!**' parameters: - name: phoneNumber in: path description: A WhatsApp-registered number in [E164 format](https://en.wikipedia.org/wiki/E.164) associated with a WhatsApp Business Messaging account. required: true schema: type: string responses: '204': description: Indicates successful removal of a cloud originator number '400': description: Bad request '401': description: Unauthorized '404': description: The cloud originator number was not found '500': description: Internal server error /cpaas/channels/whatsapp/cloud/register/{phoneNumber}: post: tags: - WhatsApp numbers summary: Registers WhatsApp number description: Registers a WhatsApp configuration for a number. parameters: - name: phoneNumber in: path description: A WhatsApp-registered number in [E164 format](https://en.wikipedia.org/wiki/E.164) associated with a WhatsApp Business Messaging account. required: true schema: type: string responses: '200': description: A Cloud registration attempt was made for the WhatsApp phone number content: application/json: schema: $ref: '#/components/schemas/registrationResult' '400': description: Bad request '401': description: Unauthorized '404': description: The WhatsApp channel configuration for the phone number was not found '500': description: Internal server error /cpaas/channels/whatsapp/businessaccounts/{wabaId}/templates: get: tags: - WhatsApp templates summary: Get WhatsApp templates description: Retrieves the WhatsApp templates for a specific WABA. parameters: - name: wabaId in: path description: The unique WhatsApp Business Account (WABA) identifier. required: true schema: $ref: '#/components/schemas/wabaId' responses: '200': description: The WhatsApp templates content: application/json: schema: $ref: '#/components/schemas/inline_response_200' '400': description: Bad request '401': description: Unauthorized '500': description: Internal server error /cpaas/channels/whatsapp/businessaccounts/{wabaId}/templates/{templateId}: get: tags: - WhatsApp templates summary: Get WhatsApp template description: Retrieves a WhatsApp template for a specific WABA. parameters: - name: wabaId in: path description: The unique WhatsApp Business Account (WABA) identifier. required: true schema: $ref: '#/components/schemas/wabaId' - name: templateId in: path description: The unique WhatsApp template identifier. required: true schema: $ref: '#/components/schemas/wabaId' responses: '200': description: The WhatsApp templates content: application/json: schema: $ref: '#/components/schemas/whatsAppTemplate' '400': description: Bad request '401': description: Unauthorized '404': description: The WhatsApp template was not found. '500': description: Internal server error components: schemas: whatsAppCloudConfiguration: type: object properties: expiresOn: type: string description: The UTC date the configuration expires. format: date-time example: '2100-01-01T00:00:00Z' messagingLimitTier: type: string description: The daily messaging tier limit. example: TIER_1K phoneNumberId: type: string description: The unique id for the number. example: '1234567890123456' phoneNumber: type: string description: The number in [E164 format](https://en.wikipedia.org/wiki/E.164). example: '16315555555' phoneNumberName: type: string description: The friendly display name for the number. example: Brand A phoneNumberNameStatus: type: string description: The friendly name for a number review status. example: CONNECTED phoneNumberStatus: type: string description: The numbers status. example: ONBOARDING phoneNumberQuality: type: string description: The messaging quality rating for the number. example: GREEN wabaId: $ref: '#/components/schemas/wabaId' wabaReviewStatus: type: string description: The status of the WABA review by Meta. example: APPROVED systemUserWabaAssignmentStatus: type: string description: User WABA assignment status. example: success enum: - failed - inProgress - success creditLineSharedStatus: type: string description: Shared credit line status. example: success enum: - failed - inProgress - success webhookSubscriptionStatus: type: string description: WhatsApp webhook subscription status. example: success enum: - failed - inProgress - success phoneNumberRegistrationStatus: type: string description: WhatsApp number registration status. example: success enum: - failed - inProgress - success configurationStatus: type: string description: WhatsApp configuration status. example: success enum: - failed - inProgress - success createdOn: type: string description: The UTC date time of when the configuration was created. format: date-time example: '2025-01-01T00:00:00Z' whatsAppCloudConfigurationCreate: required: - phoneNumberId - wabaId type: object properties: phoneNumberId: type: string description: Originator phone number id. wabaId: type: string description: WhatsApp Business account id. registrationResult: type: boolean wabaId: type: string description: The unique WhatsApp Business Account (WABA) identifier. example: '226114410888722' whatsAppComponent: title: WhatsApp template component type: object properties: type: type: string description: The type of the component. enum: - BODY - FOOTER - HEADER - BUTTONS text: type: string description: The text for the component. example: My text format: type: string example: TEXT enum: - TEXT - IMAGE - VIDEO - GIF - DOCUMENT - LOCATION parameters: type: array description: Additional component parameters. items: oneOf: - title: Location details required: - location - type type: object properties: type: type: string enum: - location location: required: - address - latitude - longitude - name type: object properties: latitude: type: string example: '37.44211676562361' longitude: type: string example: '122.16155960083124' name: type: string description: The locations description. example: Philz Coffee address: type: string description: Location address. example: 101 Forest Ave, Palo Alto, CA 94301 description: Location details - title: Any other parameters type: object description: Any other template parameters. example: oneOf: - title: Named parameters required: - body_text_named_params type: object properties: body_text_named_params: minItems: 1 type: array description: Create an example of each parameter. items: required: - example - param_name type: object properties: param_name: type: string description: The parameters name. example: booking_date example: type: string description: An example value for the parameter. example: 2nd February description: Example of the parameter(s) usage when using **named** parameters - title: Positional parameters required: - body_text type: object properties: body_text: minItems: 1 type: array description: Create an example of each parameter in the order they appear in the template. items: type: string description: An example value for the parameter. description: Example of the parameter(s) usage when using **positional** parameters buttons: minItems: 1 type: array description: Buttons definitions for the template. items: oneOf: - title: Other button definiton. type: object - title: OTP buttons required: - otp_type - type type: object properties: type: type: string description: The type of button based on it's action. enum: - OTP otp_type: type: string description: The type of OTP. enum: - ONE_TAP - ZERO_TAP - COPY_CODE supported_apps: minItems: 1 type: array description: The apps that can use the OTP, needed only for One-tap and zero-tap buttons only. items: required: - package_name - signature_hash type: object properties: package_name: type: string description: The apps package name. example: com.example.luckyshrub signature_hash: type: string description: The signature hash for the app. example: K8a/AINcGX7 additionalProperties: true - title: Copy code buttons required: - example - type type: object properties: type: type: string description: The type of button based on it's action. enum: - COPY_CODE example: oneOf: - minItems: 1 type: array description: If using parameter(s) in your URL then you must provide an example value here. items: maxLength: 2000 type: string description: Parameter example value - maxLength: 15 type: string description: For `COPY_CODE` buttons provide the value to be copied. example: 250FF additionalProperties: true - title: Phone number buttons required: - phone_number - text - type type: object properties: type: type: string description: The type of button based on it's action. enum: - PHONE_NUMBER text: maxLength: 25 type: string description: The text to show on the button. example: Yes, sign me up phone_number: maxLength: 20 type: string description: The phone number to dial in [E164 format](https://en.wikipedia.org/wiki/E.164). additionalProperties: true - title: Single product view buttons required: - text - type type: object properties: type: type: string description: The type of button based on it's action. enum: - SPM text: maxLength: 25 type: string description: The text to show on the button. example: View additionalProperties: true - title: Multi product view buttons required: - text - type type: object properties: type: type: string description: The type of button based on it's action. enum: - MPM text: maxLength: 25 type: string description: The text to show on the button. example: View products additionalProperties: true - title: Quick reply buttons required: - text - type type: object properties: type: type: string description: The type of button based on it's action. enum: - QUICK_REPLY text: maxLength: 25 type: string description: The text to show on the button. example: Unsubscribe additionalProperties: true - title: URL buttons required: - text - type - url type: object properties: type: type: string description: The type of button based on it's action. enum: - URL text: maxLength: 25 type: string description: The text to show on the button. example: Yes, sign me up url: maxLength: 2000 type: string description: URL of website that loads in the device’s default web browser when the button is tapped by the user. Supports 1 variable, appended to the end of the URL string e.g. {{1}} format: uri example: oneOf: - minItems: 1 type: array description: If using parameter(s) in your URL then you must provide an example value here. items: maxLength: 2000 type: string description: Parameter example value - maxLength: 15 type: string description: For `COPY_CODE` buttons provide the value to be copied. example: 250FF additionalProperties: true whatsAppTemplate: required: - category - components - id - language - name - parameter_format - status - sub_category type: object properties: name: type: string description: The templates name. example: 2025_april_promo parameter_format: type: string description: Whether the parameters for the template use positonal references or named references. example: POSITIONAL enum: - POSITIONAL - NAMED components: type: array items: oneOf: - $ref: '#/components/schemas/whatsAppComponent' - title: Carousel card required: - cards - type type: object properties: type: type: string description: The type of the component. enum: - CAROUSEL cards: minItems: 1 type: array description: Cards for the carousel. items: required: - components type: object properties: components: $ref: '#/components/schemas/whatsAppComponent' description: Carousel card content - title: Other component type: object description: A different type of component. language: type: string description: The language code for the template. example: en_US status: type: string description: The Meta review status of the template. example: APPROVED enum: - PENDING - APPROVED - REJECTED - PAUSED - DISABLED category: type: string description: The templates category. example: MARKETING enum: - MARKETING - UTILITY - AUTHENTICATION sub_category: type: string description: The sub category for the template. example: CUSTOM id: type: string description: The unique id for the template. example: '920070352646140' description: WhatsApp templates inline_response_200: required: - data - paging type: object properties: data: type: array description: WhatsApp registered templates items: $ref: '#/components/schemas/whatsAppTemplate' paging: $ref: '#/components/schemas/inline_response_200_paging' inline_response_200_paging_cursors: required: - after - before type: object properties: before: type: string description: Continuation token for the previous page. example: QVFIU1pNYzBEY2dNM0pjNlQ5Mm0wS1FSNnRBbkJSS0hhcTdka1FXdDBCV1kxYmMyMS1DZADBZAMTd1aHhRaWEta0RXVFNSQXFKVENYQWhyVW50bndDMUEwbXhn after: type: string description: Continuation token for the next page. example: QVFIU2RLSVkwNzNaSkpGYjk0YnhGWE1iMHpJS0tTRzFpRzNMRzFhVUVfUHVjd0UwYUdOSFpCOC1qOGtlTWNlSnktTEk2enhyWnV6YWItSDZANV0xIbVJCVk1n inline_response_200_paging: type: object properties: cursors: $ref: '#/components/schemas/inline_response_200_paging_cursors' description: Pagination cursors parameters: phoneNumberPathParameter: name: phoneNumber in: path description: A WhatsApp-registered number in [E164 format](https://en.wikipedia.org/wiki/E.164) associated with a WhatsApp Business Messaging account. required: true schema: type: string includeDeletedQueryParameter: name: includeDeleted in: query description: Indicates whether deleted channels should be returned. required: false schema: type: boolean configurationStatusQueryParameter: name: configurationStatus in: query description: Indicates the current configuration status of the configurations to be returned. required: false schema: type: string securitySchemes: basicAuth: type: http scheme: basic x-readme: samples-languages: - curl - csharp - java - node - php - python - ruby explorer-enabled: true proxy-enabled: true samples-enabled: true