# ChatGPT Image and Audio Watermark Checker (`rainminer/openai-chatgpt-watermark-checker`) Actor

Upload ChatGPT images or audio and get JSON on whether they carry OpenAI SynthID. Returns isAiGenerated, confidence, likely source, and limitations. ChatGPT text is not watermarked — this Actor checks media only (PNG, JPEG, WebP, GIF, MP3). For moderators and media teams. No ChatGPT login.

- **URL**: https://apify.com/rainminer/openai-chatgpt-watermark-checker.md
- **Developed by:** [rainminer](https://apify.com/rainminer) (community)
- **Categories:** AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 file checkeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## OpenAI ChatGPT Watermark Checker

**OpenAI ChatGPT Watermark Checker** takes **images or audio** from ChatGPT and returns structured JSON on whether the file is **AI generated**. OpenAI uses Google DeepMind **SynthID** on ChatGPT **images and audio**. ChatGPT **text is not watermarked**, so this Actor does not accept pasted text or documents.

![ChatGPT](https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/ChatGPT_logo.svg/200px-ChatGPT_logo.svg.png)

***

### What is OpenAI ChatGPT Watermark Checker?

Upload a PNG / JPEG / WebP / GIF, or an MP3 / WAV / M4A / OGG clip. Each file becomes one dataset row: `isAiGenerated`, `watermarkDetected`, confidence, likely source, and billed token units.

No ChatGPT login. No browser.

***

### What can this Actor do?

- Check **ChatGPT images** (PNG, JPEG, WebP, GIF)
- Check **ChatGPT audio** (MP3, WAV, M4A, AAC, OGG, FLAC)
- Return **`isAiGenerated`** plus SynthID / watermark fields in structured JSON
- Charge **per file** and **per 1,000 input tokens** so a long clip costs more than a small still
- Export JSON, CSV, or Excel, or pull results via the Apify API

It does **not** classify essays, PDFs, or other ChatGPT **text**. There is no SynthID-Text signal to read there.

***

### Why check ChatGPT images and audio?

ChatGPT can emit stills and voice. A watermark check will not replace editorial judgment, but it gives you a **machine-readable signal** you can log next to the file.

Typical jobs:

1. **Newsroom provenance** — flag ChatGPT images before they ship
2. **Brand safety** — scan UGC photos and clips at moderate volume
3. **Marketplace QA** — catch generated product shots
4. **Trust and safety** — label synthetic voice notes
5. **Legal extras** — attach `isAiGenerated` to produced media
6. **Dataset labeling** — tag training images as AI vs camera
7. **Publisher intake** — check freelance illustrations
8. **Education tools** — show a confidence score, not a red card
9. **Ad review** — screen generated creatives
10. **Internal audits** — sample Slack/Drive media dumps
11. **Policy logging** — keep a synthetic-media field
12. **Research studies** — batch-label corpora of stills and audio

***

### How to use OpenAI ChatGPT Watermark Checker

1. Open the Actor in [Apify Console](https://console.apify.com/)
2. Upload **Files** (images or audio)
3. Click **Start**
4. Download the dataset or read it via the Apify API

#### Input example

```json
{
  "files": ["https://example.com/chatgpt-still.png"],
  "maxItems": 5
}
```

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `files` | string\[] | — | Image or audio URLs to check |
| `maxItems` | integer | `5` | Cap on files this run |

***

### Output

Each dataset item is one file. The headline field is **`isAiGenerated`**. `model` is the detector family (`synthid`).

```json
{
  "id": "a1b2c3d4e5f67890",
  "sourceType": "image",
  "sourceName": "still.png",
  "sourceUrl": "https://api.apify.com/v2/key-value-stores/.../records/still.png",
  "imageUrl": "https://api.apify.com/v2/key-value-stores/.../records/still.png",
  "mediaKind": "image",
  "mediaType": "image/png",
  "fileSizeBytes": 184320,
  "isAiGenerated": true,
  "watermarkDetected": true,
  "watermarkType": "synthid",
  "matchesTargetProvider": true,
  "likelySource": "chatgpt",
  "likelihood": "high",
  "confidence": 0.82,
  "detectionMethod": "hybrid",
  "rationale": "OpenAI SynthID signal on a ChatGPT-style still.",
  "limitations": null,
  "inputTokens": 1290,
  "outputTokens": 160,
  "billedTokenUnits": 2,
  "model": "synthid",
  "targetProvider": "openai-chatgpt",
  "error": null,
  "checkedAt": "2026-08-28T12:00:00.000Z"
}
```

***

### Pricing

Larger images and longer audio use more tokens. This Actor **passes that cost through with a margin**.

| Event | When | Price (FREE) |
| --- | --- | --- |
| `text-checked` | Once per successful file | **$0.005** |
| `input-1k-tokens` | Per **1,000 input tokens** actually sent (rounded up) | **$0.001** |
| Actor start | Per run (× memory GB) | platform default |

Failed downloads are **not** billed.

**Examples (excluding start fee):**

- Small JPEG (~1,000 tokens) → ≈ **$0.006**
- Larger still or short clip (~3,000 tokens) → ≈ **$0.008**

***

### Files

- **Images:** PNG, JPEG, WebP, GIF
- **Audio:** MP3, WAV, M4A, AAC, OGG, Opus, FLAC
- Files over **15 MB** are rejected
- PDF, Word, and plain text are rejected — ChatGPT text has no SynthID watermark

For **Google SynthID-Text** on writing, use [Google Gemini Watermark Checker](https://apify.com/rainminer/google-gemini-watermark-checker). For Claude-style copy, use [Anthropic Claude Watermark Checker](https://apify.com/rainminer/anthropic-claude-watermark-checker).

***

### Is it legal to check AI-generated media?

This Actor only analyzes files **you provide**. It does not log into ChatGPT. Do not treat the score as legal proof of authorship. A watermark estimates whether ChatGPT media was involved; it does not identify a person.

***

### Tips

- Prefer the **original export**, not a heavily recompressed screenshot
- Watch `billedTokenUnits` if a run costs more than you expected
- Start with `maxItems` 1–3 while you learn the output shape

***

### Image Credit

Image credit: [OpenAI / ChatGPT](https://chatgpt.com/)

# Actor input Schema

## `files` (type: `array`):

Upload ChatGPT images or audio to check for OpenAI SynthID. PNG, JPEG, WebP, GIF, MP3, WAV, M4A, and OGG. ChatGPT text is not watermarked — this Actor does not accept pasted text or documents.

## `maxItems` (type: `integer`):

Maximum number of files to analyze in this run. Extra uploads are skipped.

## Actor input object example

```json
{
  "files": [
    "https://upload.wikimedia.org/wikipedia/commons/7/70/Example.png"
  ],
  "maxItems": 5
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "files": [
        "https://upload.wikimedia.org/wikipedia/commons/7/70/Example.png"
    ],
    "maxItems": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/openai-chatgpt-watermark-checker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "files": ["https://upload.wikimedia.org/wikipedia/commons/7/70/Example.png"],
    "maxItems": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/openai-chatgpt-watermark-checker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "files": [
    "https://upload.wikimedia.org/wikipedia/commons/7/70/Example.png"
  ],
  "maxItems": 5
}' |
apify call rainminer/openai-chatgpt-watermark-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rainminer/openai-chatgpt-watermark-checker"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Kj5NfZrKZ3a60UaCv/builds/jIgzaMTsyfGtOQbEw/openapi.json
