API
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.
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.
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();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};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.
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();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};Body
Response
Returns a JSON object with the resume data object or data markdown string.
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();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};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.
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();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};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.
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();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};Body
Response
Returns a JSON object with the cover letter data object or data markdown string.
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();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};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.
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();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};The UseResume MCP (Model Context Protocol) server allows AI agents to generate professional resumes and cover letters through natural conversation. Install the @useresume/mcp-server package to enable AI assistants to create documents on your behalf. Compatible with Claude Desktop, Claude Code, Cursor, Windsurf, Cline, and other MCP-compatible clients.
1. Get API key → API keys dashboard
2. Add config (instructions below) → Edit the config file for your client
3. Restart your client → Restart Claude Desktop, Cursor, etc.
4. Start using → "Create a resume for a software engineer"
Claude Desktop
Add the following to your Claude Desktop configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json1{
2 "mcpServers": {
3 "useresume": {
4 "command": "npx",
5 "args": ["-y", "@useresume/mcp-server"],
6 "env": {
7 "USERESUME_API_KEY": "ur_xxxxx"
8 }
9 }
10 }
11}Claude Code / Cursor / Other Clients
Add the following to your MCP settings file:
~/.claude/settings.json~/.cursor/mcp.json1{
2 "mcpServers": {
3 "useresume": {
4 "command": "npx",
5 "args": ["-y", "@useresume/mcp-server"],
6 "env": {
7 "USERESUME_API_KEY": "ur_xxxxx"
8 }
9 }
10 }
11}Tip: On macOS, the Library folder is located in the user directory and is hidden by default. Unhide it by pressing Cmd+Shift+. in Finder.
Alternative: Global Installation
Alternartively, you can install the package globally instead of using npx:
1npm install -g @useresume/mcp-serverThen update your configuration to use the installed command:
1{
2 "mcpServers": {
3 "useresume": {
4 "command": "useresume-mcp",
5 "env": {
6 "USERESUME_API_KEY": "ur_xxxxx"
7 }
8 }
9 }
10}Available Tools
The MCP server exposes the following tools that your agent can use:
| Tool | Credits | Description |
|---|---|---|
| create_resume | 1 | Generate PDF resume from structured content |
| create_tailored_resume | 5 | Generate resume optimized for a specific job posting |
| parse_resume | 4 | Parse existing resume (PDF/DOCX/PNG/JPG/JPEG/WEBP) into structured data |
| create_cover_letter | 1 | Generate PDF cover letter from structured content |
| create_tailored_cover_letter | 5 | Generate cover letter optimized for a specific job posting |
| parse_cover_letter | 4 | Parse existing cover letter (PDF/DOCX/PNG/JPG/JPEG/WEBP) into structured data |
| get_run_status | 0 | Check the status of an async operation |
View the package on npm: @useresume/mcp-server