# /image/copyrightdetect

Robot: `/image/copyrightdetect`

Detects known stock photos, brand logos, and watermarked images in uploaded files by performing reverse image lookups against web databases. This is best understood as "stock photo detection" — it identifies whether an uploaded image matches a known copyrighted work in indexed databases (Getty Images, Shutterstock, Adobe Stock, etc.).

Returns a \`licenses\[]\` array with match details including source collection, license type, confidence scores, and source URLs. Can optionally halt the \<dfn>Assembly\</dfn> when a known copyrighted work is detected, similar to how \`/file/virusscan\` handles malicious files.

This \<dfn>Robot\</dfn> provides a \*\*risk signal\*\*, not a legal determination. A match means the image was found in a stock photo or rights-managed database — it does not mean the user lacks a valid license.

Stage: alpha

## Example

```json
{
  "steps": {
    "copyright_checked": {
      "robot": "/image/copyrightdetect",
      "use": ":original",
      "confidence_threshold": 80,
      "error_on_decline": true,
      "error_msg": "This image appears to be a known stock photo. Please upload original content."
    }
  }
}
```

## Parameters

* `interpolate`: Controls whether Assembly Variables are interpolated for individual instruction fields. By default, most Robot instruction fields interpolate Assembly Variables. Set this to \`false\` to treat every instruction field as literal text, or set an individual field path to \`false\` to treat only that field as literal text. For Robot-specific fields that are literal by default, set this to \`true\` or set that field path to \`true\` to opt back into interpolation. Use field names such as \`path\`, or dotted paths such as \`ffmpeg.vf\` for nested objects.
* `output_meta`
* `result`
* `queue`
* `force_accept`
* `ignore_errors`
* `use`: Specifies which Step(s) to use as input. - You can pick any names for Steps except \`":original"\` (reserved for user uploads handled by Transloadit) - You can provide several Steps as input with arrays: \`\`\`json { "use": \[ ":original", "encoded", "resized" ] } \`\`\` - You can also tag an input Step with \`as\` to pass semantic intent to robots: - You can also tag input Steps with \`as\` to pass semantic intent to robots: \`\`\`json { "use": \[ { "name": ":original", "as": "image" }, { "name": ":original", "as": "mask" } ] } \`\`\` > \[!Tip] > That's likely all you need to know about \`use\`, but you can view \[Advanced use cases]\(/docs/topics/use-parameter/).
* `confidence_threshold`
* `categories`
* `error_on_decline`
* `error_msg`
* `format`
