openapi: 3.0.0 servers: - url: http://whatsapp.local - url: http://example.com/v1 info: contact: x-twitter: WhatsApp description: See https://developers.facebook.com/docs/whatsapp title: WhatsApp Business API version: "1.0" x-apisguru-categories: - messaging x-logo: url: https://api.apis.guru/v2/cache/logo/https_twitter.com_WhatsApp_profile_image.png x-origin: - format: openapi url: https://raw.githubusercontent.com/unblu/WhatsApp-Business-API-OpenAPI/master/openapi.yaml version: "3.0" x-providerName: whatsapp.local x-unofficialSpec: true security: - bearerAuth: [] tags: - name: Users - name: Application - name: Backup/Restore - name: Business Profile - name: Profile - name: Two-Step Verification - name: Registration - name: Contacts - name: Messages - name: Groups - name: Media - name: Health - name: Certificates paths: /account: post: deprecated: false operationId: RequestCode requestBody: content: application/json: example: cc: cert: method: sms phone_number: pin: phone_number: pin: shards: 32 schema: $ref: "#/components/schemas/Set-Shards-Request-Body" description: "" required: true responses: "200": description: "" summary: Set-Shards tags: - Application /account/verify: post: deprecated: false operationId: RegisterAccount requestBody: content: application/json: example: code: schema: $ref: "#/components/schemas/Register-Account-Request-Body" description: "" required: true responses: "200": description: "" summary: Register-Account tags: - Registration /certificates/external: post: deprecated: false operationId: UploadCertificate requestBody: content: text/plain: schema: format: binary type: string responses: "200": description: "" summary: Upload-Certificate tags: - Certificates /certificates/external/ca: get: deprecated: false operationId: DownloadCaCertificate responses: "200": content: text/plain: schema: format: binary type: string description: "" summary: Download-CA-Certificate tags: - Certificates /certificates/webhooks/ca: delete: deprecated: false operationId: DeleteWebhookCaCertificate responses: "200": description: "" summary: Delete Webhook CA Certificate tags: - Certificates get: deprecated: false operationId: DownloadWebhookCaCertificate responses: "200": content: text/plain: schema: format: binary type: string description: "" summary: Download Webhook CA Certificate tags: - Certificates post: deprecated: false operationId: UploadWebhookCaCertificate requestBody: content: text/plain: schema: format: binary type: string required: false responses: "200": description: "" summary: Upload Webhook CA Certificate tags: - Certificates /contacts: post: deprecated: false operationId: CheckContact requestBody: content: application/json: example: blocking: wait contacts: - "{{Recipient-WA-ID}}" schema: $ref: "#/components/schemas/Check-Contact-Request-Body" description: "" required: true responses: "200": content: application/json: schema: $ref: "#/components/schemas/Check-Contact-Response" description: "" summary: Check-Contact tags: - Contacts /groups: get: deprecated: false operationId: GetAllGroups responses: "200": content: application/json: schema: $ref: "#/components/schemas/Groups-Response" description: "" summary: Get-All-Groups tags: - Groups post: deprecated: false operationId: CreateGroup requestBody: content: application/json: example: subject: schema: $ref: "#/components/schemas/Create-Group-Request-Body" description: "" required: true responses: "200": content: application/json: schema: $ref: "#/components/schemas/Groups-Response" description: "" summary: Create-Group tags: - Groups "/groups/{GroupId}": get: deprecated: false operationId: GetGroupInfo parameters: - description: "" explode: false in: path name: GroupId required: true schema: type: string style: simple responses: "200": content: application/json: schema: $ref: "#/components/schemas/Group-Response" description: "" summary: Get-Group-Info tags: - Groups put: deprecated: false operationId: UpdateGroupInfo parameters: - description: "" explode: false in: path name: GroupId required: true schema: type: string style: simple requestBody: content: application/json: example: subject: schema: $ref: "#/components/schemas/Update-Group-Info-Request-Body" description: "" required: true responses: "200": description: "" summary: Update-Group-Info tags: - Groups "/groups/{GroupId}/admins": delete: deprecated: false operationId: DemoteGroupAdmin parameters: - description: "" explode: false in: path name: GroupId required: true schema: type: string style: simple requestBody: content: application/json: example: wa_ids: - schema: $ref: "#/components/schemas/Group-Admin-Request-Body" description: "" required: true responses: "200": description: "" summary: Demote-Group-Admin tags: - Groups patch: deprecated: false operationId: PromoteToGroupAdmin parameters: - description: "" explode: false in: path name: GroupId required: true schema: type: string style: simple requestBody: content: application/json: example: wa_ids: - schema: $ref: "#/components/schemas/Group-Admin-Request-Body" description: "" required: true responses: "200": description: "" summary: Promote-To-Group-Admin tags: - Groups "/groups/{GroupId}/icon": delete: deprecated: false operationId: DeleteGroupIcon parameters: - description: "" explode: false in: path name: GroupId required: true schema: type: string style: simple requestBody: content: multipart/form-data: schema: properties: File: format: binary type: string required: - File type: object required: false responses: "200": description: "" summary: Delete-Group-Icon tags: - Groups get: deprecated: false operationId: GetGroupIconBinary parameters: - description: "" explode: false in: path name: GroupId required: true schema: type: string style: simple responses: "200": description: "" summary: Get-Group-Icon-Binary tags: - Groups post: deprecated: false operationId: SetGroupIcon parameters: - description: "" explode: false in: path name: GroupId required: true schema: type: string style: simple requestBody: content: multipart/form-data: schema: properties: File: format: binary type: string required: - File type: object required: false responses: "200": description: "" summary: Set-Group-Icon tags: - Groups "/groups/{GroupId}/invite": delete: deprecated: false operationId: DeleteGroupInvite parameters: - description: "" explode: false in: path name: GroupId required: true schema: type: string style: simple responses: "200": description: "" summary: Delete-Group-Invite tags: - Groups get: deprecated: false operationId: GetGroupInvite parameters: - description: "" explode: false in: path name: GroupId required: true schema: type: string style: simple responses: "200": content: application/json: schema: $ref: "#/components/schemas/Group-Invite-Response" description: "" summary: Get-Group-Invite tags: - Groups "/groups/{GroupId}/leave": post: deprecated: false operationId: LeaveGroup parameters: - description: "" explode: false in: path name: GroupId required: true schema: type: string style: simple responses: "200": description: "" summary: Leave-Group tags: - Groups "/groups/{GroupId}/participants": delete: deprecated: false operationId: RemoveGroupParticipant parameters: - description: "" explode: false in: path name: GroupId required: true schema: type: string style: simple requestBody: content: application/json: example: wa_ids: - "{{Recipient-WA-ID}}" schema: $ref: "#/components/schemas/Remove-Group-Participant-Request-Body" description: "" required: true responses: "200": description: "" summary: Remove-Group-Participant tags: - Groups /health: get: deprecated: false operationId: CheckHealth responses: "200": description: "" summary: Check-Health tags: - Health /media: post: deprecated: false operationId: UploadMedia requestBody: content: application/msword: schema: format: binary type: string application/pdf: schema: format: binary type: string application/vnd.ms-excel: schema: format: binary type: string application/vnd.ms-powerpoint: schema: format: binary type: string audio/acc: schema: format: binary type: string audio/amr: schema: format: binary type: string audio/mp4: schema: format: binary type: string audio/mpeg: schema: format: binary type: string audio/ogg: schema: format: binary type: string codecs=opus: schema: format: binary type: string image/jpeg: schema: format: binary type: string image/png: schema: format: binary type: string text/plain: schema: format: binary type: string video/mp4: schema: format: binary type: string required: true responses: "200": content: application/json: schema: $ref: "#/components/schemas/Upload-Media-Response" description: "" summary: Upload-Media tags: - Media "/media/{MediaId}": delete: deprecated: false operationId: DeleteMedia parameters: - description: "" explode: false in: path name: MediaId required: true schema: type: string style: simple responses: "200": description: "" summary: Delete-Media tags: - Media get: deprecated: false operationId: DownloadMedia parameters: - description: "" explode: false in: path name: MediaId required: true schema: type: string style: simple responses: "200": content: application/json: {} description: "" summary: Download-Media tags: - Media /messages: post: deprecated: false operationId: SendMessage requestBody: content: application/json: example: recipient_type: individual text: body: to: "{{Recipient-WA-ID}}" type: text schema: $ref: "#/components/schemas/Send-Message-Request-Body" description: "" required: true responses: "200": content: application/json: schema: $ref: "#/components/schemas/Message-Response" description: "" summary: Send-Message tags: - Messages "/messages/{MessageID}": put: deprecated: false operationId: MarkMessageAsRead parameters: - description: Message ID from Webhook in: path name: MessageID required: true schema: type: string requestBody: content: application/json: example: status: read schema: $ref: "#/components/schemas/Mark-Message-As-Read-Request-Body" description: "" required: true responses: "200": description: "" summary: Mark-Message-As-Read tags: - Messages /metrics: get: deprecated: false operationId: GetMetrics parameters: - description: "" example: prometheus in: query name: format schema: type: string responses: "200": content: application/json: schema: type: object text/plain: schema: type: string description: "" summary: Get-Metrics (since v2.21.3) tags: - Health /settings/account/two-step: delete: deprecated: false operationId: DisableTwoStep responses: "200": description: "" summary: Disable-Two-Step tags: - Two-Step Verification post: deprecated: false operationId: EnableTwoStep requestBody: content: application/json: example: pin: schema: $ref: "#/components/schemas/Enable-Two-Step-Request-Body" description: "" required: true responses: "200": description: "" summary: Enable-Two-Step tags: - Two-Step Verification /settings/application: delete: deprecated: false operationId: ResetApplicationSettings responses: "200": description: "" summary: Reset-Application-Settings tags: - Application get: deprecated: false operationId: GetApplicationSettings responses: "200": content: application/json: schema: $ref: "#/components/schemas/Application-Settings" description: "" summary: Get-Application-Settings tags: - Application patch: callbacks: incomingWebhook: "{$request.body#/webhooks.url}": post: requestBody: content: application/json: schema: $ref: "#/components/schemas/Webhook-Event" responses: "200": description: OK deprecated: false description: If a field is not present in the request, no change is made to that setting. For example, if on_call_pager is not sent with the request, the existing configuration for on_call_pager is unchanged. operationId: UpdateApplicationSettings requestBody: content: application/json: example: webhooks: url: schema: $ref: "#/components/schemas/Application-Settings" description: "" required: true responses: "200": content: application/json: schema: $ref: "#/components/schemas/Response" description: "" summary: Update-Application-Settings tags: - Application /settings/application/media/providers: get: deprecated: false operationId: GetMediaProviders responses: "200": content: application/json: schema: $ref: "#/components/schemas/Get-Media-Providers-Response" description: "" summary: Get-Media-Providers tags: - Application post: deprecated: false operationId: UpdateMediaProviders requestBody: content: application/json: example: - config: bearer: name: type: www schema: description: "" items: $ref: "#/components/schemas/Media-Provider" type: array description: "" required: true responses: "200": description: "" summary: Update-Media-Providers tags: - Application "/settings/application/media/providers/{ProviderName}": delete: deprecated: false operationId: DeleteMediaProviders parameters: - description: Provider Name in: path name: ProviderName required: true schema: type: string responses: "200": description: "" summary: Delete-Media-Providers tags: - Application /settings/backup: post: deprecated: false operationId: BackupSettings requestBody: content: application/json: example: password: schema: $ref: "#/components/schemas/Backup-Settings-Request-Body" description: "" required: true responses: "200": content: application/json: schema: $ref: "#/components/schemas/Backup-Settings-Response" description: "" summary: Backup-Settings tags: - Backup/Restore /settings/business/profile: get: deprecated: false operationId: GetBusinessProfile responses: "200": content: application/json: schema: $ref: "#/components/schemas/Get-Business-Profile-Response" description: "" summary: Get-Business-Profile tags: - Business Profile post: deprecated: false operationId: updateBusinessProfile requestBody: content: application/json: example: address: description: email: vertical: websites: - https://www.whatsapp.com - https://www.facebook.com schema: $ref: "#/components/schemas/Business-Profile" description: "" required: true responses: "200": description: "" summary: Update-Business-Profile tags: - Business Profile /settings/profile/about: get: deprecated: false operationId: GetProfileAbout responses: "200": content: application/json: schema: $ref: "#/components/schemas/Get-Profile-About-Response" description: "" summary: Get-Profile-About tags: - Profile patch: deprecated: false operationId: UpdateProfileAbout requestBody: content: application/json: example: text: schema: $ref: "#/components/schemas/Profile-About" description: "" required: true responses: "200": description: "" summary: Update-Profile-About tags: - Profile /settings/profile/photo: delete: operationId: DeleteProfilePhoto responses: "200": description: "" summary: Delete-Profile-Photo get: deprecated: false operationId: GetProfilePhoto parameters: - description: "" example: link in: query name: format schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Get-Profile-Photo-Response" image/jpeg: schema: format: binary type: string description: "" summary: Get-Profile-Photo tags: - Profile post: deprecated: false operationId: UpdateProfilePhoto requestBody: content: multipart/form-data: schema: properties: File: format: binary type: string required: - File type: object required: false responses: "200": description: "" summary: Update-Profile-Photo tags: - Profile /settings/restore: post: deprecated: false operationId: RestoreSettings requestBody: content: application/json: example: data: password: schema: $ref: "#/components/schemas/Restore-Settings-Request-Body" description: "" required: true responses: "200": description: "" summary: Restore-Settings tags: - Backup/Restore /stats/app: get: deprecated: false operationId: GetAppStats parameters: - description: "" example: prometheus in: query name: format schema: type: string responses: "200": content: application/json: schema: type: object text/plain: schema: type: string description: "" summary: Get-App-Stats tags: - Health /stats/db: get: deprecated: false operationId: GetDbStats parameters: - description: "" example: prometheus in: query name: format schema: type: string responses: "200": content: application/json: schema: type: object text/plain: schema: type: string description: "" summary: Get-DB-Stats tags: - Health /support: get: deprecated: false operationId: GetSupportInfo responses: "200": content: application/json: schema: type: object description: "" summary: Get-Support-Info tags: - Health /users: post: deprecated: false operationId: CreateUser requestBody: content: application/json: example: password: "{{UserPassword}}" username: "{{UserUsername}}" schema: $ref: "#/components/schemas/Create-User-Request-Body" description: "" required: true responses: "200": content: application/json: schema: $ref: "#/components/schemas/User-Response" description: "" summary: Create-User tags: - Users /users/login: post: deprecated: false operationId: LoginUser requestBody: content: application/json: schema: $ref: "#/components/schemas/Login-Admin-Request-Body" required: false responses: "200": content: application/json: schema: $ref: "#/components/schemas/User-Login-Response" description: OK security: - httpBasic: [] summary: Login-User tags: - Users /users/logout: post: deprecated: false operationId: LogoutUser responses: "200": description: "" summary: Logout-User tags: - Users "/users/{UserUsername}": delete: deprecated: false operationId: DeleteUser parameters: - description: "" explode: false in: path name: UserUsername required: true schema: type: string style: simple responses: "200": content: application/json: schema: $ref: "#/components/schemas/User-Response" description: "" summary: Delete-User tags: - Users get: deprecated: false operationId: GetUser parameters: - description: "" explode: false in: path name: UserUsername required: true schema: type: string style: simple responses: "200": content: application/json: schema: $ref: "#/components/schemas/Detailed-User-Response" description: "" summary: Get-User tags: - Users put: deprecated: false operationId: UpdateUser parameters: - description: "" explode: false in: path name: UserUsername required: true schema: type: string style: simple requestBody: content: application/json: example: password: schema: $ref: "#/components/schemas/Update-User-Request-Body" description: "" required: true responses: "200": content: application/json: schema: $ref: "#/components/schemas/User-Response" description: "" summary: Update-User tags: - Users components: schemas: Address: example: city: Menlo Park country: United States country_code: us state: CA street: 1 Hacker Way type: HOME zip: "94025" properties: city: description: City name type: string country: description: Full country name type: string country_code: description: Two-letter country abbreviation type: string state: description: State abbreviation type: string street: description: Street number and name type: string type: description: "Standard Values: HOME, WORK" type: string zip: description: ZIP code type: string required: - city - country - country_code - state - street - type - zip title: Address type: object Application-Settings: example: callback_backoff_delay_ms: 3000 callback_persist: true max_callback_backoff_delay_ms: 900000 media: auto_download: - image - document - audio on_call_pager: pass_through: false sent_status: false webhooks: max_concurrent_requests: 12 url: properties: callback_backoff_delay_ms: default: "3000" description: |- Backoff delay for a failed callback in milliseconds This setting is used to configure the amount of time the backoff delays before retrying a failed callback. The backoff delay increases linearly by this value each time a callback fails to get a HTTPS 200 OK response. The backoff delay is capped by the max_callback_backoff_delay_ms setting. type: string callback_persist: default: true description: Stores callbacks on disk until they are successfully acknowledged by the Webhook or not. Restart required. type: boolean heartbeat_interval: default: 5 description: "Multiconnect: Interval of the Master node monitoring of Coreapp nodes in seconds" type: integer max_callback_backoff_delay_ms: default: "900000" description: Maximum delay for a failed callback in milliseconds type: string media: $ref: "#/components/schemas/Media" on_call_pager: description: Set to valid WhatsApp Group with users who wish to see alerts for critical errors and messages. type: string pass_through: default: true description: |- When true, removes messages from the local database after they are delivered to or read by the recipient. When false, saves all messages on local storage until they are explicitly deleted. When messages are sent, they are stored in a local database. This database is used as the application's history. Since the business keeps its own history, you can specify whether you want message pass_through or not. Restart required. type: boolean sent_status: default: false description: Receive a notification that a message is sent to server. When true, you will receive a message indicating that a message has been sent. If false (default), you will not receive notification. type: boolean unhealthy_interval: default: 30 description: "Multiconnect: Maximum amount of seconds a Master node waits for a Coreapp node to respond to a heartbeat before considering it unhealthy and starting the failover process." type: integer webhooks: $ref: "#/components/schemas/Webhooks" title: Update-Application-Settings-Request-Body type: object Audio: description: The media object containing audio oneOf: - $ref: "#/components/schemas/AudioById" - $ref: "#/components/schemas/AudioByProvider" title: Audio type: object AudioById: example: id: properties: id: type: string required: - id title: AudioById type: object AudioByProvider: example: link: provider: name: properties: password: description: Used to encrypt backup data for security type: string required: - password title: Backup-Settings-Request type: object Backup-Settings-Response: description: Save the data value as that will be used along with your password to restore the information. example: settings: data: encrypted-backup-data properties: settings: $ref: "#/components/schemas/Backup-Settings" title: Root Type for Backup-Settings-Response type: object Basic: description: "" example: password: your-password username: your-username properties: password: type: string username: type: string title: Root Type for Basic type: object Business-Profile: example: address: description: email: vertical: websites: - https://www.whatsapp.com - https://www.facebook.com properties: address: description: |- Address of the business Maximum of 256 characters type: string description: description: |- Description of the business Maximum of 256 characters type: string email: description: |- Email address to contact the business Maximum of 128 characters type: string vertical: description: |- Industry of the business Maximum of 128 characters type: string websites: description: |- URLs associated with business (e.g., website, Facebook page, Instagram) Maximum of 2 websites with a maximum of 256 characters each items: type: string type: array required: - address - description - email - vertical - websites title: Set-Business-Profile-Request type: object Business-Settings: description: "" example: business: profile: address: new-business-address description: business-description email: new-business-email vertical: business-industry websites: - website-1 - website-2 properties: business: $ref: "#/components/schemas/Business-Settings-Business" title: Root Type for Business-Settings type: object Business-Settings-Business: description: "" example: profile: address: new-business-address description: business-description email: new-business-email vertical: business-industry websites: - website-1 - website-2 properties: profile: $ref: "#/components/schemas/Business-Profile" title: Root Type for Business-Settings-Business type: object Check-Contact: description: "" example: input: +1 (516) 283-7151 status: valid wa_id: "15162837151" properties: input: description: The value you sent in the contacts field of the JSON request. type: string status: description: Status of the user. enum: - processing - valid - invalid type: string x-enum-descriptions: - "processing: Input is still being processed." - "valid: Input determined to be a valid WhatsApp user." - "invalid: Input determined to not be a valid WhatsApp user or the phone number is in a bad format." wa_id: description: WhatsApp user identifier that can be used in other API calls. Only returned if the status is valid. type: string title: Check-Contact type: object Check-Contact-Request-Body: example: blocking: wait contacts: - "{{Recipient-WA-ID}}" properties: blocking: default: no_wait description: Blocking determines whether the request should wait for the processing to complete (synchronous) or not (asynchronous). enum: - no_wait - wait type: string contacts: description: Array of contact phone numbers. The numbers can be in any standard telephone number format. items: type: string type: array required: - contacts title: Check-Contact-Request type: object Check-Contact-Response: allOf: - $ref: "#/components/schemas/Response" - properties: contacts: items: $ref: "#/components/schemas/Check-Contact" type: array type: object description: "" example: contacts: - input: 1-631-555-1002 status: processing - input: "6315551003" status: processing - input: +54 9 11 5612-1008 status: processing - input: +1 (516) 283-7151 status: valid wa_id: "15162837151" title: Check-Contact-Response type: object Check-Health-Response: description: "" example: health: your-hostname1:your-container-id1: gateway_status: connected role: primary_master your-hostname2:your-container-id2: gateway_status: disconnected role: secondary_master properties: health: oneOf: - $ref: "#/components/schemas/Gateway-Status" - additionalProperties: $ref: "#/components/schemas/Gateway-Node-Status" type: object title: Root Type for Check-Health-Response type: object Config: oneOf: - $ref: "#/components/schemas/Config-Bearer" - $ref: "#/components/schemas/Config-Basic" title: Config Config-Basic: example: basic: password: your-password username: your-username properties: basic: $ref: "#/components/schemas/Basic" title: Config type: object Config-Bearer: example: bearer: properties: bearer: type: string required: - bearer title: Config type: object Contact: example: addresses: - city: Menlo Park country: United States country_code: us state: CA street: 1 Hacker Way type: HOME zip: "94025" - city: Menlo Park country: United States country_code: us state: CA street: 200 Jefferson Dr type: WORK zip: "94025" birthday: 2012-08-18 emails: - email: test@fb.com type: WORK - email: test@whatsapp.com type: WORK name: first_name: John formatted_name: John Smith last_name: Smith org: company: WhatsApp department: Design title: Manager phones: - phone: +1 (940) 555-1234 type: HOME - phone: +1 (650) 555-1234 type: WORK wa_id: "16505551234" urls: - type: WORK url: https://www.facebook.com properties: addresses: description: Full contact address(es) items: $ref: "#/components/schemas/Address" type: array birthday: description: YYYY-MM-DD formatted string type: string emails: description: Contact email address(es) items: $ref: "#/components/schemas/Email" type: array ims: description: "" items: type: string type: array name: $ref: "#/components/schemas/Name" org: $ref: "#/components/schemas/Org" phones: description: Contact phone number(s) items: $ref: "#/components/schemas/Phone" type: array urls: description: Contact URL(s) items: $ref: "#/components/schemas/Url" type: array title: Contact type: object Create-Group-Request-Body: example: subject: properties: subject: type: string required: - subject title: Create-Group-Request type: object Create-User-Request-Body: example: password: password username: username properties: password: description: username type: string username: description: password type: string required: - username - password title: Create-User-Request type: object Currency: description: "" example: amount_1000: 100990 currency_code: USD properties: amount_1000: format: int32 type: integer currency_code: type: string required: - amount_1000 - currency_code title: Currency type: object Date-Time-Component: description: Date/time by component example: day_of_month: 25 day_of_week: 5 hour: 15 minute: 33 month: 2 year: 1977 properties: day_of_month: description: The day of month format: int32 type: integer day_of_week: description: Both strings and numbers are accepted. If different from the value derived from the date (if specified), use the derived value. enum: - "1" - "2" - "3" - "4" - "5" - "6" - "7" format: int32 type: integer x-enum-descriptions: - Monday - Tuesday - Wednesday - Thursday - Friday - Saturday - Sunday x-enum-varnames: - MONDAY - TUESDAY - WEDNESDAY - THURSDAY - FRIDAY - SATURDAY - SUNDAY hour: description: The hour format: int32 type: integer minute: description: The minute format: int32 type: integer month: description: The month format: int32 type: integer year: description: The year format: int32 type: integer title: Date-Time-Component type: object Date-Time-Object: description: The Whatsapp Business API Client will attempt to format the date/time based on a specified localization. example: component: day_of_month: 25 day_of_week: 5 hour: 15 minute: 33 month: 2 year: 1977 properties: component: $ref: "#/components/schemas/Date-Time-Component" unix_epoch: $ref: "#/components/schemas/Date-Time-Unix-Epoch" title: Date-Time type: object Date-Time-Unix-Epoch: description: Date/time by Unix epoch example: timestamp: 123456789 properties: timestamp: description: Epoch timestamp in seconds format: int32 type: integer title: Date-Time-Unix-Epoch type: object Detailed-User-Response: allOf: - $ref: "#/components/schemas/Response" - properties: users: items: $ref: "#/components/schemas/Detailed-User-Response-Item" type: array type: object description: "" example: users: - ROLES: ROLE_USER username: username title: Root Type for Detailed-User-Response type: object Detailed-User-Response-Item: description: "" example: ROLES: ROLE_USER username: username properties: ROLES: $ref: "#/components/schemas/User-Role" username: type: string title: Root Type for Detailed-Response-Item type: object Document: description: The media object containing a document oneOf: - $ref: "#/components/schemas/DocumentById" - $ref: "#/components/schemas/DocumentByProvider" title: Document type: object DocumentById: example: caption: filename: id: properties: caption: type: string filename: type: string id: type: string required: - caption - id - filename title: Document type: object DocumentByProvider: example: caption: filename: link: provider: name: type: properties: email: type: string type: type: string required: - email - type title: Email type: object Enable-Two-Step-Request-Body: example: pin: your-6-digit-pin properties: pin: type: string required: - pin title: Enable-Two-Step-Request type: object Error: description: "" example: code: 1234 details: optional-detailed-error-message title: error-code-title properties: code: description: See the https://developers.facebook.com/docs/whatsapp/api/errors for more information. format: int32 type: integer details: description: error detail type: string href: description: location for error detail type: string title: description: error title type: string title: Error type: object Gateway-Node-Status: description: "" example: gateway_status: connected role: coreapp properties: gateway_status: type: string role: enum: - primary_master - secondary_master - coreapp type: string title: Root Type for Gateway-Node-Status type: object Gateway-Status: description: "" enum: - connected - connecting - disconnected - uninitialized - unregistered type: string Get-Business-Profile-Response: allOf: - $ref: "#/components/schemas/Response" - properties: settings: $ref: "#/components/schemas/Business-Settings" type: object description: "" example: settings: business: profile: address: new-business-address description: business-description email: new-business-email vertical: business-industry websites: - website-1 - website-2 title: Root Type for Get-Business-Profile-Response type: object Get-Media-Providers-Response: allOf: - $ref: "#/components/schemas/Response" - properties: settings: $ref: "#/components/schemas/Media-Provider-Settings" type: object description: "" example: settings: application: media: providers: - config: basic: password: your-password username: your-username name: your-first-provider type: www - config: bearer: your-bearer-token name: your-second-provider type: www title: Root Type for Get-Media-Providers-Response type: object Get-Profile-About-Response: description: "" example: settings: profile: about: text: your-profile-about-text properties: settings: $ref: "#/components/schemas/Profile-About-Settings" title: Root Type for Get-Profile-About-Response type: object Get-Profile-Photo-Response: description: "" example: settings: profile: photo: link: profile-photo-url properties: settings: $ref: "#/components/schemas/Profile-Photo-Settings" title: Root Type for Get-Profile-Photo-Response type: object Group: description: "" example: creation_time: 123456789 id: your-group-id properties: creation_time: description: timestamp format: int32 type: integer id: type: string title: Groups-Response-Item type: object Group-Admin-Request-Body: example: wa_ids: - properties: wa_ids: description: The WhatsApp IDs of the people to be added or removed as group admins items: type: string type: array required: - wa_ids title: Group-Admin-Request type: object Group-Info: description: "" example: admins: - whatsapp-id-1 - whatsapp-id-2 creation_time: 123456789 creator: whatsapp-id-1 participants: - whatsapp-id-3 - whatsapp-id-4 - whatsapp-id-5 subject: your-group-subject properties: admins: description: |- Group administrators Lists IDs of the creator of the group and any administrators added items: type: string type: array creation_time: description: Group creation time format: int32 type: integer creator: description: ID of the creator of this group type: string participants: description: |- Participants of the group This is an array of all the IDs of the participants in the group. Initially, this will be the creator of the group. items: type: string type: array subject: description: Subject of the group type: string title: Group-Response-Item type: object Group-Invite: description: "" example: link: group-invite-link properties: link: type: string title: Group-Invite type: object Group-Invite-Response: allOf: - $ref: "#/components/schemas/Response" - properties: groups: items: $ref: "#/components/schemas/Group-Invite" type: array type: object description: "" example: groups: - link: group-invite-link title: Group-Invite-Response type: object Group-Response: allOf: - $ref: "#/components/schemas/Response" - properties: groups: items: $ref: "#/components/schemas/Group-Info" type: array type: object description: "" example: groups: - admins: - whatsapp-id-1 - whatsapp-id-2 creation_time: 123456789 creator: whatsapp-id-1 participants: - whatsapp-id-3 - whatsapp-id-4 - whatsapp-id-5 subject: your-group-subject title: Group-Response type: object Groups-Response: allOf: - $ref: "#/components/schemas/Response" - properties: groups: items: $ref: "#/components/schemas/Group" type: array type: object description: "" example: groups: - creation_time: 123456789 id: your-group-id title: GroupsResponse type: object Hsm: description: The containing element for the message content — Indicates that the message is highly structured. Parameters contained within provide the structure. example: element_name: hello_world language: code: en policy: deterministic localizable_params: - default: "1234" namespace: business_a_namespace properties: element_name: description: The element name that indicates which template to use within the namespace type: string language: $ref: "#/components/schemas/Language" localizable_params: description: This field is an array of values to apply to variables in the template items: $ref: "#/components/schemas/LocalizableParam" type: array namespace: description: The namespace that will be used type: string required: - namespace - element_name - language - localizable_params title: Hsm type: object Image: description: The media object containing an image oneOf: - $ref: "#/components/schemas/ImageById" - $ref: "#/components/schemas/ImageByProvider" title: Image type: object ImageById: example: caption: id: properties: caption: type: string id: type: string required: - caption - id title: ImageById type: object ImageByProvider: example: caption: link: provider: name: properties: currency: $ref: "#/components/schemas/Currency" date_time: $ref: "#/components/schemas/Date-Time-Object" default: description: Default text if localization fails type: string required: - default title: LocalizableParam type: object Location: example: address: latitude: longitude: name: properties: address: description: Address of the location. Only displayed if name is present. type: string latitude: description: Latitude of the location type: string longitude: description: Longitude of the location type: string name: description: Name of the location type: string required: - longitude - latitude - name - address title: Location type: object Login-Admin-Request-Body: example: new_password: properties: new_password: type: string required: - new_password title: Login-Admin-Request type: object Mark-Message-As-Read-Request-Body: example: status: read properties: status: default: read type: string required: - status title: Mark-Message-As-Read-Request type: object Media: example: auto_download: - image - document - audio properties: auto_download: description: An array specifying which types of media to automatically download. items: enum: - audio - document - voice - video - image. type: string type: array required: - auto_download title: Media type: object Media-Provider: example: config: bearer: name: type: www properties: config: $ref: "#/components/schemas/Config" name: description: The name for the provider type: string type: description: The type of provider type: string title: Update-Media-Providers-Request type: object Media-Provider-Settings: description: "" example: application: media: providers: - config: basic: password: your-password username: your-username name: your-first-provider type: www - config: bearer: your-bearer-token name: your-second-provider type: www properties: application: $ref: "#/components/schemas/Media-Provider-Settings-Application" title: Root Type for Settings type: object Media-Provider-Settings-Application: description: "" example: media: providers: - config: basic: password: your-password username: your-username name: your-first-provider type: www - config: bearer: your-bearer-token name: your-second-provider type: www properties: media: $ref: "#/components/schemas/Media-Provider-Settings-Application-Media" title: Root Type for Settings-Application type: object Media-Provider-Settings-Application-Media: description: "" example: providers: - config: basic: password: your-password username: your-username name: your-first-provider type: www - config: bearer: your-bearer-token name: your-second-provider type: www properties: providers: items: $ref: "#/components/schemas/Media-Provider" type: array title: Root Type for Settings-Application-Media type: object Message: description: "" example: id: gBEGkYiEB1VXAglK1ZEqA1YKPrU properties: id: type: string title: Message type: object Message-Context: description: "" example: from: sender-wa-id-of-context-message group_id: group-id-of-context-message id: message-id-of-context-message mentions: - wa-id1 - wa-id2 properties: from: description: Sender Whatsapp id of context-message type: string group_id: description: GroupId of context message type: string id: description: message id type: string mentions: description: Whats app ids items: type: string type: array title: Root Type for Message-Context type: object Message-Response: allOf: - $ref: "#/components/schemas/Response" - properties: messages: items: $ref: "#/components/schemas/Message" type: array type: object description: "" example: messages: - id: gBEGkYiEB1VXAglK1ZEqA1YKPrU title: Message-Response type: object Message-Type: default: text description: type of the message enum: - audio - contacts - document - hsm - image - location - text - video - voice - unknown type: string Meta: description: Contains generic information such as WhatsApp Business API Client version. example: api_status: stable version: whatsapp-business-api-client-version properties: api_status: enum: - deprecated - experimental - stable type: string version: type: string title: Meta type: object Name: description: Full contact name example: first_name: John formatted_name: John Smith last_name: Smith properties: first_name: description: First name type: string formatted_name: description: Full name as it normally appears type: string last_name: description: Last name type: string prefix: description: Name preffix type: string suffix: description: Name suffix type: string required: - formatted_name title: Name type: object Org: description: Contact organization information example: company: WhatsApp department: Design title: Manager properties: company: description: Name of the contact's company type: string department: description: Name of the contact's department type: string title: description: Contact's business title type: string required: - company title: Org type: object Phone: example: phone: +1 (650) 555-1234 type: WORK wa_id: "16505551234" properties: phone: type: string type: description: "Standard Values: CELL, MAIN, IPHONE, HOME, WORK" type: string wa_id: description: WhatsApp ID type: string title: Phone type: object Profile-About: example: text: properties: text: description: |- Text to display in your profile's About section The max length for the string is 139 characters. type: string required: - text title: Set-Profile-About-Request type: object Profile-About-Settings: description: "" example: profile: about: text: your-profile-about-text properties: profile: $ref: "#/components/schemas/Profile-About-Settings-Profile" title: Root Type for Profile-About-Settings type: object Profile-About-Settings-Profile: description: "" example: about: text: your-profile-about-text properties: about: $ref: "#/components/schemas/Profile-About" title: Root Type for About-XXX type: object Profile-Photo-Settings: description: "" example: profile: photo: link: profile-photo-url properties: profile: properties: photo: properties: link: type: string type: object type: object title: Root Type for Profile-Photo-Settings type: object Profile-Photo-Settings-Profile: description: "" example: photo: link: profile-photo-url properties: photo: $ref: "#/components/schemas/Profile-Photo-Settings-Profile-Photo" title: Root Type for Profile-Photo-Settings-Profile type: object Profile-Photo-Settings-Profile-Photo: description: "" example: link: profile-photo-url properties: link: type: string title: Root Type for Profile-Photo-Settings-Profile-Photo type: object Provider: example: name: cert: method: < sms | voice > phone_number: pin: password: properties: data: description: The data that was returned by the /v1/settings/backup API call type: string password: description: The password you used in the /v1/settings/backup API call to encrypt the backup data type: string required: - password - data title: Restore-Settings-Request type: object Send-Message-Request-Body: example: preview_url: true recipient_type: individual text: body: your-text-message-content to: "{whatsapp-id}" type: text properties: audio: $ref: "#/components/schemas/Audio" contacts: description: "" items: $ref: "#/components/schemas/Contact" type: array document: $ref: "#/components/schemas/Document" hsm: $ref: "#/components/schemas/Hsm" image: $ref: "#/components/schemas/Image" location: $ref: "#/components/schemas/Location" preview_url: description: |- Specifying preview_url in the request is optional when not including a URL in your message. To include a URL preview, set preview_url to true in the message body and make sure the URL begins with http:// or https://. For more information, see the Sending URLs in Text Messages section. type: boolean recipient_type: default: individual description: |- Determines whether the recipient is an individual or a group Specifying recipient_type in the request is optional when the value is individual. However, recipient_type is required when using group. If sending a text message to a group, see the Sending Group Messages documentation. enum: - individual - group type: string text: $ref: "#/components/schemas/Text" to: description: When recipient_type is individual, this field is the WhatsApp ID (phone number) returned from contacts endpoint. When recipient_type is group, this field is the WhatsApp group ID. type: string ttl: type: object type: $ref: "#/components/schemas/Message-Type" video: $ref: "#/components/schemas/Video" required: - to title: Send-Text-Message-Request type: object Set-Shards-Request-Body: example: cc: phone_number: pin: shards: 32 properties: cc: type: string phone_number: type: string pin: type: string shards: enum: - "1" - "2" - "4" - "8" - "16" - "32" format: int32 type: integer required: - cc - phone_number - shards - pin title: Set-Shards-Request type: object Text: example: body: properties: body: type: string required: - body title: Text type: object Update-Group-Info-Request-Body: example: subject: properties: subject: type: string required: - subject title: Update-Group-Info-Request type: object Update-User-Request-Body: example: password: New Password properties: password: description: password type: string required: - password title: Update-User-Request type: object Upload-Media: description: "" example: id: f043afd0-f0ae-4b9c-ab3d-696fb4c8cd68 properties: id: type: string title: Root Type for Upload-Media type: object Upload-Media-Response: allOf: - $ref: "#/components/schemas/Response" - properties: media: items: $ref: "#/components/schemas/Upload-Media" type: array type: object description: "" example: media: - id: f043afd0-f0ae-4b9c-ab3d-696fb4c8cd68 title: Root Type for Upload-Media-Response type: object Url: description: "Standard Values: HOME, WORK" example: type: WORK url: https://www.facebook.com properties: type: description: "Standard Values: HOME, WORK" type: string url: description: URL type: string title: Root Type for Url type: object User-Login-Response: allOf: - $ref: "#/components/schemas/Response" - properties: users: items: $ref: "#/components/schemas/User-Login-Response-Item" type: array type: object description: "" example: users: - expires_after: 2018-03-01 15:29:26+00:00 token: eyJhbGciOHlXVCJ9.eyJ1c2VyIjoNTIzMDE2Nn0.mEoF0COaO00Z1cANo title: UserLoginResponse type: object User-Login-Response-Item: description: "" example: expires_after: 2018-03-01 15:29:26+00:00 token: eyJhbGciOHlXVCJ9.eyJ1c2VyIjoNTIzMDE2Nn0.mEoF0COaO00Z1cANo properties: expires_after: description: Token expiration timestamp. By default, this is 7 days. format: date-time type: string token: description: |- Authentication token to be used for all other WhatsApp Business API calls. The token must be sent in the authorization header in the format: Authorization: Bearer type: string title: UserLoginResponseItem type: object User-Response: allOf: - $ref: "#/components/schemas/Response" - properties: users: items: $ref: "#/components/schemas/User-Response-Item" type: array type: object description: "" example: users: - username: username title: Root Type for User-Create-Response type: object User-Response-Item: description: "" example: username: username properties: username: type: string title: Root Type for User-Create-Response-Item type: object User-Role: description: "" enum: - ROLE_ADMIN - ROLE_USER type: string Video: description: The media object containing a video oneOf: - $ref: "#/components/schemas/VideoById" - $ref: "#/components/schemas/VideoByProvider" title: Video type: object VideoById: example: caption: id: properties: caption: type: string id: type: string required: - caption - id title: VideoById type: object VideoByProvider: example: caption: link: provider: name: properties: max_concurrent_requests: default: 6 description: Configures the maximum number of inflight callback requests that are sent out. Can be set to 6 (default), 12, 18, or 24. enum: - "6" - "12" - "18" - "24" format: int32 type: integer url: description: Inbound and outbound notifications are routed to this URL. A HTTPS-based endpoint is required; HTTP will not work. type: string title: Webhooks type: object securitySchemes: bearerAuth: bearerFormat: token scheme: bearer type: http httpBasic: scheme: basic type: http