# Inpaint worker — SDXL (`diffusers/stable-diffusion-xl-1.0-inpainting-0.1`) One RunPod serverless endpoint that powers **Magic Eraser**, **Generative Fill**, and **Outpaint** in the photo editor. Set its `/runsync` URL as the Vercel env var **`RUNPOD_SD_INPAINT_URL`**. ## Contract Request `{"input": {...}}` — matches the app's `rpInpaint`: | field | required | meaning | |---|---|---| | `image` | yes | base64 image (raw or `data:` URI) | | `mask` | yes | base64 mask — **white = regenerate, black = keep** | | `prompt` | no | `""` = Magic Eraser (clean fill); text = Generative Fill / Outpaint | | `strength` | no | 0..1 (empty prompt forces 1.0 to fully erase) | | `guidance_scale` | no | default 7 | | `num_inference_steps` | no | default 35 | | `negative_prompt` | no | — | | `seed` | no | — | Response: `{"image": ""}` or `{"error": "..."}`. ## RunPod setup 1. New Serverless endpoint → connect this GitHub repo → **Dockerfile path** `workers/inpaint/Dockerfile` (build context = repo root). 2. GPU: **24 GB** (RTX 4090 / 3090). Max workers ≥ 1; optionally a network volume to cache the ~7 GB model so cold starts don't re-download. 3. Copy the endpoint's `…/runsync` URL → Vercel `RUNPOD_SD_INPAINT_URL`, then redeploy the web app. ## Env knobs - `SD_INPAINT_MODEL` (default `diffusers/stable-diffusion-xl-1.0-inpainting-0.1`) - `SD_INPAINT_MAX_SIZE` (default `1024`)