Create a Whatsapp hosted signup
Create a time-limited onboarding URL on the Telnyx-hosted Embedded Signup page for a Tech Provider’s end customer. Set signup_type to coexistence to launch Meta’s WhatsApp Business app coexistence flow instead of standard Cloud API onboarding.
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.whatsapp.hostedSignups.create({
app_id: '123456789012345',
});
console.log(response.data);import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.whatsapp.hosted_signups.create(
app_id="123456789012345",
)
print(response.data)
package main
import (
"context"
"fmt"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
func main() {
client := telnyx.NewClient(
option.WithAPIKey("My API Key"),
)
hostedSignup, err := client.Whatsapp.HostedSignups.New(
context.TODO(),
telnyx.WhatsappHostedSignupNewParams{
AppID: "123456789012345",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", hostedSignup.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.whatsapp.hostedSignups.HostedSignupCreateParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
HostedSignupCreateParams params = HostedSignupCreateParams.builder()
.appId("123456789012345")
.build();
var response = client.whatsapp().hostedSignups().create(params);
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.whatsapp.hosted_signups.create(app_id: "123456789012345")
puts(response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$response = $client->whatsapp->hostedSignups->create(
app_id: '123456789012345',
);
var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx whatsapp:hosted-signups create \
--api-key 'My API Key' \
--app-id 123456789012345curl --request POST \
--url https://api.telnyx.com/v2/whatsapp/hosted_signups \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"app_id": "123456789012345",
"signup_type": "coexistence"
}
'{
"data": {
"id": "0192345a-7b8c-7d9e-0f12-3456789abcde",
"record_type": "whatsapp_jwt",
"app_id": "123456789012345",
"created_at": "2026-07-08T12:00:00Z",
"expires_at": "2026-07-09T12:00:00Z",
"jwt": "eyJhbGciOiJSUzI1NiIs...",
"url": "https://acct.fyi?token=eyJhbGciOiJSUzI1NiIs...",
"solution_id": "987654321098765"
}
}{
"errors": [
{
"code": "10015",
"title": "Bad request",
"detail": "expires_at must be at most 3 days in the future"
}
]
}{
"errors": [
{
"code": "string",
"title": "string",
"detail": "string",
"source": {
"pointer": "/data/attributes/phone_number",
"parameter": "string"
}
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Meta App ID linked to the Telnyx account. The app must be enabled.
"123456789012345"
When the onboarding URL expires, in RFC 3339 format. Must be in the future and at most 3 days ahead. Defaults to 24 hours after creation.
"2026-07-09T12:00:00Z"
Onboarding flow the hosted page launches. Use coexistence for a number that remains active in the WhatsApp Business app.
standard, coexistence "coexistence"
Response
Hosted signup created
Show child attributes
Show child attributes
Was this page helpful?
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.whatsapp.hostedSignups.create({
app_id: '123456789012345',
});
console.log(response.data);import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.whatsapp.hosted_signups.create(
app_id="123456789012345",
)
print(response.data)
package main
import (
"context"
"fmt"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
func main() {
client := telnyx.NewClient(
option.WithAPIKey("My API Key"),
)
hostedSignup, err := client.Whatsapp.HostedSignups.New(
context.TODO(),
telnyx.WhatsappHostedSignupNewParams{
AppID: "123456789012345",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", hostedSignup.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.whatsapp.hostedSignups.HostedSignupCreateParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
HostedSignupCreateParams params = HostedSignupCreateParams.builder()
.appId("123456789012345")
.build();
var response = client.whatsapp().hostedSignups().create(params);
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.whatsapp.hosted_signups.create(app_id: "123456789012345")
puts(response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$response = $client->whatsapp->hostedSignups->create(
app_id: '123456789012345',
);
var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx whatsapp:hosted-signups create \
--api-key 'My API Key' \
--app-id 123456789012345curl --request POST \
--url https://api.telnyx.com/v2/whatsapp/hosted_signups \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"app_id": "123456789012345",
"signup_type": "coexistence"
}
'{
"data": {
"id": "0192345a-7b8c-7d9e-0f12-3456789abcde",
"record_type": "whatsapp_jwt",
"app_id": "123456789012345",
"created_at": "2026-07-08T12:00:00Z",
"expires_at": "2026-07-09T12:00:00Z",
"jwt": "eyJhbGciOiJSUzI1NiIs...",
"url": "https://acct.fyi?token=eyJhbGciOiJSUzI1NiIs...",
"solution_id": "987654321098765"
}
}{
"errors": [
{
"code": "10015",
"title": "Bad request",
"detail": "expires_at must be at most 3 days in the future"
}
]
}{
"errors": [
{
"code": "string",
"title": "string",
"detail": "string",
"source": {
"pointer": "/data/attributes/phone_number",
"parameter": "string"
}
}
]
}