{
  "checked_at": "2026-06-02T09:36:38Z",
  "base": "https://aieditorrsp.net",
  "routes": {
    "/": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/",
      "len": 56808
    },
    "/ai-photo-prompt-editor": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/ai-photo-prompt-editor",
      "len": 43109
    },
    "/prompt-library": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/prompt-library",
      "len": 69096
    },
    "/chatgpt-photo-editing-prompts": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/chatgpt-photo-editing-prompts",
      "len": 71180
    },
    "/ai-photo-editing-prompts": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/ai-photo-editing-prompts",
      "len": 78667
    },
    "/pricing": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/pricing",
      "len": 24194
    },
    "/privacy": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/privacy",
      "len": 47103
    },
    "/terms": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/terms",
      "len": 41815
    },
    "/refund": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/refund",
      "len": 38559
    },
    "/cookie-policy": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/cookie-policy",
      "len": 38034
    },
    "/contact": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/contact",
      "len": 43695
    },
    "/robots.txt": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/robots.txt",
      "len": 115
    },
    "/sitemap.xml": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/sitemap.xml",
      "len": 1891
    },
    "/api/health": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/api/health",
      "len": 103
    },
    "/api/credits": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/api/credits",
      "len": 294
    },
    "/api/prompt-templates": {
      "status": 200,
      "final_url": "https://aieditorrsp.net/api/prompt-templates",
      "len": 6974
    }
  },
  "apis": {
    "/api/health": {
      "status": 200,
      "body": {
        "ok": true,
        "service": "aieditorrsp",
        "runtime": "cloudflare-workers-opennext",
        "version": "frontend-launch"
      }
    },
    "/api/credits": {
      "status": 200,
      "body": {
        "authenticated": false,
        "user": null,
        "plan": "free",
        "daily_limit": 2,
        "free_remaining": 2,
        "paid_remaining": 0,
        "remaining": 2,
        "paid_enabled": true,
        "checkout": {
          "monthly": "/api/checkout/stripe?plan=monthly",
          "yearly": "/api/checkout/stripe?plan=yearly",
          "credit_pack": "/api/checkout/stripe?plan=credit_pack"
        }
      }
    },
    "/api/prompt-templates": {
      "status": 200,
      "body": {
        "templates": [
          {
            "title": "Editorial Headshot",
            "category": "Portrait",
            "prompt": "Turn this portrait into a cinematic editorial headshot with soft side lighting, natural skin texture, clean charcoal background, and the same main subject.",
            "negative_prompt": "blurry skin, distorted hands, changed identity, logos",
            "preserves": "face shape, clothing silhouette, realistic skin",
            "safety_note": "Use only on photos you own or have permission to edit."
          },
          {
            "title": "Studio Product Hero",
            "category": "Product",
            "prompt": "Place the product on a matte graphite studio surface with warm rim light, sharp material detail, and subtle shadow.",
            "negative_prompt": "fake brand logo, extra text, warped label",
            "preserves": "product shape, color, label placement",
            "safety_note": "Do not create counterfeit or misleading brand claims."
          },
          {
            "title": "Vibrant Social Avatar",
            "category": "Social",
            "prompt": "Create a vibrant social profile image with clean background, punchy color grade, and natural subject proportions.",
            "negative_prompt": "celebrity style, exaggerated face, watermark",
            "preserves": "main subject, pose, expression",
            "safety_note": "Avoid impersonation or public figure mimicry."
          },
          {
            "title": "Minimal Background Swap",
            "category": "Background",
            "prompt": "Replace the cluttered background with a simple warm neutral studio wall while preserving the subject and foreground edges.",
            "negative_prompt": "halo edges, missing hair, plastic texture",
            "preserves": "subject edges, lighting direction",
            "safety_note": "Background edits must not misrepresent events."
          },
          {
            "title": "Soft Window Light",
            "category": "Portrait",
            "prompt": "Apply soft window lighting, gentle contrast, realistic skin tone, and a calm professional mood.",
            "negative_prompt": "over-smoothed face, changed age, fantasy features",
            "preserves": "identity cues, eye direction, skin texture",
            "safety_note": "Results vary by source image and model."
          },
          {
            "title": "Ecommerce Clean White",
            "category": "Product",
            "prompt": "Convert the photo into a clean ecommerce product image on an off-white background with natural shadow and crisp edges.",
            "negative_prompt": "false certifications, fake packaging text",
            "preserves": "product proportions, material, label",
            "safety_note": "User is responsible for product accuracy."
          },
          {
            "title": "Cinematic Color Grade",
            "category": "Creative",
            "prompt": "Add a cinematic amber-and-teal color grade, subtle film grain, and realistic contrast without changing the subject.",
            "negative_prompt": "new person, extra limbs, unreadable text",
            "preserves": "composition, subject identity",
            "safety_note": "Do not use for deceptive edits."
          },
          {
            "title": "LinkedIn Profile Polish",
            "category": "Profile",
            "prompt": "Polish this profile photo with professional lighting, neutral background, clean crop, and natural facial texture.",
            "negative_prompt": "changed face, heavy retouching, fake uniform",
            "preserves": "face identity, hairstyle, attire",
            "safety_note": "No exact-match or professional certification claim."
          },
          {
            "title": "Food Social Shot",
            "category": "Social",
            "prompt": "Make the food image look appetizing with soft overhead light, warm table texture, and crisp detail.",
            "negative_prompt": "fake ingredients, health claims, brand logos",
            "preserves": "dish shape, plating, ingredients",
            "safety_note": "Do not make unsupported claims."
          },
          {
            "title": "Old Photo Restore",
            "category": "Restore",
            "prompt": "Restore contrast and color balance while keeping the original person, age cues, clothing, and scene context intact.",
            "negative_prompt": "modern objects, changed identity, fake documents",
            "preserves": "original scene, facial cues",
            "safety_note": "Avoid editing documents or evidence."
          },
          {
            "title": "Muted Founder Portrait",
            "category": "Portrait",
            "prompt": "Create a muted founder portrait with graphite background, confident posture, subtle rim light, and realistic detail.",
            "negative_prompt": "celebrity likeness, luxury logos",
            "preserves": "pose, outfit, identity cues",
            "safety_note": "Use for your own portrait only."
          },
          {
            "title": "Seasonal Campaign Visual",
            "category": "Marketing",
            "prompt": "Adapt this product photo into a seasonal campaign visual with generic festive lighting and no third-party IP.",
            "negative_prompt": "copyright characters, sports teams, movie styles",
            "preserves": "product identity, core composition",
            "safety_note": "Avoid protected characters and brand assets."
          },
          {
            "title": "Clean Cutout Preview",
            "category": "Product",
            "prompt": "Create a clean product cutout preview with soft shadow, high edge clarity, and transparent-background feel.",
            "negative_prompt": "watermark removal, fake label, jagged edge",
            "preserves": "object boundary, proportions",
            "safety_note": "Do not remove watermarks from third-party assets."
          },
          {
            "title": "Warm Lifestyle Scene",
            "category": "Lifestyle",
            "prompt": "Turn this product into a warm lifestyle scene with natural home lighting, realistic surface texture, and human-scale context.",
            "negative_prompt": "fake endorsement, celebrity hand, unreadable labels",
            "preserves": "product form, material, color",
            "safety_note": "No implied endorsement."
          },
          {
            "title": "Moody Poster Crop",
            "category": "Creative",
            "prompt": "Create a moody poster-style crop with dramatic light falloff, deep graphite shadows, and one clear focal subject.",
            "negative_prompt": "movie franchise style, copyrighted logos",
            "preserves": "focal subject, broad composition",
            "safety_note": "Avoid franchise or IP-specific style packs."
          },
          {
            "title": "Profile Background Clean",
            "category": "Profile",
            "prompt": "Keep the subject unchanged and replace the background with a clean office-like environment and soft depth of field.",
            "negative_prompt": "new face, fake badge, document text",
            "preserves": "subject face, clothing, posture",
            "safety_note": "Do not forge workplace affiliation."
          },
          {
            "title": "Natural Skin Texture",
            "category": "Portrait",
            "prompt": "Improve lighting and color while preserving natural skin texture, facial proportions, and age-appropriate details.",
            "negative_prompt": "beauty filter, changed ethnicity, plastic skin",
            "preserves": "skin texture, face shape",
            "safety_note": "No sensitive attribute inference."
          },
          {
            "title": "Pinterest Flat Lay",
            "category": "Social",
            "prompt": "Create a Pinterest-style flat lay composition with balanced spacing, soft shadows, and warm neutral styling.",
            "negative_prompt": "brand imitation, fake text, extra products",
            "preserves": "main objects, colors",
            "safety_note": "Use only owned assets."
          },
          {
            "title": "Ad Creative Draft",
            "category": "Marketing",
            "prompt": "Turn this image into a generic ad creative draft with empty safe copy space, clean composition, and no platform logos.",
            "negative_prompt": "fake reviews, official badges, competitor logos",
            "preserves": "product and main claim area",
            "safety_note": "Marketing claims need review."
          },
          {
            "title": "Prompt Safe Test",
            "category": "Safety",
            "prompt": "Enhance lighting and composition while preserving the original subject and avoiding identity changes or sensitive edits.",
            "negative_prompt": "public figure, explicit content, document edits",
            "preserves": "subject, scene context",
            "safety_note": "Unsafe prompts are blocked, not upsold."
          }
        ]
      }
    }
  },
  "seo": {
    "/": {
      "title": "AI Image Editor With Prompt Templates | AI RSP",
      "meta_description": "Upload a photo, choose a reusable style prompt, and create prompt-based AI edits for portraits, products, and social visuals.",
      "canonical": [
        "https://aieditorrsp.net"
      ],
      "h1_count": 1,
      "og_title": true,
      "og_image": true,
      "json_ld_count": 6,
      "noindex": false
    },
    "/ai-photo-prompt-editor": {
      "title": "AI Photo Prompt Editor for Style Prompts | AI Editor RSP",
      "meta_description": "Build structured AI photo editing prompts with subject, style, background, lighting, and negative constraints.",
      "canonical": [
        "https://aieditorrsp.net/ai-photo-prompt-editor"
      ],
      "h1_count": 1,
      "og_title": true,
      "og_image": true,
      "json_ld_count": 4,
      "noindex": false
    },
    "/pricing": {
      "title": "Pricing and AI Editing Credit Plans for RSP | AI Editor RSP",
      "meta_description": "AI Editor RSP pricing supports Google login, Stripe checkout, monthly or yearly Pro plans, and credit packs for prompt-based image edits.",
      "canonical": [
        "https://aieditorrsp.net/pricing"
      ],
      "h1_count": 1,
      "og_title": true,
      "og_image": true,
      "json_ld_count": 0,
      "noindex": false
    },
    "/privacy": {
      "title": "Privacy Policy for AI Editor RSP Photo Data | AI Editor RSP",
      "meta_description": "AI Editor RSP privacy covers limited provider preview mode, server-side fal processing, 24h result URLs, Plausible analytics, and Cloudflare delivery.",
      "canonical": [
        "https://aieditorrsp.net/privacy"
      ],
      "h1_count": 1,
      "og_title": true,
      "og_image": true,
      "json_ld_count": 0,
      "noindex": false
    },
    "/terms": {
      "title": "Terms of Service for AI Editor RSP Users | AI Editor RSP",
      "meta_description": "AI Editor RSP terms cover user upload rights, server-side fal processing, credit accounting, Stripe checkout, subscriptions, safety limits, and acceptable use.",
      "canonical": [
        "https://aieditorrsp.net/terms"
      ],
      "h1_count": 1,
      "og_title": true,
      "og_image": true,
      "json_ld_count": 0,
      "noindex": false
    }
  },
  "security": {
    "https": true,
    "headers": {
      "Content-Security-Policy": null,
      "Strict-Transport-Security": null,
      "X-Frame-Options": null,
      "X-Content-Type-Options": null,
      "Referrer-Policy": null
    },
    "public_secret_like_hits": []
  },
  "analytics": {
    "ga4": false,
    "plausible": true,
    "clarity": true,
    "gsc_hint": false,
    "note": "Dashboard verification not available in this QA run"
  },
  "sitemap": {
    "url_count": 11,
    "bad": []
  },
  "copy_scan": {
    "/": [
      "unlimited"
    ],
    "/pricing": [],
    "/privacy": [],
    "/terms": [],
    "/refund": [],
    "/cookie-policy": [],
    "/contact": []
  },
  "checkout": {
    "monthly": {
      "status": 200,
      "final_url": "https://accounts.google.com/signin/oauth/error?authError=ChVyZWRpcmVjdF91cmlfbWlzbWF0Y2gS3AEKU2llIGvDtm5uZW4gc2ljaCBuaWNodCBpbiBkaWVzZXIgQXBwIGFubWVsZGVuLCB3ZWlsIHNpZSBuaWNodCBkZW4gR29vZ2xlLVJpY2h0bGluaWVuIGbDvHIgT0F1dGjCoDIuMCBlbnRzcHJpY2h0LgoKV2VubiBTaWUgZGVyIEFwcC1FbnR3aWNrbGVyIHNpbmQsIHJlZ2lzdHJpZXJlbiBTaWUgZGVuIFdlaXRlcmxlaXR1bmdzLVVSSSBpbiBkZXIgR29vZ2xlIENsb3VkIENvbnNvbGUuCiAgGm1odHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9wcm90b2NvbHMvb2F1dGgyL3dlYi1zZXJ2ZXIjYXV0aG9yaXphdGlvbi1lcnJvcnMtcmVkaXJlY3QtdXJpLW1pc21hdGNoIJADKkAKDHJlZGlyZWN0X3VyaRIwaHR0cHM6Ly9haWVkaXRvcnJzcC5uZXQvYXBpL2F1dGgvY2FsbGJhY2svZ29vZ2xlMtACCAES3AEKU2llIGvDtm5uZW4gc2ljaCBuaWNodCBpbiBkaWVzZXIgQXBwIGFubWVsZGVuLCB3ZWlsIHNpZSBuaWNodCBkZW4gR29vZ2xlLVJpY2h0bGluaWVuIGbDvHIgT0F1dGjCoDIuMCBlbnRzcHJpY2h0LgoKV2VubiBTaWUgZGVyIEFwcC1FbnR3aWNrbGVyIHNpbmQsIHJlZ2lzdHJpZXJlbiBTaWUgZGVuIFdlaXRlcmxlaXR1bmdzLVVSSSBpbiBkZXIgR29vZ2xlIENsb3VkIENvbnNvbGUuCiAgGm1odHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9wcm90b2NvbHMvb2F1dGgyL3dlYi1zZXJ2ZXIjYXV0aG9yaXphdGlvbi1lcnJvcnMtcmVkaXJlY3QtdXJpLW1pc21hdGNo&flowName=GeneralOAuthLite&client_id=898368882649-arbj842lpgra1o23ms9d99bc4v7b04p2.apps.googleusercontent.com&aes=6DJ-6HpvPKT9p8lRBrGE1w&ffgf=1&dsh=S1996796183:1780393019505663",
      "set_cookie": true
    },
    "yearly": {
      "status": 200,
      "final_url": "https://accounts.google.com/signin/oauth/error?authError=ChVyZWRpcmVjdF91cmlfbWlzbWF0Y2gS3AEKU2llIGvDtm5uZW4gc2ljaCBuaWNodCBpbiBkaWVzZXIgQXBwIGFubWVsZGVuLCB3ZWlsIHNpZSBuaWNodCBkZW4gR29vZ2xlLVJpY2h0bGluaWVuIGbDvHIgT0F1dGjCoDIuMCBlbnRzcHJpY2h0LgoKV2VubiBTaWUgZGVyIEFwcC1FbnR3aWNrbGVyIHNpbmQsIHJlZ2lzdHJpZXJlbiBTaWUgZGVuIFdlaXRlcmxlaXR1bmdzLVVSSSBpbiBkZXIgR29vZ2xlIENsb3VkIENvbnNvbGUuCiAgGm1odHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9wcm90b2NvbHMvb2F1dGgyL3dlYi1zZXJ2ZXIjYXV0aG9yaXphdGlvbi1lcnJvcnMtcmVkaXJlY3QtdXJpLW1pc21hdGNoIJADKkAKDHJlZGlyZWN0X3VyaRIwaHR0cHM6Ly9haWVkaXRvcnJzcC5uZXQvYXBpL2F1dGgvY2FsbGJhY2svZ29vZ2xlMtACCAES3AEKU2llIGvDtm5uZW4gc2ljaCBuaWNodCBpbiBkaWVzZXIgQXBwIGFubWVsZGVuLCB3ZWlsIHNpZSBuaWNodCBkZW4gR29vZ2xlLVJpY2h0bGluaWVuIGbDvHIgT0F1dGjCoDIuMCBlbnRzcHJpY2h0LgoKV2VubiBTaWUgZGVyIEFwcC1FbnR3aWNrbGVyIHNpbmQsIHJlZ2lzdHJpZXJlbiBTaWUgZGVuIFdlaXRlcmxlaXR1bmdzLVVSSSBpbiBkZXIgR29vZ2xlIENsb3VkIENvbnNvbGUuCiAgGm1odHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9wcm90b2NvbHMvb2F1dGgyL3dlYi1zZXJ2ZXIjYXV0aG9yaXphdGlvbi1lcnJvcnMtcmVkaXJlY3QtdXJpLW1pc21hdGNo&flowName=GeneralOAuthLite&client_id=898368882649-arbj842lpgra1o23ms9d99bc4v7b04p2.apps.googleusercontent.com&aes=6DJ-6HpvPKT9p8lRBrGE1w&ffgf=1&dsh=S356053202:1780393019968087",
      "set_cookie": true
    },
    "credit_pack": {
      "status": 200,
      "final_url": "https://accounts.google.com/signin/oauth/error?authError=ChVyZWRpcmVjdF91cmlfbWlzbWF0Y2gS3AEKU2llIGvDtm5uZW4gc2ljaCBuaWNodCBpbiBkaWVzZXIgQXBwIGFubWVsZGVuLCB3ZWlsIHNpZSBuaWNodCBkZW4gR29vZ2xlLVJpY2h0bGluaWVuIGbDvHIgT0F1dGjCoDIuMCBlbnRzcHJpY2h0LgoKV2VubiBTaWUgZGVyIEFwcC1FbnR3aWNrbGVyIHNpbmQsIHJlZ2lzdHJpZXJlbiBTaWUgZGVuIFdlaXRlcmxlaXR1bmdzLVVSSSBpbiBkZXIgR29vZ2xlIENsb3VkIENvbnNvbGUuCiAgGm1odHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9wcm90b2NvbHMvb2F1dGgyL3dlYi1zZXJ2ZXIjYXV0aG9yaXphdGlvbi1lcnJvcnMtcmVkaXJlY3QtdXJpLW1pc21hdGNoIJADKkAKDHJlZGlyZWN0X3VyaRIwaHR0cHM6Ly9haWVkaXRvcnJzcC5uZXQvYXBpL2F1dGgvY2FsbGJhY2svZ29vZ2xlMtACCAES3AEKU2llIGvDtm5uZW4gc2ljaCBuaWNodCBpbiBkaWVzZXIgQXBwIGFubWVsZGVuLCB3ZWlsIHNpZSBuaWNodCBkZW4gR29vZ2xlLVJpY2h0bGluaWVuIGbDvHIgT0F1dGjCoDIuMCBlbnRzcHJpY2h0LgoKV2VubiBTaWUgZGVyIEFwcC1FbnR3aWNrbGVyIHNpbmQsIHJlZ2lzdHJpZXJlbiBTaWUgZGVuIFdlaXRlcmxlaXR1bmdzLVVSSSBpbiBkZXIgR29vZ2xlIENsb3VkIENvbnNvbGUuCiAgGm1odHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9wcm90b2NvbHMvb2F1dGgyL3dlYi1zZXJ2ZXIjYXV0aG9yaXphdGlvbi1lcnJvcnMtcmVkaXJlY3QtdXJpLW1pc21hdGNo&flowName=GeneralOAuthLite&client_id=898368882649-arbj842lpgra1o23ms9d99bc4v7b04p2.apps.googleusercontent.com&aes=6DJ-6HpvPKT9p8lRBrGE1w&ffgf=1&dsh=S1998926977:1780393020434306",
      "set_cookie": true
    }
  },
  "auth": {
    "login_redirect": {
      "status": 200,
      "final_url": "https://accounts.google.com/signin/oauth/error?authError=ChVyZWRpcmVjdF91cmlfbWlzbWF0Y2gS3AEKU2llIGvDtm5uZW4gc2ljaCBuaWNodCBpbiBkaWVzZXIgQXBwIGFubWVsZGVuLCB3ZWlsIHNpZSBuaWNodCBkZW4gR29vZ2xlLVJpY2h0bGluaWVuIGbDvHIgT0F1dGjCoDIuMCBlbnRzcHJpY2h0LgoKV2VubiBTaWUgZGVyIEFwcC1FbnR3aWNrbGVyIHNpbmQsIHJlZ2lzdHJpZXJlbiBTaWUgZGVuIFdlaXRlcmxlaXR1bmdzLVVSSSBpbiBkZXIgR29vZ2xlIENsb3VkIENvbnNvbGUuCiAgGm1odHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9wcm90b2NvbHMvb2F1dGgyL3dlYi1zZXJ2ZXIjYXV0aG9yaXphdGlvbi1lcnJvcnMtcmVkaXJlY3QtdXJpLW1pc21hdGNoIJADKkAKDHJlZGlyZWN0X3VyaRIwaHR0cHM6Ly9haWVkaXRvcnJzcC5uZXQvYXBpL2F1dGgvY2FsbGJhY2svZ29vZ2xlMtACCAES3AEKU2llIGvDtm5uZW4gc2ljaCBuaWNodCBpbiBkaWVzZXIgQXBwIGFubWVsZGVuLCB3ZWlsIHNpZSBuaWNodCBkZW4gR29vZ2xlLVJpY2h0bGluaWVuIGbDvHIgT0F1dGjCoDIuMCBlbnRzcHJpY2h0LgoKV2VubiBTaWUgZGVyIEFwcC1FbnR3aWNrbGVyIHNpbmQsIHJlZ2lzdHJpZXJlbiBTaWUgZGVuIFdlaXRlcmxlaXR1bmdzLVVSSSBpbiBkZXIgR29vZ2xlIENsb3VkIENvbnNvbGUuCiAgGm1odHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9wcm90b2NvbHMvb2F1dGgyL3dlYi1zZXJ2ZXIjYXV0aG9yaXphdGlvbi1lcnJvcnMtcmVkaXJlY3QtdXJpLW1pc21hdGNo&flowName=GeneralOAuthLite&client_id=898368882649-arbj842lpgra1o23ms9d99bc4v7b04p2.apps.googleusercontent.com&aes=6DJ-6HpvPKT9p8lRBrGE1w&ffgf=1&dsh=S822163697:1780393020794533",
      "set_cookie": true
    }
  },
  "prompt_safety": {
    "unsafe_no_image": {
      "status": 400,
      "body": "{\"ok\":false,\"code\":\"PROMPT_REQUIRED\",\"message\":\"Add a clear prompt before generating.\"}"
    },
    "safe_no_image": {
      "status": 400,
      "body": "{\"ok\":false,\"code\":\"PROMPT_REQUIRED\",\"message\":\"Add a clear prompt before generating.\"}"
    }
  }
}