logo-full

API

Introduction

Welcome to UseResume API - a platform for programmatically generating professional, ATS-optimized resume PDFs. Integrate resume creation capabilities directly into your applications and workflows. The platform also offers AI-powered tailoring to automatically optimize resumes and cover letters for specific job postings.

  • Professional Templates

    Multiple ATS-friendly resume and cover letter designs

  • AI-Powered Tailoring

    Optimize documents for specific job postings

  • Flexible Styling

    Customize fonts, colors, layouts, and formatting

  • Global Support

    Multiple languages, date formats, and page sizes

All API requests require authentication via API key. Generate your API key from the dashboard after registration and include it in the Authorization header as a Bearer token for all requests.

The API uses a credit-based system. Each successfully generated PDF consumes 1 credit, regardless of template. Tailored resumes and cover letters consume 5 credits. API calls that don't result in a PDF (such as validation errors) do not consume credits.

Generated files are stored for 14 days, but download URLs expire after 24 hours - download your files promptly after generation.

Request typeCredits
Standard document generation1
Tailored document generation5
Document parsing4

Quick start

Follow these steps to sign up, grab your API key, call Create a resume, and download the generated PDF.

  1. 1

    Sign up for an account at useresume.ai

    Create your account to access the dashboard and start a free trial or a paid API platform plan.

    https://useresume.ai/account/api-platform

  2. 2

    Generate your API key from the dashboard

    From your dashboard, create a key and store it so you can authenticate API calls. Note, API keys can only be created once a plan is selected.

    https://useresume.ai/account/api-platform/api-keys

    .env.local

    1USERESUME_API_KEY=your-api-key
  3. 3

    Make your first API call using 'Create a resume' endpoint

    Run this code to generate a resume and signed download link.

    JavaScript

    1const apiKey = process.env.USERESUME_API_KEY;
    2
    3if (!apiKey) {
    4  throw new Error("USERESUME_API_KEY is not set");
    5}
    6
    7async function main() {
    8  const body = {
    9    content: {
    10      name: "John Doe",
    11      role: "Software Engineer",
    12      email: "john.doe@example.com",
    13      phone: "+1234567890",
    14      address: "New York, NY",
    15      summary:
    16        "Experienced software engineer with 5+ years building scalable web applications.",
    17      employment: [
    18        {
    19          title: "Senior Software Engineer",
    20          company: "Tech Corp",
    21          location: "New York, NY",
    22          start_date: "2020-01-01",
    23          present: true,
    24        },
    25      ],
    26      skills: [
    27        { name: "JavaScript", proficiency: "Expert", display_proficiency: true },
    28        { name: "React", proficiency: "Advanced", display_proficiency: true },
    29      ],
    30    },
    31    style: {
    32      template: "default",
    33      template_color: "blue",
    34      font: "inter",
    35      page_padding: 1.54,
    36      page_format: "a4",
    37      date_format: "LLL yyyy",
    38      background_color: "white",
    39      profile_picture_radius: "rounded-full",
    40    },
    41  };
    42
    43  const response = await fetch("https://useresume.ai/api/v3/resume/create", {
    44    method: "POST",
    45    headers: {
    46      Authorization: `Bearer ${apiKey}`,
    47      "Content-Type": "application/json",
    48    },
    49    body: JSON.stringify(body),
    50  });
    51
    52  if (!response.ok) {
    53    const error = await response.text();
    54    throw new Error(`Request failed (${response.status}): ${error}`);
    55  }
    56
    57  const result = await response.json();
    58
    59  console.log("Download URL:", result?.data?.file_url);
    60  console.log("URL expires:", new Date(result?.data?.file_url_expires_at));
    61  console.log("Run ID:", result?.meta?.run_id);
    62  console.log("Credits remaining:", result?.meta?.credits_remaining);
    63};
  4. 4

    Fetch the signed file_url and return the PDF

    Use the file_url from the response to fetch the PDF from the signed URL and save it before it expires.

    JavaScript

    1const fileUrl = result.data.file_url;
    2
    3const pdfResponse = await fetch(fileUrl);
    4
    5const pdfBuffer = Buffer.from(await pdfResponse.arrayBuffer());

Create a resume

Generates a formatted resume PDF with your content and styling preferences.

Body

Response

Returns an object with a time-limited signed URL to download the resume PDF. The URL expires in 24 hours. Download the file promptly after generation.

