Read from https://api.your-domain.com/public/transcripts/<share_id>.txt so I can ask questions about it.
How it works
- Dashboard calls:
POST /transcripts/{platform}/{native_meeting_id}/share?meeting_id=<internal_meeting_id>- Requires
X-API-Key
- API Gateway:
- Fetches the transcript from
transcription-collector - Formats it into plain text
- Stores it in Redis under a random share id with a TTL
- Returns a
urllike:/public/transcripts/<share_id>.txt
- Fetches the transcript from
- ChatGPT reads the public URL (no auth headers required).
Configuration (API Gateway)
Environment variables (optional):PUBLIC_BASE_URL- Example:
https://api.vexa.ai - If unset, the gateway derives the URL from
X-Forwarded-ProtoandX-Forwarded-Host(recommended to set these in your reverse proxy).
- Example:
TRANSCRIPT_SHARE_TTL_SECONDS- Default:
900(15 minutes)
- Default:
TRANSCRIPT_SHARE_TTL_MAX_SECONDS- Default:
86400(24 hours)
- Default:
Security model
- The public link is unguessable (random id) and short-lived (TTL in Redis).
- The transcript is not stored permanently by this feature; it expires automatically.
- You should still treat transcripts as sensitive data:
- Keep TTL short (15–60 minutes)
- Ensure HTTPS
- Consider limiting request rate on
/public/transcripts/*
Reverse proxy requirements
ChatGPT must be able to fetch the URL from the public internet. Your reverse proxy should:- Terminate TLS (HTTPS)
- Forward requests to the API Gateway upstream
- Set:
X-Forwarded-ProtoX-Forwarded-Host
share.dev.vexa.ai → :8056.