Retrieve a generation
curl --request GET \
--url https://app.selektable.com/v1/generations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.selektable.com/v1/generations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.selektable.com/v1/generations/{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://app.selektable.com/v1/generations/{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://app.selektable.com/v1/generations/{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://app.selektable.com/v1/generations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.selektable.com/v1/generations/{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": "agen_abc123",
"object": "generation",
"status": "processing",
"mode": "virtual-try-on",
"imageSize": "1K",
"imageUrl": "<string>",
"imageVariants": {
"list": {
"url": "<string>",
"width": 123
},
"card": {
"url": "<string>",
"width": 123
},
"detail": {
"url": "<string>",
"width": 123
}
},
"products": [
{
"productId": "<string>",
"productTitle": "<string>",
"imageUrl": "<string>",
"productUrl": "<string>",
"dimensions": {}
}
],
"hint": "<string>",
"error": {
"code": "<string>",
"message": "<string>"
},
"metadata": {},
"createdAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z"
}{
"error": {
"type": "authentication_error",
"code": "<string>",
"message": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "authentication_error",
"code": "<string>",
"message": "<string>",
"param": "<string>"
}
}Generations
Retrieve a generation
Poll this endpoint to track status when not using webhooks.
GET
/
v1
/
generations
/
{id}
Retrieve a generation
curl --request GET \
--url https://app.selektable.com/v1/generations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.selektable.com/v1/generations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.selektable.com/v1/generations/{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://app.selektable.com/v1/generations/{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://app.selektable.com/v1/generations/{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://app.selektable.com/v1/generations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.selektable.com/v1/generations/{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": "agen_abc123",
"object": "generation",
"status": "processing",
"mode": "virtual-try-on",
"imageSize": "1K",
"imageUrl": "<string>",
"imageVariants": {
"list": {
"url": "<string>",
"width": 123
},
"card": {
"url": "<string>",
"width": 123
},
"detail": {
"url": "<string>",
"width": 123
}
},
"products": [
{
"productId": "<string>",
"productTitle": "<string>",
"imageUrl": "<string>",
"productUrl": "<string>",
"dimensions": {}
}
],
"hint": "<string>",
"error": {
"code": "<string>",
"message": "<string>"
},
"metadata": {},
"createdAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z"
}{
"error": {
"type": "authentication_error",
"code": "<string>",
"message": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "authentication_error",
"code": "<string>",
"message": "<string>",
"param": "<string>"
}
}Poll this endpoint to track status when not using webhooks. Recommended cadence: every 1–2 seconds, with a sensible overall timeout (most renders finish within ~30s).
When the render finishes,
status transitions to complete (with imageUrl and imageVariants) or failed (with error).
imageVariants exposes resized, CDN-cached versions of imageUrl (list / card / detail) for surfaces where the full-resolution render is overkill — emails, lists, mobile. Names describe the intended surface, so pick by where you’re rendering, not by pixel width.Authorizations
Your Selektable API key (selektable_...), sent as Authorization: Bearer <key>.
Path Parameters
Response
The generation
Example:
"agen_abc123"
Available options:
generation Available options:
processing, complete, failed Available options:
virtual-try-on, room-visualizer Available options:
1K, 2K, 4K Permanent CDN URL to the original render at the requested imageSize (1K/2K/4K). Safe to store and embed.
Permanent CDN URLs to resized JPEG/WebP variants of imageUrl, served by Cloudflare Image Transformations. Use a variant instead of the original when you need a smaller payload (emails, lists, mobile). null until status is complete.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?