Preview Parsed CV Data
curl --request GET \
--url https://api.example.com/api/v1/cv-parse/previewimport requests
url = "https://api.example.com/api/v1/cv-parse/preview"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/v1/cv-parse/preview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/cv-parse/preview",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/cv-parse/preview"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/cv-parse/preview")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/cv-parse/preview")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyCV
Preview Parsed CV Data
Preview the parsed CV data from the most recent upload
GET
/
api
/
v1
/
cv-parse
/
preview
Preview Parsed CV Data
curl --request GET \
--url https://api.example.com/api/v1/cv-parse/previewimport requests
url = "https://api.example.com/api/v1/cv-parse/preview"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/v1/cv-parse/preview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/cv-parse/preview",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/cv-parse/preview"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/cv-parse/preview")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/cv-parse/preview")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyEndpoint
GET /api/v1/cv-parse/preview
http://localhost:3000/api/v1
This endpoint requires authentication and Job Seeker role.
Authentication
Include the access token in the Authorization header:Authorization: Bearer YOUR_ACCESS_TOKEN
Description
Get the latest parsed CV data from the most recent upload. Response shape matchesGET /job-seekers/me when parse is complete.
Response
Success Response (200 OK) - COMPLETED Status
{
"success": true,
"data": {
"status": "COMPLETED",
"parseResultId": "9968ae8c-e8f4-4d36-a17a-79215cca669c",
"firstName": "Amr",
"lastName": "Ashraf Mubarak",
"profileImageUrl": null,
"profile": {
"jobSeekerId": "a9ff20fb-8010-4a22-8873-344c103726af",
"title": "Software Engineer",
"location": "Egypt",
"availabilityStatus": "OPEN_TO_WORK",
"workPreference": "REMOTE",
"preferredJobTypes": null,
"yearsOfExperience": 0.3,
"linkedinUrl": "linkedin.com/in/amramubarak",
"portfolioUrl": null,
"githubUrl": "github.com/amrrdev",
"cvEmail": "amrrdev@gmail.com",
"noticePeriod": null,
"phone": "+20 120 456 2326",
"expectedSalary": null,
"summary": "Software Engineer with 1+ year of experience building scalable microservices..."
},
"educations": [
{
"degreeType": "BACHELOR",
"description": null,
"institutionName": "Benha University",
"isCurrent": false,
"fieldOfStudy": "Science in Computer Science",
"endDate": "2026-01-01",
"gpa": 3.6,
"startDate": "2022-01-01"
}
],
"workExperiences": [
{
"companyName": "Linux Foundation Decentralized Trust",
"description": "Developed a testing strategy for a decentralized trust solution...",
"isCurrent": false,
"startDate": "2025-05-01",
"jobTitle": "Software Engineer",
"location": "Remote",
"endDate": "2025-07-01"
}
],
"skills": [
{ "name": "typescript", "verified": true },
{ "name": "node.js", "verified": true },
{ "name": "nestjs", "verified": true }
]
},
"message": "Success",
"meta": {
"timestamp": "2026-04-23T20:00:00.000Z",
"path": "/cv-parse/preview",
"method": "GET"
}
}
Success Response (200 OK) - PENDING Status
Returned when CV is still being processed by NLP service:{
"success": true,
"data": {
"status": "PENDING",
"message": "Your CV is being processed. Please wait..."
},
"message": "Success",
"meta": {
"timestamp": "2026-04-23T20:00:00.000Z",
"path": "/cv-parse/preview",
"method": "GET"
}
}
Success Response (200 OK) - FAILED Status
Returned when NLP parsing failed:{
"success": true,
"data": {
"status": "FAILED",
"message": "Failed to parse CV"
},
"message": "Success",
"meta": {
"timestamp": "2026-04-23T20:00:00.000Z",
"path": "/cv-parse/preview",
"method": "GET"
}
}
Success Response (200 OK) - CONFIRMED Status
Returned when CV data has already been saved to profile:{
"success": true,
"data": {
"status": "CONFIRMED",
"message": "CV data has already been saved to your profile"
},
"message": "Success",
"meta": {
"timestamp": "2026-04-23T20:00:00.000Z",
"path": "/cv-parse/preview",
"method": "GET"
}
}
Error Response (404 Not Found)
Returned when no CV has been uploaded:{
"success": false,
"error": {
"message": "No CV parse result found. Please upload a CV first.",
"statusCode": 404,
"timestamp": "2026-04-23T20:00:00.000Z",
"path": "/cv-parse/preview",
"method": "GET",
"details": "Not Found"
}
}
Data Fields
| Field | Type | Description |
|---|---|---|
status | string | Status: PENDING, COMPLETED, FAILED, CONFIRMED |
parseResultId | string | Parse result identifier (present for COMPLETED only) |
firstName | string | First name (present for COMPLETED only) |
lastName | string | Last name (present for COMPLETED only) |
profileImageUrl | string or null | Profile image URL (present for COMPLETED only) |
profile | object | Profile object in /job-seekers/me shape (COMPLETED only) |
educations | array | Education array (COMPLETED only) |
workExperiences | array | Work experience array (COMPLETED only) |
skills | array | Skills array with name and verified (COMPLETED only) |
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
Call POST /cv-parse/confirm to save to your profile
Skills Verification: Skills are marked as
verified: true when parsed from CV. Manual skills
added during confirm are verified: false.