Creating a session via API
This request opens a WhatsApp session so you can link an account. After it opens, authorize the session in the WhatsApp mobile app with a QR code. When you no longer need the session, close it with session-delete.
Request command
To create a session, send a POST request to:
https://app.whatsgate.org/api/v1/session-create
Request body object for QR authorization
The request body must contain:
{
"name" : "My WhatsApp",
"callback" : "https://callback.my/script.handler"
}
- name - WhatsApp name in the system (for easier identification)
- callback - URL of the incoming events handler (optional, can be set later via set-hook)
Request body object for CODE authorization
The request body must contain:
{
"name" : "My WhatsApp",
"callback" : "https://callback.my/script.handler",
"auth_type" : "CODE",
"number" : "19999999999"
}
- name - WhatsApp name in the system (for easier identification)
- callback - URL of the incoming events handler (optional, can be set later via set-hook)
- auth_type - authorization type set to code. In this mode, phone number becomes required.
- number - phone number to connect in 7XXXXXXXXXX format
Response object
Successful response object
{
"result": "OK",
"data" : {
"id": 151,
"name": "My WhatsApp",
"unique_id": "6345454545454",
"status": "PENDING",
"callback": "https://callback.my/script.handler",
"date_add": "2022-10-11 19:30:14",
"qr": null,
"status_name": "Initialization",
"pushname": null,
"wid": null,
"qr_link": "https://whatsgate.org/qr/6345454545454"
}
}
- result - contains “OK” when the request succeeds.
- data - contains created session object including its unique identifier unique_id and QR authorization link qr_link.
- qr or code depends on selected authorization type. If code authorization is selected, the code is returned in code. Field qr_link points to the authorization code page.
QR authorization window
The QR authorization window is available at:
https://app.whatsgate.org/qr/<unique_id>
For convenience, this link is returned in qr_link when creating a session. The QR code in this window is updated periodically and changes to a success or error image after authorization.
Embedding the QR page
This page can be embedded into your app via iframe, and parent page can receive messages from it. Embedding example:
<h1>QR test code</h1>
<iframe src="https://app.whatsgate.org/qr/6345454545454" width="310" height="310" style="border: none;">
</iframe>
<div class="log" id="log">
</div>
<script>
window.addEventListener("message", function(event) {
console.log(event);
if (event.origin !== 'https://app.whatsgate.org') {
// something came from an unknown domain; ignore it
return;
}
if(typeof event.data !== 'object') {
// message must be an object
return;
}
if(!('module' in event.data) && event.data.module !== 'qr'){
// object must contain module field with value qr
return;
}
//if we're here, the message is valid; output it
console.log( "received: " + event.data.message);
//append message to parent-page log
document.getElementById('log').append("received: " + event.data.message, document.createElement("br"));
});
</script>
The message object is in event.data and has this format:
{
"module" : "qr",
"message" : "<message>"
}
- module - always has value qr, to identify relevant messages
- message - can have the following values:
- loading - session initialization and QR code loading; sent at page load start
- qr - QR code has been generated and displayed; sent each time code refreshes
- success - device authorized successfully; QR code is hidden
- error - authorization error occurred; try again
- broken - attempt to open a window with non-existing or closed session identifier

