{
  "openapi": "3.0.1",
  "info": {
    "title": "EU AI Act Image Labeler (Official Icons)",
    "description": "Label AI generated and AI modified images with official EU AI Act icons. Stamp AI GENERATED, AI MODIFIED, or compact AI into JPEG, PNG, and WebP so the mark stays after download. Paste URLs or upload; Auto picks icon, colour, and corner. For newsrooms, marketers, and platforms.",
    "version": "1.0",
    "x-build-id": "34i0eVw2Rii6cp9Ad"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rainminer~eu-ai-image-labeler/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rainminer-eu-ai-image-labeler",
        "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/rainminer~eu-ai-image-labeler/runs": {
      "post": {
        "operationId": "runs-sync-rainminer-eu-ai-image-labeler",
        "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/rainminer~eu-ai-image-labeler/run-sync": {
      "post": {
        "operationId": "run-sync-rainminer-eu-ai-image-labeler",
        "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",
        "required": [
          "imageUrls"
        ],
        "properties": {
          "imageUrls": {
            "title": "Images",
            "type": "array",
            "description": "Image URLs or uploads (JPEG, PNG, WebP, GIF, AVIF, TIFF). Each item produces one labeled file. Paste a public URL or upload a file."
          },
          "labelType": {
            "title": "EU label",
            "enum": [
              "auto",
              "generated",
              "modified",
              "basic"
            ],
            "type": "string",
            "description": "Which official EU icon to embed. Auto (default) is AI-powered: it recommends generated, modified, or the compact basic mark from the pixels — a visual hint, not a legal classification. Fully AI-generated: the whole image is AI with no human-created pixels (apart from prompting). Partially AI-modified: a real photo/artwork was altered with AI (face swap, virtual staging, object insert). Basic AI: AI was involved and you add your own text, or you need a compact mark for artistic/satirical works.",
            "default": "auto"
          },
          "position": {
            "title": "Placement",
            "enum": [
              "auto",
              "bottom-left",
              "bottom-right",
              "top-left",
              "top-right"
            ],
            "type": "string",
            "description": "Corner where the icon is burned in. Auto lets AI-powered Auto pick the emptiest corner so the mark is less likely to cover faces or captions. The Code of Practice requires the mark to be clearly perceivable at first exposure, with no intervening overlays, and embedded in the pixels so it remains visible after download or reshare. Bottom-left is used when Auto is off or cannot choose.",
            "default": "auto"
          },
          "color": {
            "title": "Icon colour",
            "enum": [
              "auto",
              "black",
              "white",
              "black-50",
              "white-50"
            ],
            "type": "string",
            "description": "Official colour treatments: solid black, solid white, or the 50% transparency variants. With EU label Auto, AI-powered Auto may pick any official treatment including 50% for artistic-looking work. With a manual label, Auto samples the destination corner and picks solid black or white for contrast — it never uses 50% transparency, because a faint mark is less likely to meet the 'clear and distinguishable' test in Article 50(5).",
            "default": "auto"
          },
          "sizePercent": {
            "title": "Label width (% of image)",
            "minimum": 5,
            "maximum": 45,
            "type": "integer",
            "description": "Width of the EU icon as a percentage of the image width (generated/modified pills). The square basic AI mark uses half of this percentage so it matches the height of the text pills. Default 20% is readable on typical social and editorial photos. Artistic mode uses a smaller default unless you set this.",
            "default": 20
          },
          "paddingPercent": {
            "title": "Edge padding (% of shorter side)",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "Gap between the icon and the image edge, as a percentage of the shorter image side.",
            "default": 3
          },
          "artisticMode": {
            "title": "Artistic / satirical work",
            "type": "boolean",
            "description": "For evidently artistic, creative, satirical, fictional or analogous works, Article 50(4) limits disclosure to a manner that does not hamper enjoyment of the work. When enabled, the Actor uses the 50% transparency variant and a smaller default size. You still must disclose that AI was used.",
            "default": false
          },
          "outputFormat": {
            "title": "Output format",
            "enum": [
              "png",
              "jpeg",
              "webp"
            ],
            "type": "string",
            "description": "File format for the labeled image stored in the Key-Value Store. PNG keeps the icon's transparency on the canvas; JPEG flattens on white.",
            "default": "png"
          },
          "jpegQuality": {
            "title": "JPEG / WebP quality",
            "minimum": 40,
            "maximum": 100,
            "type": "integer",
            "description": "Quality 1–100 used when output format is JPEG or WebP.",
            "default": 90
          },
          "maxItems": {
            "title": "Max images",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of images to label in this run.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy used only when fetching remote image URLs. Leave off unless those hosts block datacenter IPs. Uploads already on Apify storage do not use this proxy."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}