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.

Quick Start

1. Create account Create

2. Select plan Dashboard

3. Create API key → API keys

4. Send request POST /api/v3/resume/create

5. Download PDF → Use the returned file_url

Request typeCredits
Standard document generation1
Tailored document generation5
Document parsing4

Error handling

Every error response from the v3 API uses the same JSON envelope. Branch on the code field for stable handling, and show message to end users. Failed requests never consume credits, so retrying after a fix is safe.

The two error codes you will hit most often are INVALID_JSON when the request body cannot be parsed, and REQUEST_VALIDATION_FAILED when the body parses but a field fails schema checks. In the validation case, the response includes a field_errors array with the exact path that failed.

400 REQUEST_VALIDATION_FAILED
1{
2  "success": false,
3  "error": "Request validation failed",
4  "message": "Request validation failed",
5  "code": "REQUEST_VALIDATION_FAILED",
6  "details": "content.passport_or_id: Expected string, received null",
7  "field_errors": [
8    {
9      "path": "content.passport_or_id",
10      "message": "Expected string, received null",
11      "code": "invalid_type"
12    }
13  ]
14}

Common error codes

StatusCodeWhen it happens
400INVALID_JSONThe request body could not be parsed as JSON, so field-level validation never ran.
400REQUEST_VALIDATION_FAILEDThe JSON body was valid, but one or more fields failed schema validation. Check field_errors[].
401MISSING_AUTHORIZATION_HEADERThe Authorization header is missing. Send 'Authorization: Bearer ur_...'.
401INVALID_API_KEYThe API key could not be found, was deleted, or was mistyped.
401KEY_EXPIREDThe API key exists, but its expiry date has passed.
402INSUFFICIENT_CREDITSThe endpoint costs more credits than the account currently has available.
404ENDPOINT_NOT_FOUNDThe /api/v3 route or method is not supported.
404RUN_NOT_FOUNDNo run with that ID exists for the authenticated API account.
429RATE_LIMIT_EXCEEDEDThe account exceeded the per-second request limit.
500CREDIT_RESERVATION_FAILEDThe platform could not reserve credits before processing the request.
500PROCESSING_ERRORThe request began processing but failed before completion. Reserved credits are refunded when possible.
500RUN_LOOKUP_FAILEDThe run lookup failed before a response could be assembled.
500INTERNAL_ERRORUnexpected server-side failure.

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 response = await fetch("https://useresume.ai/api/v3/resume/create", {
2    method: "POST",
3    headers: {
4        "Authorization": `Bearer ${process.env.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});
49const result = await response.json();
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 response = await fetch("https://useresume.ai/api/v3/resume/create-tailored", {
2    method: "POST",
3    headers: {
4        "Authorization": `Bearer ${process.env.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});
55const result = await response.json();
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. PDF, 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 response = await fetch("https://useresume.ai/api/v3/resume/parse", {
2    method: "POST",
3    headers: {
4        "Authorization": `Bearer ${process.env.USERESUME_API_KEY}`,
5        "Content-Type": "application/json"
6    },
7    body: JSON.stringify({
8        file: "JVBERi0xLjcKCjEgMCBvYmo=...",
9        parse_to: "json"
10    })
11});
12const result = await response.json();
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: 4,
103        credits_remaining: 496
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 response = await fetch("https://useresume.ai/api/v3/cover-letter/create", {
2    method: "POST",
3    headers: {
4        "Authorization": `Bearer ${process.env.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});
29const result = await response.json();
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 response = await fetch("https://useresume.ai/api/v3/cover-letter/create-tailored", {
2    method: "POST",
3    headers: {
4        "Authorization": `Bearer ${process.env.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});
35const result = await response.json();
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. PDF, 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 response = await fetch("https://useresume.ai/api/v3/cover-letter/parse", {
2    method: "POST",
3    headers: {
4        "Authorization": `Bearer ${process.env.USERESUME_API_KEY}`,
5        "Content-Type": "application/json"
6    },
7    body: JSON.stringify({
8        file: "JVBERi0xLjcKCjEgMCBvYmo=...",
9        parse_to: "json"
10    })
11});
12const result = await response.json();
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: 4,
16        credits_remaining: 496
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 response = await fetch("https://useresume.ai/api/v3/run/get/run_123", {
2    method: "GET",
3    headers: {
4        "Authorization": `Bearer ${process.env.USERESUME_API_KEY}`
5    }
6});
7const result = await response.json();
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};