TalentMind API

v1.0.0

TalentMind API documentation — programmatic access to interview analysis, soft skills scoring, and candidate corporate fit assessment. REST API and webhooks for embedding AI assessment into your ATS

Authorization

The Authorization header is passed in the format Bearer {token}

Scheme

BearerAuth

Type

API Key

Header

Authorization

Interviews

post

uploadInterview

Upload an interview recording for analysis

Request body · application/json

candidate_idrequired

string

Candidate identifier

vacancy_idrequired

string

Vacancy identifier

media_urlrequired

string

URL of the interview recording (mp4, mp3, m4a)

Responses

200Interview accepted for processing
400Bad request
post/v1/interviews
Request
import axios from 'axios';

async function uploadInterview() {
  try {
    const response = await axios.post('https://api.talentmind.app/v1/interviews', {
      candidate_id: 'cand_4f21',
      vacancy_id: 'ui-engineer',
      media_url: 'https://cdn.acme.io/int-204.mp4'
    }, {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error);
  }
}

uploadInterview();
Response · application/json
{
  "success": true,
  "id": "int_8d24f0",
  "status": "processing",
  "created_at": "2026-06-13T09:24:00Z"
}
get

getInterview

Get the status and analysis result of an interview

Path parameters

idrequired

string

Interview identifier

Responses

200Success
404Interview not found
get/v1/interviews/{id}
Request
import axios from 'axios';

async function getInterview() {
  try {
    const response = await axios.get('https://api.talentmind.app/v1/interviews/int_8d24f0', {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error);
  }
}

getInterview();
Response · application/json
{
  "success": true,
  "id": "int_8d24f0",
  "status": "completed",
  "match": 0.88,
  "report_url": "https://app.talentmind.app/r/int_8d24f0",
  "scores": {
    "leadership": 0.88,
    "communication": 0.84,
    "empathy": 0.75,
    "logic": 0.76
  }
}
get

listInterviews

List interviews

Query parameters

status

string

Enum: processing · completed · failed

Filter by status

limit

integer

Default: 20

Number of records. Maximum 100.

offset

integer

Default: 0

Offset for pagination.

Responses

200Success
400Bad request
get/v1/interviews
Request
import axios from 'axios';

async function listInterviews() {
  try {
    const response = await axios.get('https://api.talentmind.app/v1/interviews', {
      headers: { Authorization: 'Bearer YOUR_API_KEY' },
      params: {
        status: 'completed',
        limit: 20,
        offset: 0
      }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error);
  }
}

listInterviews();
Response · application/json
{
  "success": true,
  "total": 128,
  "items": [
    { "id": "int_8d24f0", "status": "completed", "match": 0.88 },
    { "id": "int_7b15c2", "status": "processing", "match": null }
  ]
}

Candidates

get

getCandidateScore

Score a candidate's soft skills

Path parameters

idrequired

string

Candidate identifier

Responses

200Success
404Candidate not found
get/v1/candidates/{id}/score
Request
import axios from 'axios';

async function getCandidateScore() {
  try {
    const response = await axios.get('https://api.talentmind.app/v1/candidates/cand_4f21/score', {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error);
  }
}

getCandidateScore();
Response · application/json
{
  "success": true,
  "candidate_id": "cand_4f21",
  "match": 0.88,
  "scores": {
    "leadership": 0.88,
    "communication": 0.84,
    "empathy": 0.75,
    "planning": 0.85,
    "stress_tolerance": 0.68
  }
}
get

getCandidateReport

Full candidate report

Path parameters

idrequired

string

Candidate identifier

Responses

200Success
404Candidate not found
get/v1/candidates/{id}/report
Request
import axios from 'axios';

async function getCandidateReport() {
  try {
    const response = await axios.get('https://api.talentmind.app/v1/candidates/cand_4f21/report', {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error);
  }
}

getCandidateReport();
Response · application/json
{
  "success": true,
  "candidate": {
    "name": "Dmitry Sokolov",
    "position": "Senior Project Manager"
  },
  "compatibility": 0.74,
  "recommendation": "recommended",
  "strengths": ["Systems thinking", "End-to-end project ownership"],
  "risks": ["High salary expectations"]
}
post

compareCandidates

Compare candidates by criteria

Request body · application/json

candidate_idsrequired

array<string>

Candidate identifiers (2 to 10)

criteria

string

Comparison criterion (for example, leadership)

Responses

200Success
400Bad request
post/v1/candidates/compare
Request
import axios from 'axios';

async function compareCandidates() {
  try {
    const response = await axios.post('https://api.talentmind.app/v1/candidates/compare', {
      candidate_ids: ['cand_4f21', 'cand_9a02'],
      criteria: 'leadership'
    }, {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error);
  }
}

compareCandidates();
Response · application/json
{
  "success": true,
  "ranking": [
    { "candidate_id": "cand_4f21", "score": 0.88 },
    { "candidate_id": "cand_9a02", "score": 0.81 }
  ]
}

Culture

get

getCultureProfile

Company corporate culture profile

Responses

200Success
get/v1/culture/profile
Request
import axios from 'axios';

async function getCultureProfile() {
  try {
    const response = await axios.get('https://api.talentmind.app/v1/culture/profile', {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error);
  }
}

getCultureProfile();
Response · application/json
{
  "success": true,
  "parameters_count": 54,
  "dimensions": {
    "innovation": 0.64,
    "stability": 0.78,
    "people": 0.72,
    "results": 0.81,
    "detail": 0.75,
    "team": 0.69,
    "competitiveness": 0.58
  }
}
post

getCultureFit

Assess a candidate's fit with the company DNA

Request body · application/json

candidate_idrequired

string

Candidate identifier

Responses

200Success
400Bad request
post/v1/culture/fit
Request
import axios from 'axios';

async function getCultureFit() {
  try {
    const response = await axios.post('https://api.talentmind.app/v1/culture/fit', {
      candidate_id: 'cand_4f21'
    }, {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error);
  }
}

getCultureFit();
Response · application/json
{
  "success": true,
  "fit_score": 0.74,
  "matches": ["Execution discipline", "Analytical approach"],
  "attention": ["Team collaboration"]
}

Webhooks

post

createWebhook

Subscribe to analysis events

Request body · application/json

urlrequired

string

URL for event delivery

eventsrequired

array<string>

Events: interview.completed, report.ready, candidate.scored

Responses

200Webhook created
400Bad request
post/v1/webhooks
Request
import axios from 'axios';

async function createWebhook() {
  try {
    const response = await axios.post('https://api.talentmind.app/v1/webhooks', {
      url: 'https://acme.io/hooks/talentmind',
      events: ['interview.completed', 'report.ready']
    }, {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error);
  }
}

createWebhook();
Response · application/json
{
  "success": true,
  "id": "wh_2c91",
  "url": "https://acme.io/hooks/talentmind",
  "events": ["interview.completed", "report.ready"]
}
get

listWebhooks

List webhooks

Responses

200Success
get/v1/webhooks
Request
import axios from 'axios';

async function listWebhooks() {
  try {
    const response = await axios.get('https://api.talentmind.app/v1/webhooks', {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error);
  }
}

listWebhooks();
Response · application/json
{
  "success": true,
  "items": [
    {
      "id": "wh_2c91",
      "url": "https://acme.io/hooks/talentmind",
      "events": ["interview.completed", "report.ready"]
    }
  ]
}
delete

deleteWebhook

Delete a webhook

Path parameters

idrequired

string

Webhook identifier

Responses

200Webhook deleted
404Webhook not found
delete/v1/webhooks/{id}
Request
import axios from 'axios';

async function deleteWebhook() {
  try {
    const response = await axios.delete('https://api.talentmind.app/v1/webhooks/wh_2c91', {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error);
  }
}

deleteWebhook();
Response · application/json
{
  "success": true,
  "deleted": true
}