On this page
Submit an image — PixTrace runs 10 intelligence modules in parallel and returns a structured JSON report.
Submit an image with your API key. The API returns a job_id — poll for the result every few seconds.
Step 1 — Submit
curl -X POST https://pixtrace.io/api/v1/analyze \ -H "Authorization: Bearer pxt_live_YOUR_KEY" \ -F "image=@photo.jpg"
Step 2 — Poll
curl https://pixtrace.io/api/v1/analyze/{job_id} \
-H "Authorization: Bearer pxt_live_YOUR_KEY"Response (completed)
{
"status": "completed",
"progress": 100,
"result": {
"services_results": {
"image_osint": {
"result": {
"geoclip": { "best": { "lat": 45.98, "lon": 7.71, "pays": "Switzerland", ... } },
"vlm_synthese": { "resume_executif": "...", "score_confiance_global": 82 },
"exif": { "raw": { "EXIF:Make": "Apple", "EXIF:Model": "iPhone 15 Pro", ... } },
"landmark": { "labels": [...], "dominant_colors": [...] },
"reverse_search":{ "google_lens": { "resultats": [...] }, "yandex": { "resultats": [...] } },
"shadowfinder": { "candidates": [...] },
"osm": { "display_name": "Zermatt, Wallis, Switzerland", "address": {...} },
"pdq": { "hash_pdq": "..." }
}
}
}
}
}Pass your API key as a Bearer token in the Authorization header of every request.
Authorization: Bearer pxt_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxpxt_live_…Live keyProduction — credits are billed
pxt_test_…Test keySandbox — no data, always free
Manage your keys in Dashboard → API Keys.
/v1/analyzeSubmit one image for analysis.
{ "image_url": "https://example.com/photo.jpg" }/v1/analyze/{job_id}Poll an analysis job until it completes.
/v1/creditsReturn current credit balance.
/v1/historyReturn a paginated list of past analyses.
/api/v1/analyzeSubmit an image file (multipart/form-data) or a URL (application/json). Requires a live API key.
# File upload
-H "Authorization: Bearer pxt_live_YOUR_KEY"
-F "image=@photo.jpg"
# URL submission
-H "Authorization: Bearer pxt_live_YOUR_KEY"
-H "Content-Type: application/json"
-d '{"image_url": "https://example.com/photo.jpg"}'Returns: { "job_id": "uuid", "status": "pending", "message": "..." }
/api/v1/analyze/{job_id}Poll every 3 seconds until status is "completed" or "failed".
pendingJob queued, not yet started
processingModules running in parallel
completedAll modules finished — result available
failedAn error occurred — check error field
Average processing time: ~54 seconds. Set a timeout of 4–5 minutes for safety.
Module data lives at result.services_results.image_osint.result.
result.services_results.image_osint.result.geoclipGeolocation predictionsresult.services_results.image_osint.result.vlm_syntheseAI narrative synthesisresult.services_results.image_osint.result.landmarkVision labels + colorsresult.services_results.image_osint.result.reverse_searchReverse image searchresult.services_results.image_osint.result.exifCamera EXIF metadataresult.services_results.image_osint.result.shadowfinderShadow candidatesresult.services_results.image_osint.result.osmAddress (OSM)result.services_results.image_osint.result.pdqPerceptual hashbad_requestMissing or invalid image / image_url fieldunauthorizedMissing or invalid API keyno_creditsNo credits remainingnot_foundJob not found, or it does not belong to your accountpayload_too_largeImage exceeds 20 MB limitrate_limitedToo many requests — slow downserver_errorInternal error — retry after a short delay