Upload CV File
curl --request PUT \
--url https://api.example.com/{uploadUrl} \
--header 'Content-Type: <content-type>'import requests
url = "https://api.example.com/{uploadUrl}"
headers = {"Content-Type": "<content-type>"}
response = requests.put(url, headers=headers)
print(response.text)const options = {method: 'PUT', headers: {'Content-Type': '<content-type>'}};
fetch('https://api.example.com/{uploadUrl}', 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/{uploadUrl}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>"
],
]);
$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/{uploadUrl}"
req, _ := http.NewRequest("PUT", url, nil)
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.example.com/{uploadUrl}")
.header("Content-Type", "<content-type>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/{uploadUrl}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = '<content-type>'
response = http.request(request)
puts response.read_bodyCV
Upload CV File
Upload your CV file directly to cloud storage using the presigned URL
PUT
{uploadUrl}
Upload CV File
curl --request PUT \
--url https://api.example.com/{uploadUrl} \
--header 'Content-Type: <content-type>'import requests
url = "https://api.example.com/{uploadUrl}"
headers = {"Content-Type": "<content-type>"}
response = requests.put(url, headers=headers)
print(response.text)const options = {method: 'PUT', headers: {'Content-Type': '<content-type>'}};
fetch('https://api.example.com/{uploadUrl}', 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/{uploadUrl}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>"
],
]);
$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/{uploadUrl}"
req, _ := http.NewRequest("PUT", url, nil)
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.example.com/{uploadUrl}")
.header("Content-Type", "<content-type>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/{uploadUrl}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = '<content-type>'
response = http.request(request)
puts response.read_bodyEndpoint
PUT {uploadUrl}
The URL is obtained from the Request Upload URL endpoint.
Description
Upload your CV file directly to cloud storage using the presigned URL. This is the second step in the CV upload process.Request Headers
string
required
The MIME type of the file (must match what was requested).
Request Body
Send the raw file content (binary) in the request body.Request Example
PUT "https://cvs.c0485e90a90f9be9ecd4e72559fee834.r2.cloudflarestorage.com/cvs/a9ff20fb-8010-4a22-8873-344c103726af/1771315860529-test-cv.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=c1feabbe8cd3c62e2dc015a4be9881f0%2F20260217%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20260217T081100Z&X-Amz-Expires=3600&X-Amz-Signature=4cc903d3ef75e39b8a3374304d214828bd1291e7acf661fd3d4f3d09ae414983&X-Amz-SignedHeaders=host&x-id=PutObject" \
-H "Content-Type: application/pdf" \
--data-binary @test-cv.pdf
Response
Success Response (200 OK)
The upload returns an empty body with HTTP 200 on success.(empty response body)
Error Responses
403 Forbidden - Invalid Signature
{
"Code": "SignatureDoesNotMatch",
"Message": "The request signature we calculated does not match the signature you provided."
}
410 Gone - URL Expired
{
"Code": "ExpiredToken",
"Message": "The provided token has expired."
}
Next Steps
After successfully uploading the file, you must confirm the upload (see Confirm CV Upload)Don’t Skip Confirmation: The CV will not be attached to your profile until you confirm the
upload.
