---
title: "Create a voice token"
method: POST
path: "/v3/voice/tokens"
tags: ["Voice"]
---

# Create a voice token

`POST /v3/voice/tokens`

## Request

- Base URL: `https://api.sent.dm`
- URL: `https://api.sent.dm/v3/voice/tokens`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Mints a short-lived token for one of your app users. Call this from your backend and return the token to your app, which passes it to the voice client SDK to register. The identity is bound to the given number, or to your default app-call number when omitted, and calls placed by that identity are routed through the bound number. Minting again re-binds the identity, so an identity can move between numbers.

## Headers

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

## Request body

- SentDmServicesEndpointsCustomerAPIv3VoiceTokensRequestsCreateVoiceTokenRequest: Request to mint a voice token for one of your app users
  - `sandbox` boolean: Sandbox flag - when true, the operation is simulated without side effects Useful for testing integrations without actual execution
  - `identity` string: Your identifier for the app user, such as an agent or account id. Letters, digits, hyphens and underscores only, up to 200 characters.
  - `number` string, nullable: One of your voice-enabled phone numbers in E.164 format. Calls placed by this identity are routed through that number. Omit to use your default app-call number.
  - `ttl` integer, nullable: Token lifetime in seconds. Defaults to 600 and cannot exceed 3600.

## Response `200`

Token minted and identity bound to the number

- SentDmServicesEndpointsCustomerAPIv3SharedApiResponseOfVoiceTokenResponse: Standard API response envelope for all v3 endpoints
  - `success` boolean: Indicates whether the request was successful
  - `data` SentDmServicesEndpointsCustomerAPIv3VoiceTokensResponsesVoiceTokenResponse: A short-lived token your app passes to the voice client SDK to register
    - `token` string: The signed token. Hand it to the client SDK unchanged. Treat it as opaque: read the identity, number, and expiry from this response, not from the token.
    - `identity` string: The identity the token was minted for
    - `number` string: The phone number this identity is now bound to, in E.164 format
    - `expires_at` string, date-time: When the token expires (UTC)
  - `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

- `400`: Invalid identity, ttl out of range, or number not voice-enabled for this account
- `401`: Unauthorized - Invalid API credentials
- `403`: Phone calls are not enabled for this account
- `500`: Internal server error

## Changes

- **2026-10-23** `1a451bbb5736`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sentdm/apis/sent-dm-api-v3/changes/v3/voice/tokens/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)
