Deploy applications that integrate with Fireflies.ai's meeting transcription service. Covers configuring the GraphQL API connection, deploying webhook receivers for transcript notifications, and managing API credentials across deployment platforms.
FIREFLIES_API_KEY environment variableapi.fireflies.ai/graphql
# Vercel
vercel env add FIREFLIES_API_KEY production
# Docker
echo "FIREFLIES_API_KEY=your-key" >> .env.production
// lib/fireflies.ts
const FIREFLIES_API = "https://api.fireflies.ai/graphql";
export async function firefliesQuery(query: string, variables?: any) {
const response = await fetch(FIREFLIES_API, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${process.env.FIREFLIES_API_KEY}`,
},
body: JSON.stringify({ query, variables }),
});
const result = await response.json();
if (result.errors) throw new Error(result.errors[0].message);
return result.data;
}
// api/webhooks/fireflies.ts
export async function POST(req: Request) {
const { event_type, meeting_id, data } = await req.json();
if (event_type === "Transcription completed") {
const transcript = await firefliesQuery(`
query { transcript(id: "${meeting_id}") {
title duration speakers { name } summary { overview action_items }
}}
`);
await processTranscript(transcript);
}
return Response.json({ received: true });
}
FROM node:20-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
EXPOSE 3000 # 3000: 3 seconds in ms
CMD ["node", "dist/index.js"]
export async function GET() {
try {
await firefliesQuery("{ user { email } }");
return Response.json({ status: "healthy", service: "fireflies" });
} catch {
return Response.json({ status: "unhealthy" }, { status: 503 }); # HTTP 503 Service Unavailable
}
}
| Issue | Cause | Solution |
|---|---|---|
| GraphQL auth error | Invalid API key | Regenerate key in Fireflies dashboard |
| No transcripts | Bot not invited | Ensure Fireflies bot joins meetings |
| Webhook not firing | Webhook not registered | Register via GraphQL mutation |
| Query timeout | Large transcript | Paginate results or request specific fields |
set -euo pipefail
curl -X POST https://api.fireflies.ai/graphql \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "mutation { addWebhook(input: { url: \"https://api.yourapp.com/webhooks/fireflies\", events: [\"Transcription completed\"] }) { id } }"}'
For webhook handling, see fireflies-webhooks-events.