Wazo Ivr API

The ivr API from Wazo — 2 operation(s) for ivr.

Operations 5

GET /ivr List IVR #
POST /ivr Create IVR #
GET /ivr/{ivr_id} Get IVR #
PUT /ivr/{ivr_id} Update IVR #
DELETE /ivr/{ivr_id} Delete IVR #

Documentation

Specifications

Other Resources

🔗
Console
https://api.wazo.io/documentation/console/authentication/
🔗
SourceCode
https://github.com/wazo-platform/wazo-auth
🔗
ChangeLog
https://github.com/wazo-platform/wazo-auth/blob/master/CHANGELOG.md
🔗
Conventions
https://raw.githubusercontent.com/api-evangelist/wazo/refs/heads/main/conventions/wazo-conventions.yml
🔗
ErrorCatalog
https://raw.githubusercontent.com/api-evangelist/wazo/refs/heads/main/errors/wazo-problem-types.yml
🔗
Console
https://api.wazo.io/documentation/console/configuration/
🔗
SourceCode
https://github.com/wazo-platform/wazo-confd
🔗
ChangeLog
https://github.com/wazo-platform/wazo-confd/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/application/
🔗
SourceCode
https://github.com/wazo-platform/wazo-calld
🔗
ChangeLog
https://github.com/wazo-platform/wazo-calld/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/cdr/
🔗
SourceCode
https://github.com/wazo-platform/wazo-call-logd
🔗
ChangeLog
https://github.com/wazo-platform/wazo-call-logd/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/contact/
🔗
SourceCode
https://github.com/wazo-platform/wazo-dird
🔗
ChangeLog
https://github.com/wazo-platform/wazo-dird/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/webhook/
🔗
SourceCode
https://github.com/wazo-platform/wazo-webhookd
🔗
ChangeLog
https://github.com/wazo-platform/wazo-webhookd/blob/master/CHANGELOG.md
🔗
Webhooks
https://raw.githubusercontent.com/api-evangelist/wazo/refs/heads/main/asyncapi/wazo-events-webhooks.yml
🔗
Console
https://api.wazo.io/documentation/console/plugins/
🔗
SourceCode
https://github.com/wazo-platform/wazo-plugind
🔗
ChangeLog
https://github.com/wazo-platform/wazo-plugind/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/agent/
🔗
SourceCode
https://github.com/wazo-platform/wazo-agentd
🔗
ChangeLog
https://github.com/wazo-platform/wazo-agentd/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/chat/
🔗
SourceCode
https://github.com/wazo-platform/wazo-chatd
🔗
ChangeLog
https://github.com/wazo-platform/wazo-chatd/blob/master/CHANGELOG.md
🔗
SourceCode
https://github.com/wazo-platform/wazo-phoned
🔗
ChangeLog
https://github.com/wazo-platform/wazo-phoned/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/setup/
🔗
SourceCode
https://github.com/wazo-platform/wazo-setupd
🔗
ChangeLog
https://github.com/wazo-platform/wazo-setupd/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/amid/
🔗
SourceCode
https://github.com/wazo-platform/wazo-amid
🔗
ChangeLog
https://github.com/wazo-platform/wazo-amid/blob/master/CHANGELOG.md

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/wazo-ivr-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

wazo-ivr-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: wazo-confd Ivr API
  description: "Confd exposes an API for managing core resources on a Wazo server such as users, extensions, devices, voicemails, queues, etc. Resources can be associated together to provide additional functionality. For example: By associating a voicemail with a user, calls will automatically fallback on to the voicemail when the user cannot answer.\n\nImplementation notes\n====================\n\nErrors\n------\n\nResponses containing errors will have a status code in the 400 or 500 class. A list of error messages will be returned in the body of the response as a JSON-encoded array:\n\n~~~\n[\n    \"Input error - User not found\",\n    \"Resource error - User not associated to a line\"\n]\n~~~\n\n\nUpdating resources via PUT\n--------------------------\n\nWhen updating a resource, all fields become optional. In other words, only values that have been changed need to be sent to the server. Please note that this behavior may change in future versions of the API."
  version: '1.1'
  license:
    name: GPL v3
    url: http://www.gnu.org/licenses/gpl.txt
  contact:
    name: Wazo Dev Team
    url: https://wazo-platform.org/
    email: dev@wazo.community
  x-logo:
    url: https://wazo-platform.org/images/logo-black.svg
    backgroundColor: '#FAFAFA'
    altText: Wazo Logo
