Skip to main content

Create Resume

POST /api/v1/resumes

Create a new resume from structured data. This endpoint accepts resume data in the Enhancv analyzer format.

Request

Headers

HeaderValueRequired
AuthorizationBearer YOUR_API_KEYREQUIRED
Content-Typeapplication/jsonREQUIRED

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

FieldTypeDescription
headerobjectResume header with contact information
sectionsobjectResume sections keyed by section type

Optional Fields

FieldTypeDescription
titlestringResume title
styleobjectVisual styling information (see Style Object below)

Section Structure

Each section in the sections object must include:

FieldTypeDescription
columnnumberREQUIRED Column placement: 0 (left), 1 (right), or 2 (third column, only when style.layout is "multicolumn")
ordernumberDisplay order (sections are sorted by this value, lower numbers appear first). If not specified, sections maintain their object insertion order
namestringSection display name
itemsarrayArray 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, or undefined values 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:

FieldTypeDescription
layoutstringLayout template: "double", "ivyleague", "elegant", "newcondensed", "polished", "stockholm", "double_colored", "timeline", "flipped_modern", "single", "condensed", "multicolumn", "classic", "high_performer", "minimal"
colorsarrayArray of two hex colors (e.g., ["#000000", "#008CFF"])
fontBodystringBody font name (see Resume Structure Reference for available fonts)
fontHeadingstringHeading font name (see Resume Structure Reference for available fonts)
fontSizenumberFont size option (0-4)
hideBrandingbooleanHide Enhancv branding
isLetterSizebooleanUse letter size (8.5×11") instead of A4
marginOptionnumberMargin size option (0-4)
pageMarginOptionnumberPage margin size option (0-5)
columnLayoutOptionnumberColumn layout option (0-3)
lineHeightOptionnumberLine height option (0-2)
headerExtraSpacingnumberExtra 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

FieldTypeDescription
idstringUnique 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 (like showDescription, showBullets) are automatically set based on whether the corresponding value is present
  • The record field 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)