# File.generated

URL: /business/events/File.generated · Id: `event:File.generated`

> Emitted each time a File is generated.

[File.generate](/business/nouns/file/generate) emits `File.generated` when it completes on a [File](/business/nouns/file).

| Property | Value |
| --- | --- |
| Emitted by | [File.generate](/business/nouns/file/generate) |
| Noun | [File](/business/nouns/file) |
| Wakes | None. |

### Payload
Each delivery is an [Event](/business/nouns/event) record. `data` holds what [File.generate](/business/nouns/file/generate) returns.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | `string` | Yes | `File.generated`. |
| `at` | `datetime` | Yes | When it happened. |
| `seq` | `integer` | No | Its position in the namespace, one more than the Event before; any seq is a cursor into the history. |
| `data` | `json` | Yes | The Thing as the Action left it. |
| `data.file` | [File](/business/nouns/file) | Yes | The generated File, its bytes in Storage and its provenance recorded. |
| `data.file.contentType` | `string` | Yes | The media type, such as `application/pdf`. |
| `data.file.size` | `integer` | Yes | The size in bytes. |
| `data.file.name` | `string` | No | The file name it was uploaded with. |
| `data.file.visibility` | `string` | No | Who may read it: `Owner`, `Customer`, or `Public`. The default is `Owner`. |
| `data.file.uploadUrl` | `url` | No | The signed URL to upload the bytes to, returned by `File.create`. |

### Example
```json
{
  "$id": "https://api.sb/tutorloop.com/events/event_1",
  "$type": "Event",
  "name": "File.generated",
  "at": "2026-10-22T12:00:00Z",
  "data": {
    "file": {
      "$id": "https://api.sb/tutorloop.com/files/file_1",
      "$type": "File",
      "contentType": "Example content type",
      "size": 1,
      "name": "TutorLoop",
      "visibility": "Owner",
      "uploadUrl": "https://tutorloop.com"
    }
  },
  "seq": 1
}
```