openai/gpt-image-2.5-flare/text-to-image1크레딧부터 /장· 이미지 만들기

OpenAI의 GPT Image 2.5 Flare text-to-image로, GPT Image 2.5 두 모델 중 속도 우선입니다. low~max 품질 다섯 단계, 1K·2K·4K, 1:3~3:1의 화면비 15가지를 PNG·JPEG·WebP로 고릅니다.

POST /jobs/createTask에서 모델 이름을 openai/gpt-image-2.5-flare/text-to-image(으)로 지정하면 호출할 수 있습니다. 1크레딧/장부터(US$0.01). 새 계정에는 30크레딧이 지급되니 Playground에서 먼저 무료로 써 보세요.

  • 이미지 만들기
  • 이미지 편집
  • 최대 4K
  • 참조 이미지 최대 16장
  • 화면비 15종
  • 한 번에 최대 10장
모델 이름openai/gpt-image-2.5-flare/text-to-image
엔드포인트POST https://api.popnow.ai/api/v1/jobs/createTask
# 1. Create the task. Keep the Idempotency-Key if you retry after a network error.
export IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -d '{
  "model": "openai/gpt-image-2.5-flare/text-to-image",
  "input": {
    "prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
    "aspect_ratio": "1:1",
    "resolution": "1k",
    "quality": "high",
    "num_outputs": 1,
    "output_format": "png"
  }
}'

# 2. Copy data.taskId from the response, then poll until state is succeeded, failed, canceled or expired.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

input은 아래 스키마로 만들었기 때문에 그대로 검증을 통과합니다. 프롬프트와 링크만 내 것으로 바꾸세요.

가격

옵션크레딧 /장≈ USD
aspect_ratio 1:3quality lowresolution 1K0.27US$0.0027
aspect_ratio 3:1quality lowresolution 1K0.27US$0.0027
aspect_ratio 21:9quality lowresolution 1K0.37US$0.0037
aspect_ratio 9:21quality lowresolution 1K0.37US$0.0037
aspect_ratio 1:2quality lowresolution 1K0.41US$0.0041
aspect_ratio 2:1quality lowresolution 1K0.41US$0.0041
aspect_ratio 1:3quality lowresolution 2K0.43US$0.0043
aspect_ratio 3:1quality lowresolution 2K0.43US$0.0043
aspect_ratio 16:9quality lowresolution 1K0.46US$0.0046
aspect_ratio 9:16quality lowresolution 1K0.46US$0.0046
aspect_ratio 2:3quality lowresolution 1K0.54US$0.0054
aspect_ratio 3:2quality lowresolution 1K0.54US$0.0054

1크레딧 = $0.01 · 모든 옵션과 가격: GET /models/openai/gpt-image-2.5-flare/text-to-image

작업마다 크레딧은 정수로 올림 처리되므로, 가장 낮은 옵션으로 한 번 실행하면 1크레딧/장(US$0.01)입니다.

제한

해상도
1K · 2K · 4K
화면 비율
1:1 · 1:2 · 1:3 · 2:1 · 2:3 · 3:1 +9
호출당 출력 수
1–10
프롬프트 길이(글자)
5,000

파라미터

이 필드들은 모든 요청을 검사할 때 쓰는 것과 같은 스키마에서 나옵니다. 목록에 없는 필드는 거부됩니다.

  • promptstring필수

    Describe the image you want.

    범위
    1 – 5000 chars
  • aspect_ratiostring선택가격이 달라짐

    화면 모양: 가로, 정사각형, 세로.

    기본값
    "1:1"
    허용 값
    "1:1""1:2""1:3""2:1""2:3""3:1""3:2""3:4""4:3""4:5""5:4""9:16""9:21""16:9""21:9"
  • resolutionstring선택가격이 달라짐

    출력 크기. 클수록 선명하고 가격도 올라갑니다.

    기본값
    "1k"
    허용 값
    "1k""2k""4k"
  • qualitystring선택가격이 달라짐

    시간과 비용을 더 들여 디테일을 높입니다.

    기본값
    "high"
    허용 값
    "low""medium""high""xhigh""max"
  • num_outputsinteger선택가격이 달라짐

    한 번에 만들 결과 수.

    기본값
    1
    범위
    1 – 10
  • output_formatstring선택

    결과 파일 형식.

    기본값
    "png"
    허용 값
    "png""jpeg""webp"
  • output_qualityinteger선택

    Compression quality for JPEG and WebP, from 0 to 100.

    범위
    0 – 100
원본 JSON 스키마
{
  "type": "object",
  "required": [
    "prompt"
  ],
  "properties": {
    "prompt": {
      "type": "string",
      "maxLength": 5000,
      "minLength": 1,
      "description": "Describe the image you want."
    },
    "quality": {
      "enum": [
        "low",
        "medium",
        "high",
        "xhigh",
        "max"
      ],
      "type": "string",
      "default": "high",
      "description": "Rendering quality. Higher tiers add detail, time and cost."
    },
    "resolution": {
      "enum": [
        "1k",
        "2k",
        "4k"
      ],
      "type": "string",
      "default": "1k",
      "description": "Output size tier."
    },
    "num_outputs": {
      "type": "integer",
      "default": 1,
      "maximum": 10,
      "minimum": 1,
      "description": "How many images to return, each billed separately."
    },
    "aspect_ratio": {
      "enum": [
        "1:1",
        "1:2",
        "1:3",
        "2:1",
        "2:3",
        "3:1",
        "3:2",
        "3:4",
        "4:3",
        "4:5",
        "5:4",
        "9:16",
        "9:21",
        "16:9",
        "21:9"
      ],
      "type": "string",
      "default": "1:1",
      "description": "Output aspect ratio."
    },
    "output_format": {
      "enum": [
        "png",
        "jpeg",
        "webp"
      ],
      "type": "string",
      "default": "png",
      "description": "File format of the returned images."
    },
    "output_quality": {
      "type": "integer",
      "maximum": 100,
      "minimum": 0,
      "description": "Compression quality for JPEG and WebP, from 0 to 100."
    }
  },
  "additionalProperties": false
}

