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
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
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
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
Parameters
- username (required): The username to find relevant jobs for - must have an existing resume in the system
Example Request
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/atsRequest 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
| Category | Points | What It Checks |
|---|---|---|
| Contact Information | 20 | Name, email, phone, location completeness and validity |
| Work Experience | 20 | Company names, job titles, dates, descriptions, highlights |
| Education | 15 | Institution names, degrees, study areas |
| Skills | 15 | Skill categories, keyword count, variety |
| Keywords & Content | 15 | Summary length, highlights count, overall word count |
| Date Formatting | 10 | Consistent date formats, no missing dates |
| Theme Compatibility | 5 | ATS-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
Parameters
- username (required): Query parameter containing the username to find jobs for
Example Request
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