Vapi Tool Call (Sync) Logs "No result returned." D...
# support
b
Hey Vapi Team/Community! ๐Ÿ‘‹ Struggling with a sync tool call (get_available_slots, ID: da4ab4a8-6750-40ba-844d-7a8aa6e0005f) that connects to an n8n webhook. Problem: During live calls, Vapi logs "result": "No result returned." for this tool call. Consequently, the AI doesn't get the {{response.*}} data and hallucinates (e.g., invents random dates). Key Evidence: โœ… Vapi "Test Tool" Button: WORKS PERFECTLY! Shows 200 OK and the correct JSON response body from n8n. โœ… n8n Execution Logs: Show the webhook receiving the call and the workflow completing successfully, returning a 200 OK with the correct JSON body. โŒ Vapi Live Call Logs: Still show "result": "No result returned." for the exact same tool call ID during the conversation flow. Setup & Troubleshooting Done: Tool Async: OFF (confirmed & saved multiple times). Tool Timeout: 60s. n8n webhook is Active and URL matches Vapi Tool Server URL. n8n returns correct JSON structure (snake_case) with Content-Type: application/json header. SSML script uses matching {{response.snake_case_variable}}. AI Prompt/Hard Rules instruct strongly to use response data. Self-hosted n8n on Railway (logs checked, no obvious errors there). Question: Why would Vapi fail to register the result during a live call when the backend (n8n) demonstrably sends a valid 200 OK + JSON response, and the same call works perfectly via the "Test Tool" button? Is this a known Vapi behavior, a parsing issue, or something else I can check? Thanks for any pointers! ๐Ÿ™
v
Try using the webhook to respond directly instead of using the Vapi module. According to a user with a similar issue:
Copy code
json
// Ensure your response includes the exact toolCallId from the request
{
  "toolCallId": "call_EXACT_ID_FROM_REQUEST",
  "result": "Your result data here"
}
Make sure the
toolCallId
in your response exactly matches the ID sent by Vapi in the initial request, as mismatched IDs are a common cause of "No result returned" errors. Sources: - [Discord discussion about webhook response workaround](https://discord.com/channels/1211482211119796234/1334661059298066514) - [Discord discussion about toolCallId matching](https://discord.com/channels/1211482211119796234/1325000684231196775)
c
Hey! To help track down this issue, could you share: - The call ID - When exactly this happened (the timestamp) - What response you expected to get - What response you actually got instead This would really help us figure out what went wrong!
@Shubham Bajaj
pls help @Shubham Bajaj
c
I've identified the key issue! The response format from n8n doesn't match what VAPI expects. VAPI expects webhooks to return a response with: \-
toolCallId
(camelCase) \-
result
field containing the data But your n8n response is using: \-
tool_call_id
(snake_case) \- Everything else looks correct This naming mismatch is why VAPI can't process the response properly. When VAPI checks for a matching toolCallId, it can't find it because n8n is returning
tool_call_id
instead. Change your n8n "Respond to Webhook" node to return this exact format: \`\`\`json { "toolCallId": "call_JHJWNDzOB5XPHFGuwguV5lLR", "result": "{"no_slots_found":false,"morning_day_1":"lunedรฌ 12 maggio","morning_hour_1":"10:00","slot_1_iso":"2025-05-12T10:00:00+02:00","only_one_slot_found":true}" } \`\`\` This camelCase field naming is critical - VAPI strictly checks for
toolCallId
(not
tool_call_id
), and if it doesn't find it, returns the "No result returned" error.
2 Views