servers:
- url: /1.1
security:
- wazo_auth_token: []
tags:
- name: ivr
paths:
  /ivr:
    get:
      operationId: list_ivr
      summary: List IVR
      description: '**Required ACL:** `confd.ivr.read`'
      tags:
      - ivr
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/recurse'
      - $ref: '#/components/parameters/order'
      - $ref: '#/components/parameters/direction'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      - $ref: '#/components/parameters/search'
      responses:
        '200':
          description: IVR list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IvrItems'
    post:
      operationId: create_ivr
      summary: Create IVR
      description: '**Required ACL:** `confd.ivr.create`'
      tags:
      - ivr
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      responses:
        '201':
          description: IVR created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ivr'
        '400':
          $ref: '#/components/responses/CreateError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ivr'
        description: IVR to create
        required: true
  /ivr/{ivr_id}:
    get:
      operationId: get_ivr
      summary: Get IVR
      description: '**Required ACL:** `confd.ivr.{ivr_id}.read`'
      tags:
      - ivr
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/ivrid'
      responses:
        '200':
          description: IVR
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ivr'
        '404':
          $ref: '#/components/responses/NotFoundError'
    put:
      operationId: update_ivr
      summary: Update IVR
      description: '**Required ACL:** `confd.ivr.{ivr_id}.update`'
      tags:
      - ivr
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/ivrid'
      responses:
        '204':
          $ref: '#/components/responses/ResourceUpdated'
        '400':
          $ref: '#/components/responses/UpdateError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ivr'
        required: true
    delete:
      operationId: delete_ivr
      summary: Delete IVR
      description: '**Required ACL:** `confd.ivr.{ivr_id}.delete`'
      tags:
      - ivr
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/ivrid'
      responses:
        '204':
          $ref: '#/components/responses/ResourceDeleted'
        '400':
          $ref: '#/components/responses/DeleteError'
        '404':
          $ref: '#/components/responses/NotFoundError'
