Skip to main content
POST
Confirm and Save Parsed CV

Endpoint

Base URL: http://localhost:3000/api/v1
This endpoint requires authentication and Job Seeker role.

Authentication

Include the access token in the Authorization header:

Description

Review the parsed CV data and confirm to save it to your profile. This creates or updates your JobSeekerProfile, Education, WorkExperience, and JobSeekerSkill records. The backend uses the stored parsed CV as the base version, then applies any fields you send in data before saving.
Arrays are full replacements. If you send education or workExperience, the full array is deleted and recreated.To add or update one item, first get the current array from preview, then send the complete array with your change.For partial updates after confirmation, use the dedicated Education, Work Experience, etc… APIs.

Request Body

parseResultId
string
required
The parse result identifier returned by POST /cv/confirm or GET /cv-parse/preview.
data
object
required
CV data with optional overrides. All fields are optional except workPreference and availabilityStatus.
data.firstName
string
First name override.
data.lastName
string
Last name override.
data.cvEmail
string
Email address override.
data.phone
string
Phone number override.
data.location
string
Location/address override.
data.linkedinUrl
string
LinkedIn profile URL override.
data.githubUrl
string
GitHub profile URL override.
data.portfolioUrl
string
Portfolio website URL override.
data.title
string
Job title override (e.g., “Software Engineer”).
data.summary
string
Professional summary override.
data.education
array
Education array override. If sent, it replaces the stored education.
data.education[].institutionName
string
required
Institution name.
data.education[].degreeType
string
required
Degree type: ASSOCIATE, BACHELOR, MASTER, DOCTORATE.
data.education[].fieldOfStudy
string
required
Field of study.
data.education[].startDate
string
required
Start date (ISO 8601).
data.education[].endDate
string
End date (ISO 8601).
data.education[].isCurrent
boolean
required
Currently studying here.
data.education[].gpa
number
GPA score.
data.workExperience
array
Work experience array override. If sent, it replaces the stored work experience.
data.workExperience[].companyName
string
required
Company name.
data.workExperience[].jobTitle
string
required
Job title.
data.workExperience[].location
string
Job location.
data.workExperience[].startDate
string
required
Start date (ISO 8601).
data.workExperience[].endDate
string
End date (ISO 8601).
data.workExperience[].isCurrent
boolean
required
Currently working here.
data.workExperience[].description
string
required
Job description.
data.skills
array
Skills array. Skills from the parsed CV are kept (verified). User-added skills are appended (unverified).
data.skills[]
string
Skill name. If skill already exists in parsed CV, it’s marked as verified. New skills are unverified.
data.expectedSalary
number
Expected salary.
data.workPreference
string
required
Work preference: ONSITE, REMOTE, HYBRID, ANY.
data.noticePeriod
number
Notice period in days.
data.availabilityStatus
string
required
Availability status: OPEN_TO_WORK, NOT_LOOKING, PASSIVELY_LOOKING.

Request Example

Response

Success Response (200 OK)

Error Responses

400 Bad Request - Validation Error (missing required fields)

400 Bad Request - No Completed Parse Result

401 Unauthorized

403 Forbidden

404 Not Found - Parse Result Not Found

Complete CV Flow

1

Upload CV

Call POST /cv/presigned-url to get an upload URL
2

Upload File

Upload the file using PUT with the upload URL
3

Confirm Upload

Call POST /cv/confirm to trigger NLP parsing
4

Preview Data

Call GET /cv-parse/preview to see parsed results
5

Confirm & Save

Call POST /cv-parse/confirm to save to your profile
What gets saved: JobSeekerProfile (title, summary, phone, cvEmail, location, links, preferences), Education, WorkExperience, and JobSeekerSkill.Skills from parsed CV are saved with verified: true; manually added skills are saved with verified: false.yearsOfExperience is always taken from the parsed CV and cannot be modified.After confirmation, the CvParseResult record is deleted from the database. Calling GET /cv-parse/preview will return a 404 after confirmation.