---
title: "Technical test send of a campaign"
locale: en
url: https://tlg.builera.app/en/docs/reference/rest/campaigns.test
verified: 2026-10-24
app_version: "2.0"
generated: true
---

# Technical test send of a campaign

Technical test send (required): sends the campaign's main-line messages (up to 5 send / file steps, rendered with {a|b} choices and variables for that chat) once to a one-to-one chat of one of its sending accounts, through the normal safety gate. A real send — pick a chat of someone who agreed to receive tests. campaigns.start / campaigns.publish refuse with code revision.not_tested until the latest test of exactly the current draft is accepted; any edit to the sequence, topic, goal, senders or audience needs a new test. Follow it with campaigns.test_status.

Technical test send (required): sends the campaign's main-line messages (up to 5 send / file steps, rendered with {a|b} choices and variables for that chat) once to a one-to-one chat of one of its sending accounts, through the normal safety gate. A real send — pick a chat of someone who agreed to receive tests. campaigns.start / campaigns.publish refuse with code revision.not_tested until the latest test of exactly the current draft is accepted; any edit to the sequence, topic, goal, senders or audience needs a new test. Follow it with campaigns.test_status.

## Overview

| Name | Value |
| --- | --- |
| Code | `campaigns.test` |
| Scope needed | `campaigns.run` |
| Risk | Write |
| May need confirmation | No |
| Runs as | Answers right away |
| Needs `Idempotency-Key` | Yes |
| Member roles allowed | `owner`, `manager` |
| In the app | Campaigns → Compose → Test send |

## Input fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `uuid` | Yes |   |
| `conversationId` | `uuid` | Yes |   |

## Example request

```bash
curl -X POST https://tlg.builera.app/api/public/v2/ops/campaigns.test \
  -H "Authorization: Bearer $TELEGRAM_AUTO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: <unique key per operation>" \
  -d '{"id":"00000000-0000-0000-0000-000000000000","conversationId":"00000000-0000-0000-0000-000000000000"}'
```

## Output fields (`data`)

| Field | Type | Required |
| --- | --- | --- |
| `ok` | `true` | Yes |
| `test` | `object` | Yes |

## Example answer

```json
{
  "data": {
    "ok": true,
    "test": {
      "id": "00000000-0000-4000-8000-000000000000",
      "status": "failed",
      "current": true,
      "accountId": "00000000-0000-4000-8000-000000000000",
      "conversationId": "00000000-0000-4000-8000-000000000000",
      "messages": 1,
      "detail": "text",
      "createdAt": "2026-10-22T12:00:00.000Z",
      "settledAt": "2026-10-22T12:00:00.000Z"
    }
  }
}
```

## Using it over MCP

Not listed on any profile: call `tools_describe` then `tools_run` with `code: "campaigns.test"`. Tool name when listed: `campaigns_test`.
