Let's Enhance Image API
Encompasses operations with images.
Encompasses operations with images.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/lets-enhance-image-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Claid REST Image API
version: v1
description: Claid REST API v1 - the AI image editing, enhancement, generation and image-to-video API operated by Let's Enhance (Claid.ai). Covers synchronous and asynchronous image editing, batch processing, direct upload, AI edit by natural-language instruction, AI fashion models, AI background scene creation, image generation, image-to-video generation, and cloud storage connector management. Consolidated verbatim from the per-endpoint OpenAPI 3.1 definitions published in the Claid API reference at https://docs.claid.ai/.
servers:
- url: https://api.claid.ai
description: Claid API production
tags:
- name: Image
description: Encompasses operations with images.
paths:
/v1/scene/create:
post:
tags:
- Image
summary: Create Scene Api
description: "Specifies: \n- object to place on the scene and its properties (`object`)\n- scene properties (`scene`)\n- how many images will be created and where they will be stored (`output`)"
operationId: create_scene_api_v1_scene_create_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SceneCreateAPIIn'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Response_ScenePipelineResponseOut_'
'401':
description: Authorization is required.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'402':
description: No API calls left.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'403':
description: Not enough permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
security:
- OAuth2PasswordBearer:
- image_generation
- OAuth2PasswordBearer: []
/v1/image/ai-fashion-models:
post:
tags:
- Image
summary: Async Try On Generation Api
description: AI Fashion Models generation
operationId: async_try_on_generation_api_v1_image_ai_fashion_models_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TryOnAPIRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Response_TryOnAPIAcceptedResponse_'
'401':
description: Authorization is required.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'402':
description: No API calls left.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'403':
description: Not enough permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
security:
- OAuth2PasswordBearer:
- image_editing
- OAuth2PasswordBearer: []
/v1/image/ai-fashion-models/{processing_request_id}:
get:
tags:
- Image
summary: Async Try On Generation Async Status
description: AI Fashion Models generation result
operationId: async_try_on_generation_async_status_v1_image_ai_fashion_models__processing_request_id__get
parameters:
- required: true
schema:
title: Processing Request Id
type: integer
name: processing_request_id
in: path
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Response_TryOnAPIResultResponse_'
'401':
description: Authorization is required.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'403':
description: Not enough permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'404':
description: Web image not found.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- OAuth2PasswordBearer:
- image_editing
/v1/image/ai-edit:
post:
tags:
- Image
summary: Async Ai Edit Generation Api
description: AI Edit
operationId: async_ai_edit_generation_api_v1_image_ai_edit_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AiEditAPIRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Response_AiEditAcceptedResponse_'
'401':
description: Authorization is required.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'402':
description: No API calls left.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'403':
description: Not enough permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
security:
- OAuth2PasswordBearer:
- image_editing
- OAuth2PasswordBearer: []
/v1/image/ai-edit/{ai_edit_id}:
get:
tags:
- Image
summary: Async Ai Edit Generation Api Status
description: Get AI Edit generation result
operationId: async_ai_edit_generation_api_status_v1_image_ai_edit__ai_edit_id__get
parameters:
- required: true
schema:
title: Ai Edit Id
type: integer
name: ai_edit_id
in: path
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Response_AiEditResultResponse_'
'401':
description: Authorization is required.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'403':
description: Not enough permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'404':
description: Web image not found.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- OAuth2PasswordBearer:
- image_editing
/v1/image/edit:
post:
tags:
- Image
summary: Image Edit
description: "Specifies: \n- what image will be processed (`input`)\n- how it will be processed (`operations`)\n- where it will be stored (`output`)"
operationId: image_edit_v1_image_edit_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EditRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Response_EditResponse_'
'401':
description: Authorization is required.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'402':
description: No API calls left.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'403':
description: Not enough permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
security:
- OAuth2PasswordBearer: []
- OAuth2PasswordBearer:
- image_editing
/v1/image/edit/async:
post:
tags:
- Image
summary: Async Image Edit
description: "Specifies: \n- what image will be processed (`input`)\n- how it will be processed (`operations`)\n- where it will be stored (`output`)"
operationId: async_image_edit_v1_image_edit_async_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncEditRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Response_AsyncAcceptedResponse_'
'401':
description: Authorization is required.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'402':
description: No API calls left.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'403':
description: Not enough permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
security:
- OAuth2PasswordBearer: []
- OAuth2PasswordBearer:
- image_editing
/v1/image/edit/async/{task_id}:
get:
tags:
- Image
summary: Async Image Edit Result
operationId: async_image_edit_result_v1_image_edit_async__task_id__get
parameters:
- required: true
schema:
title: Task Id
type: integer
name: task_id
in: path
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Response_AsyncResultResponse_'
'401':
description: Authorization is required.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'403':
description: Not enough permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'404':
description: Batch image edit pipeline not found.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
security:
- OAuth2PasswordBearer:
- image_editing
/v1/image/edit/batch:
post:
tags:
- Image
summary: Process Batch Image Edit
description: "Specifies: \n- what images will be processed (`input`)\n- how they will be processed (`operations`)\n- where they will be stored (`output`)"
operationId: process_batch_image_edit_v1_image_edit_batch_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BatchEditRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Response_BatchAcceptedResponse_'
'401':
description: Authorization is required.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'402':
description: No API calls left.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'403':
description: Not enough permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
security:
- OAuth2PasswordBearer: []
- OAuth2PasswordBearer:
- image_editing
/v1/image/edit/batch/{task_id}:
get:
tags:
- Image
summary: Image Edit Batch Async Results
operationId: image_edit_batch_async_results_v1_image_edit_batch__task_id__get
parameters:
- required: true
schema:
title: Task Id
type: integer
name: task_id
in: path
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Response_BatchResultResponse_'
'401':
description: Authorization is required.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'403':
description: Not enough permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'404':
description: Batch image edit pipeline not found.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
security:
- OAuth2PasswordBearer:
- image_editing
/v1/image/edit/upload:
post:
tags:
- Image
summary: Image Edit Upload
description: "Specifies: \n- how the image will be processed (`operations`)\n- where it will be stored (`output`)"
operationId: image_edit_upload_v1_image_edit_upload_post
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/Body_image_edit_upload_v1_image_edit_upload_post'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Response_EditResponse_'
'401':
description: Authorization is required.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'402':
description: No API calls left.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'403':
description: Not enough permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
security:
- OAuth2PasswordBearer: []
- OAuth2PasswordBearer:
- image_editing
/v1/image/generate:
post:
tags:
- Image
summary: Image Generate
description: "Specifies: \n- text prompt for image generation (`input`)\n- image generation options (`options`)\n- where results will be stored (`output`)"
operationId: image_generate_v1_image_generate_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Response_GenerateResponse_'
'401':
description: Authorization is required.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'402':
description: No API calls left.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'403':
description: Not enough permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
'429':
description: Too many requests.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpErrorDetails'
security:
- OAuth2PasswordBearer: []
- OAuth2PasswordBearer:
- image_editing
components:
schemas:
EditRequest:
title: EditRequest
required:
- input
- operations
type: object
properties:
input:
title: Input URL
maxLength: 4096
minLength: 1
type: string
description: URL of the input image. Should be from 1 to 512 characters. Image must be accessible by our system.
format: uri
operations:
title: Operations
allOf:
- $ref: '#/components/schemas/ImageOperations'
description: Customize the editing workflow so that the output images meet your requirements.
output:
title: Output
anyOf:
- $ref: '#/components/schemas/ImageOutputOptions'
- type: string
minLength: 1
maxLength: 4096
format: uri
description: Customize the result output.
default:
format: jpeg
additionalProperties: false
AdjustmentsOptions:
title: adjustments options
type: object
properties:
hdr:
title: Hdr
anyOf:
- type: integer
description: HDR effect intensity.
minimum: 0
maximum: 100
- $ref: '#/components/schemas/HdrOptions'
description: Balances out colors and lighting. Allows to turn on `stitching` for stitched 360 photos.
default: 0
exposure:
title: Exposure
maximum: 100
minimum: -100
type: integer
description: Decrease (negative integer) or increase (positive integer) exposure.
default: 0
saturation:
title: Saturation
maximum: 100
minimum: -100
type: integer
description: Decrease (negative integer) or increase (positive integer) saturation.
default: 0
contrast:
title: Contrast
maximum: 100
minimum: -100
type: integer
description: Decrease (negative integer) or increase (positive integer) contrast.
default: 0
sharpness:
title: Sharpness
maximum: 100
minimum: 0
type: integer
description: Increase sharpness.
default: 0
additionalProperties: false
AiEditRequestOptionsObject:
title: AiEditRequestOptionsObject
required:
- prompt
type: object
properties:
model:
allOf:
- $ref: '#/components/schemas/AIEditModelAPI'
description: Model to be used for generation.
default: v2
prompt:
title: Prompt
maxLength: 5000
minLength: 3
type: string
description: Prompt for the generation.
aspect_ratio:
allOf:
- $ref: '#/components/schemas/AiEditAspectRatio'
description: Aspect ratio of the generated images.
inference_steps:
title: Inference Steps
maximum: 50
minimum: 1
type: integer
description: Number of inference steps.
guidance_scale:
title: Guidance Scale
maximum: 10
minimum: 1
type: number
description: Guidance scale for the generation.
additionalProperties: false
UpscaleEnum:
title: Upscale
enum:
- smart_enhance
- smart_resize
- faces
- digital_art
- photo
type: string
description: "Upscales the image with specified type of image upscaling neural network. \n\n| Value | Description |\n| --- | --- |\n| `null` | DEFAULT. Interpolation. Used when output image resolution is smaller than the input resolution.|\n| `\"smart_enhance\"` | Used for small low quality product, real estate and food images.|\n| `\"smart_resize\"` | Used for high quality images.|\n| `\"faces\"` | Used for images containing persons.|\n| `\"digital_art\"` | Used for drawings, illustrations, paintings, cartoons, anime, etc.|\n| `\"photo\"` | Used for images taken by mobile devices or digital camera of people, nature, architecture, etc.|"
GenerativeOptions:
title: generative transformations options
type: object
properties:
style_transfer:
title: Style Transfer
allOf:
- $ref: '#/components/schemas/StyleTransferOptions'
description: Apply style from a reference image.
additionalProperties: false
TryOnAPIAspectRatio:
title: TryOnAPIAspectRatio
enum:
- '1:1'
- '2:3'
- '3:2'
- '3:4'
- '4:3'
- '9:16'
- '16:9'
- '21:9'
- '4:5'
- '5:4'
type: string
description: An enumeration.
FitCropEnum:
title: Crop
enum:
- center
- smart
type: string
description: "Selects the crop mode: \n\n| Value | Description |\n| --- | --- |\n| `\"center\"` | Cropping relative to the center of the image.|\n| `\"smart\"` | Content aware image cropping.|\n"
BackgroundBlurLevelEnum:
title: Background blur strength level
enum:
- low
- medium
- high
type: string
description: "Selects the level of blur strength: \n\n| Value | Description |\n| --- | --- |\n| `\"low\"` | Low blur strength.|\n| `\"medium\"` | Medium blur strength.|\n| `\"high\"` | High blur strength.|\n"
SceneCreateAPISceneTemplateIn:
title: Template-based scene
required:
- template_url
- view
type: object
properties:
model:
title: Scene creation model
allOf:
- $ref: '#/components/schemas/SceneCreateModelEnum'
description: Selects the scene creation model. By default, the model is 'v1'.
default: v1
template_mode:
title: Template mode
allOf:
- $ref: '#/components/schemas/TemplateModeEnum'
description: 'Selects how closely the result should match the template.
| Value | Description |
| --- | --- |
| `"transform"` | Template is transformed according to the prompt and color.|
| `"adjust"` | Template is slightly adjusted to the product and prompt.|| `"lock"` | Template is preserved with maximum detail.|'
default: transform
template_url:
title: Template image file URL
maxLength: 4096
minLength: 1
type: string
description: URL of the input image. Should be from 1 to 4096 characters. Image must be accessible by our system. Is optional, if `prompt` is specified.
format: uri
color:
title: Color
type: string
description: 'Color as a hexadecimal. Examples: `"#ffffff"`, `"#000000"`.'
view:
title: Template viewpoint
allOf:
- $ref: '#/components/schemas/TemplateViewEnum'
description: 'The position of the viewpoint relative to the scene
| Value | Description |
| --- | --- |
| `"top"` | The view is top-down, looking down on the scene from above.|
| `"front"` | The view is horizontal, looking directly on the scene.|'
prompt:
title: Text prompt for scene creation
anyOf:
- type: string
minLength: 3
maxLength: 2048
- $ref: '#/components/schemas/ScenePromptAdvancedIn'
description: 'Text prompt that will be used to create the scene. Should be from 3 to 2048 characters. '
negative_prompt:
title: Negative text prompt for scene creation
maxLength: 2048
minLength: 3
type: string
description: 'Text prompt that will exclude things from the scene. Should be from 3 to 2048 characters. '
steps:
title: Number of inference steps
exclusiveMaximum: 50
minimum: 1
type: integer
description: The more inference steps you use, the better the results, but the more steps, the longer it takes to generate. If you want faster results, you can use fewer steps. If you want higher-quality results, you can use more steps. By default each `template_mode` has an optimal `steps` value.
additionalProperties: false
TryOnAPIRequest:
title: TryOnAPIRequest
required:
- input
- options
type: object
properties:
output:
title: Output
anyOf:
- $ref: '#/components/schemas/TryOnAPIRequestOutputObject'
- type: string
minLength: 1
maxLength: 4096
format: uri
description: Customize output format, destination and number of images.
default:
number_of_images: 1
format: png
input:
title: Input
allOf:
- $ref: '#/components/schemas/TryOnAPIRequestInputOptions'
description: Input model and clothing images for the generation.
options:
title: Options
allOf:
- $ref: '#/components/schemas/TryOnAPIRequestOptionsObject'
description: Customize the generation.
additionalProperties: false
BackgroundEnum:
title: Transparent
enum:
- transparent
type: string
description: Makes the background of the image transparent, only works for `"png"` output format.
AvifCompressionEnum:
title: AVIF Compression
enum:
- lossy
- lossless
type: string
description: "Selects the AVIF compression type: \n\n| Value | Description |\n| --- | --- |\n| `\"lossy\"` | Lossy compression allows you to reduce the size of the image significantly in exchange for some loss of data, reducing the quality of an image.|\n| `\"lossless\"` | Lossless compression allows you to save maximum image details in exchange for a significantly increased file size.|\n"
BatchEditInputOptions:
title: image input options
required:
- source
type: object
properties:
source:
title: Input folder URL
maxLength: 4096
minLength: 1
type: string
description: URL of the input file or folder. Should be from 1 to 512 characters. Must be accessible by our system.
format: uri
recursive:
title: Recursive
type: boolean
description: 'If `true`, recursively processes all images in subfolders as well, works only if source is folder. '
default: false
additionalProperties: false
AiEditOutputImageObject:
title: AiEditOutputImageObject
type: object
properties:
ext:
title: Ext
type: string
description: File extension.
mps:
title: Mps
type: number
description: Megapixel count
mime:
title: Mime
type: string
description: MIME type (also known as 'media type')
format:
title: Format
type: string
description: File format.
width:
title: Width
type: integer
description: Image width in pixels
height:
title: Height
type: integer
description: Image height in pixels
tmp_url:
title: Tmp Url
type: string
description: Temporal URL of a processed image
object_key:
title: Object Key
type: string
description: Path to a processed image in a bucket
object_bucket:
title: Object Bucket
type: string
description: Bucket name
object_uri:
title: Object Uri
type: string
description: URI of a processed image in a bucket
claid_storage_uri:
title: Claid Storage Uri
type: string
description: URI of a processed image in a storage
WebpLossyCompressionOptions:
title: WebpLossyCompressionOptions
required:
- type
type: object
properties:
typ
# --- truncated at 32 KB (110 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lets-enhance/refs/heads/main/openapi/lets-enhance-image-api-openapi.yml