Skip to content

Annotate Image

When putting together a support article that includes images, annotating those images with text, shapes, arrows etc. to call out specific parts of the image is a common use case that allows you can speak to specific parts of a bigger context.

Types of Image Annotation

We currently support the following types of annotation:

Rectangle annotation

Draw a rectangle on an image.

OptionDefault valueDescription
offset10Add space around the element (think CSS padding) e.g 10
color#dc2626The border color of the rectangle e.g green, #800080
width4The border width of the rectangle e.g 4
selectors-An array of selector types (CSS/ARIA/XPath)
groupOfSelectors-Annotate a group of selectors.
Annotate with a rectangle using selectors
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "rectangle",
          "selectors": [
              "#s2id_autogen5"
          ]
      }
  ]
}'
Override default color of rectangle using color
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "rectangle",
          "color": "green",
          "selectors": [
              "#s2id_autogen5"
          ]
      }
  ]
}'
Add inner space around the rectangle using offset
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "rectangle",
          "color": "green",
          "offset": 15,
          "selectors": [
              "#s2id_autogen5"
          ]
      }
  ]
}'
Annotate with multiple rectangles
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "rectangle",
          "selectors": [
              "#s2id_autogen5"
          ]
      },
      {
          "type": "rectangle",
          "selectors": [
              "#s2id_autogen3"
          ]
      }
  ]
}'
Compute rectangle based on unrelated selectors using groupOfSelectors
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "rectangle",
          "groupOfSelectors": [
              [
                  "#s2id_autogen5"
              ],
              [
                  "#s2id_autogen3"
              ]
          ]
      }
  ]
}'

Arrow annotation

Draw an arrow on an image.

OptionDefault valueDescription
offset10Add space around the element (think CSS padding) e.g 10
color#dc2626The border color of the arrow e.g green, #800080
width4The border width of the arrow e.g 4
selectors-An array of selector types (CSS/ARIA/XPath)
groupOfSelectors-Annotate a group of selectors.
lineTypecurvedPossible values: curved or straight.
Annotate with an arrow using selectors
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
    "url": "https://demo.baremetrics.com/stats/mrr",
    "elementSelector": [
        "section.main-graph.mrr"
    ],
    "responseType": "image",
    "deviceScaleFactor": 1,
    "margin": 10,
    "backgroundColor": "purple",
    "borderRadius": 25,
    "annotate": [
        {
            "type": "arrow",
            "selectors": [
                "#s2id_autogen5"
            ]
        }
    ]
}'
Override default color of arrow using color
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "arrow",
          "color": "green",
          "selectors": [
              "#s2id_autogen5"
          ]
      }
  ]
}'
Annotate a straight arrow using lineType
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "arrow",
          "lineType": "straight",
          "selectors": [
              "#s2id_autogen5"
          ]
      }
  ]
}'
Using offset for spacing the arrow
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "arrow",
          "offset": 15,
          "selectors": [
              "#s2id_autogen5"
          ]
      }
  ]
}'
Annotate with multiple arrows
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "rectangle",
          "selectors": [
              "#s2id_autogen5"
          ]
      },
      {
          "type": "arrow",
          "selectors": [
              "#s2id_autogen5"
          ]
      },
      {
          "type": "rectangle",
          "selectors": [
              "#s2id_autogen3"
          ]
      },
      {
          "type": "arrow",
          "selectors": [
              "#s2id_autogen3"
          ]
      }
  ]
}'
Compute an arrow based on unrelated selectors using groupOfSelectors
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "arrow",
          "groupOfSelectors": [
              [
                  "#s2id_autogen5"
              ],
              [
                  "#s2id_autogen3"
              ]
          ]
      },
      {
          "type": "rectangle",
          "groupOfSelectors": [
              [
                  "#s2id_autogen5"
              ],
              [
                  "#s2id_autogen3"
              ]
          ]
      }
  ]
}'

Enumeration annotation

Draw numbers on an image.

