---
title: "GET /v1/jobs/{jobId}/manifest/fetch"
description: "Read a job's latest manifest"
full: true
---

**Auth:** required. Send an `ivy_` API key (`Authorization: Bearer ivy_…` or `X-Ivy-Api-Key`), a Clerk session JWT (`Authorization: Bearer …`) or the Clerk `__session` cookie (browser sessions). See [Authentication](/docs/api/authentication).

Streams the body of the newest manifest recorded for a job you can read. The manifest is a JSON document listing the job's recorded outputs and exports.

The response is HTML (the same JSON, pretty-printed in a page) when `Accept` contains `text/html` or `*/*`, which includes the default `Accept` of many HTTP clients. Send `Accept: application/json` to get JSON. The `X-Manifest-Url` response header carries the manifest's storage location.

A job you cannot read, a job outside your API key's project scope, a job with no manifest and a manifest your key cannot reach all return a 404.

## Request

#### Path parameters

- `jobId` (string (uuid)) —
Job UUID.

#### Headers

- `Accept` (string) —
Send `application/json` to receive JSON. A value containing `text/html` or `*/*` returns HTML.

## Responses

### `200` OK

The manifest. The response is cached privately for 3 seconds.

Response shape:

- `version` (string) —

- `identifiers` (object) —

#### identifiers properties

- `job_id` (string (uuid)) —

- `project_id` (string) —

- `exports` (object[]) —

### `400` Bad Request

The job id is missing

Response shape: `object`

### `401` Unauthorized

Authentication required

Response shape: `object`

### `404` Not Found

You cannot read the job, it is outside your API key's project scope, no manifest could be found for it, or the manifest it points to is one you cannot read

Response shape: `object`

### `429` Too Many Requests

Rate limit exceeded

Response shape: `object`

### `500` Internal Server Error

Reading the manifest failed

Response shape: `object`

### `502` Bad Gateway

The manifest was found but could not be read from storage

Response shape: `object`

**curl**

```bash
curl -X GET 'https://ivybiosciences.com/api/v1/jobs/{jobId}/manifest/fetch' \
  -H "Authorization: Bearer $IVY_API_KEY"
```

**JavaScript**

```js
const res = await fetch('https://ivybiosciences.com/api/v1/jobs/{jobId}/manifest/fetch', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.IVY_API_KEY}`,
  },
});
const data = await res.json();
```

**Python**

```python
import os, requests

res = requests.get(
    "https://ivybiosciences.com/api/v1/jobs/{jobId}/manifest/fetch",
    headers={"Authorization": f"Bearer {os.environ['IVY_API_KEY']}"},
)
data = res.json()
```
