Start a hosted WhatsApp sign-up
curl --request POST \
--url https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"state": "order-77"
}
'import requests
url = "https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/"
payload = { "state": "order-77" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({state: 'order-77'})
};
fetch('https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'state' => 'order-77'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/"
payload := strings.NewReader("{\n \"state\": \"order-77\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"state\": \"order-77\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"state\": \"order-77\"\n}"
response = http.request(request)
puts response.read_body{
"url": "https://app.impellabs.tech/connect/TOKEN",
"expires_at": "2026-01-15T09:45:00+00:00",
"session_id": "1a2b3c4d-0000-4000-8000-000000000000"
}{
"detail": "<string>",
"code": "<string>",
"field": "<string>",
"error": {
"code": "<string>",
"message": "<string>"
}
}Tenants
Start a hosted WhatsApp sign-up
Answers 201 with a link to a page that runs Meta Embedded Signup for the business. The link works once, for 15 minutes. When the business finishes, the page sends it to the WhatsApp return URL that you set in the partner console, and the event channel.connected is sent to your webhook. A request without a return URL set answers 409 with code no_return_url. Needs the channels:write scope.
POST
/
api
/
v1
/
partner
/
tenants
/
{external_ref}
/
channels
/
whatsapp
/
signup-session
/
Start a hosted WhatsApp sign-up
curl --request POST \
--url https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"state": "order-77"
}
'import requests
url = "https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/"
payload = { "state": "order-77" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({state: 'order-77'})
};
fetch('https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'state' => 'order-77'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/"
payload := strings.NewReader("{\n \"state\": \"order-77\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"state\": \"order-77\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.impellabs.tech/api/v1/partner/tenants/{external_ref}/channels/whatsapp/signup-session/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"state\": \"order-77\"\n}"
response = http.request(request)
puts response.read_body{
"url": "https://app.impellabs.tech/connect/TOKEN",
"expires_at": "2026-01-15T09:45:00+00:00",
"session_id": "1a2b3c4d-0000-4000-8000-000000000000"
}{
"detail": "<string>",
"code": "<string>",
"field": "<string>",
"error": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
Path Parameters
Body
application/json
Response
Success