OptionDefault valueDescription
offset10Add space around the element (think CSS padding) e.g 10
color#dc2626The border color of the rectangle e.g green, #800080
width4The border width of the rectangle e.g 4
selectors-An array of selector types (CSS/ARIA/XPath)
size20The size in px of the text
groupOfSelectors-Annotate a group of selectors.
Annotate with an enumeration using selectors
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "enumeration",
          "selectors": [
              "#s2id_autogen5"
          ]
      },
      {
          "type": "rectangle",
          "selectors": [
              "#s2id_autogen5"
          ]
      }
  ]
}'
Override default color of annotation type enumeration
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "enumeration",
          "color": "green",
          "selectors": [
              "#s2id_autogen5"
          ]
      },
      {
          "type": "rectangle",
          "selectors": [
              "#s2id_autogen5"
          ]
      }
  ]
}'
Add inner space around the enumeration using offset
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "enumeration",
          "color": "green",
          "offset": 10,
          "selectors": [
              "#s2id_autogen5"
          ]
      },
      {
          "type": "rectangle",
          "selectors": [
              "#s2id_autogen5"
          ]
      }
  ]
}'
Annotate with multiple annotation type including enumeration
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "enumeration",
          "color": "blue",
          "offset": 10,
          "selectors": [
              "#s2id_autogen5"
          ]
      },
      {
          "type": "rectangle",
          "selectors": [
              "#s2id_autogen5"
          ]
      },
      {
          "type": "enumeration",
          "color": "green",
          "offset": 10,
          "selectors": [
              "#s2id_autogen1"
          ]
      },
      {
          "type": "rectangle",
          "selectors": [
              "#s2id_autogen1"
          ]
      }
  ]
}'
Using groupOfSelectors with annotation of type enumeration
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://demo.baremetrics.com/stats/mrr",
  "elementSelector": [
      "section.main-graph.mrr"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "purple",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "enumeration",
          "color": "green",
          "offset": 10,
          "groupOfSelectors": [
              [
                  "#s2id_autogen5"
              ],
              [
                  "#s2id_autogen1"
              ]
          ]
      },
      {
          "type": "rectangle",
          "color": "blue",
          "offset": 10,
          "groupOfSelectors": [
              [
                  "#s2id_autogen5"
              ],
              [
                  "#s2id_autogen1"
              ]
          ]
      }
  ]
}'

Text annotation

Add a text on an image.

OptionDefault valueDescription
offset10Add space around the element (think CSS padding) e.g 10
color#dc2626The border color of the rectangle e.g green, #800080
message""The message to be displayed.
positionbottomText placement. Possible values: bottom, top
size20The size in px of the text
Annotate with custom text message.
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: your-api-key' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://example.org/",
  "elementSelector": [
      "body > div"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "yellow",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "text",
          "message": "Hello World"
      }
  ]
}'
Annotate screenshot at the top of screenshot
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: your-api-key' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://example.org/",
  "elementSelector": [
      "body > div"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "yellow",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "text",
          "message": "Hello World",
          "position": "top"
      }
  ]
}'
Override default text color
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: your-api-key' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://example.org/",
  "elementSelector": [
      "body > div"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "black",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "text",
          "message": "Hello World",
          "position": "top",
          "color": "#ffffff"
      }
  ]
}'
Increase the size of the text
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: your-api-key' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://example.org/",
  "elementSelector": [
      "body > div"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "black",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "text",
          "message": "Hello World",
          "position": "top",
          "color": "#ffffff",
          "size": 20
      }
  ]
}'
Add spacing around text
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: your-api-key' \
--header 'Content-Type: application/json' \
--data '{
  "url": "https://example.org/",
  "elementSelector": [
      "body > div"
  ],
  "responseType": "image",
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "black",
  "borderRadius": 25,
  "annotate": [
      {
          "type": "text",
          "message": "Hello World",
          "position": "top",
          "color": "#ffffff",
          "offset": 20
      }
  ]
}'

Watermark annotation

Draw a watermark on an image.

OptionDefault valueDescription
offset10Add space around the element (think CSS padding) e.g 10
color#dc2626The border color of the rectangle e.g green, #800080
opacity0.3Tweak the opacity of the image
size20The size in px of the text
imageundefinedSpecify a URL of an image to be used as watermark
textundefinedSpecify a text to be used as watermark
positionbottom-rightWhere to place the watermark: top-left
Watermark with an image
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "deviceScaleFactor": 1,
  "elementSelector": [
      "body > div"
  ],
  "steps": [
      {
          "type": "navigate",
          "url": "https://example.org"
      },
      {
          "value": 3000,
          "type": "waitFor"
      }
  ],
  "annotate": [
      {
          "type": "watermark",
          "image": "https://app.launchbrightly.com/launchbrightly-mark-social-rounded-512px.png",
          "position": "bottom-right",
          "size": 25,
          "offset": 10,
          "opacity": 1
      }
  ],
  "responseType": "image"
}'
Watermark with a text
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "deviceScaleFactor": 1,
  "elementSelector": [
      "body > div"
  ],
  "steps": [
      {
          "type": "navigate",
          "url": "https://example.org"
      },
      {
          "value": 3000,
          "type": "waitFor"
      }
  ],
  "annotate": [
      {
          "type": "watermark",
          "text": "Captured by Launchbrightly  ",
          "position": "bottom-left"
          "offset": 0,
          "color": "red"
      }
  ],
  "responseType": "image"
}'

modifyText annotation

Modify the text webpage.

