Ringover Ivrs API

Retrieve your IVRs (Interactive Voice Response) and their scenarios. IVRs are the automated call routing systems configured on your Ringover account. **Permissions required:** - **Read** (`IVRs R`): List IVRs and scenarios. - **Write** (`IVRs W`): Create tags. **Monitoring impact:** - *OFF*: Returns only **your own** IVRs and scenarios. - *ON*: Returns **all team** IVRs and scenarios.

Business capability
Voice & Telephony AE-150.50

Operations 7

GET /ivrs List IVRs (Interactive Voice Response) #
GET /ivrs/{ivrId} Get an IVR by ID #
GET /ivrs/{ivrId}/scenarios List scenarios for a specific IVR #
GET /ivrs/{ivrId}/scenarios/{scenarioId} Get a specific scenario for an IVR #
GET /scenarios List all scenarios across all IVRs #
GET /scenarios/{scenarioId} Get a specific scenario by ID #
POST /ivrs/{ivrId}/callback Initiate a callback through an IVR #

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/ringover:ringover-ivrs-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

ringover-ivrs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  license:
    name: Proprietary – Contact us for usage terms
    url: https://www.ringover.com/contact
  description: '# Ringover Public API


    Welcome to the Ringover Public API. This RESTful API lets you integrate Ringover telephony, messaging, contacts, and AI analytics into your applications. ## Base URL


    | Region | Base URL |

    |--------|----------|

    | Europe | `https://public-api.ringover.com/v2` |

    | United States | `https://public-api-us.ringover.com/v2` |


    ## Authentication


    All requests must include your API key in the `Authorization` header:


    ```

    Authorization: your-api-key-here

    ```


    To create an API key:

    1. Open the Ringover Dashboard. 2. Navigate to **Developer > API Keys**. 3. Click **Create an API key**, select a user, and set a label. 4. Configure the permissions for this key (see Permissions below). ## Permissions


    Each API key is associated with **7 permission categories**, each configurable as **None**, **Read**, **Write**, or **Read+Write**:


    | Category | Controls access to |

    |----------|-------------------|

    | **Calls** | Call history, archives, live call controls, callbacks |

    | **Contacts** | Contact CRUD and phone number management |

    | **Users** | User listing, plannings, presences, groups, user blacklists |

    | **Numbers** | Phone number listing, team blacklist |

    | **IVRs** | IVR/scenario listing, tag management |

    | **Conversations** | SMS/Chat conversations, messages, SMS sending |

    | **Empower** | AI call analysis, summaries, moments, analytics |


    ### The Monitoring flag (Supervision)


    In addition to R/W permissions, each API key has a **Monitoring** toggle that controls the **scope** of data returned:


    | Monitoring | Effect |

    |------------|--------|

    | **OFF** | Your permissions give access to **your own data only** (your calls, your numbers, your conversations…) |

    | **ON** | Your permissions give access to **the entire team''s data** (all users, all calls, all conversations…) |


    Monitoring does **not** grant additional permissions — it widens the scope of existing ones. Some routes **require** Monitoring to be enabled and will return `401` without it. Conversely, some routes may ignore the Monitoring flag entirely or apply it differently — unless stated otherwise in the endpoint documentation, the default behavior described above applies. > Each endpoint in this documentation specifies its exact permission and monitoring requirements. ### Special cases


    - **Campaigns, Tasks, WhatsApp**: These routes do not require specific token permissions. A valid API key is sufficient. - **Empower**: Uses its own role system (Admin / Supervisor / User) in addition to the Empower R/W permission. - **Transcriptions**: Access is controlled by a team-level setting, not by the token permissions. - **Conferences**: All conference routes require Monitoring enabled. ## Rate Limiting


    A **2-request-per-second** rate limit is applied per API key. Exceeding this limit returns `429 Too Many Requests`. ## Pagination


    List endpoints support offset-based pagination with two parameters:

    - `limit_count`: Maximum number of items to return (default: 100, max varies by endpoint). - `limit_offset`: Number of items to skip (default: 0). Some call-related endpoints also support cursor-based pagination via `last_id_returned`. ## Error Responses


    | HTTP Code | Meaning |

    |-----------|---------|

    | `400` | Bad request — invalid parameters or body |

    | `401` | Unauthorized — invalid/expired API key, or access denied by permission/monitoring checks on most endpoints |

    | `403` | Forbidden — authenticated request refused by specific endpoint logic (notably some Empower routes) or upstream forwarded services |

    | `402` | Payment required — feature not available on your plan |

    | `404` | Resource not found |

    | `429` | Rate limit exceeded |

    | `500` | Internal server error |


    ## SCIM 2.0 Provisioning


    Ringover exposes a **SCIM 2.0** server (RFC 7643 / RFC 7644) for automated user and group provisioning from your identity provider (Okta, Microsoft Entra ID, …). It reuses the **same API key** as the REST API (`Authorization` header).'
  version: 2.1.0
  title: Ringover Public Ivrs API
  x-logo:
    url: https://webcdn.ringover.com/app/img/misc/logo_app_redoc.png
    backgroundColor: '#FAFAFA'
    altText: Ringover Logo
  termsOfService: https://ringover.com/terms/
  contact:
    email: support@ringover.com
