> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voxo.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Voice Extension

> Create a voice extension (with optional device, fax, and user invite)



## OpenAPI

````yaml https://api.voxo.co/v2/docs/openapi.json post /v2/admin/extensions/voice/
openapi: 3.1.0
info:
  title: VOXO API
  description: VOXO Communication Platform API
  version: 2.0.0
servers:
  - url: https://api.voxo.co
security:
  - bearerAuth: []
paths:
  /v2/admin/extensions/voice/:
    post:
      tags:
        - Extensions
      summary: Create Voice Extension
      description: Create a voice extension (with optional device, fax, and user invite)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tenantId:
                  type: number
                  exclusiveMinimum: 0
                name:
                  type: string
                  minLength: 3
                number:
                  type: string
                  minLength: 2
                  maxLength: 10
                  pattern: ^\d+$
                email:
                  anyOf:
                    - type: string
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                    - type: string
                      enum:
                        - ''
                sendInvite:
                  default: 0
                  type: number
                  minimum: 0
                  maximum: 1
                emergencyLocationId:
                  type: number
                  exclusiveMinimum: 0
                emergencyLocation:
                  anyOf:
                    - type: string
                    - type: 'null'
                recording:
                  type: string
                  enum:
                    - yeschange
                    - 'no'
                    - nochange
                recordingEmail:
                  anyOf:
                    - type: string
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                    - type: string
                      enum:
                        - ''
                callerIdNumber:
                  type: string
                  pattern: ^[1-9]\d{9}$
                branchId:
                  type: number
                  exclusiveMinimum: 0
                enableMeet:
                  default: 1
                  type: number
                  minimum: 0
                  maximum: 1
                enableTranscription:
                  default: 1
                  type: number
                  minimum: 0
                  maximum: 1
                enableDirectFax:
                  default: 0
                  type: number
                  minimum: 0
                  maximum: 1
                faxCallerIdNumber:
                  type: string
                  pattern: ^[1-9]\d{9}$
                device:
                  type: object
                  properties:
                    deviceModelId:
                      type: number
                      exclusiveMinimum: 0
                    name:
                      type: string
                      minLength: 3
                    mac:
                      type: string
                      pattern: ^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
                  required:
                    - deviceModelId
                    - name
                    - mac
                  additionalProperties: false
              required:
                - tenantId
                - name
                - number
                - emergencyLocationId
                - recording
                - recordingEmail
              additionalProperties: false
      responses:
        '200':
          description: Created voice extension
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: number
                    description: Extension ID
                  name:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Extension name
                  number:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Extension number
                  email:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Extension email
                  peerName:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: SIP peer name
                  dnd:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Do not disturb state
                  callerIdNumber:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Outbound caller ID number
                  enableMeet:
                    type: number
                    description: Meet enabled (1 = yes, 0 = no)
                  enableTranscription:
                    type: number
                    description: Transcription enabled (1 = yes, 0 = no)
                  trunk:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Trunk state
                  trunkHost:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Trunk host
                  trunkCallerIdSource:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Trunk caller ID source
                  trunkEmergencyCallerIdOverride:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Trunk emergency caller ID override
                  callLimit:
                    anyOf:
                      - type: number
                      - type: 'null'
                    description: Concurrent call limit
                  mailbox:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Mailbox address
                  recording:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Call recording mode
                  dialTimeout:
                    anyOf:
                      - type: number
                      - type: 'null'
                    description: Inbound ring timeout (seconds)
                  outboundDialPrefix:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Outbound dial prefix
                  enableDirectFax:
                    type: number
                    description: Direct fax enabled (1 = yes, 0 = no)
                  recordingEmail:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Recording delivery email
                  includeInDialByName:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Dial-by-name inclusion
                  includeInPhonebook:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Phonebook inclusion
                  enableForwarding:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Forwarding state
                  emergencyLocationComment:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Free-text emergency location comment
                  tenant:
                    type: object
                    properties:
                      id:
                        type: number
                      name:
                        type: string
                    required:
                      - id
                      - name
                    additionalProperties: false
                    description: Owning tenant
                  branch:
                    type: object
                    properties:
                      id:
                        type: number
                      name:
                        type: string
                    required:
                      - id
                      - name
                    additionalProperties: false
                    description: Branch
                  routingProfile:
                    type: object
                    properties:
                      id:
                        type: number
                      name:
                        anyOf:
                          - type: string
                          - type: 'null'
                      type:
                        type: string
                    required:
                      - id
                      - name
                      - type
                    additionalProperties: false
                    description: Routing profile
                  musicOnHold:
                    anyOf:
                      - type: object
                        properties:
                          id:
                            type: number
                          name:
                            type: string
                        required:
                          - id
                          - name
                        additionalProperties: false
                      - type: 'null'
                    description: Music on hold
                  user:
                    anyOf:
                      - type: object
                        properties:
                          id:
                            type: number
                          email:
                            type: string
                        required:
                          - id
                          - email
                        additionalProperties: false
                      - type: 'null'
                    description: Linked user
                  efaxUser:
                    anyOf:
                      - type: object
                        properties:
                          id:
                            type: number
                          name:
                            type: string
                          email:
                            type: string
                          callerIdNumber:
                            type: string
                        required:
                          - id
                          - name
                          - email
                          - callerIdNumber
                        additionalProperties: false
                      - type: 'null'
                    description: eFax user mapping
                  emergencyLocation:
                    anyOf:
                      - type: object
                        properties:
                          id:
                            type: number
                          address: {}
                        required:
                          - id
                          - address
                        additionalProperties: false
                      - type: 'null'
                    description: Emergency location
                  devices:
                    default: []
                    description: Assigned devices
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: number
                        name:
                          type: string
                        mac:
                          type: string
                      required:
                        - id
                        - name
                        - mac
                      additionalProperties: false
                  noAnswerDestinations:
                    default: []
                    description: No-answer routing
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: number
                        destType:
                          type: string
                        order:
                          type: number
                        typeSrc:
                          type: string
                        name:
                          anyOf:
                            - type: string
                            - type: 'null'
                        number:
                          anyOf:
                            - type: string
                            - type: 'null'
                      required:
                        - id
                        - destType
                      additionalProperties: {}
                  busyDestinations:
                    default: []
                    description: Busy routing
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: number
                        destType:
                          type: string
                        order:
                          type: number
                        typeSrc:
                          type: string
                        name:
                          anyOf:
                            - type: string
                            - type: 'null'
                        number:
                          anyOf:
                            - type: string
                            - type: 'null'
                      required:
                        - id
                        - destType
                      additionalProperties: {}
                  offlineDestinations:
                    default: []
                    description: Offline routing
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: number
                        destType:
                          type: string
                        order:
                          type: number
                        typeSrc:
                          type: string
                        name:
                          anyOf:
                            - type: string
                            - type: 'null'
                        number:
                          anyOf:
                            - type: string
                            - type: 'null'
                      required:
                        - id
                        - destType
                      additionalProperties: {}
                  forwardingDestinations:
                    default: []
                    description: Unconditional forwarding
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: number
                        destType:
                          type: string
                        order:
                          type: number
                        typeSrc:
                          type: string
                        name:
                          anyOf:
                            - type: string
                            - type: 'null'
                        number:
                          anyOf:
                            - type: string
                            - type: 'null'
                      required:
                        - id
                        - destType
                      additionalProperties: {}
                required:
                  - id
                  - name
                  - number
                  - email
                  - peerName
                  - dnd
                  - callerIdNumber
                  - enableMeet
                  - enableTranscription
                  - trunk
                  - trunkHost
                  - trunkCallerIdSource
                  - trunkEmergencyCallerIdOverride
                  - callLimit
                  - mailbox
                  - recording
                  - dialTimeout
                  - outboundDialPrefix
                  - enableDirectFax
                  - recordingEmail
                  - includeInDialByName
                  - includeInPhonebook
                  - enableForwarding
                  - emergencyLocationComment
                  - tenant
                  - branch
                  - routingProfile
                  - musicOnHold
                  - user
                  - efaxUser
                  - emergencyLocation
                  - devices
                  - noAnswerDestinations
                  - busyDestinations
                  - offlineDestinations
                  - forwardingDestinations
                additionalProperties: false
        '400':
          description: Error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  name:
                    type: string
                  message:
                    type: string
                  code:
                    type: number
                  validationErrors:
                    type: array
                    items:
                      type: string
                required:
                  - name
                  - message
                  - code
                additionalProperties: false
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````