Transfer only (skip AI)
# support
r
Does this feature work from the documentation? [Transfer Only (skip AI)](https://docs.vapi.ai/server-url/events#transfer-only-skip-ai) I've tried to skip the phone call and transfer to another phone number, but it throws an unknown error on the call. The error only occurs when I add the
destination
config to the server response. I see in the
status-update
webhook that the call's ended reason is
assistant-request-returned-forwarding-phone-number
, then the call gets dropped without transferring. --- Call IDs: - 019adb1a-c43c-7dde-9aca-9f07179c9fd3 - 019adb1a-7ec5-7113-b818-3c858dc13e7a - 019adb18-e6bf-7442-9116-bd7bc00bf50b - 019adb1f-8523-7dde-9ad0-6782320365a9 --- Example assistant request webhook response:
Copy code
const disabledResponse: Vapi.ServerMessageResponseAssistantRequest = {
  assistant: {
    name: "Skip AI",
    firstMessage: "Hey, hey, hey. I'm transferring your call now. Please stay on the line.",
    firstMessageMode: "assistant-speaks-first",
    model: {
      provider: "openai",
      model: "gpt-4.1",
    },
    voice: {
      provider: "vapi",
      voiceId: "Elliot",
    },
  },
  destination: {
    type: "number",
    number: disabledPhoneNumber,
    message: "Connecting you to the front office.",
  },
};
v
To use "Transfer only (skip AI)" correctly, your response should include only the
destination
object and use the
phoneNumber
property (not
number
). Remove the
assistant
object entirely. Here’s the correct format:
Copy code
typescript
const transferOnlyResponse = {
  destination: {
    type: "number",
    phoneNumber: disabledPhoneNumber, // Must include country code
    message: "Connecting you to the front office.",
  },
};
This should resolve the error and allow the transfer to work as intended. For reference, see the documentation: https://docs.vapi.ai/server-url/events#transfer-only-skip-ai. Source: - [Server URL Events Transfer Only (skip AI)](https://docs.vapi.ai/server-url/events)
r
The phone number does include a country code. Also,
phoneNumber
doesn't appear to be a valid property on the destination object.
I added a base assistant config to see if that resolved issue, but it did not. The assistant config actually works, but when I add a destination object I receive an error.
a
It looks like the forwarding is failing before the destination handoff is completed. Are you sending the assistant response from a synchronous server or from a delayed/async process? Sometimes if the timing is off, VAPI drops the call instead of transferring. If you want, DM me the full server response and I’ll help you pinpoint the issue.
r
That is basically the full response. I'm using an Express app, and all my other endpoints work when sending responses back, even an assistant. It's when I add the
destination
to the ServerMessageResponseAssistantRequest object--that's when it fails. Essentially this is the response broken down (the
disabledAssistantResponse
object as above). If I remove the
destination
field, I get the expected "Hey, hey, hey..." message from the webhook/assistant. I'm following [Vapi's Node example](https://github.com/VapiAI/example-server-javascript-node) (with some modifications).
Copy code
const disabledAssistantResponse = await assistantRequestHandler(payload) 
return res.status(200).json(disabledAssistantResponse);
c
Hi ronnypg, It seems like the issue is related to the incorrect use of the
destination
object in your response for the "Transfer only (skip AI)" feature. To successfully transfer a call without involving the assistant, your server response should only include the
destination
object. Here's the corrected format:
Copy code
typescript
const transferOnlyResponse = {
  destination: {
    type: "number",
    number: disabledPhoneNumber, // Ensure it includes the country code in E.164 format
    message: "Connecting you to the front office.",
  },
};
Remove the
assistant
object entirely from the response. The
phoneNumber
property you mentioned should indeed be
number
, according to Vapi's configuration requirements. Ensure your server sends this response asynchronously within the required time frame to avoid call drops due to timing issues. If the call still gets dropped, verify that the
disabledPhoneNumber
is correct and includes the country code. For further details, you can refer to the [Transfer Only (skip AI)](https://docs.vapi.ai/server-url/events#transfer-only-skip-ai) documentation.
r
Thank you for your response. Yes, that is exactly what I'm trying. I've copied your transferOnlyResponse and followed the documentation. When I call the number, I get a "Unknown error occurred. Contact support at Vapi." message. For testing I'm only returning a destination. I'm not fetching any data or making a delayed response.
Copy code
const transferOnlyResponse = {
  destination: {
    type: "number",
    number: <my_own_valid_number>, // With a valid E.164 number
    message: "Connecting you to the front office.",
  },
};
---- Below are call IDs that don't really have any context data in the dashboard, and they both have a call ended reason of
Call.in progress.sip completed call
Call IDs: - 019ae648-d1b1-7aa9-8f61-9a944e303741 - 019ae648-6b1e-733c-98dc-b45ccefc8f97 - 019ae64e-71a0-7aa1-9009-1e815f8fd8b1
What's strange is that I can use the same exact
disabledPhoneNumber
and use the
transferCall
tool to transfer a caller to that number.
Sorry, maybe I'm not seeing something, but here's what my responses look like, which is well under the
7.5s
limitation. I've even called the number directly, and it works. The Postman screenshot is just a representation of what I'm sending back on a live phone call and assistant-request webhook request. --- Call ID: - 019ae981-38e2-755f-949e-a77c3542b9d5 https://cdn.discordapp.com/attachments/1445119806150938817/1446128362534736004/Screenshot_2025-12-04_at_7.14.40_AM.png?ex=69717abd&is=6970293d&hm=167f602ac9dfd4d9217796262f6e51626281ed5264bc5543e452f2ed33a25a2a& https://cdn.discordapp.com/attachments/1445119806150938817/1446128363163877548/Screenshot_2025-12-04_at_7.14.09_AM.png?ex=69717abd&is=6970293d&hm=4001385dc507d08ab1b6e557c7e7959d56a2d5f2c5ca5210107f4c41eb3ecf55&
@Vapi @Vapi Support Bot As you can see from above, I'm only returning a destination and it's within the time limitation, but I still receive an error when I try to call.
v
Try this next: Double-check your assistant configuration to ensure you are not including any
serverMessages
like
"phone-call-control"
and that
phoneCallProviderBypassEnabled
is set to
false
. Your response should look like:
Copy code
json
{
  "destination": {
    "type": "number",
    "number": "+12623728081",
    "message": "Connecting you to the front office."
  }
}
If the issue persists, review your telephony provider logs for transfer errors, as provider-side issues can also cause immediate call drops. See: [Vapi transfer troubleshooting guide](https://docs.vapi.ai/phone-calling/transfer-calls/debug-forwarding-drops) Source: - [Debug call forwarding drops](https://docs.vapi.ai/phone-calling/transfer-calls/debug-forwarding-drops)
r
I have no assistant configuration, so there won't be a
phone-call-control
server message or
phoneCallProviderBypassEnabled
setting. I'm testing with transferring from a Vapi number to a different Vapi number. Is that possibly not allowed?
@Vapi Support Bot
v
Based on the documentation, cross-provider transfers may have compatibility issues, and it is not explicitly stated whether transferring from one Vapi number to another Vapi number is supported. If your response format matches the example below and the issue persists, it may be a platform limitation:
Copy code
json
{
  "destination": {
    "type": "number",
    "number": "+12623728081",
    "message": "Connecting you to the front office."
  }
}
If you continue to experience call drops, please contact Vapi support with your call IDs, as this scenario may not be fully supported or may require further investigation. See: [Vapi transfer troubleshooting guide](https://docs.vapi.ai/phone-calling/transfer-calls/debug-forwarding-drops) Source: - [Debug call forwarding drops](https://docs.vapi.ai/phone-calling/transfer-calls/debug-forwarding-drops)
r
@Vapi Any suggestions? Call IDs: - 019b2922-8e20-755f-8e3c-74cb71667a99 - 019b291e-d7c9-7446-bd89-b64b6e5388e3
If it's helpful, I'm also using the
@vapi-ai/server-sdk
@kyle Any updates on this one?
c
We are still looking into this one. Working on some tests with Vapi numbers and Twilio
2 Views