servers:
- url: https://public-api.ringover.com/v2
  description: Production server (Europe)
- url: https://public-api-us.ringover.com/v2
  description: Production server (United States)
security:
- Authorization: []
tags:
- name: ivrs
  description: 'Retrieve your IVRs (Interactive Voice Response) and their scenarios. IVRs are the automated call routing systems configured on your Ringover account.


    **Permissions required:**

    - **Read** (`IVRs R`): List IVRs and scenarios.

    - **Write** (`IVRs W`): Create tags.


    **Monitoring impact:**

    - *OFF*: Returns only **your own** IVRs and scenarios.

    - *ON*: Returns **all team** IVRs and scenarios.'
paths:
  /ivrs:
    get:
      operationId: getIvrs
      tags:
      - ivrs
      x-permissions:
        required: IVRs R
        monitoring: optional
        monitoring-off: Returns only your own IVRs.
        monitoring-on: Returns all team IVRs.
      summary: List IVRs (Interactive Voice Response)
      description: 'Retrieves all IVR (Interactive Voice Response) configurations for your team. An IVR defines an automated call flow — menu options, routing rules, welcome messages, business hours, and queue behavior. Each IVR has one or more scenarios (call flow variants). The total count is in the `list_count` field.


        **Permission:** `IVRs Read` required.


        **Monitoring impact:**

        - **OFF:** Returns only IVRs **assigned to you** (IVRs using your numbers).

        - **ON:** Returns **all IVRs** in the team.'
      responses:
        '200':
          description: Successful operation — returns the list of IVRs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ivr_list'
        '204':
          description: No IVRs found.
        '401':
          description: Unauthorized — invalid or missing API token, or missing `IVRs Read` permission.
        '500':
          description: Internal server error.
  /ivrs/{ivrId}:
    get:
      operationId: getIvrsIvrid
      tags:
      - ivrs
      x-permissions:
        required: IVRs R
        monitoring: optional
        monitoring-off: Returns IVR details only if the IVR belongs to you.
        monitoring-on: Returns details for any IVR in the team.
      summary: Get an IVR by ID
      description: 'Retrieves detailed information about a specific IVR by its identifier, including its configuration, assigned numbers, scenarios, welcome message settings, business hours, and queue parameters. Use `GET /ivrs` to discover available IVR IDs.


        **Permission:** `IVRs Read` required.


        **Monitoring impact:**

        - **OFF:** Returns the IVR only if it is **assigned to you**. Returns `404` otherwise.

        - **ON:** Returns **any IVR** in the team.'
      parameters:
      - name: ivrId
        in: path
        description: The unique identifier of the IVR. Use `GET /ivrs` to discover available IVR IDs.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful operation — returns the IVR details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ivr'
        '400':
          description: Invalid IVR identifier.
        '401':
          description: Unauthorized — invalid or missing API token, or missing `IVRs Read` permission.
        '404':
          description: IVR not found, or not accessible with current monitoring level.
        '500':
          description: Internal server error.
  /ivrs/{ivrId}/scenarios:
    get:
      operationId: getIvrsIvridScenarios
      tags:
      - ivrs
      x-permissions:
        required: IVRs R
        monitoring: optional
        monitoring-off: Returns only your own scenarios.
        monitoring-on: Returns all scenarios for the specified IVR.
      summary: List scenarios for a specific IVR
      description: 'Retrieves all scenarios (call flow variants) attached to a specific IVR. A scenario defines a complete call flow — which menu options are available, how calls are routed, and what happens at each step. An IVR typically has one default scenario but can have multiple variants for different contexts (e.g., business hours vs. after-hours). The total count is in the `list_count` field.


        **Permission:** `IVRs Read` required.


        **Monitoring impact:**

        - **OFF:** Returns only scenarios from IVRs **assigned to you**.

        - **ON:** Returns **all scenarios** for the specified IVR.'
      parameters:
      - name: ivrId
        in: path
        description: The unique identifier of the IVR. Use `GET /ivrs` to discover available IVR IDs.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful operation — returns the list of scenarios.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scenario_list'
        '204':
          description: No scenarios found for this IVR.
        '401':
          description: Unauthorized — invalid or missing API token, or missing `IVRs Read` permission.
        '500':
          description: Internal server error.
  /ivrs/{ivrId}/scenarios/{scenarioId}:
    get:
      operationId: getIvrsIvridScenariosScenarioid
      tags:
      - ivrs
      x-permissions:
        required: IVRs R
        monitoring: optional
        monitoring-off: Returns the scenario only if it belongs to you.
        monitoring-on: Returns any scenario for the specified IVR.
      summary: Get a specific scenario for an IVR
      description: 'Retrieves detailed information about a specific scenario within an IVR. The response includes the full call flow definition — menu steps, routing rules, audio prompts, and queue configuration. Both `ivrId` and `scenarioId` must match for the scenario to be returned.


        **Permission:** `IVRs Read` required.


        **Monitoring impact:**

        - **OFF:** Returns the scenario only if the parent IVR is **assigned to you**. Returns `404` otherwise.

        - **ON:** Returns **any scenario** for any IVR in the team.'
      parameters:
      - name: ivrId
        in: path
        description: The unique identifier of the IVR. Use `GET /ivrs` to discover available IVR IDs.
        required: true
        schema:
          type: integer
          format: int64
      - name: scenarioId
        in: path
        description: The scenario identifier
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful operation — returns the scenario details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scenario'
        '400':
          description: Invalid IVR or scenario identifier.
        '401':
          description: Unauthorized — invalid or missing API token, or missing `IVRs Read` permission.
        '404':
          description: Scenario not found, or not accessible with current monitoring level.
        '500':
          description: Internal server error.
  /scenarios:
    get:
      operationId: getScenarios
      tags:
      - ivrs
      summary: List all scenarios across all IVRs
      x-permissions:
        required: IVRs R
        monitoring: optional
        monitoring-off: Returns only your own scenarios.
        monitoring-on: Returns all team scenarios.
      description: 'Retrieves all scenarios across all IVRs in a single request. This is a convenience alternative to calling `GET /ivrs/{ivrId}/scenarios` for each IVR individually. Useful for building a global overview of all call flows configured in the team.


        **Permission:** `IVRs Read` required.


        **Monitoring impact:**

        - **OFF:** Returns only scenarios from IVRs **assigned to you**.

        - **ON:** Returns **all scenarios** across all team IVRs.'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scenario_list'
        '204':
          description: No scenarios found
        '401':
          description: Unauthorized — invalid API key or missing `IVRs Read` permission
        '500':
          description: Internal server error
  /scenarios/{scenarioId}:
    get:
      operationId: getScenariosScenarioid
      tags:
      - ivrs
      summary: Get a specific scenario by ID
      x-permissions:
        required: IVRs R
        monitoring: optional
        monitoring-off: Returns the scenario only if it belongs to you.
        monitoring-on: Returns any scenario.
      description: 'Retrieves a specific scenario by its unique ID, regardless of which IVR it belongs to. This is a shortcut alternative to `GET /ivrs/{ivrId}/scenarios/{scenarioId}` when you already know the scenario ID but not the parent IVR ID.


        **Permission:** `IVRs Read` required.


        **Monitoring impact:**

        - **OFF:** Returns the scenario only if the parent IVR is **assigned to you**.

        - **ON:** Returns **any scenario** in the team.'
      parameters:
      - name: scenarioId
        in: path
        description: The unique identifier of the scenario
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scenario'
        '400':
          description: Invalid scenario ID format
        '401':
          description: Unauthorized — invalid API key or missing `IVRs Read` permission
        '404':
          description: Scenario not found or not accessible with current monitoring level
        '500':
          description: Internal server error
  /ivrs/{ivrId}/callback:
    post:
      operationId: postIvrsIvridCallback
      tags:
      - ivrs
      x-permissions:
        required: Calls W
        monitoring: none
      summary: Initiate a callback through an IVR
      description: 'Triggers a callback through a specific IVR (Interactive Voice Response) queue. The specified phone number will be called, and when the recipient picks up, they are routed through the IVR flow associated with the given `ivrId`. This is typically used to offer a "call me back" feature to customers waiting in a queue.


        IVR Callbacks are only available on the **Business** and **Advanced** plans. Standard telephony charges apply based on the destination number.


        **Permission:** `Calls Write` required.


        **Monitoring:** Not required for this route. Any valid API key with `Calls Write` permission can initiate an IVR callback regardless of the Monitoring flag.'
      parameters:
      - name: ivrId
        in: path
        description: The IVR identifier
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/request_ivr_callback'
      responses:
        '200':
          description: Successful operation — the IVR callback has been initiated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/callback_list'
        '401':
          description: Unauthorized — missing or invalid token, or insufficient Calls Write permission.
        '404':
          description: Not found — the specified IVR does not exist.
        '500':
          description: Internal server error.
