> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.resemble.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.resemble.ai/_mcp/server.

# Get Detection Result

`GET https://app.resemble.ai/api/v2/detect/{uuid}`

Retrieve the deepfake detection result using the provided UUID. Returns the final metrics for the detection job. Media-type-specific keys appear depending on the input.

```bash
curl --request GET 'https://app.resemble.ai/api/v2/detect/DETECT_UUID' \
  -H 'Authorization: Bearer YOUR_API_TOKEN'
```

## Query Parameters

| Field     | Type      | Default | Description                                                                                                                                                                                                       |
| --------- | --------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `experts` | `boolean` | `false` | When `true`, return every successfully completed Intelligence result in an array. When omitted or `false`, return one completed result when available; otherwise, return the current processing or failed result. |

> **Note**
>
> `item.status` reports the requested Detect work. When `detect_watermark=true` was used, an otherwise successful Detect remains `processing` until the nested Watermark analysis is terminal. A core detection failure still reports `failed`. Detect and Intelligence run separately, so `item.status: "completed"` does not mean Intelligence has finished.
>
> When `experts` is omitted or `false`, inspect `item.intelligence.status` and `item.intelligence.description` for the returned Intelligence result. It can still be `processing` with a `null` description after Detect completes, and its UUID can change as additional Intelligence results finish. With `experts=true`, the array contains only successfully completed results available at the time of the request; an empty array means no result has completed successfully yet, not that Intelligence was not requested.

## Response Details

