---
url: >-
  https://adk.nht.io/api/@nhtio/adk/batteries/media/contracts/variables/EMPTY_MIME.md
description: >-
  The virtual source MIME type for media generation — the single seam through
  which new media comes into existence. An engine that can mint a blank/seed
  file declares `converts: [{ from: [EMPTY_MIME], to: [...] }]` and receives a
  [`ConvertRequest`](https://adk.nht.io/api/@nhtio/adk/batteries/media/contracts/interfaces/ConvertRequest) with zero bytes; the format token in `to` names what
  gets created.
---

# Variable: EMPTY\_MIME

```ts
const EMPTY_MIME: "application/x-adk-empty" = "application/x-adk-empty";
```

Defined in: [src/batteries/media/contracts.ts:170](https://github.com/NHTIO/ADK/blob/v1.20260713.1/src/src/batteries/media/contracts.ts#L170)

The virtual source MIME type for media generation — the single seam through which new media
comes into existence. An engine that can mint a blank/seed file declares
`converts: [{ from: [EMPTY_MIME], to: [...] }]` and receives a [ConvertRequest](../interfaces/ConvertRequest.md) with
zero bytes; the format token in `to` names what gets created.

## Remarks

Generating an .xlsx, a blank canvas, or a second of silence IS media generation — it is
*deterministic* generation (same inputs, same bytes). *Model-based semantic* generation
(diffusion, TTS) is the same edge with different machinery: a BYO engine declares
`from: [EMPTY_MIME]` and consumes a prompt from `request.options`. Both kinds ride one
declaration shape, which is exactly why this is a MIME and not a special API. `EMPTY_MIME`
can never become a conversion intermediate: no engine declares `to: 'empty'`, so the
pathfinder only ever sees it as a source.