POST /api/v3/resume/create
1const result = await fetch(`https://useresume.ai/api/v3/resume/create`, {
2    method: "POST",
3    headers: {
4        Authorization: `Bearer ${USERESUME_API_KEY}`,
5        "Content-Type": "application/json"
6    },
7    body: JSON.stringify({
8        content: {
9            name: "John Doe",
10            role: "Software Engineer",
11            email: "john.doe@example.com",
12            phone: "+1234567890",
13            address: "New York, NY",
14            summary: "Experienced software engineer with 5+ years building scalable web applications.",
15            employment: [
16                {
17                    title: "Senior Software Engineer",
18                    company: "Tech Corp",
19                    location: "New York, NY",
20                    start_date: "2020-01-01",
21                    present: true
22                }
23            ],
24            skills: [
25                {
26                    name: "JavaScript",
27                    proficiency: "Expert",
28                    display_proficiency: true
29                },
30                {
31                    name: "React",
32                    proficiency: "Advanced",
33                    display_proficiency: true
34                }
35            ]
36        },
37        style: {
38            template: "default",
39            template_color: "blue",
40            font: "inter",
41            page_padding: 1.54,
42            page_format: "a4",
43            date_format: "LLL yyyy",
44            background_color: "white",
45            profile_picture_radius: "rounded-full"
46        }
47    })
48});
Response
1{
2    success: true,
3    data: {
4        file_url: "https://useresume-platform.com/resume/john-doe-resume.pdf",
5        file_url_expires_at: 1728388800000,
6        file_expires_at: 1728388800000,
7        file_size_bytes: 251904
8    },
9    meta: {
10        run_id: "run_123456789",
11        credits_used: 1,
12        credits_remaining: 499
13    }
14};

Create a tailored resume

Use this endpoint to create tailored resume files using LLMs. Provide the resume data, job description and the styling options to generate the document.

Body

Response

Returns an object with a time-limited signed URL to download the resume PDF. The URL expires in 24 hours. Download the file promptly after generation.

POST /api/v3/resume/create-tailored
1const result = await fetch(`https://useresume.ai/api/v3/resume/create-tailored`, {
2    method: "POST",
3    headers: {
4        Authorization: `Bearer ${USERESUME_API_KEY}`,
5        "Content-Type": "application/json"
6    },
7    body: JSON.stringify({
8        resume_content: {
9            content: {
10                name: "John Doe",
11                role: "Software Engineer",
12                email: "john.doe@example.com",
13                phone: "+1234567890",
14                address: "New York, NY",
15                summary: "Experienced software engineer with 5+ years building scalable web applications.",
16                employment: [
17                    {
18                        title: "Senior Software Engineer",
19                        company: "Tech Corp",
20                        location: "New York, NY",
21                        start_date: "2020-01-01",
22                        present: true
23                    }
24                ],
25                skills: [
26                    {
27                        name: "JavaScript",
28                        proficiency: "Expert",
29                        display_proficiency: true
30                    },
31                    {
32                        name: "React",
33                        proficiency: "Advanced",
34                        display_proficiency: true
35                    }
36                ]
37            },
38            style: {
39                template: "default",
40                template_color: "blue",
41                font: "inter",
42                page_padding: 1.54,
43                page_format: "a4",
44                date_format: "LLL yyyy",
45                background_color: "white",
46                profile_picture_radius: "rounded-full"
47            }
48        },
49        target_job: {
50            job_title: "Senior Software Engineer",
51            job_description: "We are looking for a Senior Software Engineer to join our team. The ideal candidate will have experience with JavaScript, React, Node.js, and cloud technologies. You will be responsible for developing scalable web applications and mentoring junior developers."
52        }
53    })
54});
Response
1{
2    success: true,
3    data: {
4        file_url: "https://useresume-platform.com/resume/john-doe-resume.pdf",
5        file_url_expires_at: 1728388800000,
6        file_expires_at: 1728388800000,
7        file_size_bytes: 251904
8    },
9    meta: {
10        run_id: "run_123456789",
11        credits_used: 5,
12        credits_remaining: 495
13    }
14};

Parse a PDF/Word/Image resume

Use this endpoint to extract the resume data from a PDF/Word/Image file into markdown or a structured JSON object. No data is stored, saved or in any way retained on our servers. DOCX, PNG, JPG, JPEG, WEBP are supported.

Body

Response

Returns a JSON object with the resume data object or data markdown string.

