---
title: "Issue a bot challenge"
method: POST
path: "/v2/bot_challenge"
tags: ["Bot Signup"]
---

# Issue a bot challenge

`POST /v2/bot_challenge`

## Request

- Base URL: `https://api.telnyx.com/v2`
- URL: `https://api.telnyx.com/v2/v2/bot_challenge`
- Auth: none required

Generates a reverse-CAPTCHA challenge used to gate the bot signup flow. A random active problem is selected from the pool; math problems are returned obfuscated (case randomization, symbol injection, spacing noise) with an unobfuscated rounding instruction appended, while string and binary problems are returned as-is. The response contains a single-use nonce, the problem text, and the current terms-and-conditions and privacy-policy URLs, which must be echoed back on the signup request. Challenges expire after a short window (10 minutes by default) and can only be answered once. This endpoint is public and unauthenticated.

## Request body

- BotChallengeRequest: Optional self-reported metadata about the LLM solving the challenge. Analytics only; values are truncated to 50 characters.
  - `llm_model_name` string: Name of the LLM the client is using.
  - `llm_parameter_count` string: Parameter count of the client LLM.
  - `llm_quantization` string: Quantization of the client LLM.

## Response `201`

Challenge issued.

- BotChallengeResponse
  - `data` object, required
    - `nonce` string, uuid, required: Single-use challenge identifier. Submit it as `bot_challenge_nonce` on the signup request.
    - `problem` string, required: Problem text to solve. Math problems are obfuscated and end with an unobfuscated rounding instruction; string and binary problems are returned as-is.
    - `challenge_type` 'math' | 'string' | 'binary', required: Type of challenge.
    - `precision` integer: Decimal places expected in the answer. Present only for math challenges.
    - `terms_and_conditions_url` string, required: Current terms-and-conditions URL. Echo this back on the signup request.
    - `privacy_policy_url` string, required: Current privacy-policy URL. Echo this back on the signup request.

## Other responses

- `400`: The JSON request body could not be parsed.
- `503`: No bot challenge problems are currently available.

## Changes

- **2026-10-15** `a72569d69430`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/team-telnyx/apis/telnyx-api/changes/v2/bot_challenge/post.md)

---

[API](https://skmtc.dev/team-telnyx/apis/telnyx-api.md) - [All operations](https://skmtc.dev/team-telnyx/apis/telnyx-api/llms.txt) - [OpenAPI document](https://skmtc.dev/team-telnyx/apis/telnyx-api/revisions/0f17b8167873?raw)
