Create Resume
POST /api/v1/resumesCreate a new resume from structured data. This endpoint accepts resume data in the Enhancv analyzer format.
Request
Headers
| Header | Value | Required |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | REQUIRED |
Content-Type | application/json | REQUIRED |
Request Body
The request body should contain a resume object with the following structure:
{
"header": {
"name": "John Doe",
"title": "Senior Software Engineer",
"email": "john@example.com",
"phone": "+1 234 567 8900",
"location": "San Francisco, CA"
},
"sections": {
"experiences": {
"name": "Experience",
"column": 0,
"order": 0,
"items": [
{
"workplace": "Tech Company Inc",
"position": "Senior Software Engineer",
"location": "San Francisco, CA",
"dateRange": {
"fromYear": 2020,
"fromMonth": 0,
"toYear": 2024,
"toMonth": 2
},
"description": "Led development of key features",
"bullets": [
"Improved system performance by 40%",
"Mentored 5 junior developers"
]
}
]
},
"educations": {
"name": "Education",
"column": 0,
"order": 1,
"items": [
{
"institution": "University of California",
"degree": "Bachelor of Science in Computer Science",
"location": "Berkeley, CA",
"dateRange": {
"fromYear": 2012,
"fromMonth": 8,
"toYear": 2016,
"toMonth": 4
}
}
]
},
"industryExperiences": {
"name": "Skills",
"column": 1,
"order": 2,
"items": [
{
"name": "JavaScript",
"level": 5
},
{
"name": "React",
"level": 5
}
]
}
},
"title": "Software Engineer Resume"
}
Full Resume Shape
Below is a comprehensive example showing all available sections and their item structures:
Click to expand full resume shape
{
"header": {
"name": "John Doe",
"title": "Senior Software Engineer",
"email": "john@example.com",
"phone": "+1 234 567 8900",
"location": "San Francisco, CA",
"website": "https://johndoe.com"
},
"sections": {
"summaries": {
"name": "Professional Summary",
"column": 0,
"order": 0,
"items": [
{
"text": "Experienced software engineer with 8+ years in full-stack development"
}
]
},
"experiences": {
"name": "Work Experience",
"column": 0,
"order": 1,
"items": [
{
"workplace": "Tech Corp",
"position": "Senior Software Engineer",
"location": "San Francisco, CA",
"link": "https://techcorp.com",
"companyLogo": "https://example.com/logo.png",
"dateRange": {
"fromYear": 2020,
"fromMonth": 0,
"toYear": 2024,
"toMonth": 9,
"isOngoing": false
},
"description": "Led development of key features",
"bullets": [
"Improved system performance by 40%",
"Mentored 5 junior developers"
]
}
]
},
"educations": {
"name": "Education",
"column": 0,
"order": 2,
"items": [
{
"institution": "University of Technology",
"degree": "Bachelor of Science in Computer Science",
"location": "Boston, MA",
"companyLogo": "https://example.com/uni-logo.png",
"dateRange": {
"fromYear": 2012,
"fromMonth": 8,
"toYear": 2016,
"toMonth": 4
},
"gpa": "3.8",
"maxGpa": "4.0",
"gpaText": "Magna Cum Laude",
"bullets": [
"Dean's List all semesters",
"Computer Science Society President"
]
}
]
},
"industryExperiences": {
"name": "Skills",
"column": 1,
"order": 3,
"items": [
{
"name": "JavaScript",
"level": 5,
"icon": "54-free-code"
}
]
},
"volunteering": {
"name": "Volunteer Work",
"column": 0,
"order": 4,
"items": [
{
"institution": "Code for Good",
"role": "Volunteer Developer",
"location": "San Francisco, CA",
"companyLogo": "https://example.com/volunteer-logo.png",
"dateRange": {
"fromYear": 2020,
"fromMonth": 0,
"isOngoing": true
},
"description": "Build websites for nonprofits",
"bullets": [
"Created 5 websites for local charities"
]
}
]
},
"publications": {
"name": "Publications",
"column": 0,
"order": 5,
"items": [
{
"title": "Modern Web Development Patterns",
"author": "John Doe",
"edition": "First Edition",
"link": "https://example.com/publication",
"dateRange": {
"fromYear": 2023,
"fromMonth": 5
},
"description": "A comprehensive guide to modern web development"
}
]
},
"projects": {
"name": "Projects",
"column": 0,
"order": 6,
"items": [
{
"title": "Open Source CMS",
"location": "GitHub",
"link": "https://github.com/johndoe/cms",
"dateRange": {
"fromYear": 2022,
"fromMonth": 0,
"isOngoing": true
},
"description": "A lightweight content management system",
"bullets": [
"1000+ GitHub stars",
"Used by 50+ companies"
]
}
]
},
"achievements": {
"name": "Achievements",
"column": 1,
"order": 7,
"items": [
{
"title": "Hackathon Winner",
"description": "First place at TechCrunch Disrupt 2023",
"icon": "139-free-diamond-01"
}
]
},
"awards": {
"name": "Awards",
"column": 1,
"order": 8,
"items": [
{
"title": "Employee of the Year",
"description": "Recognized for outstanding performance",
"icon": "83-free-prize-award"
}
]
},
"certificates": {
"name": "Certifications",
"column": 1,
"order": 9,
"items": [
{
"title": "AWS Solutions Architect",
"issuer": "Amazon Web Services"
}
]
},
"courses": {
"name": "Courses",
"column": 1,
"order": 10,
"items": [
{
"title": "Machine Learning Specialization",
"description": "Stanford University via Coursera"
}
]
},
"languages": {
"name": "Languages",
"column": 1,
"order": 11,
"items": [
{
"name": "English",
"level": 5,
"levelText": "Native"
},
{
"name": "Spanish",
"level": 3,
"levelText": "Intermediate"
}
]
},
"interests": {
"name": "Interests",
"column": 1,
"order": 12,
"items": [
{
"title": "Photography",
"description": "Landscape and portrait photography",
"icon": "99-free-camera"
}
]
},
"books": {
"name": "Reading List",
"column": 1,
"order": 13,
"items": [
{
"title": "Clean Code",
"author": "Robert C. Martin",
"image": "https://example.com/book-cover.jpg"
}
]
},
"quotes": {
"name": "Favorite Quotes",
"column": 1,
"order": 14,
"items": [
{
"quote": "The only way to do great work is to love what you do",
"author": "Steve Jobs"
}
]
},
"references": {
"name": "References",
"column": 1,
"order": 15,
"items": [
{
"name": "Jane Smith",
"contact": "jane.smith@example.com"
}
]
},
"findMeOnline": {
"name": "Find Me Online",
"column": 1,
"order": 16,
"items": [
{
"title": "LinkedIn",
"link": "https://linkedin.com/in/johndoe",
"icon": "26-linkedin"
},
{
"title": "GitHub",
"link": "https://github.com/johndoe",
"icon": "35-github"
}
]
},
"strengths": {
"name": "Strengths",
"column": 1,
"order": 17,
"items": [
{
"title": "Problem Solving",
"description": "Excellent at breaking down complex problems",
"icon": "93-puzzle"
}
]
},
"skills": {
"name": "Technical Skills",
"column": 1,
"order": 18,
"items": [
{
"title": "Frontend Development",
"description": "Building responsive user interfaces",
"tags": ["React", "Vue", "Angular"]
}
]
},
"mytime": {
"name": "How I Spend My Day",
"column": 1,
"order": 19,
"items": [
{
"pieces": 24,
"data": [
{
"title": "Work",
"value": 8
},
{
"title": "Sleep",
"value": 7
},
{
"title": "Personal Projects",
"value": 4
},
{
"title": "Exercise",
"value": 2
},
{
"title": "Other",
"value": 3
}
]
}
]
},
"customs": {
"name": "Custom Section",
"column": 0,
"order": 21,
"items": [
{
"title": "Custom Item",
"description": "Custom content",
"icon": "44-free-lightbulb",
"dateRange": {
"fromYear": 2023,
"fromMonth": 0
}
}
]
},
"customs2": {
"name": "Custom Section 2",
"column": 0,
"order": 22,
"items": [
{
"title": "Another Custom Item",
"description": "More custom content"
}
]
},
"customs3": {
"name": "Custom Section 3",
"column": 0,
"order": 23,
"items": [
{
"title": "Third Custom Item",
"description": "Even more custom content"
}
]
},
"additionalExperiences": {
"name": "Additional Experience",
"column": 0,
"order": 24,
"items": [
{
"workplace": "Startup Inc",
"position": "Intern",
"dateRange": {
"fromYear": 2015,
"fromMonth": 5,
"toYear": 2015,
"toMonth": 7
}
}
]
},
"additionalPublications": {
"name": "Additional Publications",
"column": 0,
"order": 25,
"items": [
{
"title": "Research Paper",
"author": "John Doe",
"dateRange": {
"fromYear": 2016,
"fromMonth": 3
}
}
]
},
"additionalTechnologies": {
"name": "Additional Technologies",
"column": 1,
"order": 26,
"items": [
{
"title": "DevOps",
"tags": ["Docker", "Kubernetes", "AWS"]
}
]
}
},
"title": "John Doe - Senior Software Engineer",
"style": {
"layout": "double",
"colors": ["#000000", "#008CFF"],
"fontBody": "lato",
"fontHeading": "raleway",
"fontSize": 1,
"hideBranding": false,
"isLetterSize": false,
"marginOption": 2,
"pageMarginOption": 2,
"columnLayoutOption": 1,
"lineHeightOption": 1,
"headerExtraSpacing": 0
}
}
Required Fields
| Field | Type | Description |
|---|---|---|
header | object | Resume header with contact information |
sections | object | Resume sections keyed by section type |
Optional Fields
| Field | Type | Description |
|---|---|---|
title | string | Resume title |
style | object | Visual styling information (see Style Object below) |
Section Structure
Each section in the sections object must include:
| Field | Type | Description |
|---|---|---|
column | number | REQUIRED Column placement: 0 (left), 1 (right), or 2 (third column, only when style.layout is "multicolumn") |
order | number | Display order (sections are sorted by this value, lower numbers appear first). If not specified, sections maintain their object insertion order |
name | string | Section display name |
items | array | Array of section items |
Field Visibility
The API automatically manages which fields are visible on the resume:
- Filled fields are visible: When you provide a value for a field, it will automatically be shown on the resume
- Empty fields are hidden: Fields with empty strings,
null, orundefinedvalues are automatically hidden - No manual configuration: You don't need to specify visibility settings
Example:
{
"sections": {
"experiences": {
"items": [{
"workplace": "Tech Corp",
"position": "Engineer",
"description": "", // Empty - will be hidden on resume
"location": "NYC",
"link": "" // Empty - will be hidden on resume
}]
}
}
}
In this example, only workplace, position, and location will be visible on the resume. The empty description and link fields will be hidden.
Style Object
The style object supports the following optional fields:
| Field | Type | Description |
|---|---|---|
layout | string | Layout template: "double", "ivyleague", "elegant", "newcondensed", "polished", "stockholm", "double_colored", "timeline", "flipped_modern", "single", "condensed", "multicolumn", "classic", "high_performer", "minimal" |
colors | array | Array of two hex colors (e.g., ["#000000", "#008CFF"]) |
fontBody | string | Body font name (see Resume Structure Reference for available fonts) |
fontHeading | string | Heading font name (see Resume Structure Reference for available fonts) |
fontSize | number | Font size option (0-4) |
hideBranding | boolean | Hide Enhancv branding |
isLetterSize | boolean | Use letter size (8.5×11") instead of A4 |
marginOption | number | Margin size option (0-4) |
pageMarginOption | number | Page margin size option (0-5) |
columnLayoutOption | number | Column layout option (0-3) |
lineHeightOption | number | Line height option (0-2) |
headerExtraSpacing | number | Extra spacing for header (0-4) |
Resume Structure Reference
For detailed information about the resume data structure, including:
- Available section types (27 types including experiences, educations, skills, etc.)
- Complete field definitions for each section type
- DateRange object structure
- Style object configuration
- Available icons (230+ icons)
Please refer to the Resume Structure Reference page.
Response
Success Response
Status Code: 201 Created
{
"id": "64f1a2b3c4d5e6f7g8h9i0j1"
}
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the created resume |
Examples
Create Basic Resume
curl -X POST https://api.enhancv.com/api/v1/resumes \
-H "Authorization: Bearer enh_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"header": {
"name": "John Doe",
"title": "Software Engineer"
},
"sections": {
"summaries": {
"name": "Summary",
"column": 0,
"order": 0,
"items": [
{
"text": "Experienced software engineer with 5+ years in web development"
}
]
}
},
"title": "My Resume"
}'
const response = await fetch('https://api.enhancv.com/api/v1/resumes', {
method: 'POST',
headers: {
'Authorization': 'Bearer enh_live_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
header: {
name: 'John Doe',
title: 'Software Engineer'
},
sections: {
summaries: {
name: 'Summary',
column: 0,
order: 0,
items: [
{
text: 'Experienced software engineer with 5+ years in web development'
}
]
}
},
title: 'My Resume'
})
});
const data = await response.json();
console.log('Created resume ID:', data.id);
import requests
response = requests.post(
'https://api.enhancv.com/api/v1/resumes',
headers={
'Authorization': 'Bearer enh_live_your_api_key_here',
'Content-Type': 'application/json'
},
json={
'header': {
'name': 'John Doe',
'title': 'Software Engineer'
},
'sections': {
'summaries': {
'name': 'Summary',
'column': 0,
'order': 0,
'items': [
{
'text': 'Experienced software engineer with 5+ years in web development'
}
]
}
},
'title': 'My Resume'
}
)
data = response.json()
print(f"Created resume ID: {data['id']}")
Error Responses
400 Bad Request
Validation failed. The error message will indicate the specific field that's invalid.
{
"error": "Missing required field: header (must be an object)",
"status": 400
}
{
"error": "Invalid section \"experiences\": field \"name\" must be a string",
"status": 400
}
401 Unauthorized
Missing or invalid API key.
{
"error": "Invalid API key",
"status": 401
}
403 Forbidden
Maximum resume limit reached for your plan.
{
"error": "Maximum resume limit reached. Your plan allows 5 resumes",
"status": 403
}
Notes
- All
show*fields (likeshowDescription,showBullets) are automatically set based on whether the corresponding value is present - The
recordfield for items is automatically set based on the section type - Cover letters are not supported through this endpoint
- Resume limits depend on your subscription plan
- The created resume will be marked as imported (
isImported: true)