Register via bot signup
Creates a freemium Telnyx account through the agentic signup flow. The request must carry a valid answer to a previously issued bot challenge (bot_challenge_nonce and bot_challenge_answer), accept the terms of service, and echo the exact terms-and-conditions and privacy-policy URLs returned by the challenge endpoint. When EU consent enforcement is enabled, terms_of_service_eu and terms_and_conditions_eu_url are also required. On success a one-time sign-in (magic) link is emailed to the address provided; if the email address belongs to an existing account, a sign-in link is sent instead of creating a duplicate account. email may only be omitted when placeholder-email registration is enabled server-side. This endpoint is public and unauthenticated, gated by the freemium feature flags and per-country availability, and subject to per-IP and per-domain registration limits.
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const Success = await client.botSignup.create({
bot_challenge_answer: '35',
bot_challenge_nonce: 'c6feda4e-6501-4db9-a21f-665e5b4ce2ba',
privacy_policy_url: 'https://telnyx.com/privacy-policy',
terms_and_conditions_url: 'https://telnyx.com/terms-and-conditions-of-service',
terms_of_service: 'True',
});
console.log(Success.success);import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
success = client.bot_signup.create(
bot_challenge_answer="35",
bot_challenge_nonce="c6feda4e-6501-4db9-a21f-665e5b4ce2ba",
privacy_policy_url="https://telnyx.com/privacy-policy",
terms_and_conditions_url="https://telnyx.com/terms-and-conditions-of-service",
terms_of_service="True",
)
print(success.success)
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"),
)
botSignup, err := client.BotSignup.New(
context.TODO(),
telnyx.BotSignupNewParams{
BotChallengeAnswer: "35",
BotChallengeNonce: "c6feda4e-6501-4db9-a21f-665e5b4ce2ba",
PrivacyPolicyURL: "https://telnyx.com/privacy-policy",
TermsAndConditionsURL: "https://telnyx.com/terms-and-conditions-of-service",
TermsOfService: true,
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", botSignup.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.botSignup.BotSignupCreateParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
BotSignupCreateParams params = BotSignupCreateParams.builder()
.botChallengeAnswer("35")
.botChallengeNonce("c6feda4e-6501-4db9-a21f-665e5b4ce2ba")
.privacyPolicyUrl("https://telnyx.com/privacy-policy")
.termsAndConditionsUrl("https://telnyx.com/terms-and-conditions-of-service")
.termsOfService(BotSignupCreateParams.TermsOfService.TRUE)
.build();
var response = client.botSignup().create(params);
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
success = telnyx.bot_signup.create(
bot_challenge_answer: "35",
bot_challenge_nonce: "c6feda4e-6501-4db9-a21f-665e5b4ce2ba",
privacy_policy_url: "https://telnyx.com/privacy-policy",
terms_and_conditions_url: "https://telnyx.com/terms-and-conditions-of-service",
terms_of_service: :True
)
puts(success)<?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 {
$success = $client->botSignup->create(
bot_challenge_answer: '35',
bot_challenge_nonce: 'c6feda4e-6501-4db9-a21f-665e5b4ce2ba',
privacy_policy_url: 'https://telnyx.com/privacy-policy',
terms_and_conditions_url: 'https://telnyx.com/terms-and-conditions-of-service',
terms_of_service: 'True',
);
var_dump($success);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx bot-signup create \
--api-key 'My API Key' \
--terms-of-service \
--terms-and-conditions-url https://telnyx.com/terms-and-conditions-of-service \
--privacy-policy-url https://telnyx.com/privacy-policy \
--bot-challenge-nonce c6feda4e-6501-4db9-a21f-665e5b4ce2ba \
--bot-challenge-answer 35curl --request POST \
--url https://api.telnyx.com/v2/bot_signup \
--header 'Content-Type: application/json' \
--data '
{
"email": "agent-owner@example.com",
"terms_of_service": true,
"terms_and_conditions_url": "https://telnyx.com/terms-and-conditions-of-service",
"privacy_policy_url": "https://telnyx.com/privacy-policy",
"bot_challenge_nonce": "c6feda4e-6501-4db9-a21f-665e5b4ce2ba",
"bot_challenge_answer": "35"
}
'{
"success": true,
"message": "A one-time sign-in link has been sent to your email address."
}{
"errors": [
{
"detail": "Bot challenge parameters are required"
}
]
}{
"errors": [
{
"detail": "Your registration cannot be accepted as it does not comply with our security standards. You may contact support for assistance."
}
]
}{
"errors": [
{
"code": "10005",
"title": "Resource not found",
"detail": "The requested resource or URL could not be found.",
"source": {
"pointer": "/"
},
"meta": {
"url": "https://developers.telnyx.com/docs/overview/errors/10005"
}
}
]
}{
"errors": [
{
"code": "10027",
"title": "Unprocessable Entity",
"detail": "Email is invalid",
"source": {
"pointer": "/email"
},
"meta": {
"url": "https://developers.telnyx.com/docs/overview/errors/10027"
}
}
]
}{
"errors": [
{
"code": "10011",
"title": "Too many requests",
"detail": "You have exceeded the maximum number of allowed requests.",
"source": {
"pointer": "/"
},
"meta": {
"url": "https://developers.telnyx.com/docs/overview/errors/10011"
}
}
]
}Body
Must be true to accept the terms of service.
true true
Must exactly match the terms-and-conditions URL returned by the challenge endpoint.
"https://telnyx.com/terms-and-conditions-of-service"
Must exactly match the privacy-policy URL returned by the challenge endpoint.
"https://telnyx.com/privacy-policy"
Nonce from a previously issued bot challenge.
"c6feda4e-6501-4db9-a21f-665e5b4ce2ba"
Answer to the issued bot challenge.
"35"
Email address for the new account. The magic link is sent here. May only be omitted when placeholder-email registration is enabled server-side.
"agent-owner@example.com"
EU terms-of-service acceptance. Required when EU consent enforcement is enabled.
true true
EU terms-and-conditions URL. Required when EU consent enforcement is enabled.
"https://telnyx.com/terms-and-conditions-of-service-eu"
Response
Registration accepted and a magic link emailed.
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 Success = await client.botSignup.create({
bot_challenge_answer: '35',
bot_challenge_nonce: 'c6feda4e-6501-4db9-a21f-665e5b4ce2ba',
privacy_policy_url: 'https://telnyx.com/privacy-policy',
terms_and_conditions_url: 'https://telnyx.com/terms-and-conditions-of-service',
terms_of_service: 'True',
});
console.log(Success.success);import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
success = client.bot_signup.create(
bot_challenge_answer="35",
bot_challenge_nonce="c6feda4e-6501-4db9-a21f-665e5b4ce2ba",
privacy_policy_url="https://telnyx.com/privacy-policy",
terms_and_conditions_url="https://telnyx.com/terms-and-conditions-of-service",
terms_of_service="True",
)
print(success.success)
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"),
)
botSignup, err := client.BotSignup.New(
context.TODO(),
telnyx.BotSignupNewParams{
BotChallengeAnswer: "35",
BotChallengeNonce: "c6feda4e-6501-4db9-a21f-665e5b4ce2ba",
PrivacyPolicyURL: "https://telnyx.com/privacy-policy",
TermsAndConditionsURL: "https://telnyx.com/terms-and-conditions-of-service",
TermsOfService: true,
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", botSignup.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.botSignup.BotSignupCreateParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
BotSignupCreateParams params = BotSignupCreateParams.builder()
.botChallengeAnswer("35")
.botChallengeNonce("c6feda4e-6501-4db9-a21f-665e5b4ce2ba")
.privacyPolicyUrl("https://telnyx.com/privacy-policy")
.termsAndConditionsUrl("https://telnyx.com/terms-and-conditions-of-service")
.termsOfService(BotSignupCreateParams.TermsOfService.TRUE)
.build();
var response = client.botSignup().create(params);
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
success = telnyx.bot_signup.create(
bot_challenge_answer: "35",
bot_challenge_nonce: "c6feda4e-6501-4db9-a21f-665e5b4ce2ba",
privacy_policy_url: "https://telnyx.com/privacy-policy",
terms_and_conditions_url: "https://telnyx.com/terms-and-conditions-of-service",
terms_of_service: :True
)
puts(success)<?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 {
$success = $client->botSignup->create(
bot_challenge_answer: '35',
bot_challenge_nonce: 'c6feda4e-6501-4db9-a21f-665e5b4ce2ba',
privacy_policy_url: 'https://telnyx.com/privacy-policy',
terms_and_conditions_url: 'https://telnyx.com/terms-and-conditions-of-service',
terms_of_service: 'True',
);
var_dump($success);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx bot-signup create \
--api-key 'My API Key' \
--terms-of-service \
--terms-and-conditions-url https://telnyx.com/terms-and-conditions-of-service \
--privacy-policy-url https://telnyx.com/privacy-policy \
--bot-challenge-nonce c6feda4e-6501-4db9-a21f-665e5b4ce2ba \
--bot-challenge-answer 35curl --request POST \
--url https://api.telnyx.com/v2/bot_signup \
--header 'Content-Type: application/json' \
--data '
{
"email": "agent-owner@example.com",
"terms_of_service": true,
"terms_and_conditions_url": "https://telnyx.com/terms-and-conditions-of-service",
"privacy_policy_url": "https://telnyx.com/privacy-policy",
"bot_challenge_nonce": "c6feda4e-6501-4db9-a21f-665e5b4ce2ba",
"bot_challenge_answer": "35"
}
'{
"success": true,
"message": "A one-time sign-in link has been sent to your email address."
}{
"errors": [
{
"detail": "Bot challenge parameters are required"
}
]
}{
"errors": [
{
"detail": "Your registration cannot be accepted as it does not comply with our security standards. You may contact support for assistance."
}
]
}{
"errors": [
{
"code": "10005",
"title": "Resource not found",
"detail": "The requested resource or URL could not be found.",
"source": {
"pointer": "/"
},
"meta": {
"url": "https://developers.telnyx.com/docs/overview/errors/10005"
}
}
]
}{
"errors": [
{
"code": "10027",
"title": "Unprocessable Entity",
"detail": "Email is invalid",
"source": {
"pointer": "/email"
},
"meta": {
"url": "https://developers.telnyx.com/docs/overview/errors/10027"
}
}
]
}{
"errors": [
{
"code": "10011",
"title": "Too many requests",
"detail": "You have exceeded the maximum number of allowed requests.",
"source": {
"pointer": "/"
},
"meta": {
"url": "https://developers.telnyx.com/docs/overview/errors/10011"
}
}
]
}