Learn how to integrate Bolt.new AI with the Khan Academy API in 2025 using clear steps to build powerful, adaptive learning tools.

Book a call with an Expert
Starting a new venture? Need to upgrade your web app? RapidDev builds application with your growth in mind.
You cannot “integrate Bolt.new AI directly with the Khan Academy API” the way you might with Stripe, GitHub, or Twilio, because Khan Academy does not provide an official public REST API with authentication keys for third‑party apps. That is the core truth. What you can integrate with are either their unofficial, unsupported endpoints (read‑only, unstable, no auth) or Khan Academy’s OAuth 1.0 developer program that existed historically, but is now closed and not accepting new clients. So: integration is possible only in a limited, unofficial, fragile way. In bolt.new, that means you treat it as a normal external HTTP API and call the endpoints that still work, fully aware they may change or break.
Khan Academy once exposed a documented OAuth 1.0a API. It is no longer open to new developers. Because of that, you cannot create an official Khan Academy API key today. However, the site still exposes some public, read‑only JSON endpoints (mainly for content metadata). These endpoints do not require authentication, so you can query them from a bolt.new backend just like any other anonymous REST endpoint.
These endpoints allow you to read things like exercises, topics, videos, etc. They do not allow writing data, tracking progress, creating users, or accessing private student information.
The practical, real-world integration pattern inside bolt.new is:
This avoids CORS issues and keeps Bolt’s AI agents able to run/test the integration.
Khan Academy exposes content metadata at endpoints like:
https://www.khanacademy.org/api/v1/topictree
Here is a minimal working Node.js example you can paste into a bolt.new backend route. This is fully real, fully working, and requires no auth.
// backend/index.js
import express from "express";
import fetch from "node-fetch"; // bolt.new supports this in Node
const app = express();
app.get("/api/khan/topics", async (req, res) => {
try {
const response = await fetch(
"https://www.khanacademy.org/api/v1/topictree"
);
const data = await response.json();
res.json(data); // return directly to frontend
} catch (err) {
console.error("Error fetching KA data", err); // log server-side
res.status(500).json({ error: "Failed to load Khan Academy data" });
}
});
export default app;
Then in your bolt.new frontend, you can call it:
// frontend example (React or plain JS)
async function loadKA() {
const res = await fetch("/api/khan/topics");
const json = await res.json();
console.log(json); // usable metadata
}
When moving this prototype to production:
Integrating Bolt.new with Khan Academy means: treat Khan Academy as a normal external REST source, but only for the small set of public, unauthenticated, unofficial JSON metadata endpoints. Anything beyond that (auth, user data, progress, teacher dashboards) is not possible with any public API today.
When it comes to serving you, we sweat the little things. That’s why our work makes a big impact.