Upload Company Image 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_bodyCompany
Upload Company Image File
Upload the company logo directly to cloud storage using the presigned URL
PUT
{uploadUrl}
Upload Company Image 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 Company Image Upload URL endpoint.
Description
Upload the company logo directly to Cloudflare R2 using the presigned URL. This is step 2 of the company logo upload flow.Request Headers
string
required
The image MIME type. It must match the value used when requesting the presigned URL.
Request Body
Send the raw image file as the binary request body.Do not send your bearer token to the storage URL. This request goes to R2, not to the CareerK
API.
Request Example
PUT "https://careerk-media.c0485e90a90f9be9ecd4e72559fee834.r2.cloudflarestorage.com/company-logos/dfb97b50-e8ff-4fa4-a9d6-ae0e9d901234/1776332930558-logo.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=a14238f39390c8c7f0581e7801787531%2F20260416%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20260416T094850Z&X-Amz-Expires=3600&X-Amz-Signature=fd8f2606c79dc66b24a5b7ffffa07a9528217de6b00bc631cedc548f93173af6&X-Amz-SignedHeaders=host&x-id=PutObject" \
-H "Content-Type: image/png" \
--data-binary @logo.png
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."
}
