# Get Paused Execution

`GET /api/workflows/{id}/paused/{executionId}`

## Description
Get one paused execution with all of its pause points, their resume forms and links, and the display names of the paused blocks. Requires read access to the workflow. GET /api/resume/{workflowId}/{executionId} returns the same body.

## Parameters

- **id** (path) (required) — `string`: The unique identifier of the workflow.

- **executionId** (path) (required) — `string`: The execution that paused.

## Responses

### 200 — The paused execution.

```json
{
  "type": "object",
  "description": "A paused execution with every pause point. The internal execution snapshot is never returned.",
  "properties": {
    "id": {
      "type": "string",
      "description": "ID of the paused-execution record."
    },
    "workflowId": {
      "type": "string"
    },
    "executionId": {
      "type": "string",
      "description": "The execution that paused."
    },
    "status": {
      "type": "string",
      "description": "State of the pause record, not the final workflow outcome. Per-block execution uses paused while input is still needed (including after a partial resume) and resumed once its current pause is resolved. Legacy execution uses paused, partially_resumed, or fully_resumed. cancelled can also appear. Filter with resumed,fully_resumed to select resolved pauses across both runtimes.",
      "example": "resumed"
    },
    "totalPauseCount": {
      "type": "integer"
    },
    "resumedCount": {
      "type": "integer"
    },
    "pausedAt": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "updatedAt": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "expiresAt": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "pausePoints": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "One place where a run is waiting for human input. A Human in the Loop block inside a Loop or Parallel pauses once per iteration or branch, each with its own contextId.",
        "properties": {
          "contextId": {
            "type": "string",
            "description": "Identifies this pause point. Pass it to Resume Execution."
          },
          "blockId": {
            "type": "string",
            "description": "The Human in the Loop block that paused."
          },
          "response": {
            "description": "The pause response: display data, the resume form definition, and the resume links."
          },
          "registeredAt": {
            "type": "string",
            "format": "date-time"
          },
          "resumeStatus": {
            "type": "string",
            "enum": [
              "paused",
              "queued",
              "resuming",
              "resumed",
              "failed"
            ],
            "description": "Whether this pause point is still waiting."
          },
          "snapshotReady": {
            "type": "boolean"
          },
          "resumeLinks": {
            "type": "object",
            "properties": {
              "apiUrl": {
                "type": "string",
                "description": "Resume Execution URL for this pause point."
              },
              "uiUrl": {
                "type": "string",
                "description": "Approval portal URL."
              },
              "contextId": {
                "type": "string"
              },
              "executionId": {
                "type": "string"
              },
              "workflowId": {
                "type": "string"
              }
            }
          },
          "queuePosition": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Position in the resume queue when a resume for this execution is already running."
          },
          "latestResumeEntry": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ResumeQueueEntry"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      }
    },
    "blockNames": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "Display name of each paused block, keyed by block ID."
    }
  }
}
```

### 401 — Invalid or missing API key. Ensure the X-API-Key header is set with a valid key.

```json
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string",
      "description": "Human-readable error message."
    }
  }
}
```

### 403 — Access denied. You do not have permission to access this resource. For audit log endpoints, this requires an Enterprise subscription and organization admin/owner role.

```json
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string",
      "description": "Human-readable error message."
    }
  }
}
```

### 404 — The requested resource was not found. Verify the ID is correct and belongs to your workspace.

```json
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string",
      "description": "Human-readable error message."
    }
  }
}
```
