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

# Changelog

> New features, improvements, and fixes every few days

# October 22 to October 25, 2024

1. **Specify API Traffic Channel for Organizations**: You can now configure which `channel` (cluster) your API traffic will be routed to. Select between *daily* or *weekly* in your [organization settings page](https://dashboard.vapi.ai/org/settings)

<Frame caption="Organization Settings Page">
  <img src="https://mintlify.s3-us-west-1.amazonaws.com/vapi/static/images/changelog/organization-settings-page.png" alt="Organization Settings Page" />
</Frame>

2. **Customize Tavus Voice Properties**: You can now use Tavus as a voice provider under `assistant.voice`. Configure additional properties like language, recording options, and transcriptions via `assistant.voice.properties`.

<Frame caption="Tavus Voice Properties">
  <img src="https://mintlify.s3-us-west-1.amazonaws.com/vapi/static/images/changelog/tavus-voice.png" alt="Tavus Voice Properties" />
</Frame>

3. **Multilingual Support in Tool Messages**: You can now use the `contents` property in `ToolMessageStart`, `ToolMessageFailed`, `ToolMessageDelayed`, and `ToolMessageComplete` to provide message variants for different languages. If you don't provide content for a language, the first item will be automatically translated to the active language during the conversation.

4. **Automatic Translation of Message Contents**: For `CustomMessage`, `BlockStartMessage`, and `BlockCompleteMessage`, if specific content isn't provided for a language in `contents`, Vapi automatically translates the first item to the active language by default.

5. **Removed Backchanneling Configuration**: The `backchannelingEnabled` property has been removed from when creating or updating `Assistant` or \`AssistantOverrides. Backchanneling is no longer configurable in assistant settings.

<AccordionGroup>
  <Accordion title="October 19 to October 22, 2024">
    1) **Invite Multiple Users via Email**: You can now invite up to 100 users at once by providing a list of email addresses inside your [org users page](https://dashboard.vapi.ai/org/users). Click `'+'` after entering an email address, select the role as *Editor* or *Admin*, and click `'Invite'`.

    <Frame caption="Invite Multiple Users via Email">
      <img src="https://mintlify.s3-us-west-1.amazonaws.com/vapi/static/images/changelog/invite-multiple-users.png" alt="Invite Multiple Users via Email" />
    </Frame>

    2. **Simplified Subscription Status Handling**: Your subscription status no longer includes the `past-due` status, so you can streamline your subscription management without handling 'past-due' scenarios.
  </Accordion>

  <Accordion title="October 16 to October 19, 2024">
    1. **Custom Transcriber Support**: You can now integrate your own transcription service by using `CustomTranscriber` at `assistant.transcriber`, `call.squad.members.assistant.transcriber`, and `call.squad.members.assistantOverrides.transcriber`. Provide your custom transcription server details via `server.url` to receive real-time transcriptions during calls.

    2. **Increased Maximum Call Duration**: The maximum allowed value for `maxDurationSeconds` has increased from 21,600 to 43,200 seconds when creating or updating `Assistant` or `AssistantOverrides`. You can now configure your assistant to handle calls lasting up to 12 hours.

    3. **New Voice Provider 'tavus'**: You can now specify `tavus` as a voice provider in `Assistant.voice`, `AssistantOverrides.voice`, `Call.voice` and in the Voice Library.

    4. **Subscription Status 'frozen' Added**: A new status `frozen` has been added to `Subscription.status`, indicating when a subscription is temporarily inactive.

    5. **Added Subscription Coupon Codes**: You can now apply coupon codes to your subscription. Visit the [billing page](https://dashboard.vapi.ai/org/billing) to apply coupons to specific organizations within a subscription.

    <Frame caption="Subscription Coupon Codes">
      <img src="https://mintlify.s3-us-west-1.amazonaws.com/vapi/static/images/changelog/subscription-coupon-codes.png" alt="Subscription Coupon Codes" />
    </Frame>
  </Accordion>

  <Accordion title="October 13 to October 16, 2024">
    1. **Apply Coupons to Subscriptions**: You can now apply coupons by specifying a `couponId` to add to a subscription.

    2. **Detect Custom Transcriber Failures in Call End Reasons**: You can now handle cases where a custom transcriber fails during a call with `'pipeline-error-custom-transcriber-failed'`, a new `endedReason` option. This is now accessible in `Call`, `ServerMessageStatusUpdate`, and `ServerMessageEndOfCallReport`.

    3. **Corrected Typo in Example Custom Voice Request**: We fixed a typo in `CustomVoice.server`, where the example request now shows how to use the `"message"` parameter instead of the misspelled `"messsage"`.
  </Accordion>

  <Accordion title="October 10 to October 13, 2024">
    1. **New Call Transfer Modes Added**: you can now wait for an operator to speak first before providing a transfer message or summary when transferring calls to a new destination with `TransferPlan`. Configure this through *transferPlan.mode=`'warm-transfer-wait-for-operator-to-speak-first-and-then-say-message'`* or *transferPlan.mode=`'warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary'`* inside the request body of `POST /assistant` or `PATCH /assistant`.

    2. **Unified Server Configuration in Assistants**: You can now use the `server` property in `Assistant.server`, `AssistantOverrides.server`, and when creating or updating assistants to specify webhook settings, including URL, secret, custom headers, and timeout. This replaces the old `serverUrl` and `serverUrlSecret` properties of `Assistant`.

    <Warning>Include custom headers in your webhook requests by using the `headers` property within the `server` object when creating or updating assistants.</Warning>

    3. **Configure PlayHT Voice Engines**: You can now configure which PlayHT voice `model` generates voices for your application between `PlayHT2.0`, `PlayHT2.0-turbo`, and `Play3.0-mini`.
  </Accordion>

  <Accordion title="October 9 to October 10, 2024">
    <a href="https://dashboard.vapi.ai/org/billing" target="_blank">
      <Frame caption="Click Here to Switch to Credit Based Billing">
        <img src="https://mintlify.s3-us-west-1.amazonaws.com/vapi/static/images/changelog/credit-based-billing-oct-10.png" alt="Credit Based Billing" />
      </Frame>
    </a>

    1. **Purchase Reserved Concurrency and Scale Infinitely**: You can now reserve more concurrent calls with Vapi and scale infinitely by switching to our new top up payment system on the [billing page](https://dashboard.vapi.ai/org/billing). To migrate, click "Switch to Credit Based Billing" and make a payment. Advantages include:

    * **Support More Users Without Limits**: You don't need to worry about getting throttled or staying under usage limits on the conversations you can have with Vapi.
    * **Predictable Budgets**: You know exactly how much you will spend on Vapi each month, and you can top up at any time as your needs grow.
    * **Select Add-Ons You Need**: The credit based billing page allows you to select HIPAA compliance, dedicated Slack support, and the maximum number of concurrent calls you expect.

    <Warning>This will require human input to login and migrate your account. You will not be able to revert back to the old billing system.</Warning>
  </Accordion>

  <Accordion title="October 8 to October 9, 2024">
    1. **Call Cost Information**: You can now use `call.costs[type=vapi].subType` to determine if a VAPI cost is `normal` or an `overage`.

    2. **Updated Billing Page**: Your payments are now returned inside a table with pages on the [billing page](https://dashboard.vapi.ai/org/billing).
  </Accordion>

  <Accordion title="October 7 to October 8, 2024">
    1. **New GPT-4o Model Support for Azure OpenAI**: You can now specify the `gpt-4o-2024-08-06` model in the `models` field when configuring Azure OpenAI credentials. Use this model to access the latest GPT-4 operational capabilities in your applications.

    2. **Specify Timestamps as Strings in `/logs`**: We now expect timestamps as strings when working with logs. Please make sure to handle this accordingly in your applications.
  </Accordion>

  <Accordion title="October 6 to October 7, 2024">
    1. **Add Structured Outputs for OpenAI Functions in Assistant Tools**: You can use [OpenAI Structured Outputs](https://platform.openai.com/docs/guides/structured-outputs) by specifying a new parameter called `strict` as true or false when creating or using `OpenAIFunction`s in `assistant.model.tools[type=function]`. Set the `name`, provide a `description` (up to 1000 characters), and specify `parameters` as a [JSON Schema object](https://json-schema.org/understanding-json-schema). See the [OpenAI guide](https://platform.openai.com/docs/guides/function-calling) for examples.

    2. **Secure Incoming SIP Phone Calls to Vapi Provided SIP Numbers**: You can now specify a `username`, `password`, and optional `realm` in SIP Invite AuthZ header, through digest authentication. Create this secure SIP number by specifying an "authentication" object with the username and password fields inside `POST /phone-number` request body. Example:

    ```bash
    curl --location 'https://api.vapi.ai/phone-number' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer {}API_KEY}}' \
    --data-raw '{
      "provider": "vapi",
      "sipUri": "sip:{{USERNAME}}@sip.vapi.ai",
      "assistantId": "{{ASSISTANT_ID}}",
      "name": "example phone number label for your reference",
      "authentication": {
        "realm": "sip.vapi.ai",
        "username": "test@example.com",
        "password": "example_password"
      }
    }'
    ```

    3. **Use Updated `handoff`, `callback` Steps in Blocks**: You can now use `assistant.model.steps[type=handoff]` and `assistant.model.steps[type=callback]` to control conversation flow in your assistant. Use `HandoffStep` to move to the next step linearly without returning to the previous step, ideal for sequential tasks like forms. Use `CallbackStep` to spawn a new conversation thread and return to the previous step once done, good for handling interruptions or sub-tasks within a conversation.

    4. **Use Step Destinations and Assignment Mutation in Blocks**: Specify destination nodes for each step with `assistant.model.steps[type=handoff].destinations[type=step]` to direct the workflow to specific steps based on certain conditions. Update context variables in each callback step with `mutations[type=assignment]`, for example: `assistant.model.steps[type=callback].mutations[type=assignment]`
  </Accordion>
</AccordionGroup>
