> ## 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 SIP Extension

> Create a SIP (trunk) extension



## OpenAPI

````yaml https://api.voxo.co/v2/docs/openapi.json post /v2/admin/extensions/sip/
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/sip/:
    post:
      tags:
        - Extensions
      summary: Create SIP Extension
      description: Create a SIP (trunk) extension
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tenantId:
                  type: number
                  exclusiveMinimum: 0
                number:
                  type: string
                  minLength: 2
                  maxLength: 10
                  pattern: ^\d+$
                name:
                  type: string
                  minLength: 3
                emergencyLocationId:
                  type: number
                  exclusiveMinimum: 0
                emergencyLocation:
                  anyOf:
                    - type: string
                    - type: 'null'
                branchId:
                  type: number
                  exclusiveMinimum: 0
                authMethod:
                  type: string
                  enum:
                    - NORMAL
                    - IP
                publicIp:
                  type: string
                  format: ipv4
                  pattern: >-
                    ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$
                callLimit:
                  type: number
                  exclusiveMinimum: 0
                trunkCallerIdSource:
                  type: string
                  enum:
                    - PAI
                    - RPID
                    - FROM
                callerIdNumber:
                  type: string
                  pattern: ^[1-9]\d{9}$
              required:
                - tenantId
                - number
                - name
                - emergencyLocationId
                - authMethod
                - callLimit
                - trunkCallerIdSource
              additionalProperties: false
      responses:
        '200':
          description: Created SIP extension
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: number
                    description: Extension ID
                  tenant:
                    type: object
                    properties:
                      id:
                        type: number
                      name:
                        type: string
                    required:
                      - id
                      - name
                    additionalProperties: false
                    description: Owning tenant
                  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
                  callerIdNumber:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Outbound caller ID number
                  recording:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Call recording mode
                  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
                  dialTimeout:
                    anyOf:
                      - type: number
                      - type: 'null'
                    description: Inbound ring timeout (seconds)
                  routingProfileId:
                    anyOf:
                      - type: number
                      - type: 'null'
                    description: Routing profile ID
                  musicOnHoldId:
                    anyOf:
                      - type: number
                      - type: 'null'
                    description: Music on hold ID
                  emergencyLocationId:
                    anyOf:
                      - type: number
                      - type: 'null'
                    description: Emergency location ID
                  outboundDialPrefix:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Outbound dial prefix
                  includeInDialByName:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Dial-by-name inclusion
                  includeInPhonebook:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Phonebook inclusion
                  emergencyLocationComment:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: Free-text emergency location comment
                  branch:
                    type: object
                    properties:
                      id:
                        type: number
                      name:
                        type: string
                    required:
                      - id
                      - name
                    additionalProperties: false
                    description: Branch)
                  emergencyLocation:
                    anyOf:
                      - type: object
                        properties:
                          id:
                            type: number
                          address: {}
                        required:
                          - id
                          - address
                        additionalProperties: false
                      - type: 'null'
                    description: Emergency location
                  musicOnHold:
                    anyOf:
                      - type: object
                        properties:
                          id:
                            type: number
                          name:
                            type: string
                        required:
                          - id
                          - name
                        additionalProperties: false
                      - type: 'null'
                    description: Music on hold
                  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
                required:
                  - id
                  - tenant
                  - name
                  - number
                  - email
                  - peerName
                  - callerIdNumber
                  - recording
                  - trunk
                  - trunkHost
                  - trunkCallerIdSource
                  - trunkEmergencyCallerIdOverride
                  - callLimit
                  - dialTimeout
                  - routingProfileId
                  - musicOnHoldId
                  - emergencyLocationId
                  - outboundDialPrefix
                  - includeInDialByName
                  - includeInPhonebook
                  - emergencyLocationComment
                  - branch
                  - emergencyLocation
                  - musicOnHold
                  - routingProfile
                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

````