---
title: "GPT Image 2 Playground & API | Made"
description: "Try GPT Image 2 in Made's playground or integrate it with one API key. 1–22 credits / image, priced before you run it."
url: https://www.made.app/playground/gpt-image-2
---

Image 1–22 credits / image

# GPT Image 2

GPT Image 2 is OpenAI’s flagship image model in Made, strong at photorealism, exact prompt adherence, complex layouts, and readable typography, with instruction-based editing from a reference image.

[View docs](https://www.made.app/developers) [Model guide](https://www.made.app/models/gpt-image-2)

```
// Node.js. Running this creates one paid generation.
import { randomUUID } from 'node:crypto';
const base = "https://www.made.app/api";
const headers = {
  Authorization: `Bearer ${process.env.MADE_API_KEY}`,
  'Content-Type': 'application/json',
};
const input = {
  "model": "gpt_image_2",
  "prompt": "Candid portrait of a coffee roaster in her thirties checking beans at a vintage drum roaster, steam and warm tungsten light, charcoal apron. 35mm film still, soft natural light, muted earth tones with one copper accent, shallow depth of field, subtle film grain, candid and unposed, no text, logos, or watermark.",
  "image_size": "square_hd",
  "quality": "low"
};

async function api(path, body) {
  const response = await fetch(base + path, {
    method: body ? 'POST' : 'GET', headers,
    ...(body && { body: JSON.stringify(body) }),
  });
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

const { cost } = await api('/v1/cost', input);
console.log('Quoted cents:', cost.customerCostCents);
// Preserve this request ID when retrying a submission.
const requestId = randomUUID();
let job = await api('/v1/generations', {
  ...input, request_id: requestId,
  max_cost_cents: cost.customerCostCents,
});
console.log('Request:', job.id);
while (!['succeeded', 'failed', 'canceled'].includes(job.status)) {
  await new Promise(resolve => setTimeout(resolve, 3000));
  job = await api('/v1/generations/' + job.id);
}
if (job.status !== 'succeeded') throw new Error(JSON.stringify(job.error || job.status));
console.log(job.result.assets);
```

## Input

Prompt

Image size Quality

**Advanced settings**

output format

[Sign in to generate](https://www.made.app/login?returnUrl=%2Fplayground%2Fgpt-image-2%23playground)

Uses your credits. See the exact price before generating.

## Result

Example

![candid portrait of a coffee roaster at a drum roaster generated with GPT Image 2 in Made](https://www.made.app/images/models/gpt-image-2/roaster-portrait.jpg)

GPT Image 2: Roaster portrait

## Price

1–22 credits / image. Varies by size, quality, and whether a reference image is used Check the exact cost for your settings before generating. Failed generations are refunded. [Full price sheet](https://www.made.app/price-sheet).

## More models by OpenAI

Compare available models and their prices. The exact price depends on your settings.

| Model name | Price | Resolution | Duration |
| --- | --- | --- | --- |
| [GPT Image 2.5 Fast](https://www.made.app/playground/gpt-image-2-5-fast) | 1 credit / image | — | — |
| [GPT Image 2.5 Flare](https://www.made.app/playground/gpt-image-2-5-flare) | 1–42 credits / image | — | — |
| [GPT Image 2.5 Sunburst](https://www.made.app/playground/gpt-image-2-5-sunburst) | 1–42 credits / image | — | — |

---

Markdown version of https://www.made.app/playground/gpt-image-2. Every public Made page has one at its URL plus .md (https://www.made.app/playground/gpt-image-2.md). Site summary for AI assistants: https://www.made.app/llms.txt
