---
title: "Recover a file submission receipt"
method: GET
path: "/api/v3/submissions/{sha256}"
tags: ["Analyses"]
---

# Recover a file submission receipt

`GET /api/v3/submissions/{sha256}`

## Request

- Base URL: `https://ai.virustotal.com`
- URL: `https://ai.virustotal.com/api/v3/submissions/{sha256}`
- Auth: one of:
  - API key in header `x-apikey`
  - HTTP bearer

Read a saved receipt using the submitting identity and SHA-256, without resending bytes. A 404 does not prove an earlier upload was never dispatched. An uncertain outcome may remain unknown; do not automatically repeat POST.

## Path parameters

- `sha256` string, required: Lowercase SHA-256 of the exact file bytes; retain it to recover the receipt with the same identity.

## Response `200`

Successful Response

- SubmissionResponse
  - `status` 'submitted' | 'submission_unknown' | 'exists', required
  - `mode` 'standard'
  - `submission_id` string, required
  - `sha256` string, required
  - `size` integer, required
  - `analysis_id` string, nullable, required
  - `analysis_status` 'queued' | 'in-progress' | 'completed', nullable
  - `next_poll_after_seconds` 5, nullable, required
  - `can_resubmit` false
  - `report` FileResponse
    - `data` FileData, required
      - `id` string, required: VirusTotal ID for the file (SHA256)
      - `last_analysis_stats` object, required: Summary of engine analysis results
      - `type_description` string, nullable: Human-readable description of the file type
      - `detections` string[], required: Flat list of detection names from various engines
      - `ai_insights` AIInsight[], nullable: Crowdsourced AI analysis results if available
        - `verdict` string, nullable: The verdict given by the AI
        - `source` string, nullable: The source or provider of the AI analysis
        - `analysis` string, nullable: Detailed analysis text
      - `source` 'VirusTotal'
      - `analysis_date` string, date-time, nullable: UTC last_analysis_date from VirusTotal, never the lookup time
      - `report_url` string, nullable: Link to the existing VirusTotal report
      - `coverage` ReportCoverage
        - `engines` integer, nullable, required: Number of entries in last_analysis_results; null when unavailable
        - `categories` string[], required: Distinct categories actually present in last_analysis_results; not a safety verdict

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `413`: Request Entity Too Large
- `422`: Unprocessable Entity
- `429`: Too Many Requests
- `502`: Bad Gateway
- `503`: Service Unavailable
- `504`: Gateway Timeout

---

[API](https://skmtc.dev/virustotal/apis/virustotal-ai-api.md) · [All operations](https://skmtc.dev/virustotal/apis/virustotal-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/virustotal/apis/virustotal-ai-api/revisions/3c7943feccc6?raw)
