Ahmer
05/26/2025, 2:34 PMVapi Support Bot
05/26/2025, 2:35 PMAhmer
05/26/2025, 2:39 PMVapi Support Bot
05/26/2025, 2:41 PMjs
app.post('/vapi-tool-proxy', async (req, res) => {
const userToken = /* logic to get user token from session/context */;
const response = await fetch('https://your-tool-endpoint', {
method: 'POST',
headers: {
'Authorization': `Bearer ${userToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(req.body)
});
res.status(response.status).send(await response.text());
});
Set your tool's server URL in Vapi to this proxy endpoint.
This is the standard way to handle dynamic per-user headers in Vapi.
Sources:
- [Custom Tools Documentation](https://docs.vapi.ai/tools/custom-tools)
- [Tool Calling Integration](https://docs.vapi.ai/customization/tool-calling-integration)Ahmer
05/26/2025, 2:42 PMVapi Support Bot
05/26/2025, 2:43 PMpython
from flask import Flask, request
import requests
app = Flask(__name__)
@app.route('/vapi-tool-proxy', methods=['POST'])
def proxy():
user_token = "EXTRACTED_USER_TOKEN" # Implement your logic here
resp = requests.post(
'https://your-tool-endpoint',
headers={'Authorization': f'Bearer {user_token}', 'Content-Type': 'application/json'},
json=request.get_json()
)
return (resp.text, resp.status_code, resp.headers.items())
# Run your Flask app as usual
How to get the user token: You must design your system to make the token available (e.g., include it in the payload or retrieve it from your own session/context), as Vapi does not provide it automatically in the request.
Sources:
- [Custom Tools Documentation](https://docs.vapi.ai/tools/custom-tools)
- [Tool Calling Integration](https://docs.vapi.ai/customization/tool-calling-integration)Kings Big
05/27/2025, 5:48 PM