Analyse

Start a media analysis job

Submits analysis options and dispatches the job to the worker queue. All files must be fully uploaded via TUS and show "status":"completed" (verify with GET /api/analyse/session/{uid}/files) before calling this endpoint.

The call is idempotent: calling it again for a session that already has a job returns the existing job without creating a duplicate.

Authentication: X-Api-Key header required.

post/api/analyse/job

Request

  • Base URL: https://snapwonders.com
  • URL: https://snapwonders.com/api/analyse/job
  • Auth: API key in header X-Api-Key

Request body

upload_uidstring uuid required

The upload_uid returned by POST /api/analyse/session

face_detectionboolean

Enable face detection (YuNet). Default: true.

text_detectionboolean

Enable OCR / text region detection. Default: true.

face_sensitivity'standard' | 'thorough'

standard — confidence threshold 0.5 (fewer false positives). thorough — threshold 0.2 (catches more faces, more false positives). Default: standard.

forensic_depth'standard' | 'deep'

standard — core forensic checks (ELA, clone detection, noise analysis, etc.). deep — extended checks with higher sensitivity; reserved for future use (currently identical to standard). Default: standard.

expiry'1h' | '12h' | '1d' | '2d' | '1w' | '1m'

How long the result data remains accessible after the job completes. 1h = 1 hour, 12h = 12 hours, 1d = 1 day (default), 2d = 2 days, 1w = 1 week, 1m = 1 month. Free-tier keys are silently clamped to upload.free_max_expiry (default 1d): the job still succeeds, but anything longer is reduced. Pro accounts get the requested value. No response currently returns the granted expiry, so assume the free maximum unless the owning account is Pro.

archive_passwordsobject

Optional. Passwords for encrypted archives, keyed by the archive's original filename (e.g. {"secret.zip":"hunter2"}). Used transiently to extract password-protected archives before analysis — never stored. Non-encrypted archives ignore it. Check needs_password in GET /api/analyse/session/{uid}/files to see which archives require one.

Example request

{
  "upload_uid": "550e8400-e29b-41d4-a716-446655440000",
  "face_detection": true,
  "text_detection": true,
  "face_sensitivity": "standard",
  "forensic_depth": "standard",
  "expiry": "1d",
  "archive_passwords": {
    "secret.zip": "hunter2"
  }
}

Response

Job already exists (idempotent repeat call) — returns existing job

Changes

No recorded changes to this operation across all 1 revision of this API.