Learn how to seamlessly integrate Bolt.new AI with Zoom in 2025 using this clear step-by-step guide for faster workflows and smarter meetings

Book a call with an Expert
Starting a new venture? Need to upgrade your web app? RapidDev builds application with your growth in mind.
To integrate Bolt.new with Zoom, you don’t “connect Bolt to Zoom directly.” What you actually do is: you build code inside a Bolt.new project that talks to the official Zoom REST API using OAuth or Server‑to‑Server OAuth credentials, then you run and test that integration inside Bolt’s sandbox. Bolt is simply your development and automation workspace — the integration is just standard HTTPS API calls plus auth. The real work is: creating a Zoom app (in Zoom Marketplace), generating credentials, storing them as environment variables in Bolt.new, and writing API routes or server functions that call Zoom’s endpoints (create meetings, read users, manage recordings, handle webhooks, etc.).
In practical terms: your Bolt.new project is a full-stack app (Node/Express, Next.js, Python, etc.). That app uses Zoom’s official REST API by sending authenticated HTTPS requests. That’s the whole integration.
This is the simplest, real, production-valid flow.
Zoom’s Server‑to‑Server OAuth returns an access token via a POST request. You should never hard‑code tokens; always fetch fresh ones.
// utils/getZoomToken.js
export async function getZoomToken() {
const tokenUrl = "https://zoom.us/oauth/token";
const params = new URLSearchParams();
params.append("grant_type", "account_credentials");
params.append("account_id", process.env.ZOOM_ACCOUNT_ID);
const basicAuth = Buffer.from(
process.env.ZOOM_CLIENT_ID + ":" + process.env.ZOOM_CLIENT_SECRET
).toString("base64");
const res = await fetch(tokenUrl, {
method: "POST",
headers: {
Authorization: "Basic " + basicAuth,
"Content-Type": "application/x-www-form-urlencoded"
},
body: params
});
const data = await res.json();
return data.access_token;
}
Here’s a real example of creating a Zoom meeting from inside a Bolt.new backend route.
// routes/createMeeting.js
import express from "express";
import { getZoomToken } from "../utils/getZoomToken.js";
const router = express.Router();
router.post("/", async (req, res) => {
try {
const token = await getZoomToken();
const zoomRes = await fetch("https://api.zoom.us/v2/users/me/meetings", {
method: "POST",
headers: {
Authorization: "Bearer " + token,
"Content-Type": "application/json"
},
body: JSON.stringify({
topic: "Bolt.new + Zoom Integration",
type: 1 // instant meeting
})
});
const data = await zoomRes.json();
res.json(data);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
export default router;
If you want Zoom to notify your Bolt app when a meeting starts, ends, or a recording finishes, you enable Event Subscriptions in your Zoom app and point them at a route in Bolt. Example:
// routes/zoomWebhook.js
import express from "express";
const router = express.Router();
router.post("/", async (req, res) => {
// Zoom sends JSON with event type and payload
console.log("Webhook event:", req.body.event);
// Always return 200 so Zoom knows you received it
res.status(200).send();
});
export default router;
Bolt’s preview server gives you a public URL for testing webhooks. For production you’d re‑deploy to a real host.
Both work fully inside Bolt.new because they’re just HTTP calls.
Integrating Bolt.new with Zoom means building normal API calls (REST) inside a Bolt project using Zoom OAuth credentials stored as environment variables. You create a Zoom app, fetch tokens, call endpoints, optionally receive webhooks, and test everything right in Bolt. Nothing magical — just clean API integration.
When it comes to serving you, we sweat the little things. That’s why our work makes a big impact.