* **`status`** - Status of the requested Detect work (`processing`, `completed`, or `failed`). An otherwise successful Detect waits for requested Watermark analysis; a core detection failure still reports `failed`. The status remains independent of Intelligence processing.
* **`metrics`** - Always includes a `label` (fake/real), `score` array with predictions per chunk, `consistency` field (for audio/video), and `aggregated_score`
* **`image_metrics`** - Present for still images, contains type, label, score, visualization image (if requested), and nested analysis children
* **`video_metrics`** - Present for videos. Nests the video result, one result per analyzed chunk (with `start_time` and `end_time`), and per-frame results with timestamps and certainty scores. When the video is scored fake, the video result and each fake chunk include `attack`, the most likely way the fake was made. See [Video Attack Type](/detect#video-attack-type)
* **`modality`** - For video detects, which components were requested: `audio`, `video`, or `all` (default). When a single modality was requested, the skipped component's metrics are absent (`video_metrics` for `audio`, `metrics` for `video`) and the detect still reaches `completed`
* **`face_only`** - Effective face-only setting. It is `true` only for video detects that included visual analysis; audio, image, and audio-only video detects return `false`
* **`audio_source_tracing`** - Present when audio is labeled as `fake`. Contains `label` identifying the likely source (e.g., `resemble_ai`, `elevenlabs`) or `real` if audio is not synthetic, and `error_message` (null on success)
* **`intelligence`** - Present when intelligence analysis was requested. By default, contains one Intelligence object with `uuid`, `status` (`processing`, `completed`, or `failed`), `error_message`, `description`, `created_at`, and `detect_uuid`. The API returns a completed result when one is available; if none have completed successfully, it returns the current processing or failed result. With `experts=true`, this field is an array containing all successfully completed results and excludes processing or failed results.
* **`watermark`** - Present only when `detect_watermark=true` was requested. Contains `status` plus completed Resemble detector metrics and the optional `synthid` boolean. A failed child includes `error_message` and does not change the deepfake verdict.
* **`c2pa_manifest`** - Present for audio, image, and video detects after Content Credentials verification completes. `validation_state` can be `Valid`, `NotPresent`, or `Unavailable`; `Unavailable` means C2PA verification could not complete, but the detect result is still valid.
* **`zero_retention_mode`** - Boolean indicating whether Zero Retention Mode was enabled for this detect
* **`file_deleted_at`** - ISO 8601 timestamp of when the file was purged, or `null` if not yet deleted. Use this to determine whether the source media has been purged from storage.
* **`audio_url`** - Alias of `url`. Both are `null` when Zero Retention Mode is enabled

### Retrieve All Successful Intelligence Results

```bash
curl --request GET 'https://app.resemble.ai/api/v2/detect/DETECT_UUID?experts=true' \
  -H 'Authorization: Bearer YOUR_API_TOKEN'
```

With `experts=true`, `item.intelligence` contains every successfully completed Intelligence result available at the time of the request. The array is empty when no result has completed successfully:

```json
{
  "success": true,
  "item": {
    "uuid": "DETECTION_UUID",
    "status": "completed",
    "intelligence": [
      {
        "uuid": "INTELLIGENCE_UUID_A",
        "status": "completed",
        "error_message": null,
        "description": {
          "speaker_info": "Adult speaker",
          "language": "English"
        },
        "created_at": "2024-01-15T10:30:05Z",
        "detect_uuid": "DETECTION_UUID"
      },
      {
        "uuid": "INTELLIGENCE_UUID_B",
        "status": "completed",
        "error_message": null,
        "description": {
          "speaker_info": "Adult speaker",
          "language": "English"
        },
        "created_at": "2024-01-15T10:30:06Z",
        "detect_uuid": "DETECTION_UUID"
      }
    ]
  }
}
```

When `experts` is omitted or `false`, the singular Intelligence UUID may change across polls as additional results finish. Detect callbacks also contain a single Intelligence result and allow Intelligence processing to continue up to the callback timeout before choosing what to include. The callback includes a completed result when one is available, or the current processing or failed result when none have completed successfully. A callback is not resent if another Intelligence result completes later.

```json
{
  "success": true,
  "item": {
    "uuid": "DETECTION_UUID",
    "media_type": "audio",
    "status": "completed",
    "modality": "all",
    "face_only": false,
    "metrics": {
      "label": "fake",
      "score": ["0.9", "0.8", "0.7"],
      "consistency": "0.85",
      "aggregated_score": "0.566"
    },
    "image_metrics": {
      "ifl": {
        "score": 1,
        "heatmap": "https://..."
      },
      "type": "FinalResult",
      "label": "Fake",
      "image": "https://...",
      "score": 1,
      "children": []
    },
    "video_metrics": {
      "label": "Fake",
      "score": 0.9,
      "certainty": 0.9,
      "treeview": "...",
      "children": [
        {
          "type": "VideoResult",
          "conclusion": "Fake",
          "score": 0.99,
          "certainty": 0.9,
          "attack": [
            { "code": "F1", "name": "Face swap", "prob": 0.9976 },
            { "code": "F5", "name": "Audio-driven portrait animation", "prob": 0.0011 },
            { "code": "L3", "name": "Object insertion", "prob": 0.0006 }
          ],
          "children": [
            {
              "type": "VideoChunkResult",
              "conclusion": "Fake",
              "score": 0.99,
              "certainty": 0.98,
              "chunk_index": 0,
              "start_time": 0.0,
              "end_time": 3.9,
              "attack": [
                { "code": "F1", "name": "Face swap", "prob": 0.9976 },
                { "code": "F5", "name": "Audio-driven portrait animation", "prob": 0.0016 },
                { "code": "L3", "name": "Object insertion", "prob": 0.0004 }
              ],
              "children": [
                {
                  "type": "VideoFrameResult",
                  "conclusion": "Fake",
                  "score": 0.9,
                  "certainty": 0.95,
                  "timestamp": 0.23,
                  "children": [
                    {
                      "type": "RegionResult",
                      "conclusion": "Fake",
                      "score": 0.9,
                      "certainty": 0.995
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "audio_source_tracing": {
      "label": "resemble_ai",
      "error_message": null
    },
    "intelligence": {
      "uuid": "INTELLIGENCE_UUID",
      "description": "Adult male speaker with confident tone discussing...",
      "created_at": "2024-01-15T10:30:05Z",
      "detect_uuid": "DETECTION_UUID"
    },
    "c2pa_manifest": {
      "validation_state": "NotPresent"
    },
    "watermark": {
      "status": "completed",
      "metrics": {
        "overall_status": "absent",
        "detected_model_versions": [],
        "coverage_complete": true,
        "has_watermark": {
          "channel_0": false
        },
        "confidence": 0.0,
        "model_results": [
          {
            "model_version": "perth_v1",
            "status": "succeeded",
            "detected": false,
            "has_watermark": {
              "channel_0": false
            },
            "confidence": 0.0
          },
          {
            "model_version": "perth_v2",
            "status": "succeeded",
            "detected": false,
            "has_watermark": {
              "channel_0": false
            },
            "confidence": 0.0
          }
        ],
        "synthid": false
      }
    },
    "url": "https://storage.example.com/audio/suspicious.wav",
    "audio_url": "https://storage.example.com/audio/suspicious.wav",
    "filename": "suspicious.wav",
    "duration": 8.2,
    "zero_retention_mode": false,
    "file_deleted_at": null,
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-01-15T10:30:05Z"
  }
}
```

* `metrics` always reflects the aggregate prediction and confidence per chunk.
* `image_metrics` appears for still images and contains visualization assets if requested.
* `video_metrics` nests the video result, per-chunk results, and per-frame results with timestamps and certainty percentages. A fake video result and each fake chunk also include `attack`; the example lists are trimmed to three entries.
* `audio_source_tracing` is only returned when audio is labeled as `fake`. Use the standalone [Audio Source Tracing endpoints](/detect/audio-source-tracing) to access all source tracing reports.
* `watermark` is omitted entirely for legacy requests where watermark analysis was omitted or false. If present, `metrics.synthid` is omitted when SynthID was unavailable; omission must not be interpreted as a negative verdict.

### Zero Retention Mode Response

When `zero_retention_mode` was enabled on the original request, media URLs are redacted and the filename is tokenized:

```json
{
  "success": true,
  "item": {
    "uuid": "DETECTION_UUID",
    "media_type": "audio",
    "status": "completed",
    "face_only": false,
    "metrics": {
      "label": "fake",
      "score": ["0.9", "0.8", "0.7"],
      "consistency": "0.85",
      "aggregated_score": "0.566"
    },
    "url": null,
    "audio_url": null,
    "filename": "redacted_abc123def4567890abcd1234.wav",
    "duration": 8.2,
    "c2pa_manifest": {
      "validation_state": "NotPresent"
    },
    "zero_retention_mode": true,
    "file_deleted_at": "2024-01-15T10:31:00Z",
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-01-15T10:30:05Z"
  }
}
```

## Error Response (404)

```json
{
  "success": false,
  "message": "Detect not found"
}
```