{
  "service": "htmlcsstoimage",
  "displayName": "HTML/CSS to Image",
  "categories": [
    "Developer Tools",
    "Design & Media"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "APIKey",
      "description": "HTML/CSS to Image API Key used as the HTTP Basic password.",
      "extraFields": [
        {
          "key": "userId",
          "label": "User ID",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "UserID",
          "description": "HTML/CSS to Image User ID used as the HTTP Basic username."
        }
      ]
    }
  ],
  "homepageUrl": "https://htmlcsstoimage.com",
  "actions": [
    {
      "id": "htmlcsstoimage.create_batch_images",
      "service": "htmlcsstoimage",
      "name": "create_batch_images",
      "description": "Create up to 25 HTML/CSS to Image images in one batch using shared default options and per-image variations.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "default_options": {
            "type": "object",
            "properties": {
              "css": {
                "type": "string",
                "description": "CSS to render with HTML snippets or inject into URL screenshots."
              },
              "google_fonts": {
                "type": "string",
                "description": "Google Fonts to load, such as Roboto or multiple font families separated by a pipe."
              },
              "selector": {
                "type": "string",
                "minLength": 1,
                "description": "A CSS selector for an element to crop the generated image to."
              },
              "ms_delay": {
                "type": "integer",
                "minimum": 0,
                "description": "The fixed delay in milliseconds before generating the image."
              },
              "max_wait_ms": {
                "type": "integer",
                "minimum": 500,
                "maximum": 10000,
                "description": "The maximum time in milliseconds to wait before taking the screenshot."
              },
              "device_scale": {
                "type": "number",
                "minimum": 0.1,
                "maximum": 3,
                "description": "The Chrome device scale factor. Higher values increase resolution and file size."
              },
              "render_when_ready": {
                "type": "boolean",
                "description": "Whether page JavaScript must call ScreenshotReady() before the image is generated."
              },
              "full_screen": {
                "type": "boolean",
                "description": "Whether to generate an image of the entire page height."
              },
              "block_consent_banners": {
                "type": "boolean",
                "description": "Whether to automatically hide common cookie consent banners and popups."
              },
              "viewport_width": {
                "type": "integer",
                "minimum": 1,
                "description": "The Chrome viewport width in pixels. Set with viewport_height to disable automatic cropping."
              },
              "viewport_height": {
                "type": "integer",
                "minimum": 1,
                "description": "The Chrome viewport height in pixels. Set with viewport_width to disable automatic cropping."
              },
              "viewport_mobile": {
                "type": "boolean",
                "description": "Whether Chrome should emulate a mobile viewport."
              },
              "viewport_landscape": {
                "type": "boolean",
                "description": "Whether Chrome should emulate a landscape mobile viewport."
              },
              "viewport_touch": {
                "type": "boolean",
                "description": "Whether Chrome should emulate touch input support."
              },
              "color_scheme": {
                "type": "string",
                "enum": [
                  "light",
                  "dark"
                ],
                "description": "The Chrome color scheme to use while rendering websites that support prefers-color-scheme."
              },
              "timezone": {
                "type": "string",
                "minLength": 1,
                "description": "The IANA timezone identifier used while rendering the image."
              },
              "disable_twemoji": {
                "type": "boolean",
                "description": "Whether to use native emoji fonts instead of Twemoji."
              },
              "proxy_id": {
                "type": "string",
                "minLength": 1,
                "description": "The configured HTML/CSS to Image dashboard proxy ID for outbound requests."
              }
            },
            "additionalProperties": false,
            "description": "Default image creation options applied to every batch variation."
          },
          "variations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "html": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The HTML snippet or complete webpage markup to render."
                },
                "url": {
                  "type": "string",
                  "description": "The public webpage URL to screenshot.",
                  "format": "uri"
                },
                "css": {
                  "type": "string",
                  "description": "CSS to render with HTML snippets or inject into URL screenshots."
                },
                "google_fonts": {
                  "type": "string",
                  "description": "Google Fonts to load, such as Roboto or multiple font families separated by a pipe."
                },
                "selector": {
                  "type": "string",
                  "minLength": 1,
                  "description": "A CSS selector for an element to crop the generated image to."
                },
                "ms_delay": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The fixed delay in milliseconds before generating the image."
                },
                "max_wait_ms": {
                  "type": "integer",
                  "minimum": 500,
                  "maximum": 10000,
                  "description": "The maximum time in milliseconds to wait before taking the screenshot."
                },
                "device_scale": {
                  "type": "number",
                  "minimum": 0.1,
                  "maximum": 3,
                  "description": "The Chrome device scale factor. Higher values increase resolution and file size."
                },
                "render_when_ready": {
                  "type": "boolean",
                  "description": "Whether page JavaScript must call ScreenshotReady() before the image is generated."
                },
                "full_screen": {
                  "type": "boolean",
                  "description": "Whether to generate an image of the entire page height."
                },
                "block_consent_banners": {
                  "type": "boolean",
                  "description": "Whether to automatically hide common cookie consent banners and popups."
                },
                "viewport_width": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Chrome viewport width in pixels. Set with viewport_height to disable automatic cropping."
                },
                "viewport_height": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Chrome viewport height in pixels. Set with viewport_width to disable automatic cropping."
                },
                "viewport_mobile": {
                  "type": "boolean",
                  "description": "Whether Chrome should emulate a mobile viewport."
                },
                "viewport_landscape": {
                  "type": "boolean",
                  "description": "Whether Chrome should emulate a landscape mobile viewport."
                },
                "viewport_touch": {
                  "type": "boolean",
                  "description": "Whether Chrome should emulate touch input support."
                },
                "color_scheme": {
                  "type": "string",
                  "enum": [
                    "light",
                    "dark"
                  ],
                  "description": "The Chrome color scheme to use while rendering websites that support prefers-color-scheme."
                },
                "timezone": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The IANA timezone identifier used while rendering the image."
                },
                "disable_twemoji": {
                  "type": "boolean",
                  "description": "Whether to use native emoji fonts instead of Twemoji."
                },
                "proxy_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The configured HTML/CSS to Image dashboard proxy ID for outbound requests."
                }
              },
              "additionalProperties": false,
              "description": "One image variation for batch creation. Provide exactly one of html or url."
            },
            "description": "The image variations to create, up to 25.",
            "minItems": 1,
            "maxItems": 25
          }
        },
        "additionalProperties": false,
        "required": [
          "variations"
        ],
        "description": "Input parameters for creating a batch of images."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "images": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The generated image identifier."
                },
                "url": {
                  "type": "string",
                  "description": "The generated image URL.",
                  "format": "uri"
                }
              },
              "additionalProperties": false,
              "description": "One image created by HTML/CSS to Image."
            },
            "description": "The images created by the batch request."
          }
        },
        "additionalProperties": false,
        "required": [
          "images"
        ],
        "description": "The batch image creation result."
      }
    },
    {
      "id": "htmlcsstoimage.create_image",
      "service": "htmlcsstoimage",
      "name": "create_image",
      "description": "Create an image from either raw HTML/CSS or a public webpage URL with HTML/CSS to Image.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "html": {
            "type": "string",
            "minLength": 1,
            "description": "The HTML snippet or complete webpage markup to render."
          },
          "url": {
            "type": "string",
            "description": "The public webpage URL to screenshot. This overrides html upstream.",
            "format": "uri"
          },
          "css": {
            "type": "string",
            "description": "CSS to render with HTML snippets or inject into URL screenshots."
          },
          "google_fonts": {
            "type": "string",
            "description": "Google Fonts to load, such as Roboto or multiple font families separated by a pipe."
          },
          "selector": {
            "type": "string",
            "minLength": 1,
            "description": "A CSS selector for an element to crop the generated image to."
          },
          "ms_delay": {
            "type": "integer",
            "minimum": 0,
            "description": "The fixed delay in milliseconds before generating the image."
          },
          "max_wait_ms": {
            "type": "integer",
            "minimum": 500,
            "maximum": 10000,
            "description": "The maximum time in milliseconds to wait before taking the screenshot."
          },
          "device_scale": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 3,
            "description": "The Chrome device scale factor. Higher values increase resolution and file size."
          },
          "render_when_ready": {
            "type": "boolean",
            "description": "Whether page JavaScript must call ScreenshotReady() before the image is generated."
          },
          "full_screen": {
            "type": "boolean",
            "description": "Whether to generate an image of the entire page height."
          },
          "block_consent_banners": {
            "type": "boolean",
            "description": "Whether to automatically hide common cookie consent banners and popups."
          },
          "viewport_width": {
            "type": "integer",
            "minimum": 1,
            "description": "The Chrome viewport width in pixels. Set with viewport_height to disable automatic cropping."
          },
          "viewport_height": {
            "type": "integer",
            "minimum": 1,
            "description": "The Chrome viewport height in pixels. Set with viewport_width to disable automatic cropping."
          },
          "viewport_mobile": {
            "type": "boolean",
            "description": "Whether Chrome should emulate a mobile viewport."
          },
          "viewport_landscape": {
            "type": "boolean",
            "description": "Whether Chrome should emulate a landscape mobile viewport."
          },
          "viewport_touch": {
            "type": "boolean",
            "description": "Whether Chrome should emulate touch input support."
          },
          "color_scheme": {
            "type": "string",
            "enum": [
              "light",
              "dark"
            ],
            "description": "The Chrome color scheme to use while rendering websites that support prefers-color-scheme."
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "description": "The IANA timezone identifier used while rendering the image."
          },
          "disable_twemoji": {
            "type": "boolean",
            "description": "Whether to use native emoji fonts instead of Twemoji."
          },
          "proxy_id": {
            "type": "string",
            "minLength": 1,
            "description": "The configured HTML/CSS to Image dashboard proxy ID for outbound requests."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for creating one image with HTML/CSS to Image. Provide exactly one of html or url."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The generated image identifier."
          },
          "url": {
            "type": "string",
            "description": "The generated image URL.",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "url"
        ],
        "description": "The generated image result."
      }
    },
    {
      "id": "htmlcsstoimage.delete_batch_images",
      "service": "htmlcsstoimage",
      "name": "delete_batch_images",
      "description": "Delete multiple generated images from HTML/CSS to Image in one request.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One image identifier."
            },
            "description": "The image identifiers to delete.",
            "minItems": 1,
            "maxItems": 25
          }
        },
        "additionalProperties": false,
        "required": [
          "ids"
        ],
        "description": "Input parameters for deleting multiple images."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "accepted": {
            "type": "boolean",
            "description": "Whether HTML/CSS to Image accepted the batch delete request."
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "One image ID."
            },
            "description": "The image identifiers submitted for deletion."
          }
        },
        "additionalProperties": false,
        "required": [
          "accepted",
          "ids"
        ],
        "description": "The batch delete result."
      }
    },
    {
      "id": "htmlcsstoimage.delete_image",
      "service": "htmlcsstoimage",
      "name": "delete_image",
      "description": "Delete one generated image from HTML/CSS to Image and clear its CDN cache.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_id": {
            "type": "string",
            "minLength": 1,
            "description": "The image identifier to delete."
          }
        },
        "additionalProperties": false,
        "required": [
          "image_id"
        ],
        "description": "Input parameters for deleting one image."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "accepted": {
            "type": "boolean",
            "description": "Whether HTML/CSS to Image accepted the delete request."
          },
          "image_id": {
            "type": "string",
            "description": "The image identifier that was deleted."
          }
        },
        "additionalProperties": false,
        "required": [
          "accepted",
          "image_id"
        ],
        "description": "The delete image result."
      }
    },
    {
      "id": "htmlcsstoimage.get_usage",
      "service": "htmlcsstoimage",
      "name": "get_usage",
      "description": "Retrieve HTML/CSS to Image usage counts by hour, day, month, and billing period.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input parameters for retrieving account usage."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "hour": {
                "type": "object",
                "additionalProperties": {
                  "type": "integer",
                  "description": "The number of images created during this interval."
                },
                "description": "Usage counts keyed by ISO timestamp for one rollup interval."
              },
              "day": {
                "type": "object",
                "additionalProperties": {
                  "type": "integer",
                  "description": "The number of images created during this interval."
                },
                "description": "Usage counts keyed by ISO timestamp for one rollup interval."
              },
              "month": {
                "type": "object",
                "additionalProperties": {
                  "type": "integer",
                  "description": "The number of images created during this interval."
                },
                "description": "Usage counts keyed by ISO timestamp for one rollup interval."
              }
            },
            "additionalProperties": false,
            "description": "Usage counts grouped by rollup interval."
          },
          "per_billing_period": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "total_images": {
                  "type": "integer",
                  "description": "The number of images created in this billing period."
                },
                "start": {
                  "type": "string",
                  "description": "The billing period start timestamp."
                },
                "end": {
                  "type": "string",
                  "description": "The billing period end timestamp."
                }
              },
              "additionalProperties": false,
              "description": "One billing-period usage summary returned by HTML/CSS to Image."
            },
            "description": "Usage summaries for recent billing periods."
          }
        },
        "additionalProperties": false,
        "required": [
          "data",
          "per_billing_period"
        ],
        "description": "The account usage returned by HTML/CSS to Image."
      }
    }
  ]
}
