curl --request GET \
--url https://api.samsa.ai/public/v1/images/upscales/{upscale_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.samsa.ai/public/v1/images/upscales/{upscale_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.samsa.ai/public/v1/images/upscales/{upscale_id}', 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.samsa.ai/public/v1/images/upscales/{upscale_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.samsa.ai/public/v1/images/upscales/{upscale_id}"
req, _ := http.NewRequest("GET", url, nil)
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.get("https://api.samsa.ai/public/v1/images/upscales/{upscale_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.samsa.ai/public/v1/images/upscales/{upscale_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "completed",
"created_at": "2023-11-07T05:31:56Z",
"credits_used": 10,
"image": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_image_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"format_type": "upscale",
"mime_type": "image/png",
"url": "https://cdn.samsa.ai/user-.../abc.png?X-Amz-Signature=...",
"width": 123,
"height": 123,
"resolution_class": "2K",
"model": "crystal"
},
"error": "<string>"
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid, expired, or revoked.",
"request_id": "8f14e45fceea167a5a36dedd4bea2543",
"param": "aspect_ratio"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid, expired, or revoked.",
"request_id": "8f14e45fceea167a5a36dedd4bea2543",
"param": "aspect_ratio"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid, expired, or revoked.",
"request_id": "8f14e45fceea167a5a36dedd4bea2543",
"param": "aspect_ratio"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid, expired, or revoked.",
"request_id": "8f14e45fceea167a5a36dedd4bea2543",
"param": "aspect_ratio"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid, expired, or revoked.",
"request_id": "8f14e45fceea167a5a36dedd4bea2543",
"param": "aspect_ratio"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid, expired, or revoked.",
"request_id": "8f14e45fceea167a5a36dedd4bea2543",
"param": "aspect_ratio"
}
}Récupérer un job d'upscale
Interroge un job d’upscale pour son statut et, une fois terminé, l’image produite.
curl --request GET \
--url https://api.samsa.ai/public/v1/images/upscales/{upscale_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.samsa.ai/public/v1/images/upscales/{upscale_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.samsa.ai/public/v1/images/upscales/{upscale_id}', 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.samsa.ai/public/v1/images/upscales/{upscale_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.samsa.ai/public/v1/images/upscales/{upscale_id}"
req, _ := http.NewRequest("GET", url, nil)
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.get("https://api.samsa.ai/public/v1/images/upscales/{upscale_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.samsa.ai/public/v1/images/upscales/{upscale_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "completed",
"created_at": "2023-11-07T05:31:56Z",
"credits_used": 10,
"image": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_image_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"format_type": "upscale",
"mime_type": "image/png",
"url": "https://cdn.samsa.ai/user-.../abc.png?X-Amz-Signature=...",
"width": 123,
"height": 123,
"resolution_class": "2K",
"model": "crystal"
},
"error": "<string>"
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid, expired, or revoked.",
"request_id": "8f14e45fceea167a5a36dedd4bea2543",
"param": "aspect_ratio"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid, expired, or revoked.",
"request_id": "8f14e45fceea167a5a36dedd4bea2543",
"param": "aspect_ratio"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid, expired, or revoked.",
"request_id": "8f14e45fceea167a5a36dedd4bea2543",
"param": "aspect_ratio"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid, expired, or revoked.",
"request_id": "8f14e45fceea167a5a36dedd4bea2543",
"param": "aspect_ratio"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid, expired, or revoked.",
"request_id": "8f14e45fceea167a5a36dedd4bea2543",
"param": "aspect_ratio"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid, expired, or revoked.",
"request_id": "8f14e45fceea167a5a36dedd4bea2543",
"param": "aspect_ratio"
}
}pending ou processing,
continue d’interroger ; une fois completed, la réponse porte un seul objet
résultat image avec une presigned url valable 24 heures. Seuls les jobs créés
par ton organisation sont visibles ; tout autre id renvoie
404 not_found. Requiert le scope images.transform.
Exemple : job terminé
L’upscale renvoie uneimage — un objet résultat de format dérivé (pas le tableau
images utilisé par la génération), portant sa propre id stable, la
source_image_id dont il dérive, le model qui l’a produit et une
resolution_class :
{
"id": "d5e6f7a8-9b0c-4d1e-2f3a-4b5c6d7e8f9a",
"status": "completed",
"created_at": "2026-07-18T10:12:00Z",
"credits_used": 10,
"image": {
"id": "7c8d9e0f-1a2b-4c3d-4e5f-6a7b8c9d0e1f",
"source_image_id": "123e4567-e89b-12d3-a456-426614174000",
"format_type": "upscale",
"mime_type": "image/png",
"url": "https://cdn.samsa.ai/user-.../upscaled.png?X-Amz-Signature=...",
"width": 3840,
"height": 2160,
"resolution_class": "4K",
"model": "crystal"
},
"error": null
}
webhook_url sur la
requête d’upscale d’origine pour recevoir un
callback signé au lieu d’interroger. Voir Webhooks.Autorisations
Organization API key as a bearer token: Authorization: Bearer samsa_sk_....
Paramètres de chemin
Réponse
Successful Response
GET /images/upscales/{id} body (SAM-819 / S8.7 — ADR §7.2).
The standard async-job envelope plus ONE nullable image result object (an
image_formats derivative, built by the S8.2 egress builder). created_at
is the job's submit time from the credit ledger (the image_generation_tasks
table has no created_at column).
pending, processing, completed, failed, or cancelled.
pending, processing, completed, failed, cancelled "completed"
When the job was submitted.
Net credits charged for this job, after any refunds.
10
The produced upscale (presigned URL); null until completed.
Show child attributes
Show child attributes
Failure detail when status is failed; otherwise null.