GPT Image 2.5 Flare로 만든 실제 결과

Terrace dress
프롬프트A woman in a white linen sundress with thin straps stands on a whitewashed Mediterranean terrace at sunset, the wind lifting her hair and the hem of the dress, bare shoulders warm in the low sun, bougainvillea and the sea behind her.
같은 내용의 API 요청
{
  "model": "openai/gpt-image-2.5-flare/text-to-image",
  "input": {
    "prompt": "A woman in a white linen sundress with thin straps stands on a whitewashed Mediterranean terrace at sunset, the wind lifting her hair and the hem of the dress, bare shoulders warm in the low sun, bougainvillea and the sea behind her.",
    "aspect_ratio": "4:5",
    "resolution": "1k",
    "quality": "high",
    "num_outputs": 1,
    "output_format": "png"
  }
}

응답, 폴링, 콜백

모든 모델은 같은 방식으로 동작합니다. 작업을 만들고, 폴링하거나 콜백을 기다리세요.

먼저 견적 받기

cURL
curl -X POST https://api.popnow.ai/api/v1/jobs/quote \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "openai/gpt-image-2.5-flare/text-to-image",
  "input": {
    "prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
    "aspect_ratio": "1:1",
    "resolution": "1k",
    "quality": "high",
    "num_outputs": 1,
    "output_format": "png"
  }
}'

본문은 createTask와 같습니다. 예상 청구액과 최대 청구액을 돌려주며, 아무것도 실행하지 않습니다.

접수됨

HTTP
HTTP/1.1 202 Accepted

{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "task_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "state": "queued"
  },
  "request_id": "req_example_create"
}

HTTP 202는 작업이 접수되었고 크레딧이 보류만 되었을 뿐 아직 차감되지 않았다는 뜻입니다. 최종 청구액은 보류액을 넘지 않습니다.

상태 확인

cURL
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

간격을 조금씩 늘리며 몇 초마다 확인하고, state가 succeeded, failed, canceled, expired 중 하나가 되면 멈추세요.

완료된 작업

JSON
{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "task_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "model": "openai/gpt-image-2.5-flare/text-to-image",
    "state": "succeeded",
    "output": {
      "assets": [
        {
          "url": "https://cdn.popnow.ai/tasks/task_01k3m8x9q2z4v7n5p6r8s0t1w3/output.png?signature=FROM_RESPONSE",
          "expiresAt": "2026-10-17T12:20:00Z",
          "mime": "image/png",
          "width": 1024,
          "height": 1024
        }
      ]
    },
    "settled": true
  },
  "request_id": "req_example_record"
}

expiresAt 전에 url에서 내려받으세요. 나중에 새 링크가 필요하면 POST /common/download-url을 호출하세요.

콜백 검증하기

Node.js
import { createHash, createHmac, timingSafeEqual } from "node:crypto";
import express from "express";

const app = express();
// express.raw keeps the exact bytes that were signed; express.json would not match.
app.post("/hooks/popnow", express.raw({ type: "application/json" }), (req, res) => {
  const timestamp = req.header("X-Webhook-Timestamp");
  const signature = req.header("X-Webhook-Signature") ?? "";
  const body = JSON.parse(req.body.toString("utf8"));
  const taskId = body.data?.taskId ?? body.task_id;
  const digest = createHash("sha256").update(req.body).digest("hex");
  const expected = createHmac("sha256", process.env.POPNOW_WEBHOOK_SECRET)
    .update(`${taskId}.${timestamp}.${digest}`)
    .digest("base64");
  const ok = expected.length === signature.length && timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
  // Check the signature first, then reject anything older than five minutes.
  if (!ok || Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return res.status(401).end();
  res.status(200).end(); // answer fast, then fetch the task and store its files
});

callBackUrl을 설정하면 완료된 작업을 보내 드립니다. 믿기 전에 원본 요청 본문으로 서명을 확인하세요.

로컬 파일 보내기

cURL
curl -X POST https://api.popnow.ai/api/v1/common/upload-url \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contentType": "image/png", "bytes": 482113}'

# PUT the file bytes to data.uploadUrl with every header in data.headers, then commit it:
curl -X POST https://api.popnow.ai/api/v1/files/$FILE_ID/commit \
  -H "Authorization: Bearer $POPNOW_API_KEY"
# The commit returns a popnow://f/... reference. Put it in any image, video or
# audio field of the task input instead of a public https URL.

공개 https 링크는 그대로 쓸 수 있습니다. 로컬 파일은 먼저 upload-url과 commit을 거칩니다.