Get Candidate CV
curl --request POST \
--url https://api.linkupapi.com/v2/recruiter \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"account_id": "<string>",
"action": "<string>",
"params": {
"application_id": "<string>"
}
}
'import requests
url = "https://api.linkupapi.com/v2/recruiter"
payload = {
"account_id": "<string>",
"action": "<string>",
"params": { "application_id": "<string>" }
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_id: '<string>',
action: '<string>',
params: {application_id: '<string>'}
})
};
fetch('https://api.linkupapi.com/v2/recruiter', 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.linkupapi.com/v2/recruiter",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '<string>',
'action' => '<string>',
'params' => [
'application_id' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$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://api.linkupapi.com/v2/recruiter"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"application_id\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.linkupapi.com/v2/recruiter")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"application_id\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linkupapi.com/v2/recruiter")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"application_id\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"application_id": "26905743894",
"candidate": {
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+33 6 12 34 56 78",
"profile_url": "https://www.linkedin.com/in/jane-doe-42",
"resume_url": "https://media.licdn.com/dms/document/..."
},
"cv": {
"content": "JVBERi0xLjQKJfbk/N8KMSAwIG9iago8PAovVHlwZSAvQ2F0YW...",
"encoding": "base64",
"filename": "Jane_Doe_CV.pdf",
"content_type": "application/pdf",
"size_bytes": 126451
}
},
"metadata": {
"action": "get_cv",
"account_id": "your-account-id",
"credits_consumed": 1,
"timestamp": "2026-04-26T10:35:00Z"
}
}
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "application_id is required."
},
"metadata": {
"action": "get_cv",
"account_id": "your-account-id",
"credits_consumed": 0,
"timestamp": "2026-04-26T10:35:00Z"
}
}
Recruiting
Get Candidate CV
Retrieve the CV/resume of a specific job candidate.
POST
/
v2
/
recruiter
Get Candidate CV
curl --request POST \
--url https://api.linkupapi.com/v2/recruiter \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"account_id": "<string>",
"action": "<string>",
"params": {
"application_id": "<string>"
}
}
'import requests
url = "https://api.linkupapi.com/v2/recruiter"
payload = {
"account_id": "<string>",
"action": "<string>",
"params": { "application_id": "<string>" }
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_id: '<string>',
action: '<string>',
params: {application_id: '<string>'}
})
};
fetch('https://api.linkupapi.com/v2/recruiter', 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.linkupapi.com/v2/recruiter",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '<string>',
'action' => '<string>',
'params' => [
'application_id' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$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://api.linkupapi.com/v2/recruiter"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"application_id\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.linkupapi.com/v2/recruiter")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"application_id\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linkupapi.com/v2/recruiter")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"application_id\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"application_id": "26905743894",
"candidate": {
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+33 6 12 34 56 78",
"profile_url": "https://www.linkedin.com/in/jane-doe-42",
"resume_url": "https://media.licdn.com/dms/document/..."
},
"cv": {
"content": "JVBERi0xLjQKJfbk/N8KMSAwIG9iago8PAovVHlwZSAvQ2F0YW...",
"encoding": "base64",
"filename": "Jane_Doe_CV.pdf",
"content_type": "application/pdf",
"size_bytes": 126451
}
},
"metadata": {
"action": "get_cv",
"account_id": "your-account-id",
"credits_consumed": 1,
"timestamp": "2026-04-26T10:35:00Z"
}
}
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "application_id is required."
},
"metadata": {
"action": "get_cv",
"account_id": "your-account-id",
"credits_consumed": 0,
"timestamp": "2026-04-26T10:35:00Z"
}
}
Overview
Returns the CV/resume submitted by a candidate for a specific job application. The file content is returned inline as base64-encoded bytes alongside the candidate metadata — decode and write to disk to obtain the original file.This endpoint consumes 1 credit per request. Ignore this if you’re on per-seat pricing: usage is unlimited.
Request
string
required
Your API key for authentication.
string
required
The unique identifier of the account to use.
string
required
Must be
"get_cv".object
required
Show params properties
Show params properties
string
required
Application ID obtained from the Get Job Candidates response.
Response
boolean
Indicates whether the request was successful.
object
Show data properties
Show data properties
string
Echo of the requested
application_id.object
object
The CV file payload.
object
{
"success": true,
"data": {
"application_id": "26905743894",
"candidate": {
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+33 6 12 34 56 78",
"profile_url": "https://www.linkedin.com/in/jane-doe-42",
"resume_url": "https://media.licdn.com/dms/document/..."
},
"cv": {
"content": "JVBERi0xLjQKJfbk/N8KMSAwIG9iago8PAovVHlwZSAvQ2F0YW...",
"encoding": "base64",
"filename": "Jane_Doe_CV.pdf",
"content_type": "application/pdf",
"size_bytes": 126451
}
},
"metadata": {
"action": "get_cv",
"account_id": "your-account-id",
"credits_consumed": 1,
"timestamp": "2026-04-26T10:35:00Z"
}
}
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "application_id is required."
},
"metadata": {
"action": "get_cv",
"account_id": "your-account-id",
"credits_consumed": 0,
"timestamp": "2026-04-26T10:35:00Z"
}
}
Saving the CV to disk
Thecv.content field is base64-encoded. Decode it and write it to a file using the cv.filename:
Python
import base64, json, requests
resp = requests.post(
"https://api.linkupapi.com/v2/recruiter",
headers={"x-api-key": "YOUR_API_KEY", "Content-Type": "application/json"},
json={
"action": "get_cv",
"account_id": "your-account-id",
"params": {"application_id": "26905743894"},
},
).json()
cv = resp["data"]["cv"]
with open(cv["filename"], "wb") as f:
f.write(base64.b64decode(cv["content"]))
Node.js
import fs from "fs";
const resp = await fetch("https://api.linkupapi.com/v2/recruiter", {
method: "POST",
headers: { "x-api-key": "YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
action: "get_cv",
account_id: "your-account-id",
params: { application_id: "26905743894" },
}),
}).then(r => r.json());
const { filename, content } = resp.data.cv;
fs.writeFileSync(filename, Buffer.from(content, "base64"));
Was this page helpful?