components:
  schemas:
    ivr_list:
      type: object
      properties:
        list_count:
          type: integer
          format: int64
          description: The size of the list
          example: 1
        list:
          type: array
          items:
            $ref: '#/components/schemas/ivr_without_number'
    number:
      type: object
      properties:
        number:
          type: integer
          description: Phone number in E.164 format without the `+` prefix (e.g., `33612345678`).
          example: 33184800000
        label:
          type: string
          description: The label of the number
          example: myfavoritenumber
        type:
          type: string
          description: The type of the number
          example: PHONE
        user_id:
          type: integer
          format: int64
          description: The user identifier
          example: 60907
        ivr_id:
          type: integer
          format: int64
          description: The unique identifier of the IVR. Use `GET /ivrs` to discover available IVR IDs.
          example: 60908
        conference_id:
          type: integer
          format: int64
          description: The conference identifier
          example: 60908
        is_sms:
          type: boolean
          example: false
        is_sms_write:
          type: boolean
          example: false
        is_callable:
          type: boolean
          example: false
        format:
          $ref: '#/components/schemas/format_number'
    scenario:
      type: object
      properties:
        scenario_id:
          type: integer
          format: int64
          description: The scenario identifier
          example: 123456
        ivr_id:
          type: integer
          format: int64
          description: The unique identifier of the IVR. Use `GET /ivrs` to discover available IVR IDs.
          example: 1234
        name:
          type: string
          description: The name of the scenario
          example: myscenario
        color:
          type: string
          example: '123456'
        scenario_type:
          type: string
          enum:
          - menu
          - announce
          - queue
          - sms
          - webhook
          - input
          description: The type of the scenario
          example: menu
        is_default:
          type: boolean
          example: true
    ivr:
      type: object
      properties:
        ivr_id:
          type: integer
          format: int64
          description: The identifier of the ivr
          example: 123456
        name:
          type: string
          description: The name of the ivr
          example: StandardFacile
        color:
          type: string
          enum:
          - ff6b6b
          - F06292
          - BA68C8
          - 9575CD
          - 7986CB
          - 64B5F6
          - 4FC3F7
          - 4DD0E1
          - 4DB6AC
          - 81C784
          - AED581
          - DCE775
          - FFD54F
          - FFB74D
          - FF8A65
          - A1887F
          - E0E0E0
          - 90A4AE
          example: ff6b6b
        numbers:
          type: array
          items:
            $ref: '#/components/schemas/number'
          description: The numbers of the ivr
        scenarios:
          type: array
          items:
            $ref: '#/components/schemas/scenario'
            description: The scenario of the ivr
        is_open:
          type: boolean
          example: true
          description: The ivr is open or not
    ivr_without_number:
      type: object
      properties:
        ivr_id:
          type: integer
          format: int64
          description: The identifier if the ivr
          example: 123456
        color:
          type: string
          enum:
          - ff6b6b
          - F06292
          - BA68C8
          - 9575CD
          - 7986CB
          - 64B5F6
          - 4FC3F7
          - 4DD0E1
          - 4DB6AC
          - 81C784
          - AED581
          - DCE775
          - FFD54F
          - FFB74D
          - FF8A65
          - A1887F
          - E0E0E0
          - 90A4AE
          example: ff6b6b
        name:
          type: string
          description: The name of the ivr
          example: StandardFacile
        scenarios:
          type: array
          items:
            type: object
            properties:
              scenario_id:
                type: integer
                format: int64
                description: The scenario identifier
                example: 123456
              ivr_id:
                type: integer
                format: int64
                description: The unique identifier of the IVR. Use `GET /ivrs` to discover available IVR IDs.
                example: 1234
              name:
                type: string
                description: The name of the scenario
                example: myscenario
              color:
                type: string
                example: '123456'
              scenario_type:
                type: string
                enum:
                - menu
                - announce
                - queue
                - sms
                - webhook
                - input
                description: The type of the scenario
                example: menu
              is_default:
                type: boolean
                example: true
        is_open:
          type: boolean
          example: true
          description: The ivr is open or not
    scenario_list:
      type: object
      properties:
        list_count:
          type: integer
          format: int64
          description: The size of the list
          example: 1
        list:
          type: array
          items:
            $ref: '#/components/schemas/scenario'
    format_number:
      type: object
      properties:
        raw:
          type: integer
          format: int64
          example: 184800000
        country_code:
          type: string
          example: '33'
        country:
          type: string
          example: FR
        e164:
          type: string
          example: '+33184800000'
        international:
          type: string
          example: +33 1 84 80 00 00
        international_alt:
          type: string
          example: '33184800000'
        national:
          type: string
          example: 01 84 80 00 00
        national_alt:
          type: string
          example: 0184800000
        rfc3966:
          type: string
          example: tel:+33-1-84-80-00-00
        is_short_code:
          type: boolean
          example: false
    SalesforceIntegration:
      type: object
      properties:
        object:
          type: string
          example: Opportunity
        object_id:
          type: string
          example: SF_ID
    request_ivr_callback:
      type: object
      properties:
        from_number:
          description: The IVR Number to display
          type: integer
          format: int64
          example: 33744332211
        clir:
          type: boolean
          description: 'Calling line identification restriction: The CLIR service blocks calling party address information from being presented to the called user.'
          example: false
        to_number:
          type: integer
          format: int64
          example: 33611223344
        timeout:
          type: integer
          format: int64
          minimum: 20
          maximum: 300
          description: Number of seconds before the call is aborted if the communication isn't etablished.
          example: 45
        integrations:
          $ref: '#/components/schemas/Integrations'
    Integrations:
      type: object
      properties:
        salesforce:
          $ref: '#/components/schemas/SalesforceIntegration'
    callback_list:
      type: object
      properties:
        call_id:
          type: integer
          format: uint64
          example: 1234567890987654321
        channel_id:
          type: integer
          format: uint64
          example: 12345678909876543210
  securitySchemes:
    Authorization:
      description: "We use API keys for authentication to authorize API requests. First, you need to create a public access token (API key) and select the appropriate rights for each user. To do so:\n  1. Open the Ringover Dashboard.\n  2. Go to the **Developer** section.\n  3. Click the **Create an API key** button.\n  4. Select a user in the drop-down menu and enter a label for the key and click the **Create** button.\n  5. Click the **Edit** button corresponding to the API key and select the appropriate rights.\n\nOnce you've created a public access token, you can use it in the `Authorization` header to authenticate your HTTP request.\n\n```\nAuthorization: <your-public-token>\n```\n\nThis is the **recommended authentication method** and the only one supported by the REST and SCIM endpoints.\n"
      type: apiKey
      name: Authorization
      in: header
    AuthorizationQuery:
      description: '**Alternative authentication method, only available on the MCP endpoint (`/mcp`).**


        Pass your Public API token via the `token` query string parameter:


        ```

        POST /mcp?token=<your-public-token>

        ```


        Useful for clients (no-code platforms, browser tools, etc.) that cannot set custom HTTP headers.


        See the **mcp** tag for details on the three accepted authentication sources and their precedence.

        '
      type: apiKey
      name: token
      in: query
    AuthorizationPath:
      description: '**Alternative authentication method, only available on the MCP endpoint (`/mcp/{token}`).**


        Pass your Public API token directly inside the URL path:


        ```

        POST /mcp/<your-public-token>

        ```


        Most permissive variant — works with any HTTP client, including those that strip custom headers and query strings.


        > ⚠️ The token appears in URLs and is therefore likely to be logged by proxies, browsers and access logs. Prefer the `Authorization` header whenever your client supports it, and rotate any token that may have leaked.


        OpenAPI 3.0 does not support `apiKey` in `path`, so this scheme is declared in `query` for tooling compatibility — the actual transport is the URL path. See the **mcp** tag for details.

        '
      type: apiKey
      name: token
      in: query
x-tagGroups:
- name: Ringover Public API
  tags:
  - How to paginate?
  - teams
  - groups
  - users
  - numbers
  - ivrs
  - tags
  - conferences
  - calls
  - campaigns
  - channels
  - contacts
  - conversations
  - messages
  - sms
  - profiles
  - presences
  - blacklist
  - webhook
  - callbacks
  - surveys
  - snoozes
  - transcriptions
  - cdn
  - empower
  - whatsapp
  - task
  - mcp
- name: SCIM 2.0 Provisioning
  tags:
  - scim