Prerequisites
- A Vexa API key — get one from vexa.ai/dashboard/api-keys (hosted) or mint one via Admin API (self-hosted)
- An n8n instance (cloud or self-hosted)
API Base URL
| Deployment | URL |
|---|---|
| Hosted (Vexa Cloud) | https://api.cloud.vexa.ai |
| Self-hosted | http://your-server:8056 |
Published n8n workflow templates on n8n.io may use the old URL
gateway.dev.vexa.ai. Always replace it with the correct URL above.Basic Workflow: Calendar to Transcript to Summary
This workflow triggers on a Google Calendar event, sends a bot, waits for the meeting to end, fetches the transcript, and sends a summary.Step 1: Google Calendar Trigger
Add a Google Calendar Trigger node:- Trigger on: Event Started
- Calendar: Select your calendar
The Google Calendar Trigger returns the earliest matching event, not the most recent. If you tag events (e.g., adding “WB” to the title), ensure only one event matches the filter at a time. Alternatively, use a Schedule Trigger that polls for upcoming events.
Step 2: Extract Meeting URL
Add a Code node to extract the Google Meet link:Step 3: Send Bot to Meeting
Add an HTTP Request node:- Method: POST
- URL:
https://api.cloud.vexa.ai/bots - Authentication: Header Auth
- Name:
X-API-Key - Value:
{{ $credentials.vexaApiKey }}(or paste your key directly)
- Name:
- Body (JSON):
Step 4: Wait for Meeting to End
Add a Wait node:- Resume: On Webhook
- Configure a Vexa webhook to call this n8n webhook URL when the meeting completes
Step 5: Fetch Transcript
Add an HTTP Request node:- Method: GET
- URL:
https://api.cloud.vexa.ai/transcripts/google_meet/{{ $json.meetingId }} - Headers:
X-API-Key: your-api-key
Step 6: Summarize with LLM (optional)
Add an AI Agent or HTTP Request node to send the transcript to your preferred LLM for summarization, then pipe the result to Slack, email, or your CRM.Credentials Setup in n8n
Create a Header Auth credential in n8n:| Field | Value |
|---|---|
| Name | X-API-Key |
| Value | Your Vexa API key |
Common Issues
”Forbidden - perhaps check your credentials?”
- Verify you’re using
api.cloud.vexa.ai(notgateway.dev.vexa.ai) - Check your API key is active — new keys work immediately, but free-tier keys expire after 1 hour
- Generate a fresh API key if in doubt
Google Calendar returns the wrong event
The Google Calendar Trigger node returns the earliest event matching the filter, not the latest. Workarounds:- Use unique event tags and ensure only one matches at a time
- Use a Schedule Trigger + Calendar node instead of Calendar Trigger
- Store processed event IDs to skip duplicates
”Fetch meeting audio file” node fails
Theaudio file endpoint referenced in some published n8n templates does not exist in the current Vexa API. Use GET /transcripts/{platform}/{meeting_id} to get transcript segments and GET /recordings/{recording_id}/media/{media_file_id}/raw for audio.
Reference Workflows
- Google Meet transcription with n8n — blog tutorial
- Vexa API Reference — full endpoint documentation
- Webhooks — event-driven workflow triggers