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

> ## Agent Instructions
> The base URL is https://api.sudomock.com.
> Authenticate every request with the x-api-key header. Keys begin with sm_.
> A render returns the finished image at data.print_files[0].export_path. A request sent with is_async true returns a job_id to poll at GET /api/v1/jobs/{job_id}.
> Prefer the official SDKs over hand-written HTTP calls: npm install sudomock for Node, pip install sudomock for Python.

# Why is my render showing old artwork

> Why a changed design still renders the previous image.

Because the artwork URL is treated as immutable. Every `asset.url` you send has
to resolve to the same image forever, so an address that already served one
design can return that design again. To change a design, publish it at a new
URL and render with that one.

## Why this happens

A render reproduces the image it is handed, and the address identifies the
design, not the file behind it. Overwrite a file, keep its address, and nothing
in the request has changed.

This is confusing because:

* Your storage shows the new design, so the upload looks finished.
* Anything on your side that already fetched the earlier design goes on
  serving it, which is what an immutable address asks of it.

## How to identify this issue

* The render returns a design you already replaced.
* You uploaded the new design over the old one and kept the same link.
* Opening the artwork URL yourself returns the earlier image.

## Solution

Give every version of a design its own address. Upload the new design under
a key no earlier design has used, then send that URL as `asset.url` on
[Render a PSD mockup](/docs/api-reference/psd-mockups/render-a-psd-mockup). A content
hash in the filename makes this automatic: the address changes exactly when the
bytes change, and never otherwise. Every field on `asset` is in
[Artwork placement](/docs/psd-mockups/artwork-placement).

<Info>
  A query string appended to the same file does not count. The file behind the
  address still changes, and a parameter is not a different image.
</Info>

### Google Drive

This is where the problem turns up most often. **Replace file** and **Manage
versions** both keep the same shareable link, so the link goes on resolving to
the design that was there first. Upload the new design as a new file and render
with its link.

<Warning>
  Do not run Replace file or Manage versions on a design a render request has
  already pointed at. The link outlives the replacement.
</Warning>

### If you changed the PSD instead

Artwork is a render-time argument, so a new design never calls for the template
to be uploaded again. A change to the PSD itself does, and
[Upload a PSD](/docs/psd-mockups/upload-a-psd) covers when.

## Get more help

If the address is new and the render still returns the earlier design:

1. Fetch the URL yourself and confirm which image it serves, using the checks
   below.
2. Confirm the request carries the new URL, not one your application stored
   earlier.
3. Read [Errors](/docs/errors) for `ASSET_UNREACHABLE` and `ASSET_BLOCKED`.
4. [Contact support](https://sudomock.com/contact) with the mockup uuid and
   the artwork URL.

<AccordionGroup>
  <Accordion title="Check the response headers">
    If the length or ETag matches the old design, your storage is still serving
    it and the render is faithfully reproducing what it was given.

    ```bash theme={"theme":{"light":"github-light","dark":"vesper"}}
    curl -sI "https://your-cdn.com/design.png" \
      | grep -i "etag\|last-modified\|content-length"
    ```
  </Accordion>

  <Accordion title="Compare the bytes">
    Digest the file and compare the result to the design you meant to publish.
    When they differ, fix the upload, not the render request.

    ```bash theme={"theme":{"light":"github-light","dark":"vesper"}}
    curl -s "https://your-cdn.com/design.png" | shasum -a 256
    ```
  </Accordion>
</AccordionGroup>
