### Download an export artifact

`GET /api/v1/exports/{id}/download`

Streams the finished file. The ownership check runs again here, because the artifact itself can contain another reseller's card codes and balances.

- Authentication: manager session (JWT) or API token
- Permission: `prm_exports_download` (Download export files)
- Risk: write
- Rate limit bucket: `t_heavy`

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Job id. |

#### Errors

| Code | Status | When |
| --- | --- | --- |
| `ERR_NOT_FOUND` | 404 | the job is not yours, or has not produced a file yet |

#### Note

404 until the job has actually produced an artifact, which is indistinguishable from "no such job". Poll the job first rather than treating a download 404 as a permanent failure. This route is on the per-tenant heavy budget.