POST /api/v3/resume/parse
1const result = await fetch(`https://useresume.ai/api/v3/resume/parse`, {
2    method: "POST",
3    headers: {
4        Authorization: `Bearer ${USERESUME_API_KEY}`,
5        "Content-Type": "application/json"
6    },
7    body: JSON.stringify({
8        file: "JVBERi0xLjcKCjEgMCBvYmo=...",
9        parse_to: "json"
10    })
11});
Response
1{
2    success: true,
3    data: {
4        name: "John Doe",
5        email: "john.doe@example.com",
6        phone: "1234567890",
7        address: "123 Main St, Anytown, USA",
8        summary: "A brief summary of the resume",
9        role: "Software Engineer",
10        links: [
11            {
12                url: "https://www.linkedin.com/in/john-doe",
13                name: "LinkedIn"
14            }
15        ],
16        employment: [
17            {
18                start_date: "2020-01-01",
19                end_date: "2022-01-01",
20                present: false,
21                title: "Software Engineer",
22                company: "Google",
23                location: "San Francisco, CA",
24                short_description: "A brief description of the role",
25                responsibilities: [
26                    {
27                        text: "Developed and maintained web applications"
28                    }
29                ]
30            }
31        ],
32        skills: [
33            {
34                name: "JavaScript",
35                proficiency: "Expert"
36            }
37        ],
38        education: [
39            {
40                start_date: "2020-01-01",
41                end_date: "2022-01-01",
42                present: false,
43                degree: "Bachelor of Science",
44                institution: "University of California, Berkeley",
45                location: "San Francisco, CA",
46                short_description: "A brief description of the education",
47                achievements: [
48                    {
49                        text: "Developed and maintained web applications"
50                    }
51                ]
52            }
53        ],
54        certifications: [
55            {
56                start_date: "2020-01-01",
57                end_date: "2022-01-01",
58                present: false,
59                name: "Certification 1",
60                institution: "University of California, Berkeley"
61            }
62        ],
63        languages: [
64            {
65                language: "English",
66                proficiency: "Fluent"
67            }
68        ],
69        references: [
70            {
71                name: "John Doe",
72                title: "Software Engineer",
73                company: "Google",
74                email: "john.doe@example.com",
75                phone: "1234567890"
76            }
77        ],
78        projects: [
79            {
80                name: "Project 1",
81                short_description: "A brief description of the project",
82                present: false,
83                start_date: "2020-01-01",
84                end_date: "2022-01-01"
85            }
86        ],
87        activities: [
88            {
89                name: "Activity 1",
90                short_description: "A brief description of the activity"
91            }
92        ],
93        date_of_birth: "1990-01-01",
94        marital_status: "Single",
95        nationality: "American",
96        passport_or_id: "1234567890",
97        visa_status: "H1B",
98        pronouns: "He/Him"
99    },
100    meta: {
101        run_id: "run_123456789",
102        credits_used: 2,
103        credits_remaining: 498
104    }
105};

Create a cover letter

Use this endpoint to create a cover letter PDF file in your desired template. Provide the content and the styling options to generate the document.

Body

Response

Returns an object with a time-limited signed URL to download the cover letter PDF. The URL expires in 24 hours. Download the file promptly after generation.

POST /api/v3/cover-letter/create
1const result = await fetch(`https://useresume.ai/api/v3/cover-letter/create`, {
2    method: "POST",
3    headers: {
4        Authorization: `Bearer ${USERESUME_API_KEY}`,
5        "Content-Type": "application/json"
6    },
7    body: JSON.stringify({
8        content: {
9            name: "John Doe",
10            address: "123 Main St, Anytown, USA",
11            email: "john.doe@example.com",
12            phone: "+1234567890",
13            role: "Software Engineer",
14            hiring_manager_name: "Jane Smith",
15            hiring_manager_company: "Acme Corporation",
16            text: "Dear Hiring Manager,\nI am writing to express my strong interest in the Software Engineer position at Acme Corporation. With over 5 years of experience in full-stack development, I am confident that my skills and passion for innovation make me an ideal candidate for this role.\nThroughout my career, I have demonstrated expertise in building scalable web applications and collaborating with cross-functional teams. I am particularly excited about the opportunity to contribute to your team's mission of delivering cutting-edge solutions.\nThank you for considering my application. I look forward to the opportunity to discuss how my background and skills align with your needs.\nSincerely,\nJohn Doe"
17        },
18        style: {
19            template: "nova",
20            template_color: "blue",
21            font: "inter",
22            page_padding: 1.54,
23            document_language: "en",
24            page_format: "a4",
25            background_color: "white"
26        }
27    })
28});
Response
1{
2    success: true,
3    data: {
4        file_url: "https://useresume-platform.com/cover-letter/john-doe-cover-letter.pdf",
5        file_url_expires_at: 1728388800000,
6        file_expires_at: 1728388800000,
7        file_size_bytes: 251904
8    },
9    meta: {
10        run_id: "run_123456789",
11        credits_used: 1,
12        credits_remaining: 499
13    }
14};

Create a tailored cover letter

Use this endpoint to create tailored cover letter files using LLMs. Provide the cover letter data, job description and the styling options to generate the document.

Body

Response

Returns an object with a time-limited signed URL to download the tailored cover letter PDF. The URL expires in 24 hours. Download the file promptly after generation.

