const fs = require("fs");
const FormData = require("form-data");
const apiKey = process.env.WOODWIDE_API_KEY;
const baseUrl = "https://api.woodwide.ai";
const headers = { Authorization: `Bearer ${apiKey}` };
// Upload data
const uploadForm = new FormData();
uploadForm.append("file", fs.createReadStream("survey_responses.csv"), "survey_responses.csv");
uploadForm.append("dataset_name", "survey_data");
const uploadResp = await fetch(`${baseUrl}/datasets`, {
method: "POST",
headers: { ...headers, ...uploadForm.getHeaders() },
body: uploadForm,
});
const { dataset: { id: datasetId } } = await uploadResp.json();
// Train a factor analysis model
const trainResp = await fetch(`${baseUrl}/models/train`, {
method: "POST",
headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({
model_name: "survey_factors",
model_type: "factors",
dataset_id: datasetId,
}),
});
const { model: { id: modelId } } = await trainResp.json();
// Wait for training
while (true) {
const modelResp = await fetch(`${baseUrl}/models/${modelId}`, { headers });
const model = await modelResp.json();
if (model.status === "ready") break;
await new Promise((r) => setTimeout(r, 5000));
}