---
title: "Test a voice number's callback URL"
method: POST
path: "/v3/channels/voice/{number}/test"
tags: ["Channels", "Voice"]
---

# Test a voice number's callback URL

`POST /v3/channels/voice/{number}/test`

## Request

- Base URL: `https://api.sent.dm`
- URL: `https://api.sent.dm/v3/channels/voice/{number}/test`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Sends a synthetic call.request question, flagged "test": true, to the number's callback URL, signed with that number's real secret, and reports what came back. Use it to build and debug your callback endpoint without placing calls: no call is placed, nothing is billed, and nothing is stored. One attempt with the same deadline as a live call, no retry. The outcome is ok when your endpoint answered 2xx with a valid answer; otherwise it is timeout, connection_failed, http_error or invalid_answer, with the reason and, for an invalid answer, the field at fault. The number is the E.164 value in the path with the plus sign URL-encoded (`%2B`).

With `sandbox: true` nothing is sent: the verdict comes back ok with `202` and no request or response in it.

## Path parameters

- `number` string, required

## Headers

- `Idempotency-Key` string
- `x-profile-id` string, uuid

## Request body

- SentDmServicesEndpointsCustomerAPIv3ChannelsRequestsTestVoiceCallbackRequest: Base request for mutation operations (POST, PUT, PATCH) with sandbox mode support
  - `sandbox` boolean: Sandbox flag - when true, the operation is simulated without side effects Useful for testing integrations without actual execution

## Response `200`

The test ran. Read outcome to see whether your endpoint passed

- SentDmServicesEndpointsCustomerAPIv3SharedApiResponseOfVoiceCallbackTestResponse: Standard API response envelope for all v3 endpoints
  - `success` boolean: Indicates whether the request was successful
  - `data` SentDmServicesEndpointsCustomerAPIv3ChannelsResponsesVoiceCallbackTestResponse: The verdict of a test question sent to your callback URL
    - `outcome` string: What happened: ok, timeout, connection_failed, http_error or invalid_answer
    - `call_id` string: The call id the test question carried. It does not exist anywhere else and cannot be looked up.
    - `request` SentDmServicesEndpointsCustomerAPIv3ChannelsResponsesVoiceCallbackTestRequestInfo: The test question exactly as it was sent
      - `url` string: The callback URL that was called
      - `headers` object: Every header Sent added, the signature included, so you can compare against what your endpoint verified. The signing secret itself is never included.
      - `body` string: The request body byte for byte. This is what the signature covers.
    - `response` SentDmServicesEndpointsCustomerAPIv3ChannelsResponsesVoiceCallbackTestResponseInfo: What your endpoint answered
      - `status_code` integer: The HTTP status your endpoint returned
      - `body` string, nullable: The start of the raw response body, capped at 2048 characters
    - `answer` SystemTextJsonJsonElement
    - `error` SentDmServicesEndpointsCustomerAPIv3ChannelsResponsesVoiceCallbackTestErrorInfo: Why the test did not end with ok
      - `reason` string: Machine-readable reason, such as timeout, http_error, malformed_json, missing_action or unknown_action
      - `path` string, nullable: Dotted path of the answer field at fault, such as action.action, when one field is to blame
      - `message` string: What to fix
  - `error` SentDmServicesEndpointsCustomerAPIv3SharedApiError: Error information
    - `code` string: Machine-readable error code (e.g., "RESOURCE_001")
    - `message` string: Human-readable error message
    - `details` object, nullable: Additional validation error details (field-level errors)
    - `doc_url` string, nullable: URL to documentation about this error
  - `meta` SentDmServicesEndpointsCustomerAPIv3SharedApiMeta: Request and response metadata
    - `request_id` string: Unique identifier for this request (for tracing and support)
    - `timestamp` string, date-time: Server timestamp when the response was generated
    - `version` string: API version used for this request

## Other responses

- `202`: Sandbox: nothing was sent
- `400`: Invalid number, or number not voice-enabled for this account
- `401`: Unauthorized - Invalid API credentials
- `403`: The account has no voice-enabled number
- `500`: Internal server error

## Changes

- **2026-10-16** `6c829543a93e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sentdm/apis/sent-dm-api-v3/changes/v3/channels/voice/:number/test/post.md)

---

[API](https://skmtc.dev/sentdm/apis/sent-dm-api-v3.md) - [All operations](https://skmtc.dev/sentdm/apis/sent-dm-api-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/sentdm/apis/sent-dm-api-v3/revisions/bdcca958cac7?raw)
