Ravi
08/07/2025, 9:47 AMVapi Support Bot
08/07/2025, 9:49 AMRavi
08/07/2025, 9:49 AM{
"results": [
{
"toolCallId": "",
"result": "Great, your appointment has been booked. "
}
]
}Ravi
08/07/2025, 9:50 AMRavi
08/07/2025, 9:50 AM{
"results": [
{
"toolCallId": "",
"result": "Great, your appointment has been booked. "
}
]
}Ravi
08/07/2025, 9:50 AMRavi
08/07/2025, 9:54 AMVapi Support Bot
08/07/2025, 9:56 AMjs
// Example handler for Vapi tool call webhook
app.post('/your-webhook', (req, res) => {
const toolCallId = req.body.message.toolCallList[0].id; // Extract from incoming request
res.json({
results: [
{
toolCallId: toolCallId,
result: "Great, your appointment has been booked."
}
]
});
});
Update your server logic to extract and return the correct "toolCallId" as shown above. This should resolve the "No result returned" error.
[See Vapi docs for details](https://docs.vapi.ai/tools/custom-tools#server-response-format-providing-results-and-context)
Source:
- [Custom Tools Documentation](https://docs.vapi.ai/tools/custom-tools)Ravi
08/07/2025, 9:59 AMRavi
08/07/2025, 9:59 AMVapi Support Bot
08/07/2025, 10:01 AMjs
app.post('/your-webhook', (req, res) => {
const toolCallId = req.body.message.toolCallList[0].id;
res.json({
results: [
{ toolCallId, result: "Great, your appointment has been booked." }
]
});
});
Replace '/your-webhook' with the actual path you configured for Vapi to call.
[See Vapi docs for details](https://docs.vapi.ai/tools/custom-tools#server-response-format-providing-results-and-context)
Source:
- [Custom Tools Documentation](https://docs.vapi.ai/tools/custom-tools)Ravi
08/07/2025, 10:02 AMVapi Support Bot
08/07/2025, 10:04 AMRavi
08/07/2025, 10:08 AMVapi Support Bot
08/07/2025, 10:10 AMtoolCallId from the incoming request:
json
{
"results": [
{
"toolCallId": "{{1.message.toolCallList[0].id}}",
"result": "Great, your appointment has been booked."
}
]
}
In Make.com, use the variable selector to insert the correct path for toolCallId from the incoming webhook payload into your response.
[See Vapi docs for details](https://docs.vapi.ai/tools/custom-tools#server-response-format-providing-results-and-context)
Source:
- [Custom Tools Documentation](https://docs.vapi.ai/tools/custom-tools#server-response-format-providing-results-and-context)Kings_big💫
08/07/2025, 10:16 AMRavi
08/07/2025, 10:17 AMVapi Support Bot
08/07/2025, 10:19 AM{{3.choices[].message.tool_calls[].id}} for toolCallId, but Vapi expects {{1.message.toolCallList[0].id}}.
Can you confirm if you have mapped the toolCallId in Make.com exactly as {{1.message.toolCallList[0].id}} from the incoming webhook payload?
Source:
- [Custom Tools Documentation](https://docs.vapi.ai/tools/custom-tools#server-response-format-providing-results-and-context)Ravi
08/07/2025, 10:20 AMRavi
08/07/2025, 10:30 AMVapi Support Bot
08/07/2025, 10:32 AMtoolCallId as {{1.message.toolCallList[0].id}} from the incoming webhook payload:
json
{
"results": [
{
"toolCallId": "{{1.message.toolCallList[0].id}}",
"result": "Great, your appointment has been booked."
}
]
}
Use the variable selector in Make.com to insert this exact path. This should ensure Vapi receives the correct response and eliminates the error.
[See Vapi docs for details](https://docs.vapi.ai/tools/custom-tools#server-response-format-providing-results-and-context)
Source:
- [Custom Tools Documentation](https://docs.vapi.ai/tools/custom-tools#server-response-format-providing-results-and-context)Ravi
08/07/2025, 10:46 AMRavi
08/07/2025, 10:46 AMVapi Support Bot
08/07/2025, 10:48 AMtoolCallId field to {{1.message.toolCallList[0].id}} using the variable selector from the incoming payload (not a hardcoded or empty value):
json
{
"results": [
{
"toolCallId": "{{1.message.toolCallList[0].id}}",
"result": "Unfortunately, your chosen time slot was already booked. However, I can offer you these available alternatives: 6:31 to 6:46 AM, 7:01 to 7:16 AM, or 7:16 to 7:31 AM. Let me know which one works best for you!"
}
]
}
Double-check that the variable path matches the actual incoming payload structure in your scenario. If the path is different, use Make.com's variable selector to find the correct one from the webhook data.
Source:
- [Custom Tools Documentation](https://docs.vapi.ai/tools/custom-tools#server-response-format-providing-results-and-context)Vapi Support Bot
08/07/2025, 11:27 AMRavi
08/07/2025, 11:49 AMRavi
08/07/2025, 11:50 AMVapi Support Bot
08/07/2025, 11:52 AM{{1.message.toolCallList[0].id}} actually show a value (not empty) in the response preview? This will confirm if the mapping is correct or if the payload structure needs adjustment.
Source:
- [Custom Tools Documentation](https://docs.vapi.ai/tools/custom-tools#server-response-format-providing-results-and-context)Ravi
08/07/2025, 11:53 AMVapi Support Bot
08/07/2025, 11:56 AMtoolCallId value, which is why Vapi shows "No result returned."
In Make.com, open your Webhook Response module and use the variable selector to map toolCallId to the actual value from the incoming payload—**it should look like {{1.message.toolCallList[0].id}} only if that path exists and is not empty in your test data**.
json
{
"results": [
{
"toolCallId": "{{1.message.toolCallList[0].id}}",
"result": "Great, your appointment has been booked."
}
]
}
Test your scenario with a real webhook payload and confirm in the response preview that toolCallId is populated—if not, use the variable selector to find the correct path from the incoming data.
[See Vapi docs for details](https://docs.vapi.ai/tools/custom-tools#server-response-format-providing-results-and-context)
Source:
- [Custom Tools Documentation](https://docs.vapi.ai/tools/custom-tools#server-response-format-providing-results-and-context)Chiranjeet Mishra
08/10/2025, 7:56 AM