> Source: https://wexa.ai/docs/agents/resume-execution

# resume-execution

[Can be held for approval](/docs/sdks-and-apis/how-every-tool-call-works#lifecycle-and-governance)

Resume a paused execution, the same as Resume in the console. It carries on from where it stopped under the same `execution_id`. Needs the `fabric:agent.run` grant.

The shape of `result` for `resume-execution` is not recorded here: it was not captured against a live deployment. Call it once and read what comes back rather than assuming a shape.

**Resume a run**

**Wexa MCP server**

```bash
curl -sS -X POST https://fabric.wexa.ai/mcp/$FABRIC_PROJECT_ID \
  -H "authorization: Bearer $FABRIC_API_KEY" \
  -H "Mcp-Session-Id: $MCP_SESSION_ID" \
  -H "content-type: application/json" -H "accept: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"resume-execution","arguments":{"execution_id":"0b6f6f5e-6b43-4c0e-9a51-6d9f6a1c2e11"}}}'
```

**REST API**

```bash
curl -sS https://fabric.wexa.ai/v1/resume-execution \
  -H "authorization: Bearer $FABRIC_API_KEY" \
  -H "content-type: application/json" \
  -d '{"execution_id":"0b6f6f5e-6b43-4c0e-9a51-6d9f6a1c2e11"}'
```

**TypeScript SDK**

```ts
import { Fabric } from '@wexa-fabric/sdk'

const fabric = new Fabric()
const result = await fabric.resumeExecution({
  execution_id: '0b6f6f5e-6b43-4c0e-9a51-6d9f6a1c2e11'
})
```

**Python SDK**

```python
from wexa import Fabric

fabric = Fabric()
out = fabric.resume_execution(execution_id="0b6f6f5e-6b43-4c0e-9a51-6d9f6a1c2e11")
```

## Parameters

| Parameter | Type | Required | Notes |
| --- | --- | --- | --- |
| `execution_id` | string | Required | The execution, from `run-process-flow` or `list-executions`. An execution in this project. It must be `paused`; any other state is refused (409), for example `execution … is running; it can be resumed only when it is paused`. |

**More details**

Only a paused run can be resumed; a run in any other state is refused with a `409` and nothing changes. A run that failed or completed is not resumed: [restart-execution](/docs/agents/restart-execution) re-runs it as a new execution. The `execution_id` does not change, so keep polling the id you already have with [get-execution](/docs/agents/get-execution). `status` is `ready` when the run is queued to carry on. A run in another project, or one started by someone else, reads as not found, exactly as it does for `get-execution`.

### Result fields

- `execution_id`: The execution you resumed, unchanged.
- `status`: `ready`: the run is queued to carry on.

Every tool call works the same way: [How every tool call works](/docs/sdks-and-apis/how-every-tool-call-works).
