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

# Image to Image

> GPT Image 2 Image-to-Image — Edit images using a reference + prompt

Edit an existing image with GPT Image 2.

### Available Model

`gpt-image-2/image-to-image`

### Pricing

Billed per **resolution tier × n**. Failed tasks are not charged.

| `resolution`   | Unit price         |
| -------------- | ------------------ |
| `1k` (default) | **\$0.02 / image** |
| `2k`           | **\$0.04 / image** |
| `4k`           | **\$0.06 / image** |

Total cost = `n × unit_price(resolution)`.

<ParamField body="model" type="string" required>
  `gpt-image-2/image-to-image`
</ParamField>

<ParamField body="callBackUrl" type="string">
  Webhook callback URL.
</ParamField>

<ParamField body="input" type="object" required>
  <Expandable title="properties" defaultOpen>
    <ParamField body="prompt" type="string" required>
      Describe the edit to apply.
    </ParamField>

    <ParamField body="imageUrls" type="string[]" required>
      Public HTTPS URL of the reference image. **Only 1 URL accepted.** WebP is transcoded to JPEG automatically.
    </ParamField>

    <ParamField body="ratio" type="string">
      Output aspect ratio. 13 supported values:

      `1:1` / `3:2` / `2:3` / `4:3` / `3:4` / `5:4` / `4:5` / `16:9` / `9:16` / `2:1` / `1:2` / `21:9` / `9:21`

      Defaults to the upstream's choice (typically follows the input image's aspect).

      <Warning>
        When `resolution = 4k`, `ratio` must be one of `16:9` / `9:16` / `2:1` / `1:2` / `21:9` / `9:21`.
      </Warning>
    </ParamField>

    <ParamField body="resolution" type="string">
      Output resolution tier. One of `1k` / `2k` / `4k`. Defaults to `1k`.

      For the full `ratio × resolution` pixel matrix, see the [text-to-image docs](/api-reference/gpt-image-2/text-to-image).
    </ParamField>

    <ParamField body="n" type="integer">
      Number of output variants. Range `1-10`. Default `1`. Billed linearly: `n × unit_price(resolution)`.
    </ParamField>
  </Expandable>
</ParamField>

<RequestExample>
  ```bash Default (1K) theme={null}
  curl --request POST \
    --url https://api.maxapi.io/api/v1/task/submit \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
    "model": "gpt-image-2/image-to-image",
    "callBackUrl": "https://example.com/webhook",
    "input": {
      "prompt": "Restyle the subject in cyberpunk aesthetic",
      "imageUrls": ["https://example.com/source.jpg"],
      "ratio": "3:4",
      "n": 1
    }
  }'
  ```

  ```bash 4K Output theme={null}
  curl --request POST \
    --url https://api.maxapi.io/api/v1/task/submit \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
    "model": "gpt-image-2/image-to-image",
    "callBackUrl": "https://example.com/webhook",
    "input": {
      "prompt": "Enhance details and upscale to 4K",
      "imageUrls": ["https://example.com/source.jpg"],
      "ratio": "16:9",
      "resolution": "4k"
    }
  }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 Submitted successfully theme={null}
  {
    "code": 0,
    "msg": "ok",
    "data": {
      "taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
    }
  }
  ```
</ResponseExample>

***

## Query Result

Retrieve the result via the [Query Task](/api-reference/query-task) endpoint or Webhook.

```json theme={null}
{
  "code": 0,
  "msg": "ok",
  "data": {
    "taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "status": "SUCCESS",
    "input": {
      "model": "gpt-image-2/image-to-image",
      "prompt": "Restyle the subject in cyberpunk aesthetic"
    },
    "result": {
      "type": "image",
      "urls": ["https://cdn.maxapi.io/images/.../image-0.png"]
    }
  }
}
```
