const API_KEY = process.env.KWI_API_KEY;
const BASE_URL = "https://api.keywordinsights.ai";
async function createBrief(keyword, language = "en", location = "United States") {
const response = await fetch(`${BASE_URL}/api/content-brief/order/`, {
method: "POST",
headers: {
"X-API-Key": API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ keyword, language, location, folder_id: "<your_folder_id>" }),
});
const json = await response.json();
return json.result.payload;
}
async function waitForBrief(orderId) {
while (true) {
const response = await fetch(`${BASE_URL}/api/content-brief/order/?id=${orderId}`, {
headers: { "X-API-Key": API_KEY },
});
const json = await response.json();
const data = json.result.payload;
if (data.status) {
return data;
}
console.log("Brief processing...");
await new Promise((r) => setTimeout(r, 15000));
}
}
async function generateOutline(orderId, context = "") {
const response = await fetch(`${BASE_URL}/api/content-brief/order/${orderId}/outline/`, {
method: "POST",
headers: {
"X-API-Key": API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ additional_context: context }),
});
const json = await response.json();
const autoId = json.result.payload.auto_generate_order_id;
while (true) {
const response = await fetch(
`${BASE_URL}/api/content-brief/order/${orderId}/outline/?auto_generate_order_id=${autoId}`,
{
headers: { "X-API-Key": API_KEY },
}
);
const json = await response.json();
const data = json.result.payload;
if (data.status) {
return data;
}
await new Promise((r) => setTimeout(r, 10000));
}
}
// --- Run ---
(async () => {
const result = await createBrief("best project management tools");
const orderId = result.id;
console.log(`Brief created: ${orderId} (cost: ${result.cost} credits)`);
const brief = await waitForBrief(orderId);
console.log(`Target: ${brief.word_count_min}–${brief.word_count_max} words`);
console.log(`Title suggestions: ${brief.brief_title_suggests}`);
const outline = await generateOutline(orderId, "Focus on remote teams");
console.log(`\nAI Outline:\n${outline.string}`);
})();