Skip to main content

Positus Architecture - WhatsApp Business API

You can integrate directly with the Positus API (above) or use a customer service platform such as Robbu’s Invenio, without building the integration yourself.
Production Token: Your token will be generated and provided by Positus; it grants access to all of your WhatsApp Business API numbers. The key will be provided after activation of each WhatsApp Business API number.Sandbox - Development Token: You can generate your token directly through http://studio.posit.us/.

Postman file

The Postman is a tool whose purpose is to test RESTful services (Web APIs) by sending HTTP requests and analyzing their responses. Download Postman App

Production API

Positus API (2026).postman_collection.json

Development API (Sandbox)

Positus API Sandbox (2026).postman_collection.json

messages

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/messages Use this route to send text messages via WhatsApp

Path Parameters

Headers

Request Body

Response

Recipient: phone (to) or BSUID (recipient)

Every message-sending route accepts two ways to identify the recipient. Use one OR the other:
The BSUID is a user identifier scoped to the business portfolio, delivered in the user_id field of webhooks. It is useful when the user has adopted a username and the phone number (wa_id) may not be present in the payload. Learn the concept in BSUID and user identifiers.
Precedence when to and recipient coexist: if you send both fields in the same request, the phone number (to) takes precedence — the message is delivered to the phone. Therefore, send only one of them: either to (phone) or recipient (BSUID/parent BSUID).
On-premises numbers accept only to (phone). Sending via recipient (BSUID) is available only for numbers on the Cloud API (Meta).

Request Body (sending to a BSUID)

Response (sending to a BSUID)

The response is the same as other sends, but the contacts block — forwarded from Meta — carries the identifier you used in input, along with the phone number (wa_id, when available) and the BSUID (user_id).
Special cases that require a phone number (BSUID not accepted): authentication templates of the one-tap, zero-tap and copy-code types. In these cases, always provide to (phone). If you send a BSUID where it is not supported, Meta responds with error 131062.

Typing indicator

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/messages/typing-indicator Displays the “typing…” indicator to the customer and marks the received message as read. Provide the message_id of the message sent by the customer. The indicator is automatically dismissed after about 25 seconds or as soon as you reply.

Path Parameters

Headers

Request Body

Response

HSM

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/messages Use this route to send notification messages via WhatsApp HSM - These are message templates pre-approved by Facebook; they can be text, media, or file messages.
The recipient can be provided by phone (to) or by BSUID (recipient), as described in Recipient: phone (to) or BSUID (recipient). Exception: authentication templates of the one-tap, zero-tap and copy-code types require the phone (to) and do not accept BSUID.

Path Parameters

Headers

Request Body

Response

Contact

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/messages Share contacts

Path Parameters

Headers

Request Body

Response

Location

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/messages Share locations

Path Parameters

Headers

Request Body

Response

Image

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/messages Share images

Path Parameters

Headers

Request Body

Response

Document

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/messages Share documents

Path Parameters

Headers

Request Body

Response

Video

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/messages Share videos

Path Parameters

Headers

Request Body

Response

Audio

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/messages Share audios

Path Parameters

Headers

Request Body

Response

Sticker

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/messages Share stickers. The sticker format must be exactly 512x512

Path Parameters

Headers

Request Body

Response

Upload Media

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/send-media Uploads a file to Meta and returns the media ID. Use this ID in the id field of media messages (image, document, video, audio, sticker) when you do not want to expose a public URL in the link field.

Path Parameters

Headers

Request Body

The request is multipart/form-data, with the file in the media field.
Positus validates only the file size. The accepted types are defined by Meta according to the message type you intend to send (for example, image/jpeg, image/png, application/pdf, video/mp4, audio/ogg). A file of an unsupported type is refused by Meta and returns 422.

Response

The id field is the media ID at Meta, ready to be used when sending messages.
Example of sending a message using the returned id:
The media ID is temporary at Meta. Upload the file and send the message right after, without storing the ID for long periods.

Get Media by ID

GET https://api.positus.global/v2/whatsapp/numbers/{{chave}}/media-by-id/{{messages.type.id}} Returns the media metadata as JSON, including a Positus URL to download the file.
Difference from Download Media:
  • GET /media/{{id}} returns the binary content of the file, with the matching Content-Type.
  • GET /media-by-id/{{id}} returns a JSON with id, url, mime_type, sha256, size, and messaging_product. Use this route when you prefer to receive a link to download the file later instead of receiving the bytes in the response itself.

Path Parameters

Headers

Response

If the media has already been downloaded before, Positus responds straight from its own storage, without calling Meta. In that case the sha256 field comes as null. Otherwise, Positus fetches the media from Meta, stores the file, and returns the complete metadata.
The media ID at Meta is ephemeral and each query consumes the application request quota. Download and keep the file in your application instead of querying the same ID repeatedly. When Meta responds 429, respect the Retry-After header before trying again.

Download Media

GET https://api.positus.global/v2/whatsapp/numbers/{{chave}}/media/{{messages.type.id}} Download the media files. Use the media id received in the webhook notification.

Path Parameters

Headers

Response

Returns the binary content of the media, with the Content-Type header matching the file type (e.g., image/jpeg, audio/ogg, application/pdf).

Interactive Messages - List

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/messages List Messages: Messages including a menu of up to 10 options. This type of message offers a simpler and more consistent way for users to make a selection when interacting with a business. List or reply button messages cannot be used as notifications. Currently, they can only be sent within 24 hours of the last message sent by the user. If you try to send a message outside the 24-hour window, you will receive an error message.

Path Parameters

Headers

Request Body

Response

Interactive Messages - Buttons

POST https://api.positus.global/v2/whatsapp/numbers/{{chave}}/messages Reply buttons: Messages including up to 3 options — each option is a button. This type of message offers a faster way for users to make a selection from a menu when interacting with a business. Reply buttons provide the same user experience as interactive templates with buttons. List or reply button messages cannot be used as notifications. Currently, they can only be sent within 24 hours of the last message sent by the user. If you try to send a message outside the 24-hour window, you will receive an error message.

Path Parameters

Headers

Request Body

Response