---
title: "Enable phone calling on a number"
method: POST
path: "/v1/phone-numbers/{id}/voice"
tags: ["Voice"]
---

# Enable phone calling on a number

`POST /v1/phone-numbers/{id}/voice`

Turns on regular phone (PSTN) calling for one of your numbers and
configures how inbound calls are handled. Inbound calls route to
`forwardTo`: your own AI voice agent (Vapi/Retell), a phone, or a SIP
endpoint. Optional extras: voicemail, business-hours windows, an IVR
menu, a caller blocklist, recording, and transcription. A number can
also be voice-enabled with no forward (outbound-only).

Idempotent, and doubles as the settings update: only fields present in
the body are written. Omitting `forwardTo` preserves the current
destination; sending an empty string clears it.

## Path parameters

- `id` string, required

## Request body

- object
  - `forwardTo` string — tel:+E164, sip:..., or wss://... destination for inbound calls. Empty string clears the forward (outbound-only); omitted preserves the current one.
  - `recordingEnabled` boolean
  - `transcriptionEnabled` boolean
  - `transcriptionLanguage` 'auto' | 'en' | 'es'
  - `voicemailEnabled` boolean — Voicemail is taken when there's no live destination. Default on.
  - `voicemailGreeting` string — Custom spoken greeting; empty string restores the default.
  - `businessHoursEnabled` boolean — Outside the windows, inbound skips the forward and goes to voicemail. Off = 24/7.
  - `businessHoursTimezone` string — IANA timezone the windows are evaluated in.
  - `businessHours` object[]
    - `day` integer, required — 0 = Sunday.
    - `open` string, required
    - `close` string, required
  - `blockedCallers` string[] — E.164 numbers rejected before answer. Replaces the whole list; bare 10-digit values are normalized as US numbers.
  - `forwardCallerId` 'business' | 'caller' — Caller ID on the forwarded leg: your number (`business`) or the original caller's (`caller`).
  - `ivrEnabled` boolean — IVR menu (supersedes the plain forward within business hours).
  - `ivrPrompt` string
  - `ivrOptions` object[]
    - `digit` string, required
    - `forwardTo` string, required — tel:+E164, sip:..., or wss://... destination for this digit.
    - `label` string

## Response `200`

Voice enabled; the full effective voice config is echoed back.

- object
  - `enabled` boolean
  - `phoneNumber` string
  - `pstnForwardTo` string, nullable
  - `recordingEnabled` boolean
  - `transcriptionEnabled` boolean
  - `transcriptionLanguage` 'auto' | 'en' | 'es'
  - `voicemailEnabled` boolean
  - `voicemailGreeting` string, nullable
  - `businessHoursEnabled` boolean
  - `businessHoursTimezone` string, nullable
  - `businessHours` object[]
    - `day` integer
    - `open` string
    - `close` string
  - `blockedCallers` string[]
  - `forwardCallerId` 'business' | 'caller'
  - `ivrEnabled` boolean
  - `ivrPrompt` string, nullable
  - `ivrOptions` object[]
    - `digit` string
    - `forwardTo` string
    - `label` string

## Other responses

- `401` — Unauthorized
- `404` — Number not found
- `422` — This number is hosted by your own carrier (brought via WhatsApp embedded signup), so calls can't be enabled on it.

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/versions/f81ca70ea6b9/schema)