components:
  responses:
    NotFoundError:
      description: The resource requested was not found on the server
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ResourceDeleted:
      description: Resource was deleted successfully
    ResourceUpdated:
      description: Resource was updated successfully
    CreateError:
      description: An error occurred when creating the resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UpdateError:
      description: An error occurred when updating the resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    DeleteError:
      description: An error occurred when deleting the resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    DestinationApplicationDISA:
      title: DestinationApplicationDISA
      allOf:
      - $ref: '#/components/schemas/DestinationApplication'
      - properties:
          application:
            type: string
            description: MUST be 'disa'
          context:
            type: integer
            description: The context of the application
          pin:
            type: string
            description: the pin of the application
        required:
        - application
        - context
    DestinationApplicationDirectory:
      title: DestinationApplicationDirectory
      allOf:
      - $ref: '#/components/schemas/DestinationApplication'
      - properties:
          application:
            type: string
            description: MUST be 'directory'
          context:
            type: integer
            description: The context of the application
        required:
        - application
        - context
    IvrRelationIncall:
      allOf:
      - $ref: '#/components/schemas/IncallRelationBase'
      - $ref: '#/components/schemas/IncallRelationExtensions'
    DestinationUser:
      title: DestinationUser
      properties:
        type:
          type: string
          description: MUST be 'user'
        user_id:
          type: integer
          description: The id of the user
        ring_time:
          type: number
          format: float
        moh_uuid:
          type: string
          description: The UUID of the music on hold to use instead of a ringback tone.
      required:
      - type
      - user_id
    DestinationOutcall:
      title: DestinationOutcall
      properties:
        type:
          type: string
          description: MUST be 'outcall'
        exten:
          type: string
        outcall_id:
          type: integer
          description: The id of the outcall
      required:
      - type
      - exten
      - outcall_id
    DestinationHangup:
      title: DestinationHangup
      properties:
        type:
          type: string
          description: MUST be 'hangup'
      required:
      - type
    DestinationQueue:
      title: DestinationQueue
      properties:
        type:
          type: string
          description: MUST be 'queue'
        queue_id:
          type: integer
          description: The id of the queue
        ring_time:
          type: number
          format: float
        skill_rule_id:
          type: integer
          description: The id of the skill rule
        skill_rule_variables:
          type: object
          description: key-value where key represents the variable of the skill rule and value represents a value
      required:
      - type
      - queue_id
    DestinationConference:
      title: DestinationConference
      properties:
        type:
          type: string
          description: MUST be 'conference'
        conference_id:
          type: integer
          description: The id of the conference
      required:
      - type
      - conference_id
    DestinationGroup:
      title: DestinationGroup
      properties:
        type:
          type: string
          description: MUST be 'group'
        group_id:
          type: integer
          description: The id of the group
        ring_time:
          type: number
          format: float
      required:
      - type
      - group_id
    DestinationHangupNormal:
      title: DestinationHangupNormal
      allOf:
      - $ref: '#/components/schemas/DestinationHangup'
      - properties:
          cause:
            type: string
            description: MUST be 'normal'
      required:
      - cause
    DestinationApplicationVoicemail:
      title: DestinationApplicationVoicemail
      allOf:
      - $ref: '#/components/schemas/DestinationApplication'
      - properties:
          application:
            type: string
            description: MUST be 'voicemail'
          context:
            type: integer
            description: The context of the application
        required:
        - application
        - context
    IvrItems:
      title: IvrItems
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Ivr'
        total:
          type: integer
      required:
      - total
    Ivr:
      title: IVR
      allOf:
      - properties:
          id:
            type: integer
            readOnly: true
            description: The id of the IVR
          tenant_uuid:
            type: string
            description: The UUID of the tenant
            readOnly: true
          name:
            type: string
            description: The name of the IVR
          description:
            type: string
            description: Additional information about the IVR
          greeting_sound:
            type: string
            description: The sound played to greet the caller
          menu_sound:
            type: string
            description: The sound played to prompt the caller for input
          invalid_sound:
            type: string
            description: The sound played when the caller choose an invalid option. Not used if an invalid destination is set
          abort_sound:
            type: string
            description: The sound played when the caller reach the maximum number of tries. Not used if an abort destination is set
          timeout:
            type: integer
            default: 5
            description: Number of seconds to wait after the menu sound is played before either replaying the menu, redirecting the call to the timeout destination (if set) or aborting the call (if the maximum number of tries has been reached)
          max_tries:
            type: integer
            default: 3
            description: The maximum number of tries before aborting the call. Both a timeout and an invalid choice counts toward the number of tries
          invalid_destination:
            description: The destination to redirect the caller to when he choose an invalid option. If not set, the menu will be replayed
            $ref: '#/components/schemas/DestinationType'
          timeout_destination:
            description: The destination to redirect the caller to on timeout. If not set, the menu will be replayed
            $ref: '#/components/schemas/DestinationType'
          abort_destination:
            description: The destination to redirect the caller to when the maximum number of tries is reached. If not set, the call will be hanged up after playing the abort sound (if set)
            $ref: '#/components/schemas/DestinationType'
          choices:
            type: array
            description: The menu's choices
            items:
              $ref: '#/components/schemas/IvrChoice'
      - $ref: '#/components/schemas/IvrRelationIncalls'
      - required:
        - name
        - menu_sound
      example:
        name: ivr1
        description: My IVR
        greeting_sound: /var/lib/wazo/sounds/playback/ivr1-greeting
        menu_sound: /var/lib/wazo/sounds/playback/ivr1-menu
        abort_destination:
          type: group
          group_id: 1
        choices:
        - exten: '1'
          destination:
            type: user
            user_id: 2
        - exten: '0'
          destination:
            type: group
            group_id: 1
    DestinationHangupBusy:
      title: DestinationHangupBusy
      allOf:
      - $ref: '#/components/schemas/DestinationHangup'
      - properties:
          cause:
            type: string
            description: MUST be 'busy'
          timeout:
            type: integer
            description: The timeout of the hangup
      required:
      - cause
    DestinationHangupCause:
      title: DestinationHangupCause
      properties:
        busy:
          $ref: '#/components/schemas/DestinationHangupBusy'
        congestion:
          $ref: '#/components/schemas/DestinationHangupCongestion'
        normal:
          $ref: '#/components/schemas/DestinationHangupNormal'
    DestinationApplication:
      title: DestinationApplication
      properties:
        type:
          type: string
          description: MUST be 'application'
      required:
      - type
    IvrChoice:
      title: IvrChoice
      properties:
        destination:
          description: The destination to redirect the caller to when this choice is selected
          $ref: '#/components/schemas/DestinationType'
        exten:
          type: string
          description: 'The extension the caller has to dial to select this choice. Can be an asterisk extension pattern, digits (0-9), * or #'
          pattern: ^_[*#0-9_XxZzNn\[\].!-]{1,39}$|[*#0-9]{1,40}$
      required:
      - destination
      - exten
    DestinationType:
      title: DestinationType
      properties:
        application:
          $ref: '#/components/schemas/DestinationApplicationApplication'
        conference:
          $ref: '#/components/schemas/DestinationConference'
        custom:
          $ref: '#/components/schemas/DestinationCustom'
        extension:
          $ref: '#/components/schemas/DestinationExtension'
        group:
          $ref: '#/components/schemas/DestinationGroup'
        hangup:
          $ref: '#/components/schemas/DestinationHangupCause'
        ivr:
          $ref: '#/components/schemas/DestinationIVR'
        none:
          $ref: '#/components/schemas/DestinationNone'
        outcall:
          $ref: '#/components/schemas/DestinationOutcall'
        queue:
          $ref: '#/components/schemas/DestinationQueue'
        sound:
          $ref: '#/components/schemas/DestinationSound'
        switchboard:
          $ref: '#/components/schemas/DestinationSwitchboard'
        user:
          $ref: '#/components/schemas/DestinationUser'
        voicemail:
          $ref: '#/components/schemas/DestinationVoicemail'
    IncallRelationExtensions:
      properties:
        extensions:
          type: array
          readOnly: true
          items:
            $ref: '#/components/schemas/ExtensionRelationBase'
    DestinationCustom:
      title: DestinationCustom
      properties:
        type:
          type: string
          description: MUST be 'custom'
        command:
          type: string
          description: The command to execute
      required:
      - type
      - command
    DestinationIVR:
      title: DestinationIVR
      properties:
        type:
          type: string
          description: MUST be 'ivr'
        ivr_id:
          type: integer
          description: The id of the IVR
      required:
      - type
      - ivr_id
    DestinationSound:
      title: DestinationSound
      properties:
        type:
          type: string
          description: MUST be 'sound'
        filename:
          type: string
          description: The filename of the sound. The file MUST be imported by to webi in the playback directory. The extension of file SHOULD be not present.
        skip:
          type: boolean
          description: Do not play this sound if the call is not answered
        no_answer:
          type: boolean
          description: Play this sound without answering the call
      required:
      - type
      - filename
    ExtensionRelationBase:
      properties:
        id:
          type: integer
          description: Extension ID
          readOnly: true
        context:
          type: string
        exten:
          type: string
    DestinationHangupCongestion:
      title: DestinationHangupCongestion
      allOf:
      - $ref: '#/components/schemas/DestinationHangup'
      - properties:
          cause:
            type: string
            description: MUST be 'congestion'
          timeout:
            type: integer
            description: The timeout of the hangup
      required:
      - cause
    DestinationApplicationCustom:
      title: DestinationApplicationCustom
      allOf:
      - $ref: '#/components/schemas/DestinationApplication'
      - properties:
          application:
            type: string
            description: MUST be 'custom'
          application_uuid:
            type: string
            description: The UUID of the application.
      required:
      - application
      - application_uuid
    IvrRelationIncalls:
      properties:
        incalls:
          type: array
          readOnly: true
          items:
            $ref: '#/components/schemas/IvrRelationIncall'
    DestinationVoicemail:
      title: DestinationVoicemail
      properties:
        type:
          type: string
          description: MUST be 'voicemail'
        voicemail_id:
          type: integer
          description: The id of the voicemail
        skip_instructions:
          type: boolean
          description: Skip the playback of instructions for leaving a message
        greeting:
          type: string
          enum:
          - busy
          - unavailable
          description: Play the specified greeting
      required:
      - type
      - voicemail_id
    DestinationApplicationApplication:
      title: DestinationApplicationApplication
      properties:
        callback_disa:
          $ref: '#/components/schemas/DestinationApplicationCallbackDISA'
        custom:
          $ref: '#/components/schemas/DestinationApplicationCustom'
        directory:
          $ref: '#/components/schemas/DestinationApplicationDirectory'
        disa:
          $ref: '#/components/schemas/DestinationApplicationDISA'
        fax_to_mail:
          $ref: '#/components/schemas/DestinationApplicationFaxToMail'
        voicemail:
          $ref: '#/components/schemas/DestinationApplicationVoicemail'
    DestinationSwitchboard:
      title: DestinationSwitchboard
      properties:
        type:
          type: string
          description: MUST be 'switchboard'
        switchboard_uuid:
          type: string
          description: The UUID of the switchboard.
      required:
      - type
      - switchboard_uuid
    DestinationApplicationCallbackDISA:
      title: DestinationApplicationCallbackDISA
      allOf:
      - $ref: '#/components/schemas/DestinationApplication'
      - properties:
          application:
            type: string
            description: MUST be 'callback_disa'
          context:
            type: integer
            description: The context of the application
          pin:
            type: string
            description: the pin of the application
        required:
        - application
        - context
    DestinationApplicationFaxToMail:
      title: DestinationApplicationFaxToMail
      allOf:
      - $ref: '#/components/schemas/DestinationApplication'
      - properties:
          application:
            type: string
            description: MUST be 'fax_to_mail'
          email:
            type: string
            description: The email of the application
      required:
      - application
      - email
    Error:
      type: array
      items:
        type: string
    IncallRelationBase:
      title: IncallRelation
      properties:
        id:
          type: integer
          readOnly: true
          description: The id of the incoming call
    DestinationNone:
      title: DestinationNone
      properties:
        type:
          type: string
          description: MUST be 'none'
      required:
      - type
    DestinationExtension:
      title: DestinationExtension
      properties:
        type:
          type: string
          description: MUST be 'extension'
        exten:
          type: string
        context:
          type: string
          description: Context of the extension
      required:
      - type
      - exten
      - context
  parameters:
    tenantuuid:
      name: Wazo-Tenant
      in: header
      description: The tenant's UUID, defining the ownership of a given resource.
      required: false
      schema:
        type: string
    ivrid:
      required: true
      name: ivr_id
      in: path
      description: IVR's ID
      schema:
        type: integer
    offset:
      required: false
      name: offset
      in: query
      description: Number of items to skip over in the list. Useful for pagination.
      schema:
        type: integer
    order:
      required: false
      name: order
      in: query
      description: Name of the field to use for sorting the list of items returned.
      schema:
        type: string
    direction:
      required: false
      name: direction
      in: query
      description: Sort list of items in 'asc' (ascending) or 'desc' (descending) order
      schema:
        type: string
        enum:
        - asc
        - desc
    recurse:
      name: recurse
      in: query
      description: Should the query include sub-tenants
      required: false
      schema:
        type: boolean
        default: false
    search:
      required: false
      name: search
      in: query
      description: Search term for filtering a list of items. Only items with a field containing the search term will be returned.
      schema:
        type: string
    limit:
      required: false
      name: limit
      in: query
      description: Maximum number of items to return in the list
      schema:
        type: integer
  securitySchemes:
    wazo_auth_token:
      type: apiKey
      name: X-Auth-Token
      in: header
x-xivo-port: 9486
x-xivo-name: confd
x-apievangelist-source:
  harvested_from: https://github.com/wazo-platform/wazo-confd
  assembly: base plugin api.yml deep-merged with all plugin api.yml fragments, reproducing what the running service serves at /api/confd/1.1/api/api.yml (see wazo_confd/plugins/api/http.py — xivo.chain_map.ChainMap)
  spec_version: Swagger 2.0 (as published by Wazo)
  harvested: '2026-08-17'