Quick Start Guide

Get up and running with SkillMatchIQ in just 5 minutes

1

Get Your API Key

Sign up for a free account and generate your API key from the dashboard. You'll need this to authenticate all your API requests.

Authorization: Bearer YOUR_API_KEY_HERE
2

Prepare Your Data

Gather your candidate resumes and job description. You can use:

  • ZIP file with resume documents (PDF, DOCX, TXT)
  • CSV file with candidate information
  • Google Drive folder
  • Direct database connection
3

Submit Your First Batch

Make a simple API call to start processing your candidates:

POST /api/v1/batch-jobs
Content-Type: multipart/form-data
Authorization: Bearer YOUR_API_KEY

input_type: "ZIP_FILE"
job_description_text: "Your job description..."
candidate_source_file: resumes.zip
â„šī¸
Returns: {"batch_job_id": "uuid", "status": "pending", ...}
4

Monitor Progress & Get Results

Check status and retrieve detailed results:

# Check status
GET /api/v1/batch-jobs/{batch_job_id}/status

# Get results (when status = "completed")
GET /api/v1/batch-jobs/{batch_job_id}/results

# Returns: processed_items with match_score, original_filename, etc.
✅
Each result includes match scores, skill gaps, and detailed analysis!

What You Get

Every API call returns comprehensive matching data

📊

Match Scores

Overall compatibility percentage and detailed scoring breakdown

đŸŽ¯

Skill Analysis

Matched skills, gaps, and surplus skills for each candidate

💡

Smart Recommendations

AI-powered hiring recommendations based on comprehensive analysis

📈

Visual Graphs

Interactive knowledge graphs showing skill relationships

Simple Code Examples

Copy and paste these examples to get started immediately

Python - Process ZIP File

import requests
import time

# Your API configuration
API_KEY = "your_api_key_here"
API_BASE_URL = "https://skillmatchiq.com"

# Prepare your files
with open('resumes.zip', 'rb') as f:
    files = {'candidate_source_file': ('resumes.zip', f, 'application/zip')}
    
    data = {
        'input_type': 'ZIP_FILE',
        'job_description_text': 'Looking for a Senior Software Engineer with Python and React experience...'
    }
    
    headers = {'Authorization': f'Bearer {API_KEY}'}
    
    # Submit the batch job
    response = requests.post(
        f'{API_BASE_URL}/api/v1/batch-jobs',
        data=data,
        files=files,
        headers=headers
    )
    
    batch_job_id = response.json()['batch_job_id']
    print(f"Batch submitted: {batch_job_id}")

# Check status
while True:
    status = requests.get(
        f'{API_BASE_URL}/api/v1/batch-jobs/{batch_job_id}/status',
        headers=headers
    ).json()
    
    processed = status['processed_candidates']
    total = status['total_candidates']
    print(f"Progress: {processed}/{total} candidates")
    
    if status['status'] == 'completed':
        break
    elif status['status'] == 'failed':
        print(f"Batch failed: {status.get('error_message')}")
        break
    
    time.sleep(5)

# Get results
results = requests.get(
    f'{API_BASE_URL}/api/v1/batch-jobs/{batch_job_id}/results?skip=0&limit=10',
    headers=headers
).json()

# Show top matches
for item in results['processed_items'][:5]:
    score = item['match_score']['overall_score']
    filename = item['original_filename']
    print(f"Top match: {filename} - {score}%")

JavaScript - Process CSV File

const FormData = require('form-data');
const fs = require('fs');
const axios = require('axios');

const API_KEY = 'your_api_key_here';
const API_BASE_URL = 'https://yourdomain.com';

async function analyzeCandidates() {
    // Prepare form data
    const form = new FormData();
    form.append('input_type', 'ZIP_FILE');
    form.append('job_description_text', 'Looking for a Senior Software Engineer...');
    form.append('candidate_source_file', fs.createReadStream('resumes.zip'));
    
    // Submit batch job
    const submitResponse = await axios.post(
        `${API_BASE_URL}/api/v1/batch-jobs`,
        form,
        {
            headers: {
                ...form.getHeaders(),
                'Authorization': `Bearer ${API_KEY}`
            }
        }
    );
    
    const batchJobId = submitResponse.data.batch_job_id;
    console.log(`Batch submitted: ${batchJobId}`);
    
    // Poll for completion
    let status;
    do {
        await new Promise(resolve => setTimeout(resolve, 5000));
        
        const statusResponse = await axios.get(
            `${API_BASE_URL}/api/v1/batch-jobs/${batchJobId}/status`,
            {
                headers: {
                    'Authorization': `Bearer ${API_KEY}`
                }
            }
        );
        
        status = statusResponse.data;
        const processed = status.processed_candidates;
        const total = status.total_candidates;
        console.log(`Progress: ${processed}/${total} candidates`);
    } while (status.status !== 'completed');
    
    // Get results
    const resultsResponse = await axios.get(
        `${API_BASE_URL}/api/v1/batch-jobs/${batchJobId}/results`,
        {
            headers: {
                'Authorization': `Bearer ${API_KEY}`
            }
        }
    );
    
    const results = resultsResponse.data;
    console.log(`Top match: ${results.processed_items[0].original_filename} - ${results.processed_items[0].match_score.overall_score}%`);
}

analyzeCandidates();

Common Use Cases

See how organizations use SkillMatchIQ

đŸĸ

Recruitment Agency

Process weekly candidate submissions from multiple job boards. Match candidates against various client positions simultaneously.

🏭

Enterprise HR

Integrate with existing ATS systems. Automatically score and rank internal candidates for new positions.

🎓

University Career Center

Match graduating students with relevant internships and entry-level positions based on their skills and coursework.

Ready to Transform Your Hiring?

Join thousands of companies using AI to find the perfect candidates