OptionDefault valueDescription
selectors-An array of selector types (CSS/ARIA/XPath)
groupOfSelectors-Annotate a group of selectors.
value-The new text to replace with.
See Example
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
  "deviceScaleFactor": 1,
  "elementSelector": [
      "body"
  ],
  "steps": [
      {
          "type": "navigate",
          "url": "https://example.org"
      },
      {
          "value": 3000,
          "type": "waitFor"
      }
  ],
  "annotate": [
      {
          "type": "modifyText",
          "selectors": [
              "h1",
              "xpath/html/body/div/h3"
          ],
          "value": "Hello World!"
      }
  ],
  "responseType": "image"
}'

Blur annotation

Blur a section on the screenshot.

OptionDefault valueDescription
selectors-An array of selector types (CSS/ARIA/XPath)
groupOfSelectors-Annotate a group of selectors.
text-An Array of string to replace on the page before capturing a screenshot
intensity-The intensity of the blur from 0-100
color-Use a solid color for the blur
Blur a section with no color (default) using selectors
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
 "url": "http://example.org",
 "fullPage": true,
 "annotate": [
     {
         "type": "blur",
         "selectors": [
             "body > div > p:nth-child(2)"
         ],
         "intensity": 10
     }
 ],
 "deviceScaleFactor": 1,
 "responseType": "image"
}'
Blur a section using groupOfSelectors
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
   "url": "http://example.org",
   "fullPage": true,
   "annotate": [
       {
           "type": "blur",
           "groupOfSelectors": [
               [
                   "body > div > p:nth-child(2)"
               ],
               [
                   "h1"
               ]
           ],
           "intensity": 10
       }
   ],
   "deviceScaleFactor": 1,
   "responseType": "image"
}'
Redact using a solid color
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
 "url": "http://example.org",
 "fullPage": true,
 "annotate": [
     {
         "type": "blur",
         "selectors": [
             "body > div > p:nth-child(2)"
         ],
         "intensity": 100,
         "color": "red"
     }
 ],
 "deviceScaleFactor": 1,
 "responseType": "image"
}'
Blur a specific email using text
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data ' {
     deviceScaleFactor: 1,
     steps: [
       { type: 'navigate', url: "https://api-test-fixtures.s3.us-east-1.amazonaws.com/blur.html "},
       { type: 'waitFor', value: 1000 }
     ],
     annotate: [
       {
         type: 'blur',
         intensity: 30,
         text: ['john@launchbrightly.com']
       }
     ],
     responseType: 'image'
   }'
Blur emails with a specific domain with wildcards using text
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data ' {
     deviceScaleFactor: 1,
     steps: [
       { type: 'navigate', url: "https://api-test-fixtures.s3.us-east-1.amazonaws.com/blur.html" },
       { type: 'waitFor', value: 1000 }
     ],
     annotate: [
       {
         type: 'blur',
         intensity: 30,
         text: ['*@launchbrightly.com']
       }
     ],
     responseType: 'image'
   }'
Blur emails with a specific domain with regex using text
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
     deviceScaleFactor: 1,
     steps: [
       {
         type: 'navigate',
         url: "https://api-test-fixtures.s3.us-east-1.amazonaws.com/blur_more_input_fields.html"
       },
       {
         type: 'waitFor',
         value: 1000
       }
     ],
     annotate: [
       {
         type: 'blur',
         intensity: 90,
         text: ['/example\\.(org)$/i']
       }
     ],
     responseType: 'image'
   }'
Blur credit card details with regex using text
bash
curl --location 'https://api.launchbrightly.com/screenshot' \
--header 'x-api-key: XXX' \
--header 'Accept: image/png' \
--header 'Cache-Control: no-store' \
--header 'Content-Type: application/json' \
--data '{
     deviceScaleFactor: 1,
     steps: [
       {
         type: 'navigate',
         url:"https://api-test-fixtures.s3.us-east-1.amazonaws.com/blur_more_input_fields.html"
       },
       {
         type: 'waitFor',
         value: 1000
       }
     ],
     annotate: [
       {
         type: 'blur',
         intensity: 90,
         text: ['/\b(?:\d[ -]*?){13,16}\b/g']
       }
     ],
     responseType: 'image'
   }'

Global configuration

Some properties can be set globally instead of repeating it for each annotation e.g.

Setting global configuration
json
{
  "global": {
    "annotation": {
      "color": "purple",
      "width": 3,
      "offset": 3
    }
  },
  "url": "https://example.org/",
  "elementSelector": [
    "body > div"
  ],
  "deviceScaleFactor": 1,
  "margin": 10,
  "backgroundColor": "brown",
  "borderRadius": 25,
  "annotate": [
    {
      "type": "rectangle",
      "selectors": [
        "body > div > p:nth-child(2)"
      ]
    }
  ]
}