---
title: "POST /harness/sessions/{sessionId}/interrupt/{interruptId}/resolve"
description: Resolve an interrupt
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).

Approve or reject a pending interrupt. The executing session must still be live
(i.e., the `/execute` SSE stream is still open on the same warm serverless container).
Resolving an interrupt for a completed or timed-out session returns 404 RUNTIME_NOT_FOUND.

When `modifiedArguments` is provided the agent rewrites the tool call arguments via NL diff
(Gemini Flash) before execution — falls back to original args on LLM failure.

## Request

#### Path parameters

- `sessionId` (string (uuid)) —
Session UUID (UUIDv7 — time-ordered)

- `interruptId` (string) —
Interrupt ID from the `interrupt.requested` SSE event payload

#### Request body

- `approved` (boolean) —
Allow (true) or deny (false) the tool call

- `note` (string) —
Optional human note attached to the decision, stored in the event log

- `modifiedArguments` (object) —
Override tool arguments — agent performs NL-based diff rewrite before execution (falls back to original on LLM failure)

## Responses

### `200` OK

Interrupt resolved

Response shape:

- `ok` (boolean) —

- `interruptId` (string) —

- `decision` (enum (&quot;approved&quot; | &quot;rejected&quot;)) —

### `400` Bad Request

Invalid request

Response shape: `object`

### `401` Unauthorized

Authentication required

Response shape: `object`

### `403` Forbidden

Session not owned by the authenticated caller

Response shape: `object`

### `404` Not Found

No active runtime found for this session, or interrupt already resolved

Response shape: `object`

**curl**

```bash
curl -X POST 'https://ivybiosciences.com/api/harness/sessions/{sessionId}/interrupt/{interruptId}/resolve' \
  -H "Authorization: Bearer $IVY_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "approved": false
}'
```

**JavaScript**

```js
const res = await fetch('https://ivybiosciences.com/api/harness/sessions/{sessionId}/interrupt/{interruptId}/resolve', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.IVY_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "approved": false
}),
});
const data = await res.json();
```

**Python**

```python
import os, requests

res = requests.post(
    "https://ivybiosciences.com/api/harness/sessions/{sessionId}/interrupt/{interruptId}/resolve",
    headers={"Authorization": f"Bearer {os.environ['IVY_API_KEY']}"},
    json={
  "approved": False
},
)
data = res.json()
```
