openapi: 3.2.0 info: title: WhatsApp Channel WhatsApp templates 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: [] tags: - name: WhatsApp templates paths: /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: 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 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 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 wabaId: type: string description: The unique WhatsApp Business Account (WABA) identifier. example: '226114410888722' inline_response_200_paging: type: object properties: cursors: $ref: '#/components/schemas/inline_response_200_paging_cursors' description: Pagination cursors 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' 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