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.

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

Query Parameters

FieldTypeDefaultDescription
expertsbooleanfalseWhen 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.

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, includes nested detections across frames with timestamps, certainty scores, and hierarchical results
  • 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

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:

{
"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.

{
"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",
"children": [
{
"type": "ImageResult",
"conclusion": "Fake",
"score": "0.9",
"certainty": "0.95",
"timestamp": "0.23",
"children": [
{
"type": "Segment",
"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 detections across frames with timestamps and certainty percentages.
  • audio_source_tracing is only returned when audio is labeled as fake. Use the standalone Audio Source Tracing endpoints 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:

{
"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)

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