JSON Resume API Documentation

Welcome to the JSON Resume API documentation. This comprehensive API provides powerful endpoints for accessing resume data in multiple formats and finding AI-powered job recommendations tailored to individual profiles.

What can you do with this API?
• Retrieve resumes in JSON, HTML, PDF, and other formats
• Get AI-powered job recommendations based on resume content
• Integrate resume data into your applications
• Build job matching and recruitment tools

Base URL

https://registry.jsonresume.org/api

Authentication

All endpoints are publicly accessible and do not require authentication. This makes integration simple and straightforward for developers.

Rate Limiting

Please be respectful with API usage. Heavy usage may be rate limited to ensure fair access for all users. For high-volume applications, consider implementing caching strategies.

Resume Endpoints

Get Resume

Retrieve a user's complete resume data in various output formats. This endpoint is the core of the JSON Resume platform, allowing you to access structured resume data and render it in different formats for web display, PDF generation, or data processing.

Use Cases:
• Display resumes on websites or applications
• Generate PDF versions for download
• Extract structured data for analysis
• Create custom resume themes and layouts

Endpoint

GET /api/{username}
GET /api/{username}.{format}

Parameters

  • username (required): The unique username of the resume to retrieve
  • format (optional): Output format - supports json, html, pdf, and various theme formats

Query Parameters

  • theme (optional): Override the resume's theme (e.g., ?theme=elegant)
  • gistname (optional): Specify an alternative gist filename (e.g., ?gistname=resume-en.json). Defaults to resume.json

Advanced: Schema Validation Bypass

For experimental or edge-case resumes that don't conform to the standard JSON Resume schema, you can bypass validation by adding a flag to your resume's meta section:

{
  "meta": {
    "skipValidation": true
  },
  "basics": { ... },
  ...
}

Warning: Bypassing validation may result in rendering issues with some themes. Use this feature only for experimental resumes or when you need to extend the schema with custom fields.

Example Requests

GET /api/thomasdavis
GET /api/thomasdavis.json
GET /api/thomasdavis.pdf

Response

Returns the resume in the requested format. Default format is a styled HTML template. JSON format returns the raw structured data, while PDF generates a downloadable document.

Example JSON Response:

{
  "basics": {
    "name": "Thomas Davis",
    "label": "Web Developer",
    "email": "thomas@jsonresume.org",
    "phone": "(912) 555-4321",
    "website": "https://thomasdavis.github.io",
    "summary": "Full-stack developer with 10+ years experience...",
    "location": {
      "city": "San Francisco",
      "countryCode": "US"
    }
  },
  "work": [
    {
      "company": "Company Name",
      "position": "Senior Developer",
      "startDate": "2020-01-01",
      "summary": "Led development of..."
    }
  ],
  "education": [...],
  "skills": [...]
}

Error Responses

  • 400 Bad Request: Invalid username or unsupported format
  • 404 Not Found: Resume not found for the specified username

Jobs Endpoints

Get Relevant Jobs (New)

Get AI-powered job recommendations tailored specifically to a user's resume. This endpoint uses advanced machine learning to analyze resume content, extract key skills and experience, and match against a database of current job postings to find the most relevant opportunities.

How it works:
• Analyzes resume content using GPT-4 to create a professional summary
• Generates semantic embeddings from the resume data
• Performs vector similarity search against job database
• Returns jobs ranked by relevance score (0-1 scale)
• Includes jobs from the last 65 days for freshness

Use Cases:
• Job recommendation engines
• Career guidance applications
• Recruitment platform integrations
• Personal job search automation

Endpoint

GET /api/{username}/jobs

Parameters

  • username (required): The username to find relevant jobs for - must have an existing resume in the system

Example Request

GET /api/thomasdavis/jobs

Response

Returns an array of up to 500 job recommendations, sorted by relevance score (highest first). Each job includes similarity score, original URL, and full job description content.

[
  {
    "jobId": 5091,
    "score": 0.633673667907715,
    "url": "https://news.ycombinator.com/item?id=44236004",
    "raw": "{\"title\":\"Full Stack Developer\",\"company\":\"ConsentKeys.com\",\"location\":{\"address\":\"\",\"city\":\"\",\"region\":\"\",\"postalCode\":\"\",\"countryCode\":\"\"},\"position\":\"Full Stack Developer\",\"type\":\"Contract (possible CTO conversion)\",\"salary\":\"\",\"date\":\"2024-06\",\"remote\":\"Full\",\"description\":\"ConsentKeys.com is a WolfNYC (VC) backed startup dedicated to protecting people's privacy online...\",\"responsibilities\":[\"Develop and maintain full-stack privacy and security solutions.\",\"Implement verifiable credentials, OIDC, and ZKPs.\"],\"qualifications\":[\"Experience with privacy and security technologies.\",\"Full-stack development experience.\"],\"skills\":[{\"name\":\"Full Stack Development\",\"level\":\"Expert\",\"keywords\":[\"Node.js\",\"React\",\"TypeScript\",\"REST APIs\"]}],\"experience\":\"Senior\",\"application\":\"https://consentkeys.com/careers\"}"
  },
  {
    "jobId": 5295,
    "score": 0.614646508055513,
    "url": "https://news.ycombinator.com/item?id=44163323",
    "raw": "{\"title\":\"Fullstack Web Engineer\",\"company\":\"IPinfo.io\",\"type\":\"Full-time\",\"date\":\"2024-06\",\"description\":\"IPinfo.io is a global leader in IP data solutions, powering over 100 billion requests monthly...\",\"location\":{\"countryCode\":\"US\"},\"remote\":\"Full\",\"salary\":\"\",\"experience\":\"Senior\",\"skills\":[{\"name\":\"Fullstack Development\",\"level\":\"Expert\",\"keywords\":[\"JavaScript\",\"Python\",\"APIs\"]}]}"
  }
]

