Skip to main content

Official TruthScan Python client for AI image detection — presign, upload, detect, and poll for results.

Project description

TruthScan Image Detection — Python Client

Official Python client for the TruthScan AI Image Detection API. Detect whether images are AI-generated, real, digitally edited, or AI-edited.

Requirements

Installation

pip install truthscan-image-detector-client

Quick start

import os

from truthscan.image_detection import ImageDetectionClient

api_key = os.environ.get("TRUTHSCAN_API_KEY", "your_api_key_here")
client = ImageDetectionClient(api_key=api_key)

result = client.detect("path/to/image.jpg")

print(f"Status: {result['status']}")
print(f"Score: {result.get('result', 'N/A')}")
print(f"Final: {(result.get('result_details') or {}).get('final_result', '')}")

How it works

ImageDetectionClient.detect() runs the full workflow for you:

  1. Presign — request a presigned upload URL for the image filename
  2. Upload — upload the image bytes to storage
  3. Detect — submit the image for analysis and receive a detection ID
  4. Poll — call the query endpoint until status is done (or timeout)

You only need one method call; polling interval and max attempts are configurable on detect().

Send a request and poll manually

For step-by-step control, use ImageDetectionService:

from truthscan.image_detection import ImageDetectionService

service = ImageDetectionService(
    base_url="https://ai-image-detect.undetectable.ai",
    api_key=api_key,
)

presign = service.get_presigned_url("photo.jpg")
service.upload(presign["presigned_url"], "path/to/photo.jpg")

file_url = ImageDetectionService.build_detect_file_url(
    presign["file_path"], presign["presigned_url"]
)
detect = service.detect(file_url)

result = service.poll_for_result(detect["id"], max_attempts=60, sleep_seconds=0.5)
print(result["status"], result.get("result_details"))

Configuration

from truthscan.image_detection import ImageDetectionClient, DefaultConsoleLogger

client = ImageDetectionClient(
    api_key="YOUR_API_KEY",
    base_url=None,
    timeout=60,
    logger=DefaultConsoleLogger("info"),
)

API reference

ImageDetectionClient

Method Description
detect(image, email?, generate_preview?, max_poll_attempts?, poll_interval_seconds?) Full workflow: presign, upload, detect, poll. Returns DetectionResult.
check_user_credits() Returns credit balance for the API key.

Supported file formats

JPG, JPEG, PNG, WebP, JFIF, HEIC, HEIF, AVIF, BMP, TIFF, TIF, GIF, SVG, PDF

File size limits: 1 KB – 10 MB

Note: Remove spaces from filenames before uploading.

Development

cd python
pip install -e .
python tests/test_client.py

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

truthscan_image_detector_client-20260626.0.0.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file truthscan_image_detector_client-20260626.0.0.tar.gz.

File metadata

File hashes

Hashes for truthscan_image_detector_client-20260626.0.0.tar.gz
Algorithm Hash digest
SHA256 9f37f248be7d9b04de8880327951a90668398c5583926751bd7e07006a18fe72
MD5 1eb6f8d14f2ffc966b2f3088cf8d33b0
BLAKE2b-256 83efa3d8a143e9bbb7093a1e50677ad59362935aa0562de86d4f647d965d37c1

See more details on using hashes here.

File details

Details for the file truthscan_image_detector_client-20260626.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for truthscan_image_detector_client-20260626.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 82e60b36be9b6b19432468d2fd125b3f6d06b884054e344139b2792d299acf30
MD5 088c622bf3e8b94525a27057578c7cfc
BLAKE2b-256 d9e16e0043cdfce0766bc0f70ff62d8b677609180e7680ec898edf1430c1f09b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page