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"
}
}Get an upscale job
Poll an upscale job for status and, once completed, the produced image.
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 or processing, keep
polling; once completed, the response carries a single image result object with
a presigned url valid for 24 hours. Only jobs your organization created are
visible; any other id returns 404 not_found. Requires
the images.transform scope.
Example: completed job
Upscale returns oneimage — a derived-format result object (not the images
array used by generation), carrying its own stable id, the source_image_id it
derives from, the model that produced it, and a 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 on the original
upscale request to receive a signed callback
instead of polling. See Webhooks.Authorizations
Organization API key as a bearer token: Authorization: Bearer samsa_sk_....
Path Parameters
Response
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.