Response Fields

  • jobId: Unique identifier for the job posting in our database
  • score: AI-calculated relevance score (0-1 scale, where 1.0 is perfect match)
  • url: Direct link to the original job posting on the company's website
  • raw: Complete job description content including requirements, responsibilities, and company information

ATS Compatibility Analysis

Analyze your resume for Applicant Tracking System (ATS) compatibility. Get a detailed score, recommendations, and insights to improve your resume's chances of passing through automated screening systems.

Endpoint

POST /api/ats

Request Body

{
  "resume": {
    "basics": {
      "name": "John Doe",
      "email": "john@example.com",
      "phone": "+1-555-0100",
      "summary": "Experienced software engineer...",
      "location": {
        "city": "San Francisco",
        "region": "CA",
        "country": "US"
      }
    },
    "work": [...],
    "education": [...],
    "skills": [...]
  },
  "theme": "jsonresume-theme-stackoverflow" // optional
}

Response

{
  "score": 85,
  "rating": "Good",
  "summary": "Your resume is well-optimized for ATS with minor improvements needed.",
  "checks": [
    {
      "name": "Contact Information",
      "score": 20,
      "maxScore": 20,
      "passed": true,
      "issues": []
    },
    {
      "name": "Work Experience",
      "score": 16,
      "maxScore": 20,
      "passed": true,
      "issues": [
        {
          "severity": "warning",
          "category": "experience",
          "message": "Work entry #2: Missing job description or highlights",
          "fix": "Complete all required fields for work entry #2"
        }
      ]
    }
    // ... 5 more checks
  ],
  "recommendations": [
    {
      "severity": "warning",
      "category": "experience",
      "message": "Work entry #2: Missing job description or highlights",
      "fix": "Complete all required fields for work entry #2"
    }
    // ... more recommendations
  ]
}

Scoring Categories

CategoryPointsWhat It Checks
Contact Information20Name, email, phone, location completeness and validity
Work Experience20Company names, job titles, dates, descriptions, highlights
Education15Institution names, degrees, study areas
Skills15Skill categories, keyword count, variety
Keywords & Content15Summary length, highlights count, overall word count
Date Formatting10Consistent date formats, no missing dates
Theme Compatibility5ATS-friendly theme selection

Rating Scale

  • Excellent (90-100): Your resume is highly optimized for ATS
  • Good (75-89): Well-optimized with minor improvements needed
  • Fair (60-74): Needs some improvements for better compatibility
  • Poor (40-59): Needs significant improvements
  • Needs Improvement (0-39): Critical issues that must be addressed

Severity Levels

  • Critical: Missing required fields (name, email) - ATS will likely reject
  • Warning: Missing recommended fields - reduces ATS score
  • Info: Suggestions for optimization - nice to have

Best Practices

Tips for ATS Success

  • Use standard section headings (Work Experience, Education, Skills)
  • Include relevant keywords from job descriptions
  • Avoid images, tables, and complex formatting
  • Use standard fonts and simple layouts
  • Include full contact information
  • Use consistent date formats (YYYY-MM-DD recommended)
  • Add specific achievements and metrics in work highlights
  • List multiple skills across different categories
  • Choose ATS-friendly themes (stackoverflow, professional, elegant, kendall, flat)

Example Usage

// Fetch your resume
const resumeResponse = await fetch('https://registry.jsonresume.org/username.json');
const resume = await resumeResponse.json();

// Analyze for ATS compatibility
const atsResponse = await fetch('https://registry.jsonresume.org/api/ats', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ resume, theme: 'jsonresume-theme-stackoverflow' })
});

const analysis = await atsResponse.json();
console.log(`ATS Score: ${analysis.score}/100 (${analysis.rating})`);
console.log(`Recommendations: ${analysis.recommendations.length}`);

View Your ATS Score

Visit https://registry.jsonresume.org/[username]/ats to see a detailed visual breakdown of your resume's ATS compatibility with actionable recommendations.


Get Relevant Jobs (Legacy)

Legacy endpoint for getting relevant jobs using query parameters. This endpoint provides the same AI-powered job matching functionality as the new endpoint above, but uses the traditional query parameter approach. Maintained for backward compatibility with existing integrations.

Migration Notice: While this endpoint remains fully functional, we recommend using the new /api/{username}/jobs endpoint for new integrations as it follows REST conventions and provides better caching.

Endpoint

GET /api/relevant-jobs?username={username}

Parameters

  • username (required): Query parameter containing the username to find jobs for

Example Request

GET /api/relevant-jobs?username=thomasdavis

Response

Returns the same response format as the new jobs endpoint above - an array of job recommendations with relevance scores, URLs, and full job descriptions.

Error Responses

  • 400 Bad Request: Missing or invalid username parameter
  • 404 Not Found: Resume not found for the specified username
  • 500 Internal Server Error: AI processing or database error