POST /api/v3/cover-letter/create-tailored
1const result = await fetch(`https://useresume.ai/api/v3/cover-letter/create-tailored`, {
2    method: "POST",
3    headers: {
4        Authorization: `Bearer ${USERESUME_API_KEY}`,
5        "Content-Type": "application/json"
6    },
7    body: JSON.stringify({
8        cover_letter_content: {
9            content: {
10                name: "John Doe",
11                address: "123 Main St, Anytown, USA",
12                email: "john.doe@example.com",
13                phone: "+1234567890",
14                role: "Software Engineer",
15                hiring_manager_name: "Jane Smith",
16                hiring_manager_company: "Acme Corporation",
17                text: "Dear Hiring Manager,\\nI am writing to express my strong interest in the Software Engineer position at Acme Corporation. With over 5 years of experience in full-stack development, I am confident that my skills and passion for innovation make me an ideal candidate for this role.\\nThroughout my career, I have demonstrated expertise in building scalable web applications and collaborating with cross-functional teams. I am particularly excited about the opportunity to contribute to your team's mission of delivering cutting-edge solutions.\\nThank you for considering my application. I look forward to the opportunity to discuss how my background and skills align with your needs.\\nSincerely,\\nJohn Doe"
18            },
19            style: {
20                template: "nova",
21                template_color: "blue",
22                font: "inter",
23                page_padding: 1.54,
24                document_language: "en",
25                page_format: "a4",
26                background_color: "white"
27            }
28        },
29        target_job: {
30            job_title: "Senior Software Engineer",
31            job_description: "We are looking for a Senior Software Engineer to join our team. The ideal candidate will have experience with JavaScript, React, Node.js, and cloud technologies. You will be responsible for developing scalable web applications and mentoring junior developers."
32        }
33    })
34});
Response
1{
2    success: true,
3    data: {
4        file_url: "https://useresume-platform.com/cover-letter/john-doe-cover-letter.pdf",
5        file_url_expires_at: 1728388800000,
6        file_expires_at: 1728388800000,
7        file_size_bytes: 251904
8    },
9    meta: {
10        run_id: "run_123456789",
11        credits_used: 5,
12        credits_remaining: 495
13    }
14};

Parse a PDF/Word/Image cover letter

Use this endpoint to extract the cover letter data from a PDF/Word/Image file into markdown or a structured JSON object. No data is stored, saved or in any way retained on our servers. DOCX, PNG, JPG, JPEG, WEBP are supported.

Body

Response

Returns a JSON object with the cover letter data object or data markdown string.

POST /api/v3/cover-letter/parse
1const result = await fetch(`https://useresume.ai/api/v3/cover-letter/parse`, {
2    method: "POST",
3    headers: {
4        Authorization: `Bearer ${USERESUME_API_KEY}`,
5        "Content-Type": "application/json"
6    },
7    body: JSON.stringify({
8        file: "JVBERi0xLjcKCjEgMCBvYmo=...",
9        parse_to: "json"
10    })
11});
Response
1{
2    success: true,
3    data: {
4        name: "John Doe",
5        email: "john.doe@example.com",
6        phone: "1234567890",
7        address: "123 Main St, Anytown, USA",
8        text: "Dear Hiring Manager,\nI am writing to express my strong interest in the Software Engineer position at Acme Corporation. With over 5 years of experience in full-stack development, I am confident that my skills and passion for innovation make me an ideal candidate for this role.\nThroughout my career, I have demonstrated expertise in building scalable web applications and collaborating with cross-functional teams. I am particularly excited about the opportunity to contribute to your team's mission of delivering cutting-edge solutions.\nThank you for considering my application. I look forward to the opportunity to discuss how my background and skills align with your needs.\nSincerely,\nJohn Doe",
9        hiring_manager_company: "Acme Corporation",
10        hiring_manager_name: "Jane Smith",
11        role: "Software Engineer"
12    },
13    meta: {
14        run_id: "run_123456789",
15        credits_used: 2,
16        credits_remaining: 498
17    }
18};

Retrieve a run

Use this endpoint to retrieve a single run by its ID.

Body

No body parameters

Response

Returns an object with run details, including a signed URL to download the generated file if the file did not expire. The signed URL will expire in 24 hours.

GET /api/v3/run/get/{run_id}
1const result = await fetch(`https://useresume.ai/api/v3/run/get/run_123`, {
2    method: "GET",
3    headers: {
4        Authorization: `Bearer ${USERESUME_API_KEY}`
5    }
6});
Response
1{
2    success: true,
3    data: {
4        id: "run_123",
5        created_at: 1728388800000,
6        endpoint: "resume/create",
7        api_platform_user_id: "user_123",
8        credits_used: 1,
9        status: "success",
10        file_url: "https://useresume-platform.com/{document_type}/abc123.pdf",
11        file_url_expires_at: 1728388800000,
12        file_expires_at: 1728388800000,
13        file_size_bytes: 251904
14    }
15};