---
title: "GET /orchestrate/{sessionId}"
description: "Read a session's background-job follow-up"
full: true
---

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

The `followUp.pollUrl` a POST /orchestrate response returns points here. For a signed-in session that ended its turn with background jobs still running: the saved plan's status (the job ids it still awaits and each step's status) and, once the jobs have finished and the platform has written the follow-up answer to the session, that answer and its `messageId`. `resume` is null until an answer has been written. Owner only: another account's session returns 404. Guest sessions are not stored, so a guest session id returns 404 `GUEST_SESSION_NOT_FETCHABLE`.

## Request

#### Path parameters

- `sessionId` (string (uuid)) —
The `sessionId` returned by POST /orchestrate

## Responses

### `200` OK

Session follow-up status

Response shape:

- `sessionId` (string) —

- `plan` (object) —
null when the session has no saved plan

#### plan properties

- `planId` (string) —

- `status` (enum (&quot;awaiting_jobs&quot; | &quot;settled&quot;)) —

- `awaitingJobIds` (string[]) —

- `steps` (object[]) —

- `updatedAt` (string (date-time)) —

- `resume` (object) —
null until the follow-up answer has been written

#### resume properties

- `status` (enum (&quot;delivered&quot;)) —

- `messageId` (string) —

- `answer` (string) —

- `outcome` (enum (&quot;answer&quot; | &quot;error&quot;)) —

- `followUpTurnRequired` (boolean) —

- `credentialRejectedReason` (string) —
Present only when the follow-up ended because the provider refused the caller's own API key (for example auth_rejected); omitted otherwise

- `deliveredAt` (string (date-time)) —
null when unknown

### `401` Unauthorized

No credential, or an invalid, revoked, expired or under-capability API key

### `404` Not Found

Session not found for this account, or a guest session id

**curl**

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

**JavaScript**

```js
const res = await fetch('https://ivybiosciences.com/api/v1/orchestrate/{sessionId}', {
  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/orchestrate/{sessionId}",
    headers={"Authorization": f"Bearer {os.environ['IVY_API_KEY']}"},
)
data = res.json()
```
