Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion fern/apis/webhooks/openapi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ paths:
summary: Client Message
description: |
These are all the webhook messages that will be sent to the client-side SDKs during the call.
Configure the messages you'd like to receive in `assistant.clientMessages``.
Configure the messages you'd like to receive in `assistant.clientMessages`.
requestBody:
content:
Expand Down
81 changes: 81 additions & 0 deletions fern/calls/call-outbound.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
## Introduction to Outbound Calling

Vapi’s outbound calling API lets you programmatically initiate single or batch calls to any phone number. You can schedule calls for specific dates and times, ideal for time-sensitive communications. Easily integrate outbound calling into your app for appointment reminders, automated surveys, and call campaigns.

## Prerequisites

- **Vapi Account**: Access to the Vapi Dashboard for configuration.
- **Configured Assistant**: Either a saved assistant or a transient assistant.
- **Phone Number**: Either an imported phone number from one of the supported providers or a free Vapi number. (Note: You cannot make international calls with a free Vapi number).
- **Customer's Phone Number**: The phone number that you want to call.

## Outbound Calls

You can place an outbound call from one of your phone numbers using the [`/call`](/api-reference/calls/create-phone-call) endpoint.

1. **Specify an Assistant:** you must specify either a transient assistant in the `assistant` field or reuse a saved assistant in the `assistantId` field.
2. **Get a Phone Number:** provide the `phoneNumberId` of the imported number or free Vapi number you wish to call from.
3. **Provide a Destination:** Finally, pass the customer's phone number or SIP URI in [`customer`](/api-reference/calls/create-phone-call#request.body.customer).

Provide your authorization token and now we're ready to issue the API call!

```jsx
{
"assistantId": "assistant-id",
"phoneNumberId": "phone-number-id",
"customer": {
"number": "+11231231234"
}
}
```

## Scheduling Outbound Calls

To schedule a call for the future, use the [`schedulePlan`](/api-reference/calls/create-phone-call#request.body.schedulePlan) parameter and pass a future ISO date-time string to `earliestAt`. This will be the earliest time Vapi will attempt to trigger the outbound call. You may also provider `latestAt`, which will be the latest time Vapi will attempt to trigger the call.

When you schedule a call, we will save the Assistant, Phone Number, and Customer Number resources and refetch them at the time of the call. If you choose to provide a saved assistant through `assistantId`, we will pick up the most up-to-date version of your assistant at the call time. Likewise, if you delete your saved assistant, the call will fail! To ensure the call is issued with a static version of an assistant, pass it as a transient assistant through the `assistant` parameter.

```jsx
{
"assistantId": "assistant-id",
"phoneNumberId": "phone-number-id",
"customer": {
"number": "+11231231234"
},
"schedulePlan": {
"earliestAt": "2025-05-30T00:00:00Z"
}
}
```

## Batch Calling

To call more than one number at a time, use the [`customers`](/api-reference/calls/create-phone-call#request.body.customers) parameter to pass an array of `customer`. To provide customer specific assistant overrides, please call the endpoint separately for each destination number.

Use both `customers` and `schedulePlan` together to schedule batched calls.

```jsx
{
"assistantId": "assistant-id",
"phoneNumberId": "phone-number-id",
"customers": [
{
"number": "+11231231234"
},
{
"number": "+12342342345"
}
],
"schedulePlan": {
"earliestAt": "2025-05-30T00:00:00Z"
}
}
```

Note: Vapi free numbers have limited number of outbound calls per day. Import a number from Twilio, Vonage, or Telnyx to scale without limits.

<Warning>
It is a violation of FCC law to dial phone numbers without consent in an
automated manner. See [Telemarketing Sales
Rule](/glossary#telemarketing-sales-rule) to learn more.
</Warning>
27 changes: 13 additions & 14 deletions fern/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ navigation:
contents:
- page: Twilio
path: advanced/sip/sip-twilio.mdx
- page: Telnyx
- page: Telnyx
path: advanced/sip/sip-telnyx.mdx
- page: Zadarma
path: advanced/sip/sip-zadarma.mdx
Expand Down Expand Up @@ -344,24 +344,13 @@ navigation:
- page: Vapify
path: providers/vapify.mdx

- section: Test
collapsed: true
contents:
- page: Test Suites
path: test/test-suites.mdx
- page: Chat Testing
path: test/chat-testing.mdx
- page: Voice Testing
path: test/voice-testing.mdx

- section: Deploy
collapsed: true
contents:
- section: Calls
path: phone-calling.mdx
contents:
- page: Call Forwarding
path: call-forwarding.mdx
- page: Outbound Calls
path: calls/call-outbound.mdx
- page: Dynamic Call Transfers
path: calls/call-dynamic-transfers.mdx
- page: Ended Reason
Expand Down Expand Up @@ -402,6 +391,16 @@ navigation:
- page: Server Authentication
path: server-url/server-authentication.mdx

- section: Test
collapsed: true
contents:
- page: Test Suites
path: test/test-suites.mdx
- page: Chat Testing
path: test/chat-testing.mdx
- page: Voice Testing
path: test/voice-testing.mdx

- section: Community
collapsed: true
contents:
Expand Down
2 changes: 1 addition & 1 deletion fern/phone-calling.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ If you want to use your own phone number, you can also use the dashboard or the

<Accordion title="Outbound Calls">
You can place an outbound call from one of your phone numbers using the
[`/call/phone`](/api-reference/calls/create-phone-call) endpoint. If the system message will be
[`/call`](/api-reference/calls/create-phone-call) endpoint. If the system message will be
different with every call, you can specify a temporary assistant in the `assistant` field. If you
want to reuse an assistant, you can specify its ID in the `assistantId` field.
</Accordion>
Expand Down
Loading