> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mediamagicverify.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Assets

> Learn about media assets and processing results

## What is an asset?

An asset is a single media file (video, audio, image, or document) that you submit for processing. Each asset within a submission is processed independently and generates its own results.

## Asset lifecycle

```mermaid theme={null}
graph TD
  A[Uploaded to blob storage] --> B[submitted]
  B --> C[processing]
  C --> D[complete]
  C --> E[failed]
```

An asset begins as a file in blob storage, becomes part of a submission, is processed by analysis workflows, and ends in either `complete` or `failed`.

## Supported formats

| Type     | MIME types                                                                                                                       | Max size |
| -------- | -------------------------------------------------------------------------------------------------------------------------------- | -------- |
| Video    | `video/mp4`, `video/quicktime`, `video/x-msvideo`, `video/x-matroska`                                                            | 5 GB     |
| Audio    | `audio/mpeg`, `audio/wav`, `audio/x-wav`, `audio/aac`, `audio/ogg`                                                               | 500 MB   |
| Image    | `image/jpeg`, `image/png`, `image/gif`, `image/webp`, `image/svg+xml`                                                            | 50 MB    |
| Document | `application/pdf`, `application/msword`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `text/plain` | 100 MB   |

<Tip>
  Files up to the per-category maximums above are uploaded with a presigned URL. See [Uploads](/concepts/uploads).
</Tip>

## Asset results

Once an asset finishes processing, you can retrieve its detailed result. There is no `/results` suffix — the asset detail is the asset endpoint itself.

GET `/api/integrations/submissions/{submission_id}/assets/{asset_id}`

```json theme={null}
{
  "assetId": "a1...",
  "submissionId": "s1...",
  "filename": "campaign-video.mp4",
  "mimeType": "video/mp4",
  "status": "complete",
  "issueCount": 2,
  "versionNumber": 1,
  "versionGroupId": "g1...",
  "issues": [ ]
}
```

The `issues` array contains `IssueResponse` objects.

### Issues

Each issue describes a compliance or quality concern found during analysis:

```json theme={null}
{
  "id": "i1...",
  "referenceNumber": 1,
  "ruleCode": "CAP_8.4",
  "summary": "Unsubstantiated pricing claim",
  "severity": "MAJOR",
  "status": "OPEN",
  "sidekickId": "sk1...",
  "createdAt": "2026-06-03T12:05:00Z",
  "updatedAt": "2026-06-03T12:05:00Z",
  "severityReasoning": "…",
  "severityReasoningHeadline": "…",
  "precedents": [
    { "url": "...", "title": "...", "decision": "Upheld", "date": "2024-01-01" }
  ]
}
```

Severity levels:

* `CRITICAL`
* `MAJOR`
* `MINOR`
* `INFO`

Issue statuses:

* `OPEN`
* `ACKNOWLEDGED`
* `AWAITING_HUMAN_INPUT`
* `RESOLVED`
* `DISMISSED`

### Enriched issues

For a flat list of issues enriched with their rule-graph context, call:

GET `/api/integrations/submissions/{submission_id}/assets/{asset_id}/issues`

```json theme={null}
{
  "assetId": "a1...",
  "issues": [ ],
  "total": 3
}
```

Each enriched issue carries the underlying rule-graph constructs that produced it, including **contributors** and **evidence**. These are not "people mentioned in the media" — they are nodes in the rule graph (contributing factors) and the supporting evidence the analysis attached to each, used to explain why the issue fired.

### Topics

To group related issues, the API clusters them into topics using AI:

GET `/api/integrations/submissions/{submission_id}/assets/{asset_id}/topics`

```json theme={null}
{
  "assetId": "a1...",
  "topics": [ ],
  "orphanIssues": [ ],
  "metadata": { "totalTopics": 2, "orphanIssueCount": 1 }
}
```

A topic groups two or more related issues. Issues that do not cluster appear in `orphanIssues` — this is normal, not an error.

<Note>
  The `/issues` and `/topics` endpoints return `404` if the asset has not finished processing yet, and `502` if the underlying analysis blob fails to load from storage.
</Note>

## Versioning

To create a new version of an asset, submit a new submission whose asset references the original through `previousSubmissionId`. This is useful when:

* The original file was incomplete or had audio issues
* You want a fresh analysis with newer processing models
* Processing previously failed and you want to retry against a corrected file

Each version increments `versionNumber` within a shared `versionGroupId`. Previous versions remain accessible. List all versions of a submission's assets with:

GET `/api/integrations/submissions/{submission_id}/versions`

```json theme={null}
{
  "versions": [
    {
      "assetId": "a1...",
      "submissionId": "s1...",
      "versionNumber": 1,
      "name": "campaign-video.mp4",
      "createdAt": "2026-06-03T12:00:00Z",
      "status": "complete",
      "issueCount": 3
    }
  ],
  "total": 1
}
```
