---
title: E-signature request details (GET /api/v2/signature-requests/{envelope_id}) | HelpRange API
description: GET /api/v2/signature-requests/{envelope_id}: One request with each recipient&#x27;s status and the audit trail.
url: https://www.helprange.com/developers/api/get-signature-request
---

GET

# E-signature request details

`https://www.helprange.com/api/v2/signature-requests/{envelope_id}`

One request with each recipient's status and the audit trail.

**Plans:** Pro, Max, Unlimited, Deal Room Pass, trial. **Auth:** `Authorization: Bearer hr_live_…` (team key), `X-API-Key`, `Authorization: Api-Key <key>` or an OAuth `Bearer` token. **Scope:** `documents:read`. **Operation id:** `getSignatureRequest`

## Parameters

| Name | In | Type | Description |
|---|---|---|---|
| `envelope_id` required | path | string | E-signature request id (from List e-signature requests). |

## Example request

```
curl -X GET https://www.helprange.com/api/v2/signature-requests/9f1c2e7a4b \
  -H "X-API-Key: $HELPRANGE_API_KEY"
```

```
const res = await fetch('https://www.helprange.com/api/v2/signature-requests/9f1c2e7a4b', {
  method: 'GET',
  headers: {'X-API-Key': process.env.HELPRANGE_API_KEY},
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status}: ${data.error || data.message || data.reason}`);
console.log(data);
```

```
import os

import requests

r = requests.get(
    'https://www.helprange.com/api/v2/signature-requests/9f1c2e7a4b',
    headers={'X-API-Key': os.environ['HELPRANGE_API_KEY']},
    timeout=60,
)
r.raise_for_status()
print(r.json())
```

The samples read the key from the `HELPRANGE_API_KEY` environment variable.

## Responses

| Status | Description |
|---|---|
| `200` | OK |
| `401` | Missing or invalid API key / OAuth token. Team keys: code invalid_key, key_revoked, key_expired or key_owner_removed. |
| `402` | Your plan does not include the REST API (the Free plan) or this feature (e.g. NDA needs Max). |
| `403` | The team API key lacks the scope this endpoint needs. |
| `404` | Not found – or not yours (the API never says which). |
| `405` | Wrong HTTP method for this endpoint. |
| `429` | A usage limit was reached – wait Retry-After seconds. |

Example response · 200

```
{
  "id": "9f1c2e7a4b",
  "title": "Mutual NDA",
  "status": "sent",
  "status_label": "Sent",
  "sender": "Ann Admin",
  "document_id": 250,
  "data_room": null,
  "created_at": "2026-11-10T08:00:00+00:00",
  "sent_at": "2026-11-10T08:00:02+00:00",
  "expires_at": "2026-12-10T22:59:59+00:00",
  "completed_at": null,
  "ended_at": null,
  "signed": 0,
  "recipients_count": 2,
  "url": "https://www.helprange.com/user/signature-doc?signatureId=9f1c2e7a4b",
  "message": "",
  "sequential": true,
  "recipients": [
    {
      "name": "Anna Client",
      "email": "anna@client.com",
      "role": "sign",
      "order": 1,
      "status": "viewed",
      "status_label": "Viewed",
      "can_act_now": true,
      "completed_at": null
    }
  ],
  "events": [
    {
      "at": "2026-11-10T08:00:00+00:00",
      "kind": "created",
      "label": "Created",
      "recipient": null
    },
    {
      "at": "2026-11-10T08:05:13+00:00",
      "kind": "opened",
      "label": "Opened",
      "recipient": "anna@client.com"
    }
  ],
  "signed_pdf_available": false
}
```

## Try it

**Uses your real account.** The request goes from your browser straight to `www.helprange.com` with your API key and acts as you. The key stays in this page (in this tab's session storage only if you tick the box), is never put in a URL and is not sent to analytics. Do not paste a key on a shared computer.
 API key

  Remember in this tab

envelope_id (path, required)

```

```
