Inpainting Endpoint
Overview
Inpainting API is used to change (inpaint) some part of an image according to specific requirements, based on trained or on public models. Pass the appropriate request parameters to the endpoint.
This endpoint generates and returns an image from an image and a mask passed with their URLs in the request together with a model's ID.
You can also add your description of the desired result by passing prompt and negative prompt.
Request
--request POST 'https://modelslab.com/api/v6/images/inpaint' \
Make a POST
request to https://modelslab.com/api/v6/images/inpaint endpoint and pass the required parameters as a request body.
Watch the Inpaint Community Model Endpoint Demo video to see it in action Postman.
Attributes
Parameter | Description | Values |
---|---|---|
key | Your API Key used for request authorization. | string |
model_id | The ID of the model to be used. It can be a public model or one you have trained. | id |
prompt | A text description of what you want in the generated image. | string |
negative_prompt | Items you don't want in the image. | string |
init_image | Link to the initial image to be used as a reference. | url |
mask_image | Link to the mask image for inpainting. | url |
width | The width of the image. Maximum value is 1024 pixels. | integer |
height | The height of the image. Maximum value is 1024 pixels. | integer |
samples | The number of images to be returned in the response. The maximum value is 4. | integer |
steps | The number of denoising steps. values range from 1 to 20, and any value above 20 will be capped at 20. | integer |
safety_checker | A checker for NSFW images. If detected, such images will be replaced by a blank image. Default is "yes". | "yes"/"no" |
safety_checker_type | How to modify the image if NSFW content is found. Default is "sensitive_content_text". Options: "blur", "sensitive_content_text", "pixelate", "black". | "blur", "sensitive_content_text", "pixelate", "black" |
enhance_prompt | Enhance prompts for better results. Default is "yes". Options: "yes"/"no". | "yes"/"no" |
enhance_style | Allows you to set the style of the image for better results. Available styles include: | enhance , cinematic-diva , nude , nsfw , sex , abstract-expressionism , academia , action-figure , adorable-3d-character , adorable-kawaii , art-deco , art-nouveau , astral-aura , avant-garde , baroque , bauhaus-style-poster , blueprint-schematic-drawing , caricature , cel-shaded-art , character-design-sheet , classicism-art , color-field-painting , colored-pencil-art , conceptual-art , constructivism , cubism , dadaism , dark-fantasy , dark-moody-atmosphere , dmt-art , doodle-art , double-exposure , dripping-paint-splatter , expressionism , faded-polaroid-photo , fauvism , flat-2d , fortnite-style , futurism , glitchcore , glo-fi , googie-style , graffiti-art , harlem-renaissance-art , high-fashion , idyllic , impressionism , infographic-drawing , ink-dripping-drawing , japanese-ink-drawing , knolling-photography , light-cheery-atmosphere , logo-design , luxurious-elegance , macro-photography , mandola-art , marker-drawing , medievalism , minimalism , neo-baroque , neo-byzantine , neo-futurism , neo-impressionism , neo-rococo , neoclassicism , op-art , ornate-and-intricate , pencil-sketch-drawing , pop-art-2 , rococo , silhouette-art , simple-vector-art , sketchup , steampunk-2 , surrealism , suprematism , terragen , tranquil-relaxing-atmosphere , sticker-designs , vibrant-rim-light , volumetric-lighting , watercolor , whimsical-and-playful , sharp , masterpiece , photograph , negative , cinematic , ads-advertising , ads-automotive , ads-corporate , ads-fashion-editorial , ads-food-photography , ads-gourmet-food-photography , ads-luxury , ads-real-estate , ads-retail , abstract , abstract-expressionism , art-deco , art-nouveau , constructivist , cubist , expressionist , graffiti , hyperrealism , impressionist , pointillism , pop-art , psychedelic , renaissance , steampunk , surrealist , typography , watercolor , futuristic-biomechanical , futuristic-biomechanical-cyberpunk , futuristic-cybernetic , futuristic-cybernetic-robot , futuristic-cyberpunk-cityscape , futuristic-futuristic , futuristic-retro-cyberpunk , futuristic-retro , futuristic-sci-fi , futuristic-vaporwave , game-bubble , game-cyberpunk , game-fighting , game-gta , game-mario , game-minecraft , game-pokemon , game-retro-arcade , game-retro , game-rpg-fantasy , game-strategy , game-streetfighter , game-zelda , misc-architectural , misc-disco , misc-dreamscape , misc-dystopian , misc-fairy-tale , misc-gothic , misc-grunge , misc-horror , misc-kawaii , misc-lovecraftian , misc-macabre , misc-manga , misc-metropolis , misc-minimalist , misc-monochrome , misc-nautical , misc-space , misc-stained-glass , misc-techwear-fashion , misc-tribal , misc-zentangle , papercraft-collage , papercraft-flat-papercut , papercraft-kirigami , papercraft-paper-mache , papercraft-paper-quilling , papercraft-papercut-collage , papercraft-papercut-shadow-box , papercraft-stacked-papercut , papercraft-thick-layered-papercut , photo-alien , photo-film-noir , photo-glamour , photo-hdr , photo-iphone-photographic , photo-long-exposure , photo-neon-noir , photo-silhouette , photo-tilt-shift , 3d-model , analog-film , anime , cinematic , comic-book , craft-clay , digital-art , fantasy-art , isometric , line-art , lowpoly , neonpunk , origami , photographic , pixel-art , texture |
guidance_scale | Scale for classifier-free guidance. Minimum 1, Maximum 20. | integer |
tomesd | Enable tomesd to generate images quickly. Default is "yes". Options: "yes"/"no". | "yes"/"no" |
use_karras_sigmas | Use Keras sigmas to generate images. Produces nice results. Default is "yes". Options: "yes"/"no". | "yes"/"no" |
algorithm_type | Used in the DPMSolverMultistepScheduler scheduler. Default is "none". Options: "dpmsolver+++". | "dpmsolver+++" |
vae | Use a custom VAE for generating images. Default is null. | null |
lora_strength | Specify the strength of the LoRa model you're using. Range from 0.1 to 1, or comma-separated values. | string |
lora_model | Pass LoRa model ID. Multiple LoRa models supported; comma-separated values. Example: "contrast-fix, yae-miko-genshin". | string |
strength | Prompt strength when using the initial image. Range from 0 to 1. | float |
ip_adapter_id | IP adapter ID. Supported IDs are "ip-adapter_sdxl", "ip-adapter_sd15", "ip-adapter-plus-face_sd15". | string |
ip_adapter_scale | Scale for the IP adapter. Should be between 0 and 1. | float |
ip_adapter_image | Valid image URL for the IP adapter. | url |
scheduler | Use this to set a scheduler. | scheduler |
seed | Used to reproduce results. The same seed will generate the same image again. Pass null for a random number. | integer |
webhook | Set a URL to receive a POST API call once image generation is complete. | url |
track_id | This ID is returned in the response to the webhook API call and is used to identify the request. | id |
clip_skip | Clip Skip. Minimum 1, Maximum 8. | integer |
base64 | Get the response as a base64 string. Pass init_image and mask_image as base64 strings to get a base64 response. Default is "no". | "yes"/"no" |
temp | Create a temporary image link valid for 24 hours. | "yes"/"no" |
Schedulers
This endpoint also supports schedulers. Use the "scheduler" parameter in the request body to pass a specific scheduler from the list below:
- DDPMScheduler
- DDIMScheduler
- PNDMScheduler
- LMSDiscreteScheduler
- EulerDiscreteScheduler
- EulerAncestralDiscreteScheduler
- DPMSolverMultistepScheduler
- HeunDiscreteScheduler
- KDPM2DiscreteScheduler
- DPMSolverSinglestepScheduler
- KDPM2AncestralDiscreteScheduler
- UniPCMultistepScheduler
- DDIMInverseScheduler
- DEISMultistepScheduler
- IPNDMScheduler
- KarrasVeScheduler
- ScoreSdeVeScheduler
- LCMScheduler
Example
Body
Body
{
"key": "",
"model_id": "your_model_id",
"prompt": "a cat sitting on a bench",
"negative_prompt": null,
"init_image": "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png",
"mask_image": "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png",
"width": "512",
"height": "512",
"samples": "1",
"steps": "21",
"safety_checker": "no",
"enhance_prompt": "yes",
"guidance_scale": 7.5,
"strength": 0.7,
"scheduler": "UniPCMultistepScheduler",
"lora_model": null,
"tomesd": "yes",
"use_karras_sigmas": "yes",
"vae": null,
"lora_strength": null,
"embeddings_model": null,
"seed": null,
"webhook": null,
"track_id": null
}
Request
- JS
- PHP
- NODE
- PYTHON
- JAVA
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"key": "",
"model_id": "your_model_id",
"prompt": "a cat sitting on a bench",
"negative_prompt": null,
"init_image": "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png",
"mask_image": "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png",
"width": "512",
"height": "512",
"samples": "1",
"steps": "21",
"safety_checker": "no",
"enhance_prompt": "yes",
"guidance_scale": 7.5,
"strength": 0.7,
"scheduler": "PNDMScheduler",
"lora_model": null,
"tomesd": "yes",
"use_karras_sigmas": "yes",
"vae": null,
"lora_strength": null,
"embeddings_model": null,
"seed": null,
"webhook": null,
"track_id": null
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://modelslab.com/api/v6/images/inpaint", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
<?php
$payload = [
"key" => "",
"model_id" => "your_model_id",
"prompt" => "a cat sitting on a bench",
"negative_prompt" => null,
"init_image" => "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png",
"mask_image" => "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png",
"width" => "512",
"height" => "512",
"samples" => "1",
"steps" => "21",
"safety_checker" => "no",
"enhance_prompt" => "yes",
"guidance_scale" => 7.5,
"strength" => 0.7,
"scheduler" => "PNDMScheduler",
"lora_model" => null,
"tomesd" => "yes",
"use_karras_sigmas" => "yes",
"vae" => null,
"lora_strength" => null,
"embeddings_model" => null,
"seed" => null,
"webhook" => null,
"track_id" => null
];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://modelslab.com/api/v6/images/inpaint',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://modelslab.com/api/v6/images/inpaint',
'headers': {
'Content-Type': 'application/json'
},
body: JSON.stringify({
"key": "",
"model_id": "your_model_id",
"prompt": "a cat sitting on a bench",
"negative_prompt": null,
"init_image": "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png",
"mask_image": "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png",
"width": "512",
"height": "512",
"samples": "1",
"steps": "21",
"safety_checker": "no",
"enhance_prompt": "yes",
"guidance_scale": 7.5,
"strength": 0.7,
"scheduler": "PNDMScheduler",
"lora_model": null,
"tomesd": "yes",
"use_karras_sigmas": "yes",
"vae": null,
"lora_strength": null,
"embeddings_model": null,
"seed": null,
"webhook": null,
"track_id": null
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "https://modelslab.com/api/v6/images/inpaint"
payload = json.dumps({
"key": "",
"prompt": "a cat sitting on a bench",
"negative_prompt": None,
"init_image": "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png",
"mask_image": "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png",
"width": "512",
"height": "512",
"samples": "1",
"steps": "21",
"safety_checker": "no",
"enhance_prompt": "yes",
"guidance_scale": 7.5,
"strength": 0.7,
"scheduler": "PNDMScheduler",
"seed": None,
"lora_model": null,
"tomesd": "yes",
"use_karras_sigmas": "yes",
"vae": None,
"lora_strength": None,
"embeddings_model": None,
"webhook": None,
"track_id": None
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"key\": \"\",\n \"model_id\": \"your_model_id\",\n \"prompt\": \"a cat sitting on a bench\",\n \"negative_prompt\": null,\n \"init_image\": \"https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png\",\n \"mask_image\": \"https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png\",\n \"width\": \"512\",\n \"height\": \"512\",\n \"samples\": \"1\",\n \"num_inference_steps\": \"21\",\n \"safety_checker\": \"no\",\n \"enhance_prompt\": \"yes\",\n \"guidance_scale\": 7.5,\n \"strength\": 0.7,\n \"scheduler\": \"PNDMScheduler\",\n \"lora_model\": \"lora_model_id\",\n \"tomesd\": \"yes\",\n \"use_karras_sigmas\": \"yes\",\n \"vae\": null,\n \"lora_strength\": null,\n \"embeddings_model\": null,\n \"seed\": null,\n \"webhook\": null,\n \"track_id\": null\n}");
Request request = new Request.Builder()
.url("https://modelslab.com/api/v6/images/inpaint")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
Response
Example Response
{
"status": "success",
"generationTime": 20.970642805099487,
"id": 13446970,
"output": [
"https://pub-8b49af329fae499aa563997f5d4068a4.r2.dev/generations/dc639bd6-d605-42c7-950e-48c531124d0d-0.png"
],
"meta": {
"prompt": " a cat sitting on a bench DSLR photography, sharp focus, Unreal Engine 5, Octane Render, Redshift, ((cinematic lighting)), f/1.4, ISO 200, 1/160s, 8K, RAW, unedited, symmetrical balance, in-frame",
"model_id": "midjourney-v4-painta",
"scheduler": "PNDMScheduler",
"safetychecker": "no",
"negative_prompt": " ((out of frame)), ((extra fingers)), mutated hands, ((poorly drawn hands)), ((poorly drawn face)), (((mutation))), (((deformed))), (((tiling))), ((naked)), ((tile)), ((fleshpile)), ((ugly)), (((abstract))), blurry, ((bad anatomy)), ((bad proportions)), ((extra limbs)), cloned face, glitchy, ((extra breasts)), ((double torso)), ((extra arms)), ((extra hands)), ((mangled fingers)), ((missing breasts)), (missing lips), ((ugly face)), ((fat)), ((extra legs))",
"W": 512,
"H": 512,
"guidance_scale": 7.5,
"init_image": "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png",
"mask_image": "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png",
"steps": 21,
"n_samples": 1,
"full_url": "no",
"upscale": "no",
"seed": 1343687916,
"outdir": "out",
"file_prefix": "dc639bd6-d605-42c7-950e-48c531124d0d"
}
}