> ## Documentation Index
> Fetch the complete documentation index at: https://docs.laozhang.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# GPT Image -vip stable again: native 4K

> The three GPT Image -vip models are stable again and render 4K natively at $0.03. How to switch back, and two checks that expose upscaled 4K.

The three GPT Image `-vip` models are stable again. If you moved to another route in late October, change the model name back. They render 4K natively at the size you request rather than upscaling a smaller image, and every size from 1K to 4K costs \$0.03 per image.

Plenty of per-call GPT Image services also advertise 4K. Their images really are 3840×2160, but the detail is closer to 1.5K–2K. Before you integrate or buy, run [the two checks below](#how-to-spot-upscaled-4k) yourself.

* **Published**: November 2, 2026
* **Last checked**: November 2, 2026
* **Status**: Active

## Key facts

| Item | Details |
| - | - |
| Models | `gpt-image-2-vip`, `gpt-image-2.5-flare-vip`, `gpt-image-2.5-sunburst-vip` |
| Endpoints | Generate with `POST /v1/images/generations`, edit with `POST /v1/images/edits` |
| Token | `default` or another image group; billing mode Usage first or Per-call |
| Price | \$0.03 per image at any size from 1K to 4K, any `quality`, generation or editing |
| 4K sizes | `3840x2160` landscape, `2160x3840` portrait, `2880x2880` square |
| How 4K is made | Rendered natively at the requested size, not upscaled or super-resolved |
| Stability | From 16:00 on November 1 to 23:00 on November 2 (UTC+8), every hour succeeded above 96%, 99.4% overall |
| 4K time | About 40 seconds to 3 minutes; set the client timeout to at least 300 seconds |

The success rate leaves out failures caused by the request itself, such as invalid parameters and content moderation blocks. [Models and pricing](https://docs.laozhang.ai/en/models.md) has the current prices.

## Switch back from the web route, official forwarding, or Nano Banana

Keep your token and endpoint, and change `model`:

| Model you use now | Switch to |
| - | - |
| `gpt-image-2-web` | `gpt-image-2-vip` |
| `gpt-image-2.5-web` | `gpt-image-2.5-flare-vip` or `gpt-image-2.5-sunburst-vip` |
| Official-forward `gpt-image-2`, `gpt-image-2.5-flare`, `gpt-image-2.5-sunburst` | The same name with `-vip`, using a `default` group token |

When you switch back:

* Output format: the web route returns Base64 only, while `-vip` lets you choose with `response_format`:
  * `url` returns a link;
  * `b64_json` returns Base64. If your code reads only Base64, send this value explicitly. See the [GPT Image 2.5 FAQ](https://docs.laozhang.ai/en/api-capabilities/gpt-image-2-5.md#frequently-asked-questions).
* [Size and quality](https://docs.laozhang.ai/en/api-capabilities/gpt-image-2-5.md#size-and-quality) lists the accepted `size` and `quality` values. 4K and `high` cost nothing extra.
* The web route and official forwarding still work. Jobs that need nothing above 2K and no fixed Flare or Sunburst model can stay on the web route.

```bash theme={null}
export LAOZHANG_API_KEY="your LaoZhang API key"

curl https://api.laozhang.ai/v1/images/generations \
  --max-time 300 \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2.5-flare-vip",
    "prompt": "A night market in Taipei after rain, neon signs with small readable text, steam rising from food stalls, lights reflected on wet pavement",
    "size": "3840x2160",
    "quality": "high",
    "response_format": "url"
  }'
```

## How to spot upscaled 4K

A 3840×2160 image can be rendered at 4K, or rendered at 1.5K–2K and then enlarged, either by plain resizing or by AI super-resolution. The enlarged versions have exactly the right dimensions and show 4K in the file properties, so the size alone proves nothing. Use both checks below.

| Check | What to do | What an upscaled image does |
| - | - | - |
| Detail | View the original at 100% and look at small text, hair, fabric, distant leaves and windows | Soft edges, smeared or plastic-looking texture, letters running together |
| Downscale test | Shrink the original to half size, enlarge it back, and compute PSNR against the original | The two images barely differ, with PSNR above 35 dB |

Response time depends mostly on upstream queueing, and `-vip` returns 4K in about the same time as 1K, so speed tells you nothing about whether an image is native.

### Detail

Check the original file: download the image behind `url` or decode `b64_json`. Screenshots and images forwarded through chat apps are recompressed and won't tell you anything. Put fine detail in the prompt, such as small signage text, crowds, hair, or foliage, and view the result at 100%. Plain enlargement looks soft at 100%. AI super-resolution looks sharp, but textures repeat and letters get distorted.

### Downscale test

Shrinking an image by half and enlarging it again shows how much detail it really holds. Native 4K loses its finest texture on the way down, so the round trip differs clearly from the original. An image that was enlarged in the first place has little to lose, so the round trip comes back nearly identical. Save the script below as `check_4k.py`. It needs Pillow and NumPy (`pip install pillow numpy`):

```python theme={null}
import sys

import numpy as np
from PIL import Image

path = sys.argv[1]
original = Image.open(path).convert("RGB")
width, height = original.size
half = original.resize((width // 2, height // 2), Image.LANCZOS)
restored = half.resize((width, height), Image.LANCZOS)

a = np.asarray(original, dtype=np.float64)
b = np.asarray(restored, dtype=np.float64)
mse = np.mean((a - b) ** 2)
psnr = 10 * np.log10(255**2 / mse) if mse else float("inf")
print(f"{width}x{height}  PSNR = {psnr:.1f} dB")
```

```bash theme={null}
python3 check_4k.py image.png
```

How to read the result for a detailed image (the line sits at about 35 dB):

* **Below 35 dB**: the image carries real 4K detail. LaoZhang API `-vip` 4K images usually score 26–34 dB.
* **Above 35 dB**: halving the image lost little, so it holds no more detail than about 2K. It is almost certainly upscaled. A 2K image enlarged to 4K usually scores 36–39 dB, and one enlarged from 1.5K scores above 42 dB.

The test has two limits. Simple images with flat backgrounds or large empty areas have little detail and score high even when native, so test with a detailed prompt. AI super-resolution invents new texture and can pass this test, which is why you should also check the image at 100%.

## Who is affected

* **Already calling `-vip`**: nothing to change. Retries you added for failed requests in late October can stay.
* **Moved to the web route, official forwarding, or Nano Banana in late October**: switch back to `-vip` with the table above, or keep the model you use now.
* **Not affected**: the web route `gpt-image-2-web` and `gpt-image-2.5-web`, GPT Image models in official-forward groups, and the Nano Banana models.

## FAQ

### Is -vip stable now?

Yes. From 16:00 on November 1 to 23:00 on November 2 (UTC+8), every hour of the three `-vip` models succeeded above 96%, 99.4% overall. Requests fail over between several upstream routes automatically, with no concurrency or rate limit. If a request does fail, check its status in the [usage log](https://api.laozhang.ai/log) before retrying with backoff.

### Is -vip 4K upscaled?

No. All three `-vip` models render 4K directly at the requested `size`; they don't enlarge or super-resolve a smaller image. Check it with the [downscale test](#downscale-test): `-vip` 4K images usually score 26–34 dB, while upscaled images score above 35 dB.

### Does 4K cost extra?

No. Every size from 1K to 4K, every `quality` level, and both generation and editing cost \$0.03 per image.

### How long does a 4K image take?

About 40 seconds to 3 minutes, close to a 1K image; the wait depends mostly on upstream queueing. Set the client timeout to at least 300 seconds. A client timeout doesn't cancel the job on the server, so check the [usage log](https://api.laozhang.ai/log) before retrying to avoid generating the same image twice.

### I moved to the web route. Should I switch back?

Switch back to `-vip` if you need detail above 2K, a fixed Flare or Sunburst model, or `url` output. The web route also costs \$0.03 per image and renders natively up to about 2K, so jobs that only need 1K images can stay there.

## Related pages

* [GPT Image 2.5 guide](https://docs.laozhang.ai/en/api-capabilities/gpt-image-2-5.md): parameters, billing, and examples for `-vip`, the web route, and official forwarding
* [GPT Image 2 guide](https://docs.laozhang.ai/en/api-capabilities/gpt-image-2.md): sizes, quality, and billing by group for `gpt-image-2-vip`
* [October 23 notice: GPT Image -vip is unstable](https://docs.laozhang.ai/en/announcements/gpt-image-vip-unstable-2026-10.md)
* [Models and pricing](https://docs.laozhang.ai/en/models.md), [usage log](https://api.laozhang.ai/log)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.