Supir Photo-Realistic Image Restoration Serverless API
SUPIR restores and enhances images to stunning, photo-realistic quality with advanced AI techniques.
POST /v2/supir · submit + poll 1# pip install "segmind>=1.1.0"
2# export SEGMIND_API_KEY="YOUR_API_KEY"
3import segmind
4
5# Async (v2): submit to the queue and block until COMPLETED.
6# run() returns the final result dict (600s deadline, 1.0s poll by default).
7result = segmind.run(
8 "supir",
9 image="https://segmind-resources.s3.amazonaws.com/input/557ae4e3-8057-4668-bf41-ff836d0f73b0-test_upscale_1234142.jpg",
10 s_cfg=7.5,
11 s_churn=5,
12 s_noise=1.003,
13 upscale=1,
14 a_prompt="Cinematic, High Contrast, ultra HD, hyper detailed.",
15 min_size=1024,
16 n_prompt="worst quality, low quality, frames, watermark.",
17 s_stage1=-1,
18 s_stage2=1,
19 edm_steps=50,
20 use_llava=True,
21 linear_CFG=False,
22 model_name="SUPIR-v0Q",
23 color_fix_type="Wavelet",
24 spt_linear_CFG=1,
25 linear_s_stage2=False,
26 spt_linear_s_stage2=0,
27)
28print(result["status"]) # COMPLETED
29print(result.get("output")) # model output (e.g. media URL)
30print(result["metrics"]["inference_time"]) # server compute seconds
31
32# --- Or submit + poll manually (track request_id, control the cadence) ---
33from segmind import SegmindClient, InferenceFailed, InferenceTimeout
34
35client = SegmindClient() # reads SEGMIND_API_KEY
36payload = {
37 "image": "https://segmind-resources.s3.amazonaws.com/input/557ae4e3-8057-4668-bf41-ff836d0f73b0-test_upscale_1234142.jpg",
38 "s_cfg": 7.5,
39 "s_churn": 5,
40 "s_noise": 1.003,
41 "upscale": 1,
42 "a_prompt": "Cinematic, High Contrast, ultra HD, hyper detailed.",
43 "min_size": 1024,
44 "n_prompt": "worst quality, low quality, frames, watermark.",
45 "s_stage1": -1,
46 "s_stage2": 1,
47 "edm_steps": 50,
48 "use_llava": True,
49 "linear_CFG": False,
50 "model_name": "SUPIR-v0Q",
51 "color_fix_type": "Wavelet",
52 "spt_linear_CFG": 1,
53 "linear_s_stage2": False,
54 "spt_linear_s_stage2": 0,
55}
56job = client.submit_async("supir", **payload)
57print(job.request_id) # available immediately
58try:
59 result = job.wait(timeout=600, interval=1.0)
60except InferenceTimeout as e:
61 print("still running:", e.request_id)
62except InferenceFailed as e:
63 print("failed:", e.detail) 1# pip install "segmind>=1.1.0"
2# export SEGMIND_API_KEY="YOUR_API_KEY"
3import segmind
4
5# Async (v2): submit to the queue and block until COMPLETED.
6# run() returns the final result dict (600s deadline, 1.0s poll by default).
7result = segmind.run(
8 "supir",
9 image="https://segmind-resources.s3.amazonaws.com/input/557ae4e3-8057-4668-bf41-ff836d0f73b0-test_upscale_1234142.jpg",
10 s_cfg=7.5,
11 s_churn=5,
12 s_noise=1.003,
13 upscale=1,
14 a_prompt="Cinematic, High Contrast, ultra HD, hyper detailed.",
15 min_size=1024,
16 n_prompt="worst quality, low quality, frames, watermark.",
17 s_stage1=-1,
18 s_stage2=1,
19 edm_steps=50,
20 use_llava=True,
21 linear_CFG=False,
22 model_name="SUPIR-v0Q",
23 color_fix_type="Wavelet",
24 spt_linear_CFG=1,
25 linear_s_stage2=False,
26 spt_linear_s_stage2=0,
27)
28print(result["status"]) # COMPLETED
29print(result.get("output")) # model output (e.g. media URL)
30print(result["metrics"]["inference_time"]) # server compute seconds
31
32# --- Or submit + poll manually (track request_id, control the cadence) ---
33from segmind import SegmindClient, InferenceFailed, InferenceTimeout
34
35client = SegmindClient() # reads SEGMIND_API_KEY
36payload = {
37 "image": "https://segmind-resources.s3.amazonaws.com/input/557ae4e3-8057-4668-bf41-ff836d0f73b0-test_upscale_1234142.jpg",
38 "s_cfg": 7.5,
39 "s_churn": 5,
40 "s_noise": 1.003,
41 "upscale": 1,
42 "a_prompt": "Cinematic, High Contrast, ultra HD, hyper detailed.",
43 "min_size": 1024,
44 "n_prompt": "worst quality, low quality, frames, watermark.",
45 "s_stage1": -1,
46 "s_stage2": 1,
47 "edm_steps": 50,
48 "use_llava": True,
49 "linear_CFG": False,
50 "model_name": "SUPIR-v0Q",
51 "color_fix_type": "Wavelet",
52 "spt_linear_CFG": 1,
53 "linear_s_stage2": False,
54 "spt_linear_s_stage2": 0,
55}
56job = client.submit_async("supir", **payload)
57print(job.request_id) # available immediately
58try:
59 result = job.wait(timeout=600, interval=1.0)
60except InferenceTimeout as e:
61 print("still running:", e.request_id)
62except InferenceFailed as e:
63 print("failed:", e.detail)API Endpoint
https://api.segmind.com/v1/supirParameters
imagerequiredstring (uri)Input a low-quality image for enhancement. Provide a direct image URL for best results.
"https://segmind-resources.s3.amazonaws.com/input/557ae4e3-8057-4668-bf41-ff836d0f73b0-test_upscale_1234142.jpg"a_promptoptionalstringPositive prompt to enhance image detail. Suggested: 'Cinematic, High Contrast, ultra HD, detailed.'
"Cinematic, High Contrast, ultra HD, hyper detailed."color_fix_typeoptionalstringSelect color fix: None, AdaIn, or Wavelet. Default is Wavelet for optimal balance.
"Wavelet""None""AdaIn""Wavelet"edm_stepsoptionalintegerDetermines number of EDM sampling steps. Default is 50; adjust for finer control.
50Range: 1 - 500linear_CFGoptionalbooleanIncreases CFG linearly with sigma. Default is false; use for advanced control.
falselinear_s_stage2optionalbooleanIncreases s_stage2 linearly with sigma. Default is false; enable for gradual adjustment.
falsemin_sizeoptionalnumberSets minimum output image resolution. Default is 1024; increase for larger outputs.
1024model_nameoptionalstringChoose between models: SUPIR-v0Q and SUPIR-v0F. Default is SUPIR-v0Q.
"SUPIR-v0Q""SUPIR-v0Q""SUPIR-v0F"n_promptoptionalstringNegative prompt to avoid artifacts. Use 'worst quality, low quality' for better outcomes.
"worst quality, low quality, frames, watermark."s_cfgoptionalnumberAdjusts guidance scale for prompts. Default is 7.5; increase for strong guidance, reduce for subtler effects.
7.5Range: 1 - 20s_churnoptionalnumberOriginal churn hyperparameter of EDM. Default is 5; modify to experiment with stabilization effects.
5s_noiseoptionalnumberRegulates noise level within EDM. Start at 1.003; adjust for noise reduction or amplification.
1.003s_stage1optionalintegerSets Stage1 control strength. Default is -1; use positive for activation.
-1s_stage2optionalnumberSets Stage2 control strength. Default is 1; adjust for different intensities.
1seedoptionalintegerSets the random seed for reproducibility. Use any integer for consistent results or leave blank to randomize.
nullspt_linear_CFGoptionalnumberStart point for increasing CFG linearly. Default is 1; adjust as required.
1spt_linear_s_stage2optionalnumberStart point for linear increase of s_stage2. Default is 0; increase for gradual transition.
0upscaleoptionalintegerControls upsampling ratio. Use default 1 for no change or increase for higher resolution.
1use_llavaoptionalbooleanUtilizes LLaVA model for captions. Default is true; enable as needed.
trueResponse Type
Returns: Image
Asynchronous requests (v2)
Use Async for video, long-running (>~60s), or high-concurrency workloads; Sync is simplest for fast image & LLM calls. Async submits a request and you poll it to completion.
- 1
POST /v2/supirSubmit — returns request_id, status_url, response_url
- 2
GET /v2/requests/{id}/statusPoll — until COMPLETED or FAILED
- 3
GET /v2/requests/{id}Result — final response body
Status states
- A FAILED request is served as HTTP 422 — the body still carries the error detail.
- An unknown or expired request_id returns HTTP 404.
- Results are retained for 1 hour, then expire.
- Content / RAI blocks surface as FAILED, not a separate state.
- Track completion by polling the status endpoint.
Common Error Codes
The API returns standard HTTP status codes. Detailed error messages are provided in the response body.
Bad Request
Invalid parameters or request format
Unauthorized
Missing or invalid API key
Forbidden
Insufficient permissions
Not Found
Model or endpoint not found
Insufficient Credits
Not enough credits to process request
Rate Limited
Too many requests
Server Error
Internal server error
Bad Gateway
Service temporarily unavailable
Timeout
Request timed out