Confirm Company Logo Upload
curl --request POST \
--url https://api.example.com/api/v1/companies/me/images/confirm \
--header 'Content-Type: application/json' \
--data '
{
"key": "<string>"
}
'import requests
url = "https://api.example.com/api/v1/companies/me/images/confirm"
payload = { "key": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({key: '<string>'})
};
fetch('https://api.example.com/api/v1/companies/me/images/confirm', 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/companies/me/images/confirm",
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([
'key' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.example.com/api/v1/companies/me/images/confirm"
payload := strings.NewReader("{\n \"key\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/api/v1/companies/me/images/confirm")
.header("Content-Type", "application/json")
.body("{\n \"key\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/companies/me/images/confirm")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"key\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyCompany
Confirm Company Logo Upload
Confirm a previously uploaded company logo
POST
/
api
/
v1
/
companies
/
me
/
images
/
confirm
Confirm Company Logo Upload
curl --request POST \
--url https://api.example.com/api/v1/companies/me/images/confirm \
--header 'Content-Type: application/json' \
--data '
{
"key": "<string>"
}
'import requests
url = "https://api.example.com/api/v1/companies/me/images/confirm"
payload = { "key": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({key: '<string>'})
};
fetch('https://api.example.com/api/v1/companies/me/images/confirm', 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/companies/me/images/confirm",
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([
'key' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.example.com/api/v1/companies/me/images/confirm"
payload := strings.NewReader("{\n \"key\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/api/v1/companies/me/images/confirm")
.header("Content-Type", "application/json")
.body("{\n \"key\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/companies/me/images/confirm")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"key\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyEndpoint
POST /api/v1/companies/me/images/confirm
http://localhost:3000/api/v1
This endpoint requires authentication and Company role.
Authentication
Include the access token in the Authorization header:Authorization: Bearer YOUR_ACCESS_TOKEN
Description
Confirms that the company logo exists in storage and saves its public URL tologoUrl.
Request Body
string
required
Storage object key returned by the presigned URL endpoint. It must start with
company-logos/ {companyId}/.Request Shape
interface ConfirmCompanyImageUploadDto {
key: string;
}
Request Example
{
"key": "company-logos/dfb97b50-e8ff-4fa4-a9d6-ae0e9d901234/1776332930558-logo.png"
}
Response
Success Response (200 OK)
{
"success": true,
"data": {
"fileUrl": "https://pub-5c37ea83b99f48918e67ed5fdda1be98.r2.dev/company-logos/dfb97b50-e8ff-4fa4-a9d6-ae0e9d901234/1776332930558-logo.png"
},
"message": "Company image uploaded successfully",
"meta": {
"timestamp": "2026-04-23T20:00:00.000Z",
"path": "/companies/me/images/confirm",
"method": "POST"
}
}
Response Shape
interface ConfirmCompanyImageUploadResponse {
success: true;
data: {
fileUrl: string;
};
message: 'Company image uploaded successfully';
meta: {
timestamp: string;
path: '/companies/me/images/confirm';
method: 'POST';
};
}
Error Responses
400 Bad Request - Invalid Key
{
"success": false,
"error": {
"message": "Invalid company image key",
"statusCode": 400,
"timestamp": "2026-04-23T20:00:00.000Z",
"path": "/companies/me/images/confirm",
"method": "POST",
"details": "Bad Request"
}
}
400 Bad Request - Missing File
{
"success": false,
"error": {
"message": "File not found in storage, upload may have failed",
"statusCode": 400,
"timestamp": "2026-04-23T20:00:00.000Z",
"path": "/companies/me/images/confirm",
"method": "POST",
"details": "Bad Request"
}
}
401 Unauthorized
{
"success": false,
"error": {
"message": "Unauthorized",
"statusCode": 401,
"timestamp": "2026-04-23T20:00:00.000Z",
"path": "/companies/me/images/confirm",
"method": "POST",
"details": "Unauthorized"
}
}
403 Forbidden
{
"success": false,
"error": {
"message": "Forbidden resource",
"statusCode": 403,
"timestamp": "2026-04-23T20:00:00.000Z",
"path": "/companies/me/images/confirm",
"method": "POST",
"details": "Forbidden"
}
}
404 Not Found
{
"success": false,
"error": {
"message": "Company not found",
"statusCode": 404,
"timestamp": "2026-04-23T20:00:00.000Z",
"path": "/companies/me/images/confirm",
"method": "POST",
"details": "Not Found"
}
}
Flow Summary
1
Request URL
Call POST /companies/me/images/presigned-url
2
Upload File
Upload the image to the returned
uploadUrl using PUT. See
/api-reference/company/upload-image-file3
Confirm Upload
Call POST /companies/me/images/confirm with the returned
key⌘I
