const axios = require("axios");
const client = axios.create({
baseURL: "https://api.instaview.sk",
headers: {
Authorization: `Bearer ${process.env.INSTAVIEW_API_KEY}`,
"Content-Type": "application/json",
},
});
async function completeWorkflow() {
// 1. Create a job
const job = await client.post("/jobs", {
title: "Frontend Developer",
description: "React and TypeScript expert needed",
requiredSkills: ["React", "TypeScript"],
status: "OPEN",
});
const jobId = job.data.data.id;
console.log("Job created:", jobId);
// 2. Create a candidate
const candidate = await client.post("/candidates", {
jobId: jobId,
firstName: "Jane",
lastName: "Doe",
email: "jane.doe@example.com",
phoneNumber: "+1234567890",
gdprExpiryDate: new Date(
Date.now() + 365 * 24 * 60 * 60 * 1000,
).toISOString(),
});
const candidateId = candidate.data.data.id;
console.log("Candidate created:", candidateId);
// 3. Create an interview agent
const agent = await client.post("/agents", {
name: "Technical Screening Agent",
voiceId: "ALEX",
type: "ONLINE",
focus: "SCREENING",
questions: [
"Tell me about your React experience",
"Explain the difference between props and state",
"How do you handle async operations in React?",
],
duration: 30,
});
const agentId = agent.data.data.id;
console.log("Agent created:", agentId);
// 4. Schedule an interview
const interview = await client.post("/interviews", {
candidateId: candidateId,
agentId: agentId,
scheduleTime: new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(), // Tomorrow
});
const interviewId = interview.data.data.id;
console.log("Interview scheduled:", interviewId);
// 5. Later: Retrieve interview results
// (after the interview has been completed)
const results = await client.get(`/interviews/${interviewId}`);
console.log("Interview status:", results.data.data.status);
if (results.data.data.analysis) {
console.log("Candidate score:", results.data.data.analysis.overallScore);
console.log("Transcript:", results.data.data.transcript);
}
}
completeWorkflow().catch(console.error);