{"id":20175,"date":"2026-09-29T09:28:35","date_gmt":"2026-09-29T13:28:35","guid":{"rendered":"https:\/\/wp.glbgpt.com\/?p=20175"},"modified":"2026-09-29T09:28:36","modified_gmt":"2026-09-29T13:28:36","slug":"openai-image-edit-api","status":"publish","type":"post","link":"https:\/\/wp.glbgpt.com\/hub\/zh\/openai-image-edit-api","title":{"rendered":"OpenAI \u56fe\u50cf\u7f16\u8f91 API\uff1a\u8499\u7248\u3001\u53c2\u6570\u3001\u5b9a\u4ef7\u53ca GlobalGPT \u5de5\u4f5c\u6d41"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><strong>The OpenAI Image Edit API changes an existing image from a prompt.<\/strong> The native route is <code>POST \/v1\/images\/edits<\/code>; it accepts an image, a prompt, and optional editing controls such as a mask or reference images. Use the Image API for a focused request, and use the Responses API when the product needs a multi-turn image workflow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A reliable edit is a small pipeline: freeze the source file, state what must stay, state what may change, inspect the returned bytes, and save the approved asset. If you prefer to move between image models and other media tools in one workspace, <a href=\"https:\/\/www.glbgpt.com\/image-generator\/gpt-image-2?inviter=hub_content_gpt_image_2&amp;login=1\">create and edit images with GPT Image 2 in GlobalGPT<\/a>; its public API uses a different asynchronous task contract, which this guide separates from OpenAI&#8217;s native endpoint.<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.glbgpt.com\/image?inviter=hub_features_image&amp;login=1\"><img alt=\"\" fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"621\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/01\/new-image-gen-1024x621.png\" class=\"wp-image-18222\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/01\/new-image-gen-1024x621.png 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/01\/new-image-gen-300x182.png 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/01\/new-image-gen-768x465.png 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/01\/new-image-gen-1536x931.png 1536w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/01\/new-image-gen-2048x1241.png 2048w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/01\/new-image-gen-18x12.png 18w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-3e41869c wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-luminous-vivid-amber-background-color has-background wp-element-button\" href=\"https:\/\/www.glbgpt.com\/image?inviter=hub_features_image&amp;login=1\">\u5728GlobalGPT\u4e0a\u5c1d\u8bd5\u591a\u79cd\u9876\u7ea7\u56fe\u50cf\u6a21\u578b<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"oie-quick\" style=\"box-sizing:border-box;background:#102b46;color:#fff;border-radius:8px;padding:24px;margin:26px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;\"><h2 style=\"color:#fff;margin-top:0;box-sizing:border-box;line-height:1.3;\">Quick answer: choose the route before you write code<\/h2><div class=\"oie-scroll\" style=\"overflow-x:auto;box-sizing:border-box;\"><table style=\"color:#fff;border-collapse:collapse;width:100%;min-width:700px;box-sizing:border-box;\"><thead style=\"box-sizing:border-box;\"><tr style=\"box-sizing:border-box;\"><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\">\u9700\u8981<\/th><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\">\u8def\u7ebf<\/th><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\">Request shape<\/th><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\">Result to handle<\/th><\/tr><\/thead><tbody style=\"box-sizing:border-box;\"><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\">One image generation or edit<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\">OpenAI \u56fe\u50cf\u5e94\u7528\u7a0b\u5e8f\u63a5\u53e3<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\"><code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">POST \/v1\/images\/edits<\/code>, multipart form<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\"><code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">data[0].b64_json<\/code>; decode and store it<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\">Several turns with image context<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\">OpenAI Responses API<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\"><code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">POST \/v1\/responses<\/code> with image-generation tool<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\">Extract the image-generation output item<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\">Several media models behind one account<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\">GlobalGPT public API<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\"><code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">POST \/tasks<\/code>, then poll <code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">GET \/tasks\/{id}<\/code><\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;border-color:#49637d;box-sizing:border-box;\"><code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">output.url<\/code>; save it before the 30-day window ends<\/td><\/tr><\/tbody><\/table><\/div><p class=\"oie-note\" style=\"box-sizing:border-box;background:#f0f5f9;border-left:4px solid #5d7d99;padding:13px 16px;color:#27445f;margin:12px 0;\">The endpoint names look similar, but the request bodies and result handling are not interchangeable.<\/p><\/div>\n\n\n\n<nav class=\"oie-toc\" style=\"box-sizing:border-box;background:#eef6ff;border:1px solid #c6dbee;border-top:4px solid #2a6ca8;border-radius:6px;padding:20px;margin:28px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;color:#17323f;\"><strong style=\"display:block;margin-bottom:8px;box-sizing:border-box;\">\u672c\u9875\u5185\u5bb9<\/strong><ol style=\"columns:18rem 2;margin:0;padding-left:22px;box-sizing:border-box;\"><li style=\"box-sizing:border-box;\"><a href=\"#what-is-image-edit-api\" style=\"color:#145ea8;box-sizing:border-box;\">What the Image Edit API does<\/a><\/li><li style=\"box-sizing:border-box;\"><a href=\"#native-first-edit\" style=\"color:#145ea8;box-sizing:border-box;\">Make a first native edit<\/a><\/li><li style=\"box-sizing:border-box;\"><a href=\"#masks-and-references\" style=\"color:#145ea8;box-sizing:border-box;\">Use masks and reference images<\/a><\/li><li style=\"box-sizing:border-box;\"><a href=\"#models-and-parameters\" style=\"color:#145ea8;box-sizing:border-box;\">Choose models and parameters<\/a><\/li><li style=\"box-sizing:border-box;\"><a href=\"#image-edit-pricing\" style=\"color:#145ea8;box-sizing:border-box;\">Understand pricing<\/a><\/li><li style=\"box-sizing:border-box;\"><a href=\"#globalgpt-contract\" style=\"color:#145ea8;box-sizing:border-box;\">Use the GlobalGPT task route<\/a><\/li><li style=\"box-sizing:border-box;\"><a href=\"#tested-workflow\" style=\"color:#145ea8;box-sizing:border-box;\">Read the GlobalGPT model test<\/a><\/li><li style=\"box-sizing:border-box;\"><a href=\"#image-edit-errors\" style=\"color:#145ea8;box-sizing:border-box;\">Handle errors and slow responses<\/a><\/li><li style=\"box-sizing:border-box;\"><a href=\"#faq\" style=\"color:#145ea8;box-sizing:border-box;\">\u5e38\u89c1\u95ee\u9898<\/a><\/li><\/ol><\/nav>\n\n\n\n<h2 id=\"what-is-image-edit-api\" class=\"wp-block-heading\">What does the OpenAI Image Edit API do?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The edit route starts with an existing image. Your prompt describes the change, while the input image supplies the visual context that should survive the edit. You can replace a background, add or remove an element, make a broader restyle, or pass more than one image as references. The model still interprets the request; the API is not a pixel editor with a guaranteed selection boundary.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OpenAI documents two useful workflows. The <strong>\u56fe\u50cf API<\/strong> is the direct choice when one request should return one image. The <strong>\u54cd\u5e94 API<\/strong> is the better fit when a user will inspect the result, ask for another change, and keep image context across turns. That choice affects both the request shape and the code that extracts the result.<\/p>\n\n\n\n<div class=\"oie-table\" style=\"box-sizing:border-box;background:#f5f8fb;border:1px solid #d7e0e9;border-top:4px solid #4f759a;border-radius:6px;padding:18px;margin:24px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;color:#17323f;\"><h3 style=\"margin:0 0 12px;box-sizing:border-box;line-height:1.3;\">Image API versus Responses API<\/h3><div class=\"oie-scroll\" style=\"overflow-x:auto;box-sizing:border-box;\"><table style=\"border-collapse:collapse;width:100%;min-width:700px;box-sizing:border-box;\"><thead style=\"box-sizing:border-box;\"><tr style=\"box-sizing:border-box;\"><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">\u95ee\u9898<\/th><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">\u56fe\u50cf API<\/th><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">\u54cd\u5e94 API<\/th><\/tr><\/thead><tbody style=\"box-sizing:border-box;\"><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">\u6700\u9002\u5408<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">A single generate-or-edit action<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">A multi-turn editing experience<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Typical input<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Multipart image, prompt, optional mask<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Conversation input plus image-generation tool<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Output handling<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\"><code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">data[0].b64_json<\/code><\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Find the image-generation output item<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Cost detail<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Direct edit uses current input\/output rates<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Cached input rules may differ; check current pricing<\/td><\/tr><\/tbody><\/table><\/div><\/div>\n\n\n\n<h2 id=\"native-first-edit\" class=\"wp-block-heading\">Make a first edit with the native OpenAI API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Keep the API key on your server and load it from an environment variable. The example below sends one image and a prompt to the documented edits endpoint. The <code>image[]<\/code> field can be repeated when the selected model supports multiple inputs. The shell pipeline decodes the first returned base64 image into a local PNG.<\/p>\n\n\n\n<div class=\"oie-code\" style=\"box-sizing:border-box;background:#0e1c2c;color:#edf6ff;border-radius:6px;padding:18px;margin:24px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;\"><h3 style=\"color:#fff;margin:0 0 4px;box-sizing:border-box;line-height:1.3;\">Native curl edit: save the b64_json result<\/h3><div class=\"oie-code-label\" style=\"color:#a8c9df;font-size:12px;text-transform:uppercase;letter-spacing:.08em;box-sizing:border-box;\">bash<\/div><pre style=\"overflow-x:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:#08131f;padding:14px;border-radius:4px;color:#edf6ff;font:13px\/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;box-sizing:border-box;max-width:100%;\"><code style=\"background:none;padding:0;border-radius:4px;font-size:.92em;box-sizing:border-box;color:inherit;\">curl -s \\\n  -X POST &quot;https:\/\/api.openai.com\/v1\/images\/edits&quot; \\\n  -H &quot;Authorization: Bearer $OPENAI_API_KEY&quot; \\\n  -F &quot;model=gpt-image-2.5-sunburst&quot; \\\n  -F &quot;image[]=@source.png&quot; \\\n  -F &quot;prompt=Replace only the background with a warm beige studio scene; keep the product and label unchanged.&quot; \\\n| jq -r &#x27;.data[0].b64_json&#x27; \\\n| base64 --decode &gt; edited.png<\/code><\/pre><\/div>\n\n\n\n<div class=\"oie-code\" style=\"box-sizing:border-box;background:#0e1c2c;color:#edf6ff;border-radius:6px;padding:18px;margin:24px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;\"><h3 style=\"color:#fff;margin:0 0 4px;box-sizing:border-box;line-height:1.3;\">Python SDK edit: decode the returned bytes<\/h3><div class=\"oie-code-label\" style=\"color:#a8c9df;font-size:12px;text-transform:uppercase;letter-spacing:.08em;box-sizing:border-box;\">\u87d2\u86c7<\/div><pre style=\"overflow-x:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:#08131f;padding:14px;border-radius:4px;color:#edf6ff;font:13px\/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;box-sizing:border-box;max-width:100%;\"><code style=\"background:none;padding:0;border-radius:4px;font-size:.92em;box-sizing:border-box;color:inherit;\">from openai import OpenAI\nimport base64\n\nclient = OpenAI()\nresult = client.images.edit(\n    model=&quot;gpt-image-2.5-sunburst&quot;,\n    image=open(&quot;source.png&quot;, &quot;rb&quot;),\n    prompt=&quot;Replace only the background with a warm beige studio scene; keep the product and label unchanged.&quot;,\n)\n\nimage_bytes = base64.b64decode(result.data[0].b64_json)\nwith open(&quot;edited.png&quot;, &quot;wb&quot;) as output:\n    output.write(image_bytes)<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Before you call this production-ready, validate the decoded file: check its MIME type, dimensions, byte count, and whether the visual details that matter are still present. A 200 response only says the request was accepted; it does not tell you that the label, logo, or product geometry survived.<\/p>\n\n\n\n<h2 id=\"masks-and-references\" class=\"wp-block-heading\">Use masks and reference images safely<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A mask tells the model which area you want to change, but GPT Image masking remains prompt-based. OpenAI&#8217;s guide explicitly warns that the model uses the mask as guidance rather than an absolute pixel boundary. Keep the prompt specific about the protected subject and review the whole image after generation.<\/p>\n\n\n\n<div class=\"oie-checklist\" style=\"box-sizing:border-box;background:#fff8e9;border:1px solid #e8cf8f;border-left:5px solid #d39b19;border-radius:5px;padding:16px;margin:24px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;color:#17323f;\"><h3 style=\"margin-top:0;box-sizing:border-box;line-height:1.3;\">Mask preflight<\/h3><ul style=\"box-sizing:border-box;\"><li style=\"box-sizing:border-box;\">The image and mask use the same format.<\/li><li style=\"box-sizing:border-box;\">The image and mask have the same dimensions.<\/li><li style=\"box-sizing:border-box;\">The mask file is smaller than 50 MB.<\/li><li style=\"box-sizing:border-box;\">The mask contains an alpha channel.<\/li><li style=\"box-sizing:border-box;\">The prompt states what must remain unchanged and what should be replaced.<\/li><\/ul><\/div>\n\n\n\n<div class=\"oie-code\" style=\"box-sizing:border-box;background:#0e1c2c;color:#edf6ff;border-radius:6px;padding:18px;margin:24px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;\"><h3 style=\"color:#fff;margin:0 0 4px;box-sizing:border-box;line-height:1.3;\">Check a mask before uploading it<\/h3><div class=\"oie-code-label\" style=\"color:#a8c9df;font-size:12px;text-transform:uppercase;letter-spacing:.08em;box-sizing:border-box;\">\u87d2\u86c7<\/div><pre style=\"overflow-x:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:#08131f;padding:14px;border-radius:4px;color:#edf6ff;font:13px\/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;box-sizing:border-box;max-width:100%;\"><code style=\"background:none;padding:0;border-radius:4px;font-size:.92em;box-sizing:border-box;color:inherit;\">from PIL import Image\n\nsource = Image.open(&quot;source.png&quot;)\nmask = Image.open(&quot;mask.png&quot;)\n\nassert source.format == mask.format, (source.format, mask.format)\nassert source.size == mask.size, (source.size, mask.size)\nassert mask.width * mask.height &gt; 0\nassert mask.mode in {&quot;RGBA&quot;, &quot;LA&quot;}, mask.mode\nassert mask.fp is None or True  # check the file size on disk separately\nprint(&quot;source:&quot;, source.size, source.format)\nprint(&quot;mask:&quot;, mask.size, mask.mode)<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">If you pass multiple images with a mask, the current guide says the mask applies to the first image. That is a useful boundary for designing a reference workflow: make the first input the asset whose area you intend to edit, and treat the remaining images as references rather than assuming the mask selects across all of them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reference images solve a different problem. They can provide a product identity, lighting family, palette, or composition cue. They do not force the model to preserve every contour. If an exact package shape or label must remain unchanged, use a visual review gate or a conventional editing step after the model output.<\/p>\n\n\n\n<h2 id=\"models-and-parameters\" class=\"wp-block-heading\">Choose the model and parameters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The current OpenAI image guide lists <code>gpt-image-2.5-sunburst<\/code>, <code>gpt-image-2.5-flare<\/code>, \u548c <code>gpt-image-2<\/code>. Treat model names and supported options as moving documentation: check the model page immediately before integrating them, and pin a dated version if reproducibility matters.<\/p>\n\n\n\n<div class=\"oie-table\" style=\"box-sizing:border-box;background:#f5f8fb;border:1px solid #d7e0e9;border-top:4px solid #4f759a;border-radius:6px;padding:18px;margin:24px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;color:#17323f;\"><h3 style=\"margin:0 0 12px;box-sizing:border-box;line-height:1.3;\">Parameter decisions that prevent avoidable failures<\/h3><div class=\"oie-scroll\" style=\"overflow-x:auto;box-sizing:border-box;\"><table style=\"border-collapse:collapse;width:100%;min-width:700px;box-sizing:border-box;\"><thead style=\"box-sizing:border-box;\"><tr style=\"box-sizing:border-box;\"><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">\u51b3\u5b9a<\/th><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">\u5b9e\u7528\u89c4\u5219<\/th><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">\u4e3a\u4ec0\u4e48\u91cd\u8981<\/th><\/tr><\/thead><tbody style=\"box-sizing:border-box;\"><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Input fidelity<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Omit <code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">input_fidelity<\/code> \u5bf9\u4e8e <code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">gpt-image-2<\/code>; its image inputs are processed at high fidelity.<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Sending an unsupported field can turn a valid edit into a rejected request.<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">\u8d28\u91cf<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">The 2.5 Sunburst and Flare routes document <code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">\u4f4e<\/code>, <code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">\u4e2d\u7b49<\/code>, <code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">\u9ad8<\/code>, <code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">xhigh<\/code>, \u548c <code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">max<\/code>.<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">A higher setting is a cost\/latency choice, not a guarantee of better preservation.<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">\u683c\u5f0f<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Ask for the output format the current endpoint documents, then inspect the decoded file.<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Your storage pipeline should trust the bytes and MIME type, not only the requested option.<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">\u80cc\u666f<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">State the desired background in the prompt and use the documented background option where supported.<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">The model still interprets the scene; keep the subject constraints explicit.<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">\u53c2\u8003\u6587\u732e<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Use a reference image to guide identity, color, or lighting, and define the role of every input.<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Ambiguous image roles make it harder to diagnose drift.<\/td><\/tr><\/tbody><\/table><\/div><\/div>\n\n\n\n<h2 id=\"image-edit-pricing\" class=\"wp-block-heading\">What does the OpenAI Image Edit API cost?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">OpenAI prices GPT Image usage by token categories rather than by a universal flat price per edit. The current pricing page lists separate image-input, cached-input, and image-output rates. Direct Image API edits do not receive the cached-input treatment documented for the image-generation tool in the Responses API, so do not copy a Responses estimate into a direct <code>\/v1\/images\/edits<\/code> budget.<\/p>\n\n\n\n<div class=\"oie-table\" style=\"box-sizing:border-box;background:#f5f8fb;border:1px solid #d7e0e9;border-top:4px solid #4f759a;border-radius:6px;padding:18px;margin:24px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;color:#17323f;\"><h3 style=\"margin:0 0 12px;box-sizing:border-box;line-height:1.3;\">Published image-token rates checked 2026-09-28<\/h3><div class=\"oie-scroll\" style=\"overflow-x:auto;box-sizing:border-box;\"><table style=\"border-collapse:collapse;width:100%;min-width:700px;box-sizing:border-box;\"><thead style=\"box-sizing:border-box;\"><tr style=\"box-sizing:border-box;\"><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">\u6a21\u578b<\/th><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">Image input \/ 1M tokens<\/th><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">Cached image input \/ 1M tokens<\/th><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">Image output \/ 1M tokens<\/th><\/tr><\/thead><tbody style=\"box-sizing:border-box;\"><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">GPT Image 2.5<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">$8<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">$2*<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">$30<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">GPT \u6620\u50cf 2<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">$4<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">$1*<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">$15<\/td><\/tr><\/tbody><\/table><\/div><\/div>\n\n\n\n<p class=\"oie-note\" style=\"max-width:880px;box-sizing:border-box;background:#f0f5f9;border-left:4px solid #5d7d99;padding:13px 16px;color:#27445f;font:16px\/1.65 system-ui,-apple-system,sans-serif;min-width:0;margin:12px 0;\">*The cached-input column is shown for the published pricing context. The pricing guide says cached input applies to the image-generation tool in the Responses API, not direct Images API requests such as <code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">\/v1\/images\/edits<\/code>. Rates can change; calculate from the usage returned for your own request.<\/p>\n\n\n\n<div class=\"oie-code\" style=\"box-sizing:border-box;background:#0e1c2c;color:#edf6ff;border-radius:6px;padding:18px;margin:24px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;\"><h3 style=\"color:#fff;margin:0 0 4px;box-sizing:border-box;line-height:1.3;\">Make a transparent estimate from usage<\/h3><div class=\"oie-code-label\" style=\"color:#a8c9df;font-size:12px;text-transform:uppercase;letter-spacing:.08em;box-sizing:border-box;\">\u87d2\u86c7<\/div><pre style=\"overflow-x:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:#08131f;padding:14px;border-radius:4px;color:#edf6ff;font:13px\/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;box-sizing:border-box;max-width:100%;\"><code style=\"background:none;padding:0;border-radius:4px;font-size:.92em;box-sizing:border-box;color:inherit;\">def estimate_image_cost(image_input_tokens, image_output_tokens,\n                        input_rate, output_rate):\n    return (image_input_tokens \/ 1_000_000) * input_rate + \\\n           (image_output_tokens \/ 1_000_000) * output_rate\n\n# Example only: replace with the usage in your response.\nestimate = estimate_image_cost(\n    image_input_tokens=250_000,\n    image_output_tokens=120_000,\n    input_rate=4.00,\n    output_rate=15.00,\n)\nprint(f&quot;${estimate:.4f}&quot;)<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">This formula is a planning example, not a promise of a fixed per-image bill. Include retries, file storage, and any separate text or tool usage in your own budget. When the output is important, keep the request, response usage, decoded file hash, and approval decision together.<\/p>\n\n\n\n<h2 id=\"globalgpt-contract\" class=\"wp-block-heading\">GlobalGPT uses a different image-edit API contract<\/h2>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.glbgpt.com\/home\/api?inviter=hub_api&amp;login=1\"><img alt=\"\" decoding=\"async\" width=\"1024\" height=\"702\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/api-1024x702.png\" class=\"wp-image-20178\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/api-1024x702.png 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/api-300x206.png 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/api-767x526.png 767w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/api-17x12.png 17w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/api-1536x1053.png 1536w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/api.png 1938w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-3e41869c wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.glbgpt.com\/home\/api?inviter=hub_api&amp;login=1\">Get API Key Now<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\"(\u300a\u4e16\u754c\u4eba\u6743\u5ba3\u8a00\u300b) <a href=\"https:\/\/www.glbgpt.com\/home\/api\/docs\">GlobalGPT API documentation<\/a> describes image, video, and audio generation as asynchronous media tasks. Its public base URL is <code>https:\/\/api2.glbgpt.com\/ai-api\/open\/v1<\/code>. Submit JSON to <code>\/\u4efb\u52a1<\/code>, poll <code>\/tasks\/{id}<\/code>, and read <code>output.url<\/code> after a successful task. The model catalog lists <code>gpt-image-2<\/code> \u548c <code>gpt-image-2.5<\/code> as image-edit\/reference routes with up to four input images and <code>aspect_ratio<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1440\" height=\"680\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/globalgpt-media-tasks-20260928_a012b9ace6664ba99a8e9964f8d24fb7.webp\" alt=\"GlobalGPT public media task API documentation showing submit, estimate, polling, and output URL fields\" class=\"wp-image-20184\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/globalgpt-media-tasks-20260928_a012b9ace6664ba99a8e9964f8d24fb7.webp 1440w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/globalgpt-media-tasks-20260928_a012b9ace6664ba99a8e9964f8d24fb7-300x142.webp 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/globalgpt-media-tasks-20260928_a012b9ace6664ba99a8e9964f8d24fb7-1024x484.webp 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/globalgpt-media-tasks-20260928_a012b9ace6664ba99a8e9964f8d24fb7-768x363.webp 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/globalgpt-media-tasks-20260928_a012b9ace6664ba99a8e9964f8d24fb7-18x9.webp 18w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>S05 public API documentation:<\/strong> Public documentation evidence for the asynchronous task contract; this article keeps it separate from OpenAI&#8217;s native multipart edits endpoint.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1500\" height=\"1080\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/globalgpt-openai-image-models-20260928_a9c8f99a4adc4697bb81c7204d4740aa.webp\" alt=\"GlobalGPT public image model catalog showing GPT Image routes and supported task details\" class=\"wp-image-20185\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/globalgpt-openai-image-models-20260928_a9c8f99a4adc4697bb81c7204d4740aa.webp 1500w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/globalgpt-openai-image-models-20260928_a9c8f99a4adc4697bb81c7204d4740aa-300x216.webp 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/globalgpt-openai-image-models-20260928_a9c8f99a4adc4697bb81c7204d4740aa-1024x737.webp 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/globalgpt-openai-image-models-20260928_a9c8f99a4adc4697bb81c7204d4740aa-768x553.webp 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/globalgpt-openai-image-models-20260928_a9c8f99a4adc4697bb81c7204d4740aa-18x12.webp 18w\" sizes=\"(max-width: 1500px) 100vw, 1500px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>S06 public model catalog:<\/strong> Public model-catalog evidence for the GPT Image routes and their documented image-task limits; verify dynamic credits and fields before publishing.<\/p>\n\n\n\n<div class=\"oie-code\" style=\"box-sizing:border-box;background:#0e1c2c;color:#edf6ff;border-radius:6px;padding:18px;margin:24px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;\"><h3 style=\"color:#fff;margin:0 0 4px;box-sizing:border-box;line-height:1.3;\">GlobalGPT public task shape<\/h3><div class=\"oie-code-label\" style=\"color:#a8c9df;font-size:12px;text-transform:uppercase;letter-spacing:.08em;box-sizing:border-box;\">bash<\/div><pre style=\"overflow-x:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:#08131f;padding:14px;border-radius:4px;color:#edf6ff;font:13px\/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;box-sizing:border-box;max-width:100%;\"><code style=\"background:none;padding:0;border-radius:4px;font-size:.92em;box-sizing:border-box;color:inherit;\">BASE=&quot;https:\/\/api2.glbgpt.com\/ai-api\/open\/v1&quot;\n\n# Optional: estimate without creating a task or reserving credits.\ncurl &quot;$BASE\/tasks\/estimate&quot; \\\n  -H &quot;Authorization: Bearer $GLOBALGPT_API_KEY&quot; \\\n  -H &quot;Content-Type: application\/json&quot; \\\n  -d &#x27;{\n    &quot;model&quot;: &quot;gpt-image-2.5&quot;,\n    &quot;prompt&quot;: &quot;Keep the bottle and label unchanged. Replace only the background with warm beige studio lighting.&quot;,\n    &quot;images&quot;: [&quot;https:\/\/YOUR_PUBLIC_IMAGE_URL\/product.png&quot;],\n    &quot;aspect_ratio&quot;: &quot;3:2&quot;\n  }&#x27;\n\n# Submit only after checking the estimate.\ncurl &quot;$BASE\/tasks&quot; \\\n  -H &quot;Authorization: Bearer $GLOBALGPT_API_KEY&quot; \\\n  -H &quot;Content-Type: application\/json&quot; \\\n  -H &quot;Idempotency-Key: image-edit-example-001&quot; \\\n  -d &#x27;{\n    &quot;model&quot;: &quot;gpt-image-2.5&quot;,\n    &quot;prompt&quot;: &quot;Keep the bottle and label unchanged. Replace only the background with warm beige studio lighting.&quot;,\n    &quot;images&quot;: [&quot;https:\/\/YOUR_PUBLIC_IMAGE_URL\/product.png&quot;],\n    &quot;aspect_ratio&quot;: &quot;3:2&quot;\n  }&#x27;\n\n# Poll the returned task id until succeeded or failed.\ncurl &quot;$BASE\/tasks\/TASK_ID&quot; \\\n  -H &quot;Authorization: Bearer $GLOBALGPT_API_KEY&quot;<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Do not paste OpenAI&#8217;s multipart <code>mask<\/code>, <code>input_fidelity<\/code>, <code>\u5c3a\u5bf8<\/code>, \u6216 <code>\u8d28\u91cf<\/code> fields into this JSON and assume they work. The current public GlobalGPT documentation does not list those fields for this image route. Unsupported fields may be dropped and echoed in <code>ignored_parameters<\/code>, so inspect that response before concluding that a setting took effect.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GlobalGPT reserves credits when a media task is submitted, releases them when the task fails, and keeps successful media available for 30 days according to the public docs. Save the returned asset to storage you control if the URL must survive longer. Use the estimate endpoint before a batch, an idempotency key when retrying a network request, and the original task ID when a poll is merely slow.<\/p>\n\n\n\n<h2 id=\"tested-workflow\" class=\"wp-block-heading\">What the GlobalGPT model test showed<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To make the distinction concrete, I ran a bounded GlobalGPT model API test on 2026-09-28 with two fictional, non-branded input prompts and two edit prompts. Each task used GPT Image 2, a 3:2 request, and the first valid output. The images below are model-test evidence, not a browser-workspace session, benchmark, or promise that every edit will preserve every contour.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1536\" height=\"1024\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/task_kT3VC8CRTLh9RPtLdYFwesrXsotpdQ7U.png\" alt=\"A matte ivory ceramic bottle on a clean white background with NORTH and 250ml on the label\" class=\"wp-image-20186\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/task_kT3VC8CRTLh9RPtLdYFwesrXsotpdQ7U.png 1536w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/task_kT3VC8CRTLh9RPtLdYFwesrXsotpdQ7U-300x200.png 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/task_kT3VC8CRTLh9RPtLdYFwesrXsotpdQ7U-1024x683.png 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/task_kT3VC8CRTLh9RPtLdYFwesrXsotpdQ7U-768x512.png 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/task_kT3VC8CRTLh9RPtLdYFwesrXsotpdQ7U-18x12.png 18w\" sizes=\"(max-width: 1536px) 100vw, 1536px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>P00 input:<\/strong> The frozen source image: a fictional unbranded bottle with a short white cap and a short label.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1536\" height=\"1024\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/task_t7czrp2KJTtuEdj4NuegsGdxfCK1SE38.png\" alt=\"A warm beige indoor still life with a ceramic vessel and soft window light\" class=\"wp-image-20187\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/task_t7czrp2KJTtuEdj4NuegsGdxfCK1SE38.png 1536w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/task_t7czrp2KJTtuEdj4NuegsGdxfCK1SE38-300x200.png 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/task_t7czrp2KJTtuEdj4NuegsGdxfCK1SE38-1024x683.png 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/task_t7czrp2KJTtuEdj4NuegsGdxfCK1SE38-768x512.png 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/task_t7czrp2KJTtuEdj4NuegsGdxfCK1SE38-18x12.png 18w\" sizes=\"(max-width: 1536px) 100vw, 1536px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>P01 reference:<\/strong> The frozen reference image: used for lighting and color only, not as a second product identity.<\/p>\n\n\n\n<section class=\"oie-result\" style=\"box-sizing:border-box;background:#f4f8f5;border:1px solid #bfd8c7;border-top:4px solid #39825b;border-radius:6px;padding:20px;margin:26px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;color:#17323f;\"><h3 style=\"margin-top:0;color:#1f5b3b;box-sizing:border-box;line-height:1.3;\">T01: one-image background edit<\/h3><p class=\"oie-result-meta\" style=\"color:#355b47;font-size:14px;box-sizing:border-box;margin:12px 0;\"><strong style=\"box-sizing:border-box;\">\u578b\u53f7\uff1a<\/strong> GPT Image 2 \u00b7 <strong style=\"box-sizing:border-box;\">Date:<\/strong> 2026-09-28 \u00b7 <strong style=\"box-sizing:border-box;\">\u8f93\u51fa\uff1a<\/strong> first valid 1536\u00d71024 PNG<\/p><details style=\"margin:14px 0;box-sizing:border-box;\"><summary style=\"cursor:pointer;font-weight:650;color:#1d6543;box-sizing:border-box;\">Show the complete prompt<\/summary><pre style=\"background:#fff;border:1px solid #d5e4d9;padding:13px;white-space:pre-wrap;overflow-wrap:anywhere;font:13px\/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;box-sizing:border-box;max-width:100%;\"><code style=\"background:none;padding:0;border-radius:4px;font-size:.92em;box-sizing:border-box;color:inherit;\">Keep the ceramic bottle, short white cap, fictional label text &quot;NORTH&quot; and &quot;250ml&quot;, colors, camera angle, and proportions from the input image unchanged. Replace only the pure white background with a warm beige indoor studio setting inspired by soft window light and gentle shadows. Do not add any new object, logo, word, watermark, person, or label. Preserve the bottle as the only subject in a 3:2 landscape composition.<\/code><\/pre><\/details><figure style=\"margin:28px 0;box-sizing:border-box;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/static.futureshareai.com\/anywhere-test\/task_4kxJZYwlOYxqv3xbyIoa3c4r6CAPPHyn.png\" alt=\"The NORTH ceramic bottle edited into a warm beige studio scene\" width=\"1536\" height=\"1024\" style=\"max-width:100%;height:auto;display:block;width:100%;border-radius:6px;box-sizing:border-box;\"><figcaption style=\"font-size:14px;color:#506174;margin-top:8px;box-sizing:border-box;\">The bottle remains recognizable, the NORTH \/ 250ml label is visible, and the white background changes to a warm beige indoor scene with soft window-like shadows.<\/figcaption><\/figure><p style=\"box-sizing:border-box;margin:12px 0;\"><strong style=\"box-sizing:border-box;\">What this demonstrates:<\/strong> The bottle remains recognizable, the NORTH \/ 250ml label is visible, and the white background changes to a warm beige indoor scene with soft window-like shadows.<\/p><p style=\"box-sizing:border-box;margin:12px 0;\"><strong style=\"box-sizing:border-box;\">\u9650\u5236\uff1a<\/strong> This is one first-valid output. It does not prove exact pixel preservation or general label fidelity.<\/p><\/section>\n\n\n\n<section class=\"oie-result\" style=\"box-sizing:border-box;background:#f4f8f5;border:1px solid #bfd8c7;border-top:4px solid #39825b;border-radius:6px;padding:20px;margin:26px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;color:#17323f;\"><h3 style=\"margin-top:0;color:#1f5b3b;box-sizing:border-box;line-height:1.3;\">T02: two-image lighting and color reference<\/h3><p class=\"oie-result-meta\" style=\"color:#355b47;font-size:14px;box-sizing:border-box;margin:12px 0;\"><strong style=\"box-sizing:border-box;\">\u578b\u53f7\uff1a<\/strong> GPT Image 2 \u00b7 <strong style=\"box-sizing:border-box;\">Date:<\/strong> 2026-09-28 \u00b7 <strong style=\"box-sizing:border-box;\">\u8f93\u51fa\uff1a<\/strong> first valid 1536\u00d71024 PNG<\/p><details style=\"margin:14px 0;box-sizing:border-box;\"><summary style=\"cursor:pointer;font-weight:650;color:#1d6543;box-sizing:border-box;\">Show the complete prompt<\/summary><pre style=\"background:#fff;border:1px solid #d5e4d9;padding:13px;white-space:pre-wrap;overflow-wrap:anywhere;font:13px\/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;box-sizing:border-box;max-width:100%;\"><code style=\"background:none;padding:0;border-radius:4px;font-size:.92em;box-sizing:border-box;color:inherit;\">Use input image 1 as the exact product identity and input image 2 only as a reference for warm beige lighting, color temperature, and soft indoor shadows. Keep the ceramic bottle shape, short white cap, fictional label text &quot;NORTH&quot; and &quot;250ml&quot;, colors, camera angle, and proportions from input image 1 unchanged. Replace the white background with a calm warm beige indoor studio scene. Do not copy any extra object, text, logo, watermark, person, or label from input image 2. Keep the bottle as the only subject in a 3:2 landscape composition.<\/code><\/pre><\/details><figure style=\"margin:28px 0;box-sizing:border-box;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/static.futureshareai.com\/anywhere-test\/task_wiHpx53i7vJr5ueEtGzqzYzs4TC5bkOs.png\" alt=\"The NORTH ceramic bottle in a warm beige room with soft window light\" width=\"1536\" height=\"1024\" style=\"max-width:100%;height:auto;display:block;width:100%;border-radius:6px;box-sizing:border-box;\"><figcaption style=\"font-size:14px;color:#506174;margin-top:8px;box-sizing:border-box;\">The product and NORTH \/ 250ml label remain recognizable, while the scene adopts the warm beige room, tabletop, and window-light feel of P01.<\/figcaption><\/figure><p style=\"box-sizing:border-box;margin:12px 0;\"><strong style=\"box-sizing:border-box;\">What this demonstrates:<\/strong> The product and NORTH \/ 250ml label remain recognizable, while the scene adopts the warm beige room, tabletop, and window-light feel of P01.<\/p><p style=\"box-sizing:border-box;margin:12px 0;\"><strong style=\"box-sizing:border-box;\">\u9650\u5236\uff1a<\/strong> The bottle-cap proportion, bottle outline, and placement changed visibly. Do not call this perfect or exact identity preservation; use manual comparison when merchandise dimensions must match.<\/p><\/section>\n\n\n\n<p class=\"oie-note\" style=\"max-width:880px;box-sizing:border-box;background:#f0f5f9;border-left:4px solid #5d7d99;padding:13px 16px;color:#27445f;font:16px\/1.65 system-ui,-apple-system,sans-serif;min-width:0;margin:12px 0;\"><strong style=\"box-sizing:border-box;\">How to use this evidence:<\/strong> The useful result is a repeatable review gate. Freeze the input URL, name the protected subject, describe the reference role, inspect the returned bytes, and compare the approved product against the source before publishing. Style transfer can be successful while geometry still drifts.<\/p>\n\n\n\n<h2 id=\"image-edit-errors\" class=\"wp-block-heading\">Handle errors and slow responses<\/h2>\n\n\n\n<div class=\"oie-table\" style=\"box-sizing:border-box;background:#f5f8fb;border:1px solid #d7e0e9;border-top:4px solid #4f759a;border-radius:6px;padding:18px;margin:24px 0;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;color:#17323f;\"><h3 style=\"margin:0 0 12px;box-sizing:border-box;line-height:1.3;\">Symptom \u2192 check \u2192 action<\/h3><div class=\"oie-scroll\" style=\"overflow-x:auto;box-sizing:border-box;\"><table style=\"border-collapse:collapse;width:100%;min-width:700px;box-sizing:border-box;\"><thead style=\"box-sizing:border-box;\"><tr style=\"box-sizing:border-box;\"><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">\u75c7\u72b6<\/th><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">\u5148\u68c0\u67e5\u4e00\u4e0b<\/th><th style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;background:#e7eef5;color:#173b5d;box-sizing:border-box;\">Safe next step<\/th><\/tr><\/thead><tbody style=\"box-sizing:border-box;\"><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">401 \/ authentication error<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Server-side key, account permissions, endpoint host<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Stop and fix authentication; do not score image quality.<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">400 \/ 422 bad request<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Model ID, multipart field names, file type, unsupported options<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Change only the field named by the error, then keep the original failed request.<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">429 \/ 5xx \/ capacity<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Whether a task ID was created<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">If no task ID exists, retry once under your policy; if a task exists, poll that ID.<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Task stays queued or processing<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Status, last poll time, provider estimate<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Poll at a measured interval; do not create a duplicate while status is unknown.<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Output is a JSON object saved as an image<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Content-Type, first bytes, decoded format<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Parse the response, decode <code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">b64_json<\/code> or download <code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">output.url<\/code>, then validate.<\/td><\/tr><tr style=\"box-sizing:border-box;\"><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Parameter appears to have no effect<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">GlobalGPT <code style=\"background:#eef3f8;padding:2px 5px;border-radius:4px;font-size:.92em;box-sizing:border-box;color:#18364a;\">ignored_parameters<\/code> and model card<\/td><td style=\"padding:11px;border:1px solid #c9d5e1;text-align:left;vertical-align:top;box-sizing:border-box;\">Remove unsupported fields and use the model-specific contract.<\/td><\/tr><\/tbody><\/table><\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Separate transport evidence from quality evidence. A timeout, DNS failure, or provider capacity response means you do not have a valid image to score. Conversely, a valid image with a changed cap or label is a visual result that should be reported as-is, even if the composition looks attractive.<\/p>\n\n\n\n<h2 id=\"workflow-checklist\" class=\"wp-block-heading\">A production-safe image-edit checklist<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Freeze the source:<\/strong> store the input file, dimensions, format, and hash.<\/li>\n\n\n\n<li><strong>Assign image roles:<\/strong> identify the subject image and any lighting, palette, or composition references.<\/li>\n\n\n\n<li><strong>Write protected cues:<\/strong> list the label, silhouette, colors, and proportions that require review.<\/li>\n\n\n\n<li><strong>Choose the contract:<\/strong> use OpenAI multipart for the native edits endpoint or GlobalGPT JSON tasks for its public media API.<\/li>\n\n\n\n<li><strong>Estimate and submit:<\/strong> use current OpenAI rates or GlobalGPT <code>\/tasks\/estimate<\/code>; add an idempotency key for retry-safe submissions.<\/li>\n\n\n\n<li><strong>Poll and decode:<\/strong> keep one task ID, validate the returned file, and save the bytes or URL in approved storage.<\/li>\n\n\n\n<li><strong>Approve visually:<\/strong> compare the output with the source before it enters a product catalog, ad, or customer-facing page.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to run the same process without stitching together separate model dashboards, try <a href=\"https:\/\/www.glbgpt.com\/image-generator\/gpt-image-2?inviter=hub_content_gpt_image_2&amp;login=1\">GPT Image 2 \u5728 GlobalGPT \u4e2d<\/a>. For the browser-oriented version of the workflow, see <a href=\"https:\/\/www.glbgpt.com\/hub\/globalgpt-image-edit\/\">edit images in the GlobalGPT workspace<\/a>; for a broader setup and pricing discussion, see <a href=\"https:\/\/www.glbgpt.com\/hub\/gpt-image-2-5-api-guide\/\">GPT Image API setup and pricing<\/a>.<\/p>\n\n\n\n<h2 id=\"faq\" class=\"wp-block-heading\">\u5e38\u89c1\u95ee\u9898<\/h2>\n\n\n\n<h3 style=\"font-size:21px;line-height:1.35;margin:28px 0 8px;color:#15395c;box-sizing:border-box;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;\">What is the OpenAI Image Edit API?<\/h3><p style=\"max-width:880px;box-sizing:border-box;font:16px\/1.65 system-ui,-apple-system,sans-serif;min-width:0;color:#17323f;margin:12px 0;\">It is the image-editing route at POST \/v1\/images\/edits. You send an input image and a prompt, optionally with a mask or reference images, then decode the returned image data. Use the Image API for a single edit and the Responses API when the product needs a multi-turn image conversation.<\/p>\n\n\n\n<h3 style=\"font-size:21px;line-height:1.35;margin:28px 0 8px;color:#15395c;box-sizing:border-box;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;\">Does the OpenAI Image Edit API return a public image URL?<\/h3><p style=\"max-width:880px;box-sizing:border-box;font:16px\/1.65 system-ui,-apple-system,sans-serif;min-width:0;color:#17323f;margin:12px 0;\">The documented Image API examples return b64_json. Decode those bytes, validate the file, and save it in storage you control. Do not assume that a successful response is a hosted CDN URL.<\/p>\n\n\n\n<h3 style=\"font-size:21px;line-height:1.35;margin:28px 0 8px;color:#15395c;box-sizing:border-box;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;\">Is an OpenAI image mask exact pixel selection?<\/h3><p style=\"max-width:880px;box-sizing:border-box;font:16px\/1.65 system-ui,-apple-system,sans-serif;min-width:0;color:#17323f;margin:12px 0;\">No. A mask guides a prompt-based edit. The model can change pixels around the requested area, so inspect labels, product details, safety marks, and other elements that must remain correct.<\/p>\n\n\n\n<h3 style=\"font-size:21px;line-height:1.35;margin:28px 0 8px;color:#15395c;box-sizing:border-box;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;\">How many input images can an image edit use?<\/h3><p style=\"max-width:880px;box-sizing:border-box;font:16px\/1.65 system-ui,-apple-system,sans-serif;min-width:0;color:#17323f;margin:12px 0;\">The current image guide supports multiple input images for reference workflows. For the exact limit and model-specific behavior, check the current model documentation; a supported maximum does not guarantee perfect preservation in every composition.<\/p>\n\n\n\n<h3 style=\"font-size:21px;line-height:1.35;margin:28px 0 8px;color:#15395c;box-sizing:border-box;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;\">Can I send the OpenAI \/v1\/images\/edits request to GlobalGPT by changing base_url?<\/h3><p style=\"max-width:880px;box-sizing:border-box;font:16px\/1.65 system-ui,-apple-system,sans-serif;min-width:0;color:#17323f;margin:12px 0;\">No. GlobalGPT&#x27;s public media contract uses JSON POST \/tasks, then GET \/tasks\/{id}, with images and aspect_ratio where the selected model accepts them. The public docs do not list OpenAI&#x27;s multipart mask, input_fidelity, size, or quality contract for that route.<\/p>\n\n\n\n<h3 style=\"font-size:21px;line-height:1.35;margin:28px 0 8px;color:#15395c;box-sizing:border-box;font:16px\/1.65 system-ui,-apple-system,sans-serif;max-width:100%;min-width:0;\">How should I estimate an image task before submitting it?<\/h3><p style=\"max-width:880px;box-sizing:border-box;font:16px\/1.65 system-ui,-apple-system,sans-serif;min-width:0;color:#17323f;margin:12px 0;\">For GlobalGPT, send the same JSON body to \/tasks\/estimate first. It does not create a task or reserve credits. For OpenAI, calculate with the current per-million-token rates and then verify actual usage in the response or billing record.<\/p>\n\n\n<p><script type=\"application\/ld+json\">{<br \/>\n  \"@context\": \"https:\/\/schema.org\",<br \/>\n  \"@type\": \"FAQPage\",<br \/>\n  \"mainEntity\": [<br \/>\n    {<br \/>\n      \"@type\": \"Question\",<br \/>\n      \"name\": \"What is the OpenAI Image Edit API?\",<br \/>\n      \"acceptedAnswer\": {<br \/>\n        \"@type\": \"Answer\",<br \/>\n        \"text\": \"It is the image-editing route at POST \/v1\/images\/edits. You send an input image and a prompt, optionally with a mask or reference images, then decode the returned image data. Use the Image API for a single edit and the Responses API when the product needs a multi-turn image conversation.\"<br \/>\n      }<br \/>\n    },<br \/>\n    {<br \/>\n      \"@type\": \"Question\",<br \/>\n      \"name\": \"Does the OpenAI Image Edit API return a public image URL?\",<br \/>\n      \"acceptedAnswer\": {<br \/>\n        \"@type\": \"Answer\",<br \/>\n        \"text\": \"The documented Image API examples return b64_json. Decode those bytes, validate the file, and save it in storage you control. Do not assume that a successful response is a hosted CDN URL.\"<br \/>\n      }<br \/>\n    },<br \/>\n    {<br \/>\n      \"@type\": \"Question\",<br \/>\n      \"name\": \"Is an OpenAI image mask exact pixel selection?\",<br \/>\n      \"acceptedAnswer\": {<br \/>\n        \"@type\": \"Answer\",<br \/>\n        \"text\": \"No. A mask guides a prompt-based edit. The model can change pixels around the requested area, so inspect labels, product details, safety marks, and other elements that must remain correct.\"<br \/>\n      }<br \/>\n    },<br \/>\n    {<br \/>\n      \"@type\": \"Question\",<br \/>\n      \"name\": \"How many input images can an image edit use?\",<br \/>\n      \"acceptedAnswer\": {<br \/>\n        \"@type\": \"Answer\",<br \/>\n        \"text\": \"The current image guide supports multiple input images for reference workflows. For the exact limit and model-specific behavior, check the current model documentation; a supported maximum does not guarantee perfect preservation in every composition.\"<br \/>\n      }<br \/>\n    },<br \/>\n    {<br \/>\n      \"@type\": \"Question\",<br \/>\n      \"name\": \"Can I send the OpenAI \/v1\/images\/edits request to GlobalGPT by changing base_url?\",<br \/>\n      \"acceptedAnswer\": {<br \/>\n        \"@type\": \"Answer\",<br \/>\n        \"text\": \"No. GlobalGPT's public media contract uses JSON POST \/tasks, then GET \/tasks\/{id}, with images and aspect_ratio where the selected model accepts them. The public docs do not list OpenAI's multipart mask, input_fidelity, size, or quality contract for that route.\"<br \/>\n      }<br \/>\n    },<br \/>\n    {<br \/>\n      \"@type\": \"Question\",<br \/>\n      \"name\": \"How should I estimate an image task before submitting it?\",<br \/>\n      \"acceptedAnswer\": {<br \/>\n        \"@type\": \"Answer\",<br \/>\n        \"text\": \"For GlobalGPT, send the same JSON body to \/tasks\/estimate first. It does not create a task or reserve credits. For OpenAI, calculate with the current per-million-token rates and then verify actual usage in the response or billing record.\"<br \/>\n      }<br \/>\n    }<br \/>\n  ]<br \/>\n}<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>The OpenAI Image Edit API changes an existing image from a prompt. The native route is POST \/v1\/images\/edits; it accepts an image, a prompt, and optional editing controls such as a mask or reference images. Use the Image API for a focused request, and use the Responses API when the product needs a multi-turn image [&hellip;]<\/p>","protected":false},"author":7,"featured_media":20176,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"","_seopress_titles_title":"OpenAI Image Edit API: Masks, Pricing & Examples","_seopress_titles_desc":"Learn how the OpenAI Image Edit API handles masks, reference images, parameters, pricing, and a separate GlobalGPT async image workflow.","_seopress_robots_index":"","footnotes":""},"categories":[8],"tags":[],"class_list":["post-20175","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-image"],"acf":[],"_links":{"self":[{"href":"https:\/\/wp.glbgpt.com\/zh\/wp-json\/wp\/v2\/posts\/20175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.glbgpt.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.glbgpt.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/zh\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/zh\/wp-json\/wp\/v2\/comments?post=20175"}],"version-history":[{"count":3,"href":"https:\/\/wp.glbgpt.com\/zh\/wp-json\/wp\/v2\/posts\/20175\/revisions"}],"predecessor-version":[{"id":20188,"href":"https:\/\/wp.glbgpt.com\/zh\/wp-json\/wp\/v2\/posts\/20175\/revisions\/20188"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/zh\/wp-json\/wp\/v2\/media\/20176"}],"wp:attachment":[{"href":"https:\/\/wp.glbgpt.com\/zh\/wp-json\/wp\/v2\/media?parent=20175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.glbgpt.com\/zh\/wp-json\/wp\/v2\/categories?post=20175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.glbgpt.com\/zh\/wp-json\/wp\/v2\/tags?post=20175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}