<!-- BusyBot node reference — https://busybot.net/tools/aws-rekognition/ -->

> Node: AWS Rekognition (`aws_rekognition`) · Action (binary) · v1
> Category: Utility · Credentials: AWS (`aws`)
> Updated: 2026-08-16

# AWS Rekognition

> Analyze images for faces, labels, text, celebrities, and moderation content

## Overview

The AWS Rekognition tool sends images to the Amazon Rekognition API for computer vision analysis. It supports five analysis types: Detect Faces (facial landmarks, emotions, attributes), Detect Labels (objects, scenes, concepts), Detect Text (OCR), Recognize Celebrity (identify famous people), and Detect Moderation Labels (unsafe content). Images can be provided as binary data from an upstream node or referenced via an S3 bucket and object key. The tool reads the binary image, sends it to the Rekognition API, and returns the analysis results as JSON.

**Category:** Utility  
**Tool Name:** `aws_rekognition`  
**Version:** 1

**Appearance:** Icon: `lucide-Server` | Color: `#FF9900`

## Node Type

**Action (Binary)** — handles file/binary data operations

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **AWS** credentials.
See the [Credentials Guide](https://busybot.net/credentials/aws/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Image | `image` |

### Operations

| Operation | Value | Description |
|-----------|-------|-------------|
| Analyze | `analyze` | The operation to perform. |

### Parameters

#### Image: Analyze

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Type | `options` | No | `detectFaces` | The type of image analysis to perform. |
| | | | | Options: `detectFaces` (detect faces and facial attributes in an image), `detectLabels` (detect objects, scenes, and concepts in an image), `detectModerationLabels` (detect inappropriate or unsafe content), `detectText` (detect and extract text from an image — OCR), `recognizeCelebrity` (identify celebrities in an image) |
| Binary File | `boolean` | Yes | `false` | Whether the image to analyze should be taken from a binary field. When false, provide an S3 bucket and object key. |
| Input Binary Field | `string` | Yes | `data` | The name of the binary property containing the image to analyze. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. _(shown when Binary File is `true`)_ |
| Bucket | `string` | Yes | — | Name of the S3 bucket containing the image. Supports expressions like {{ $json.bucket }}. _(shown when Binary File is `false`)_ |
| Name | `string` | Yes | — | S3 object key name of the image. _(shown when Binary File is `false`)_ |
| Additional Fields | `collection` | No | `{}` | Optional settings that refine the analysis. Which of them apply depends on the Type you chose. |
| — Attributes | `multiOptions` | No | `[]` | An array of facial attributes you want to be returned. "All" returns all attributes; "Default" returns a subset (BoundingBox, Confidence, Pose, Quality, Landmarks). _(shown when Type is `detectFaces`)_ |
| | | | | Options: `all`, `default` |
| — Max Labels | `number` | No | `0` | Maximum number of labels to return. The service returns the specified number of highest-confidence labels. Set to 0 for no limit. _(shown when Type is `detectLabels`, `detectModerationLabels`)_ |
| — Min Confidence (`minConfidence`) | `number` | No | `0` | Minimum confidence level for returned labels. Labels below this threshold are excluded. Value between 0 and 100. _(shown when Type is `detectLabels`, `detectModerationLabels`)_ |
| — Version | `string` | No | — | If the bucket is versioning-enabled, specify the object version to analyze. _(shown when Binary File is `false`)_ |
| — Regions of Interest | `fixedCollection` | No | `{}` | Bounding box regions to restrict text detection analysis to specific parts of the image. Add more than one entry to cover several regions. _(shown when Type is `detectText`)_ |
| — — Height | `number` | No | `0` | Height of the bounding box as a ratio of the overall image height. |
| — — Left | `number` | No | `0` | Left coordinate of the bounding box as a ratio of overall image width. |
| — — Top | `number` | No | `0` | Top coordinate of the bounding box as a ratio of overall image height. |
| — — Width | `number` | No | `0` | Width of the bounding box as a ratio of the overall image width. |
| — Word Filter | `collection` | No | `{}` | Filters to apply to detected text words. _(shown when Type is `detectText`)_ |
| — — Min Bounding Box Height | `number` | No | `0` | Minimum height of the word bounding box. Words with bounding box heights less than this value are excluded. Value is relative to image height. |
| — — Min Bounding Box Width | `number` | No | `0` | Minimum width of the word bounding box. Words with bounding box widths less than this value are excluded. Value is relative to image width. |
| — — Min Confidence (`MinConfidence`) | `number` | No | `0` | Minimum confidence for word detection. Words with confidence below this value are excluded. Values should be between 50 and 100. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

One output item per input item. The Amazon Rekognition response is merged into the item JSON at the top level — the incoming fields stay addressable alongside the analysis, and the SDK's transport metadata (`$metadata`) is stripped before the merge. Binary data on the input item is forwarded unchanged, and it is forwarded on error items too, so a retry branch still has the image.

The merged payload is the raw response of the Amazon Rekognition operation that matches your **Type**, so its shape changes with that selection:

| Type | Rekognition operation called | What comes back |
|------|------------------------------|-----------------|
| `detectFaces` | `DetectFaces` | One entry per detected face, each with its bounding box, confidence, pose, quality and landmarks — plus emotions, age range and the other facial attributes when Attributes is set to `all`. |
| `detectLabels` | `DetectLabels` | The objects, scenes and concepts found in the image, each with a confidence score, trimmed by Max Labels and Min Confidence. |
| `detectModerationLabels` | `DetectModerationLabels` | The unsafe-content categories the image matched, each with a confidence score and its parent category. |
| `detectText` | `DetectText` | Detected words and lines, each with its text, confidence and bounding geometry, narrowed by Regions of Interest and Word Filter. |
| `recognizeCelebrity` | `RecognizeCelebrities` | The recognized celebrities with their names, match confidence and known URLs, alongside the faces that could not be matched. |

The nested detection arrays keep Amazon's own PascalCase field names, so downstream expressions address them exactly as the Rekognition API reference documents them for the operation you called. Because a whole detection array lands on one item, use a Split Out node when you want one workflow item per face, label or word.

Nothing is written when an image contains no matches — the response simply carries an empty array, which is a successful result rather than an error.

## Usage Examples

- Detect faces and emotions in a photo
- Identify objects and scenes in an image using label detection
- Extract text from an image using OCR
- Recognize celebrities in a photograph
- Check an image for inappropriate content with moderation labels
- Analyze an image stored in S3 without downloading it first

## Example Configuration

Detect faces, with the full attribute set, on an image supplied as binary data:

```json
{
  "type": "aws_rekognition",
  "parameters": {
    "resource": "image",
    "operation": "analyze",
    "type": "detectFaces",
    "binaryData": true,
    "binaryPropertyName": "data",
    "additionalFields": {
      "attributes": ["all"]
    }
  }
}
```

Label an image that already lives in S3, keeping only high-confidence results:

```json
{
  "type": "aws_rekognition",
  "parameters": {
    "resource": "image",
    "operation": "analyze",
    "type": "detectLabels",
    "binaryData": false,
    "bucket": "{{ $json.bucket }}",
    "name": "photos/sample-image.jpg",
    "additionalFields": {
      "maxLabels": 10,
      "minConfidence": 75
    }
  }
}
```

Run OCR over the top half of an image and drop small or unreliable words:

```json
{
  "type": "aws_rekognition",
  "parameters": {
    "resource": "image",
    "operation": "analyze",
    "type": "detectText",
    "binaryData": true,
    "binaryPropertyName": "data",
    "additionalFields": {
      "regionsOfInterestUi": {
        "regionsOfInterestValues": [
          { "top": 0, "left": 0, "width": 1, "height": 0.5 }
        ]
      },
      "wordFilterUi": {
        "MinBoundingBoxHeight": 0.02,
        "MinConfidence": 85
      }
    }
  }
}
```

Screen user uploads for unsafe content:

```json
{
  "type": "aws_rekognition",
  "parameters": {
    "resource": "image",
    "operation": "analyze",
    "type": "detectModerationLabels",
    "binaryData": false,
    "bucket": "user-uploads",
    "name": "content/user-image-123.jpg",
    "additionalFields": {
      "minConfidence": 70
    },
    "maxConcurrency": 20
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Analyze images with AWS Rekognition to detect faces, labels, text, celebrities, or moderation content.

- **Two ways in, one node.** Turn Binary File on to analyze a file already on the item; turn it off and give a Bucket and Name to analyze an object in S3 without downloading it first. Version applies to the S3 route only, for versioning-enabled buckets.
- **Additional Fields are scoped to the Type.** Attributes belongs to `detectFaces`; Max Labels and Min Confidence to `detectLabels` and `detectModerationLabels`; Regions of Interest and Word Filter to `detectText`. Fields set for a different Type are simply not sent.
- **`all` costs more than `default`.** The default attribute set returns bounding box, confidence, pose, quality and landmarks; `all` adds the emotion, age and appearance attributes and is billed accordingly.
- **Min Confidence is a percentage.** Values run 0–100, and Amazon recommends staying at or above 50 for word-level text filtering.
- **Region comes from the credential.** The node analyzes images in the region recorded on the AWS credential, so an S3 bucket in a different region needs a credential for that region.
- **One node, one analysis type.** To collect faces and labels for the same image, chain two nodes rather than trying to combine types.