curl --request POST \
--url https://app.fastgen.ai/v1/cv/score \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--header 'Fastgen-Project: <fastgen-project>' \
--form cv_file='@example-file' \
--form cv_file_url=https://myFileHost/myCv.pdf \
--form async=true \
--form 'scoring_template={ ... }' \
--form scoring_template_id=f7c31bda-f918-4249-a3bc-9a1903fe9f6d \
--form language=enimport requests
url = "https://app.fastgen.ai/v1/cv/score"
files = { "cv_file": ("example-file", open("example-file", "rb")) }
payload = {
"cv_file_url": "https://myFileHost/myCv.pdf",
"async": "true",
"scoring_template": "{ ... }",
"scoring_template_id": "f7c31bda-f918-4249-a3bc-9a1903fe9f6d",
"language": "en"
}
headers = {
"Fastgen-Project": "<fastgen-project>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('cv_file', '<string>');
form.append('cv_file_url', 'https://myFileHost/myCv.pdf');
form.append('async', 'true');
form.append('scoring_template', '{ ... }');
form.append('scoring_template_id', 'f7c31bda-f918-4249-a3bc-9a1903fe9f6d');
form.append('language', 'en');
const options = {
method: 'POST',
headers: {'Fastgen-Project': '<fastgen-project>', Authorization: 'Bearer <token>'}
};
options.body = form;
fetch('https://app.fastgen.ai/v1/cv/score', 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://app.fastgen.ai/v1/cv/score",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file_url\"\r\n\r\nhttps://myFileHost/myCv.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"async\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template\"\r\n\r\n{ ... }\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template_id\"\r\n\r\nf7c31bda-f918-4249-a3bc-9a1903fe9f6d\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data",
"Fastgen-Project: <fastgen-project>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.fastgen.ai/v1/cv/score"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file_url\"\r\n\r\nhttps://myFileHost/myCv.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"async\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template\"\r\n\r\n{ ... }\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template_id\"\r\n\r\nf7c31bda-f918-4249-a3bc-9a1903fe9f6d\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Fastgen-Project", "<fastgen-project>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.fastgen.ai/v1/cv/score")
.header("Fastgen-Project", "<fastgen-project>")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file_url\"\r\n\r\nhttps://myFileHost/myCv.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"async\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template\"\r\n\r\n{ ... }\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template_id\"\r\n\r\nf7c31bda-f918-4249-a3bc-9a1903fe9f6d\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.fastgen.ai/v1/cv/score")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Fastgen-Project"] = '<fastgen-project>'
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file_url\"\r\n\r\nhttps://myFileHost/myCv.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"async\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template\"\r\n\r\n{ ... }\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template_id\"\r\n\r\nf7c31bda-f918-4249-a3bc-9a1903fe9f6d\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"personal_information": {
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"address": "<string>",
"sex": "<string>",
"phone_number": "<string>",
"date_of_birth": "2023-12-25"
},
"skills": [
{
"skill": "<string>",
"proficiency_level": "<string>"
}
],
"professional_experience": [
{
"company": "<string>",
"description": "<string>",
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"position": "<string>",
"location": "<string>",
"internship": true,
"work_type": "<string>"
}
],
"education": [
{
"school": "<string>",
"degree": "<string>",
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"grade_text": "<string>",
"grade_value": 123
}
],
"certifications": [
{
"issuer": "<string>",
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"credential_id": "<string>",
"credential_url": "<string>",
"name": "<string>"
}
],
"languages": [
{
"language": "<string>",
"proficiency_level": "<string>"
}
],
"ai_evaluation": {
"candidate_info": {
"name": "<string>",
"position_applied": "<string>",
"years_experience": 123
},
"professional_experience": {
"score": 123,
"weight": 123,
"ai_reasoning": "<string>"
},
"education_qualifications": {
"score": 123,
"weight": 123,
"ai_reasoning": "<string>"
},
"skills": {
"score": 123,
"weight": 123,
"ai_reasoning": "<string>"
},
"additional_factors": {
"score": 123,
"weight": 123,
"ai_reasoning": "<string>"
},
"total_score": 123,
"summary_reasoning": "<string>",
"recommended_interview_focus": "<string>"
}
}{
"webhook_message_id": "4bc3e0d4-f5b9-41e6-9591-211e5427fb04"
}AI Candidate Scoring
Upload your CV, resume or HR-related documents in PDF format to extract information and receive an AI-based score according to your selected scoring template.
curl --request POST \
--url https://app.fastgen.ai/v1/cv/score \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--header 'Fastgen-Project: <fastgen-project>' \
--form cv_file='@example-file' \
--form cv_file_url=https://myFileHost/myCv.pdf \
--form async=true \
--form 'scoring_template={ ... }' \
--form scoring_template_id=f7c31bda-f918-4249-a3bc-9a1903fe9f6d \
--form language=enimport requests
url = "https://app.fastgen.ai/v1/cv/score"
files = { "cv_file": ("example-file", open("example-file", "rb")) }
payload = {
"cv_file_url": "https://myFileHost/myCv.pdf",
"async": "true",
"scoring_template": "{ ... }",
"scoring_template_id": "f7c31bda-f918-4249-a3bc-9a1903fe9f6d",
"language": "en"
}
headers = {
"Fastgen-Project": "<fastgen-project>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('cv_file', '<string>');
form.append('cv_file_url', 'https://myFileHost/myCv.pdf');
form.append('async', 'true');
form.append('scoring_template', '{ ... }');
form.append('scoring_template_id', 'f7c31bda-f918-4249-a3bc-9a1903fe9f6d');
form.append('language', 'en');
const options = {
method: 'POST',
headers: {'Fastgen-Project': '<fastgen-project>', Authorization: 'Bearer <token>'}
};
options.body = form;
fetch('https://app.fastgen.ai/v1/cv/score', 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://app.fastgen.ai/v1/cv/score",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file_url\"\r\n\r\nhttps://myFileHost/myCv.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"async\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template\"\r\n\r\n{ ... }\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template_id\"\r\n\r\nf7c31bda-f918-4249-a3bc-9a1903fe9f6d\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data",
"Fastgen-Project: <fastgen-project>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.fastgen.ai/v1/cv/score"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file_url\"\r\n\r\nhttps://myFileHost/myCv.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"async\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template\"\r\n\r\n{ ... }\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template_id\"\r\n\r\nf7c31bda-f918-4249-a3bc-9a1903fe9f6d\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Fastgen-Project", "<fastgen-project>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.fastgen.ai/v1/cv/score")
.header("Fastgen-Project", "<fastgen-project>")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file_url\"\r\n\r\nhttps://myFileHost/myCv.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"async\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template\"\r\n\r\n{ ... }\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template_id\"\r\n\r\nf7c31bda-f918-4249-a3bc-9a1903fe9f6d\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.fastgen.ai/v1/cv/score")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Fastgen-Project"] = '<fastgen-project>'
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cv_file_url\"\r\n\r\nhttps://myFileHost/myCv.pdf\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"async\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template\"\r\n\r\n{ ... }\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scoring_template_id\"\r\n\r\nf7c31bda-f918-4249-a3bc-9a1903fe9f6d\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"personal_information": {
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"address": "<string>",
"sex": "<string>",
"phone_number": "<string>",
"date_of_birth": "2023-12-25"
},
"skills": [
{
"skill": "<string>",
"proficiency_level": "<string>"
}
],
"professional_experience": [
{
"company": "<string>",
"description": "<string>",
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"position": "<string>",
"location": "<string>",
"internship": true,
"work_type": "<string>"
}
],
"education": [
{
"school": "<string>",
"degree": "<string>",
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"grade_text": "<string>",
"grade_value": 123
}
],
"certifications": [
{
"issuer": "<string>",
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"credential_id": "<string>",
"credential_url": "<string>",
"name": "<string>"
}
],
"languages": [
{
"language": "<string>",
"proficiency_level": "<string>"
}
],
"ai_evaluation": {
"candidate_info": {
"name": "<string>",
"position_applied": "<string>",
"years_experience": 123
},
"professional_experience": {
"score": 123,
"weight": 123,
"ai_reasoning": "<string>"
},
"education_qualifications": {
"score": 123,
"weight": 123,
"ai_reasoning": "<string>"
},
"skills": {
"score": 123,
"weight": 123,
"ai_reasoning": "<string>"
},
"additional_factors": {
"score": 123,
"weight": 123,
"ai_reasoning": "<string>"
},
"total_score": 123,
"summary_reasoning": "<string>",
"recommended_interview_focus": "<string>"
}
}{
"webhook_message_id": "4bc3e0d4-f5b9-41e6-9591-211e5427fb04"
}File Options
1. Direct File Upload
- Submit the PDF file directly using multipart/form-data
- Maximum file size: 30MB
- Ideal for local files that need to be uploaded from a client application
2. URL Submission
- Provide a publicly accessible URL where the PDF file is hosted
- Maximum file size: 30MB
- Useful for files that are already hosted online or stored in cloud storage
- The API will download and process the file from the provided URL
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Body
Uploaded PDF file using multipart/form-data. Provide either 'cv_file' or 'cv_file_url' but not both.
publicly accessible URL where the PDF file is hosted. Provide either 'cv_file' or 'cv_file_url' but not both.
"https://myFileHost/myCv.pdf"
Controls whether the result is returned via the http response or delivered via the users webhook endpoints. If set to true, the server will respond with 202 and return the webhook message id under which the result will be deliverd. The same webhook message id, is then found in the webhook message payload later alongside the result. Defaults to false.
"true"
The scoring template provided directly to the request. See https://partner-docs.fastgen.ai/api-reference/endpoint/scoringTemplate/create regarding the format. Usually it is better to use 'scoring_template_id' instead. Provide either 'scoring_template' or 'scoring_template_id' but not both.
"{ ... }"
The scoring template provided via its id. See https://partner-docs.fastgen.ai/api-reference/endpoint/scoringTemplate/create. Provide either 'scoring_template' or 'scoring_template_id' but not both.
"f7c31bda-f918-4249-a3bc-9a1903fe9f6d"
Controls the language of the AI Evaluation text. Defaults to 'en'
de, en "en"
Response
Successful response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes