Get Inspection Details

Use the GET /v3/inspections/{inspectionId} endpoint to retrieve the complete details for a single inspection, including status, alerts, photos, question responses, and timeline activity.

Use the GET /v3/inspections/{inspectionId} endpoint to retrieve the complete details for a single inspection. The response includes:

  • App user's personal information
  • App user generated data: photos, videos, and answers to questions
  • Smart link
  • Truepic test results
  • The timeline of all activities related to the inspection
  • Inspection status
  • Inspection outcome
  • Alerts

To see how this data looks in practice, perform an inspection and view the results in the Vision Dashboard.

Vision Dashboard. Example of displaying the details of one inspection.

Vision Dashboard. Example of displaying the details of one inspection.

Key Response Fields

When building a workflow on top of the inspection response, the data breaks down into two levels: inspection-level intelligence that summarizes the overall risk picture, and per-photo detail that provides granular test results for each media item.

Inspection-Level Intelligence

These fields give the approver a high-level summary before examining individual photos or videos. For many workflows, these fields are sufficient to route inspections for auto-approval, manual review, or rejection.

Aggregate Verification Result

result.verification_result returns the overall verification outcome across all photos and videos in the inspection.

ValueMeaning
passAll photos/videos passed verification tests
warnOne or more photos/videos triggered a warning
failOne or more photos/videos failed verification tests

Use this as the initial routing signal — for example, auto-approve pass inspections, queue warn for manual review, and escalate fail.

"verification_result": "warn"

Inspection Status

result.status indicates where the inspection is in its lifecycle. Only present an inspection to an approver when it has reached the appropriate status.

"status": {
  "id": 2,
  "id_internal": "STATUS_READY_FOR_REVIEW",
  "name": "Ready for Review"
}
Status IDInternal IDDescription
1STATUS_CREATEDInspection created, not yet started by the customer
3STATUS_IN_PROGRESSCustomer has started but not finished
6STATUS_STARTEDApp opened by the customer
2STATUS_READY_FOR_REVIEWCustomer submitted — ready for approver review
4STATUS_CLOSEDInspection has been closed with an outcome
5STATUS_CANCELEDInspection was canceled
7STATUS_SCHEDULEDScheduled for future delivery

Alert Summary

result.alert provides the alert system's assessment of the inspection based on your configured alert thresholds. This is the most actionable inspection-level field for approver routing — it tells you what went wrong and where.

Example alert object
{
  "config": {
    "fail_threshold": 1,
    "warn_threshold": 1,
    "test_blurriness": true,
    "test_content_analysis_vin": true,
    "test_content_analysis_odometer": true,
    "test_content_analysis_text_matching": true,
    "test_content_analysis_dot_tin": true,
    "test_capture_integrity": true,
    "test_datetime": true,
    "test_device_integrity": true,
    "test_distance_from_address": true,
    "test_geolocation": true,
    "test_object_detection": true,
    "test_pop": true,
    "test_ris": true,
    "test_falsified_location": true,
    "test_insecure_device": true,
    "test_device_flagged": true,
    "test_device_found_other_inspections": true
  },
  "warnings": [
    {
      "photo_id": 42469794,
      "test_key": "test_content_analysis_text_matching"
    }
  ],
  "failures": [],
  "recommendation": "warn"
}
FieldDescription
recommendationpass, warn, or fail — the alert system's overall recommendation based on your threshold configuration
warningsArray of { photo_id, test_key } objects identifying which photos triggered warnings and which specific tests caused them
failuresArray of { photo_id, test_key } objects identifying which photos failed and which specific tests caused the failures
configThe alert configuration showing which tests are enabled and the warn/fail thresholds

The recommendation is calculated by comparing the count of warnings and failures against the configured warn_threshold and fail_threshold. Use the warnings and failures arrays to link specific issues back to individual photos by photo_id.

Device Insights

result.insights flags risk signals detected across the inspection. These are high-level indicators that may warrant closer review.

"insights": [
  { "type": "device_found_other_inspections" }
]
TypeMeaning
insecure_deviceThe device shows signs of being rooted or jailbroken
falsified_locationGPS location appears to be spoofed
device_found_other_inspectionsThe same device was used in other inspections within your organization
device_flagged_other_inspectionsThe device has been flagged in other inspections

Device Details

result.devices provides information about each device used during the inspection, including cross-inspection and cross-organization flag history.

Example device object
{
  "id": 13193976,
  "fingerprint_id": "dpHht8M90xOiyoc9SsRW",
  "os": "iOS",
  "os_version": "18.7",
  "device": "iPhone",
  "flags": [],
  "flags_other_inspections": {
    "inspections": [],
    "flag_counts": {}
  },
  "flags_other_orgs": {
    "first_flagged_dates": [],
    "flag_counts": {},
    "org_count": 0
  },
  "other_inspections": [
    { "id": 2187527, "team_id": 20525, "assigned_to_member_user_id": 2149492 }
  ]
}
FieldDescription
flagsFlags applied to this device for this inspection (e.g., rooted_device, spoofed_location, picture_of_photo)
flags_other_inspectionsFlags on this device from other inspections in your organization, with per-flag counts and linked inspection IDs
flags_other_orgsFlags on this device from other organizations, with per-flag counts and the number of organizations affected
other_inspectionsList of other inspection IDs where this device was used

A device with flags from other inspections or organizations is a strong risk signal that warrants closer manual review.

Per-Photo Detail

Each object in result.photos contains the full set of test results, location data, and media URLs for a single captured photo or video. This is where an approver gets the detail needed to evaluate each media item individually.

Photo Status and Identity

FieldDescription
idUnique photo/video ID
verification_codeUnique alphanumeric identifier for the photo/video
typeimage or video
statusOverall verification status for this photo: pass, warn, or fail
is_verifiedWhether the photo has completed verification
is_existing_imagetrue if the photo was uploaded from the device's library rather than captured live — a potential risk signal
is_deletedWhether the photo has been deleted
overrideWhether the status has been manually overridden (0 = no override)

Verification Test Results

Each photo includes a set of *_result and *_reason field pairs. The _result field contains pass, warn, fail, or null (test not run). When the result is not pass, the _reason field provides a human-readable explanation.

For a category-by-category explanation of these checks and what pass, warn, and fail mean, see Verification Tests.

TestResult FieldReason FieldWhat It Checks
Picture-of-photopop_resultpop_reasonDetects if the image is a photo of another screen or printed photo
Reverse image searchris_resultris_reasonChecks if the image already exists on the internet
Timestamptime_resulttime_reasonValidates the capture timestamp is consistent and recent
Geolocationgeolocation_resultgeolocation_reasonValidates GPS coordinates are present and trustworthy
Device integrityjailbreak_resultjailbreak_reasonChecks whether the device is rooted or jailbroken
Data integritydata_resultdata_reasonVerifies the photo data has not been tampered with
Capture integritycapture_integrity_resultcapture_integrity_reasonValidates the photo was captured through a trusted pipeline
Content analysiscontent_analysis_resultcontent_analysis_reasonOCR, VIN, odometer, DOT TIN, or text matching analysis
Object detectionobject_detection_resultobject_detection_reasonChecks for expected objects in the photo

A photo with status: "warn" will have at least one test with a warn result. Scan the _result fields to find which test triggered it, and display the corresponding _reason to your approver.

Example: photo with a content analysis warning

In this example, the photo's overall status is warn because the text matching content analysis did not find the expected brand text:

{
  "id": "42469794",
  "status": "warn",
  "pop_result": "pass",
  "ris_result": "pass",
  "time_result": "pass",
  "geolocation_result": "pass",
  "jailbreak_result": "pass",
  "data_result": "pass",
  "capture_integrity_result": "pass",
  "content_analysis_result": "warn",
  "content_analysis_reason": "The text detected does not match any of the expected values.",
  "object_detection_result": null
}

All security tests passed — the warning is isolated to content analysis, which may indicate the customer photographed the wrong item rather than attempting fraud.

Content Analysis Details

When content_analysis_result is not null, the content_analysis_details object provides a full breakdown of what was expected and what was detected.

{
  "type": "TEXT_MATCHING",
  "result": [[]],
  "expected": [
    {
      "text_matching_set_id": 1002,
      "text_matching_set": {
        "id": 1002,
        "name": "Test",
        "type": "Example",
        "strings": ["Example"]
      }
    }
  ]
}
FieldDescription
typeThe content analysis type: VIN, ODOMETER, TEXT_MATCHING, CUSTOM_FIELD_MATCHING, or DOT_TIN
resultThe detected value(s). For TEXT_MATCHING, a 2D array of matched strings per text matching set. An empty inner array (as above) means no matches were found.
expectedThe expected value(s) or text matching sets configured for comparison

Two additional fields on the photo provide the raw detection data:

FieldDescriptionExample
ocr_stringRaw OCR text detected in the image"Systan | Systan"
contentDetected content labels"Bottle | Solution"

Location and Distance

FieldDescription
lat / lngGPS coordinates where the photo was captured
formatted_addressReverse-geocoded address of the capture location
city / stateCity and state components of the address
gps_accuracyGPS accuracy in meters — lower values indicate more precise readings
distance_from_customer_addressDistance in meters between the capture location and the inspection's configured address
distance_from_customer_address_exceeds_thresholdtrue if the photo was taken beyond the configured maximum distance threshold

