{
  "openapi": "3.0.1",
  "info": {
    "title": "Batch Photo Upscaler and Restoration",
    "description": "Batch upscale authorized product photos with bundled CPU FSRCNN super-resolution or non-neural Lanczos. Set a pixel budget and denoise strength; get per-image dimensions, model versions, download links and error manifests. No external AI API.",
    "version": "0.1",
    "x-build-id": "YMoeTWYbIAdiabvb3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation-lab~batch-photo-upscale-restore/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation-lab-batch-photo-upscale-restore",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/automation-lab~batch-photo-upscale-restore/runs": {
      "post": {
        "operationId": "runs-sync-automation-lab-batch-photo-upscale-restore",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/automation-lab~batch-photo-upscale-restore/run-sync": {
      "post": {
        "operationId": "run-sync-automation-lab-batch-photo-upscale-restore",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "imageUrls": {
            "title": "Image URLs",
            "type": "array",
            "description": "Direct public HTTP(S) JPEG, PNG or WebP URLs, not web pages. Combined URLs and keys: 1–100 entries, max 10 MB and 1 MP per image. Local/private addresses and custom ports are rejected, including redirects. URLs are processed first. Duplicates are processed and billed separately.",
            "items": {
              "type": "string"
            }
          },
          "imageKeys": {
            "title": "Uploaded image keys",
            "type": "array",
            "description": "Binary image keys in inputStoreId, or the current run default key-value store when omitted. Same limits as URLs. Keys follow all URLs; INPUT and upscaled- prefixed keys are reserved. No external model account needed.",
            "items": {
              "type": "string"
            }
          },
          "inputStoreId": {
            "title": "Upload store ID",
            "type": "string",
            "description": "Optional Apify key-value store containing your binary image uploads. Select the store to grant this run read-only access under limited permissions; no write permission is requested. Used only for imageKeys. Omit to read the run default store."
          },
          "targetPixels": {
            "title": "Target pixel budget",
            "minimum": 10000,
            "maximum": 2000000,
            "type": "integer",
            "description": "Maximum output width × height, 10000–2000000. Aspect ratio preserved with integer rounding. Must exceed each original pixel count and be no more than 16 times it (up to 4x dimensions). No silent downscaling. Output side limit 8192 pixels; incompatible images get free error rows.",
            "default": 1000000
          },
          "mode": {
            "title": "Upscaling method",
            "enum": [
              "fsrcnn",
              "lanczos"
            ],
            "type": "string",
            "description": "fsrcnn uses a bundled Apache-2.0 regression CNN (no GAN or diffusion), with native 2x/4x inference then resizing to targetPixels. lanczos uses ordinary non-neural interpolation. Neither recovers lost text or authentic detail. Both honor denoiseStrength.",
            "default": "fsrcnn"
          },
          "denoiseStrength": {
            "title": "Denoise strength",
            "minimum": 0,
            "maximum": 1,
            "type": "number",
            "description": "0 disables filtering (best for product labels). 0–1 controls an OpenCV non-local-means pre-filter, h=10×strength, before either method. Strong filtering can remove real detail; not face or scratch restoration.",
            "default": 0
          },
          "outputFormat": {
            "title": "Output format",
            "enum": [
              "png",
              "jpeg",
              "webp"
            ],
            "type": "string",
            "description": "PNG is lossless. JPEG/WebP use quality 92. PNG/WebP preserve alpha; JPEG composites onto white. Single-frame images only. Orientation applied and metadata stripped; keep originals and provenance separately.",
            "default": "png"
          },
          "maxImages": {
            "title": "Maximum images",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Global number of entries attempted, including failed entries and duplicates, from URLs followed by keys. First N only; later entries are not processed. Range 1–100; zero/unlimited unsupported. Batch is sequential.",
            "default": 100
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}