ReScreen API Documentation

Analyze resumes against job descriptions using advanced AI technology.

Authentication

Security Notice:
  • Keep your API key secure and never expose it in client-side code
  • Each account can have only one active API key
  • Generating a new key will invalidate the previous one

API Key Header

X-API-Key: your_api_key_here

Include this header in all API requests

API Endpoint

POST https://rsapi.opik.net/api/process-resume

Request Parameters

Parameter Type Description
job_descriptionRequired string Complete job description text
candidate_dataRequired string Complete resume text

Request Format

{
    "job_description": "Full job description text",
    "candidate_data": "Complete resume text"
}

Response Format

{
    "candidate_name": "Full Name of Candidate",
    "contact_info": {
        "email": "email@example.com or N/A if none found",
        "phone": "phone number or N/A if none found",
        "country": "country name or N/A if none found",
        "city": "city name or N/A if none found"
    },
    "online_profiles": {
        "linkedin": "complete LinkedIn URL or N/A if none found",
        "github": "complete GitHub URL or N/A if none found",
        "portfolio": "complete portfolio/personal website URL or N/A if none found",
        "other_links": ["any other relevant links found or empty array if none"]
    },
    "education": {
        "highest_degree": "highest degree attained (e.g., Bachelor's, Master's, Ph.D.) or N/A if none found",
        "field_of_study": "field/major of highest degree or N/A if none found",
        "institution": "university/institution name or N/A if none found",
        "graduation_year": "year of graduation for highest degree or N/A if none found"
    },
    "certifications": [
        "List of all certifications and licenses mentioned in the resume",
        "or empty array if none found"
    ],
    "scores": {
        "Skills Match": 0-100,
        "Experience Relevance": 0-100,
        "Education Fit": 0-100,
        "Industry Knowledge": 0-100,
        "Technical Proficiency": 0-100
    },
    "strengths": [
        "First key strength or 'none'",
        "Second key strength or 'none'",
        "Third key strength or 'none'"
    ],
    "weaknesses": [
        "First area needing improvement or 'none'",
        "Second area needing improvement or 'none'",
        "Third area needing improvement or 'none'"
    ],
    "average_score": 0-100
}

Example Request

curl -X POST https://rsapi.opik.net/api/process-resume \
    -H "Content-Type: application/json" \
    -H "X-API-Key: your_api_key_here" \
    -d '{
        "job_description": "We are looking for a Senior Software Engineer...",
        "candidate_data": "John Doe\nSoftware Engineer with 5 years experience..."
    }'

Credits & Rate Limits

  • 📊 1 credit = 1 resume analysis
  • 💰 Credit cost: $0.063 per credit
  • 🛍️ Minimum purchase: 100 credits ($6.30)
  • ⚡ No rate limiting applied
  • ✨ Credits never expire

Code Examples

import requests
import json

API_KEY = 'your_api_key_here'
API_URL = 'https://rsapi.opik.net/api/process-resume'

def analyze_resume(job_description, resume_text):
    headers = {
        'Content-Type': 'application/json',
        'X-API-Key': API_KEY
    }
    
    payload = {
        'job_description': job_description,
        'candidate_data': resume_text
    }
    
    try {
        response = requests.post(API_URL, 
                              headers=headers,
                              json=payload)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"Error: {str(e)}")
        return None

# Example usage
job_desc = "Senior Software Engineer with 5+ years..."
resume = "John Doe\nSoftware Engineer\n..."

result = analyze_resume(job_desc, resume)
if result:
    print(f"Match Score: {result['average_score']}")
    
    # Print education and certifications
    education = result.get('education', {})
    if education:
        print(f"\nEducation: {education.get('highest_degree')} in {education.get('field_of_study')}")
        print(f"Institution: {education.get('institution')}, {education.get('graduation_year')}")
    
    # Print strengths
    print("\nStrengths:")
    for strength in result['strengths']:
        print(f"- {strength}")
async function analyzeResume(jobDescription, resumeText) {
    const API_KEY = 'your_api_key_here';
    const API_URL = 'https://rsapi.opik.net/api/process-resume';

    try {
        const response = await fetch(API_URL, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-API-Key': API_KEY
            },
            body: JSON.stringify({
                job_description: jobDescription,
                candidate_data: resumeText
            })
        });

        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }

        const result = await response.json();
        return result;
    } catch (error) {
        console.error('Error:', error);
        return null;
    }
}

// Example usage
const jobDesc = "Senior Software Engineer with 5+ years...";
const resume = "John Doe\nSoftware Engineer\n...";

analyzeResume(jobDesc, resume)
    .then(result => {
        if (result) {
            console.log(`Match Score: ${result.average_score}`);
            console.log('\nStrengths:');
            result.strengths.forEach(strength => {
                console.log(`- ${strength}`);
            });
        }
    });
<?php
function analyzeResume($jobDescription, $resumeText) {
    $apiKey = 'your_api_key_here';
    $apiUrl = 'https://rsapi.opik.net/api/process-resume';

    $headers = array(
        'Content-Type: application/json',
        'X-API-Key: ' . $apiKey
    );

    $payload = array(
        'job_description' => $jobDescription,
        'candidate_data' => $resumeText
    );

    $ch = curl_init($apiUrl);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpCode === 200) {
        return json_decode($response, true);
    }
    return null;
}

// Example usage
$jobDesc = "Senior Software Engineer with 5+ years...";
$resume = "John Doe\nSoftware Engineer\n...";

$result = analyzeResume($jobDesc, $resume);
if ($result) {
    echo "Match Score: " . $result['average_score'] . "\n";
    echo "\nStrengths:\n";
    foreach ($result['strengths'] as $strength) {
        echo "- " . $strength . "\n";
    }
}
?>
# Basic resume analysis request
curl -X POST https://rsapi.opik.net/api/process-resume \
    -H "Content-Type: application/json" \
    -H "X-API-Key: your_api_key_here" \
    -d '{
        "job_description": "We are seeking a Senior Software Engineer with 5+ years of experience in web development. Required skills include: JavaScript, Python, and cloud technologies. The ideal candidate will have experience with microservices architecture and DevOps practices.",
        "candidate_data": "John Smith\nSenior Software Engineer\n\nExperience:\n- 7 years developing web applications\n- Expert in JavaScript and Python\n- AWS certified developer\n- Led team of 5 engineers\n\nSkills:\n- JavaScript/Node.js\n- Python/Django\n- AWS, Docker, Kubernetes\n- CI/CD, Jenkins\n- RESTful APIs"
    }'

# Using a file for the resume content
curl -X POST https://rsapi.opik.net/api/process-resume \
    -H "Content-Type: application/json" \
    -H "X-API-Key: your_api_key_here" \
    -d @resume-payload.json

# Example with additional headers and verbose output
curl -X POST https://rsapi.opik.net/api/process-resume \
    -H "Content-Type: application/json" \
    -H "X-API-Key: your_api_key_here" \
    -H "Accept: application/json" \
    -v \
    -d '{
        "job_description": "Looking for a Frontend Developer...",
        "candidate_data": "Jane Doe\nFrontend Developer\n..."
    }'