Media URLs

Each photo provides multiple URLs at different resolutions. Choose the appropriate one for your approver UI:

FieldResolutionUse Case
original_imageFull resolutionDetailed review and zoom
imageScaled downStandard display
web_image1000×1000px maxBrowser-based approver UIs
square_image320×320pxGrid views and thumbnail previews

All image URLs include a signed token that grants access for a limited time. If tokens have expired, fetch fresh URLs by re-requesting the inspection.

Device and Capture Metadata

FieldDescription
makeDevice manufacturer (e.g., Apple)
modelDevice model (e.g., iPhone)
device_timeDevice's date/time when the photo was captured (ISO 8601)
device_idInternal device record ID — cross-reference with result.devices for flags and history
device_fingerprint_idFingerprint service ID — cross-reference with result.devices
headingCompass direction the device was facing at capture (degrees from magnetic north), or null

Reading Question Responses

result.list.items contains every prompt in the inspection list, including question prompts and media prompts. To read responses to questions, find items where type is QUESTION and inspect the question.answer field on each item.

FieldDescription
typeQUESTION indicates the list item is a question
nameThe question text shown to the customer
question.typeThe answer format, such as MULTIPLE_CHOICE or TEXT
question.answerThe submitted answer, or null if the question has not been answered
orderThe position of the question in the inspection flow

Use question.type to determine how to read question.answer:

  • For MULTIPLE_CHOICE, question.answer is an array of selected choice objects.
  • For TEXT, question.answer is a string.
  • If question.answer is null, the customer has not submitted an answer for that question yet.
{
  "type": "MULTIPLE_CHOICE",
  "answer": [
    {
      "name": "Yes"
    }
  ]
}
{
  "type": "TEXT",
  "answer": "0825607"
}
{
  "type": "MULTIPLE_CHOICE",
  "answer": null
}
Example: reading question responses from result.list.items

This inspection response stores question answers directly on each question item in result.list.items:

[
  {
    "id": 41500348,
    "name": "Do you understand the witnessing requirements and have you been trained in the usage of TruePic? ",
    "type": "QUESTION",
    "question": {
      "type": "MULTIPLE_CHOICE",
      "answer": [
        {
          "name": "Yes"
        }
      ]
    }
  },
  {
    "id": 41500350,
    "name": "Container inbound tag ID or Seal #",
    "type": "QUESTION",
    "question": {
      "type": "TEXT",
      "answer": "0825607"
    }
  },
  {
    "id": 41500366,
    "name": "I remained on location until all destruct material was rendered unusable?",
    "type": "QUESTION",
    "question": {
      "type": "MULTIPLE_CHOICE",
      "answer": null
    }
  }
]

In this example, the first question was answered with Yes, the second question was answered with the text 0825607, and the third question has not been answered yet.

If you need the current question-and-answer pairs for an inspection, result.list.items is the primary structure to read. Use result.timeline when you also need the audit trail of when a question was answered: timeline entries with action_type.id_internal: "ACTION_QUESTION_ANSWERED" include the related data.list_item_id, which you can match back to the corresponding item in result.list.items.

Linking Photos to List Items

Each photo can be connected back to the list item (the prompt) that the customer was responding to. This lets your approver see what was requested alongside what was submitted.

Photo FieldDescription
list_item_idThe ID of the list item this photo was captured for
list_itemWhen present, the full list item object including name, type, group_id, and any content_analysis or object_detection configuration

Cross-reference a photo's list_item_id with result.list.items to get the list item details when list_item is not embedded on the photo object. Use result.list.groups to resolve a list item's group_id to a human-readable group name.

Example: connecting a photo to its list item

A photo has list_item_id: 37653764. Find the matching list item in result.list.items:

{
  "id": 37653764,
  "name": "Photo of Logo",
  "type": "IMAGE",
  "group_id": "group_l8slhpdi9m",
  "is_required": false
}

Resolve the group name from result.list.groups:

{
  "group_l8slhpdi9m": {
    "name": "Photo of Logo"
  }
}

Display to the approver: this photo was submitted for the "Photo of Logo" prompt in the "Photo of Logo" group.

Next Steps

Once the data has been retrieved, you may perform subsequent actions for the inspection. Some examples include:

  1. Workflow Automation. Escalating certain inspections by closing some inspections, while pushing other inspections into different queues for further assessment.
  2. Data Storage. Downloading and storing the data on your own servers.
  3. Performing follow-up actions, further described in the next section.

To see the full list of query params, try it out in the API Reference via Inspections > Get an existing inspection request.


What’s Next