---
title: "RetrievingAll Signatures"
slug: "retrievingall-signatures"
updated: 2025-07-02T18:48:26Z
published: 2025-07-02T18:48:26Z
canonical: "docs.onespan.com/retrievingall-signatures"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onespan.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RetrievingAll Signatures

[Java SDK](/v1/docs/retrievingall-signatures#java-sdk) [.NET SDK](/v1/docs/retrievingall-signatures#net-sdk) [REST API](/v1/docs/retrievingall-signatures#rest-api) [APEX SDK](/v1/docs/retrievingall-signatures#apex-sdk)

## Java SDK

To download the full code sample see our [Code Share](https://community.onespan.com/documentation/onespan-sign/codeshare/get-all-signable-signatures-java-sdk/) site.

Once a transaction has been sent out for signing, you can retrieve all signatures on a specified document, for a specified signer. The following code will do this:

If you need a comparison to the basic object creation procedure, or if this is the first time creating a transaction, see [](https://developer.esignlive.com/guides/quick-start/creating-and-sending-a-package-net/)[Creating and Sending a Transaction](/v1/docs/creating-and-sending-a-transaction#net-sdk).

Firs, retrieve your DocumentPackage object. The following code will do this:

```java
DocumentPackage sentPackage = client.getPackage(packageId);
```

Then, using the OneSpan SignApprovalService, you can retrieve all signatures. Use the DocumentPackage, SignatureID objects, and documentID as parameters. The following code will do this:

```java
List<Signature> signer1SignableSignatures = client
    .getApprovalService()
    .getAllSignableSignatures(sentPackage, documentId, signer1Id);
```

Finally, you can loop through each signature to retrieve any additional information, like the positioning of the signature, the accepted date, and so on.

```java
for (Signature signature : signer1SignableSignatures) {
    System.out.println("Position of signature " + i + ": (" + signature.getX() + ", " + signature.getY() + ") on page " + signature.getPage());
    i++;
}
```

If the package contains an “accept only” document then the Approvals node will not have any signatures in it.

### Results

Here is an example of what you can expect to see once you have run your code.

![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/retrieve_all_signatures.png)

## .NET SDK

To download the full code sample see our [Code Share](https://community.onespan.com/documentation/onespan-sign/codeshare/get-all-signable-signatures-net-sdk/) site.

Once a transaction has been sent out for signing, you can retrieve all signatures on a specified document, for a specified signer. The following code will do this:

If you need a comparison to the basic object creation procedure, or if this is the first time creating a transaction, see [](https://developer.esignlive.com/guides/quick-start/creating-and-sending-a-package-net/)[Creating and Sending a Transaction](/v1/docs/creating-and-sending-a-transaction#net-sdk).

Firs, retrieve your DocumentPackage object. The following code will do this:

```csharp
 DocumentPackage sentPackage = client.GetPackage(packageId);
```

Then, using the OneSpan SignApprovalService, you can retrieve all signatures. Use the DocumentPackage, SignatureID objects, and documentID as parameters. The following code will do this:

```csharp
IList<Signature> signer1SignableSignatures = client.ApprovalService
    .GetAllSignableSignatures(sentPackage, documentId, signer1Id);
```

Finally, you can loop through each signature to retrieve any additional information, like the positioning of the signature, the accepted date, and so on.

```csharp
foreach (Signature signature in signer1SignableSignatures)
{
    Debug.WriteLine("Position of signature " + i + ": (" + signature.X + ", " + signature.Y + ") on page " + signature.Page);
    i++;
}
```

If the package contains an “accept only” document then the Approvals node will not have any signatures in it.

### Results

Here is an example of what you can expect to see once you have run your code.

![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/retrieve_all_signatures.png)

## REST API

To download the full code sample see our [Code Share](https://community.onespan.com/documentation/onespan-sign/codeshare/get-all-signable-signatures-rest-api/) site.

Once you have sent your transaction for signing, you can use the following code to retrieve all signatures for all signers in a document, use the PackageID, and documentID as parameters.

<editor360-custom-block data-preprocessing="true" data-sanitizationtags="a"><p data-block-id="69e2c247-0e67-4e50-910e-96e06bed3f97">If you need a comparison to the basic object creation procedure, or if this is the first time creating a transaction, see <a href="https://developer.esignlive.com/guides/quick-start/creating-and-sending-a-package-net/" target="_blank" display="false" rel="noopener"></a><a href="/v1/docs/creating-and-sending-a-transaction#net-sdk" target="_self" translate="no" rel="noopener">Creating and Sending a Transaction</a>.</p></editor360-custom-block>

#### HTTP Request

```http
GET /api/packages/{packageId}/documents/{documentId}
```

#### HTTP Headers

```http
Accept: application/json; esl-api-version=11.21   
Authorization: Basic api_key
```

#### Response Payload

```json
{
    "description": "",
    "id": "ddcad715b41ed28d0d8b16580c829501f35d5ed836d800c0",
    "index": 0,
    "name": "purchase_order",
    "approvals": [
        {
            "id": "UMxe8ClLfEYK",
            "role": "15be0c69-b672-4314-9ffd-d3da69770caa",
            "signed": null,
            "accepted": null,
            "fields": [...],
            "name": ""
        },
        {
            ...
        }
    ],
    ...
}
```

For a complete description of each field, see the Request Payload table below.

Then, you can loop through each signature to retrieve any additional information, like the positioning of the signature, the accepted date, and so on.

You can also retrieve all signatures for a specific signer within one or multiple documents. To retrieve signatures from a single document, use the following code:

#### HTTP Request

```http
GET /api/packages/{packageId}/documents/{documentId}/signers/{signerId}/approvals
```

#### HTTP Headers

```http
Accept: application/json; esl-api-version=11.21   
Authorization: Basic api_key
```

#### Response Payload

```json
[
    {
        "id": "eZDydIrS1XQV",
        "optional": false,
        "name": "",
        "enforceCaptureSignature": false,
        "accepted": "2019-08-12T16:01:00Z",
        "signed": "2019-08-12T16:01:02Z",
        "role": "50a3431e-04e2-49b1-81c8-a5e2bc550932",
        "fields": [...],
        ...
    },
    {
        ...
    }
]
```

To retrieve all signatures from the transacion, remove the /documents/{documentId}" from the URL path. The following code will do this:

#### HTTP Request

```http
GET /api/packages/{packageId}/signers/{signerId}/approvals
```

#### HTTP Headers

```http
Accept: application/json; esl-api-version=11.21   
Authorization: Basic api_key
```

#### Response Payload

```json
[
    {
        "documentId": "efc058bf9f0c261947c62a8d199be5d5ea6495ca102c8076",
        "approvals": [
            ...
        ]
    },
    {
        "documentId": "default-consent",
        "approvals": [
            {
                "id": "339df19b-e8ee-4dd0-bdb8-d4f38bc368c5",
                "enforceCaptureSignature": false,
                "accepted": "2019-08-12T16:00:56Z",
                "signed": "2019-08-12T16:00:56Z",
                "role": "50a3431e-04e2-49b1-81c8-a5e2bc550932",
                "optional": false,
                "fields": [],
                "name": "",
                "data": null
            }
        ]
    },
    {
        "documentId": "91a88db05a2f122ab214ef6f5933219658ade8d81b7f1035",
        "approvals": []
    }
]
```

In response payload, all document IDs are listed with the signatures assigned to the signer. If the recipient doesn't have any signatures on a document, the approvals array will be empty.

### Results

Here is an example of what you can expect to see once you have run your code.

![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/retrieve_all_signatures(1).png)

#### Request Payload Table

| Property | Type | Editable | Required | Default | Sample Values |
| --- | --- | --- | --- | --- | --- |
| description | string | Yes | No | n/a | sample consent document |
| id | string | Yes | No | n/a | ddcad715b41ed28d0d8b16580c829501f35d5ed836d800c0 |
| extract | boolean | Yes | No | false | true / false |
| index | integer | Yes | No | 0 | 0 / 1 / 2 ... |
| name | string | Yes | No | n/a | purchase_order |
| data |  |  |  |  |  |
| ese_document_texttag_extract_needed | boolean | Yes | No | false | false / true |
| approvals |  |  |  |  |  |
| fields |  |  |  |  |  |
| subtype | string | Yes | No | n/a | FULLNAME / INITIALS / CAPTURE / MOBILE_CAPTURE / LABEL / TEXTFIELD / TEXTAREA / CHECKBOX / DATE / RADIO / LIST |
| type | string | Yes | No | n/a | SIGNATURE / INPUT |
| extract | boolean | Yes | No | false | true / false |
| height | integer | Yes | No | 50 | 50 / 100 / 150 ... |
| left | integer | Yes | No | 0 | 50 / 100 / 150 ... |
| page | integer | Yes | No | 0 | 0 / 1 / 2 ... |
| top | integer | Yes | No | 0 | 50 / 100 / 150 ... |
| width | integer | Yes | No | 200 | 50 / 100 / 150 ... |
| role | string | Yes | No | n/a | Client1 |
| pages |  |  |  |  |  |
| id | string | No | No | n/a | n/a |
| top | integer | No | No | 0 | n/a |
| height | integer | No | No | 1030 | n/a |
| width | integer | No | No | 796 | n/a |
| left | integer | No | No | 0 | n/a |
| index | integer | No | No | 0 | n/a |
| version | integer | No | No | 0 | n/a |

## APEX SDK

To download the full code sample see our [Code Share](https://community.onespan.com/documentation/onespan-sign/codeshare/get-all-signable-signatures-apex-sdk/) site.

Once a transaction has been sent out for signing, you can retrieve all signatures on a specified document, for a specified signer. The following code will do this:

If you need a comparison to the basic object creation procedure, or if this is the first time creating a transaction, see [](https://developer.esignlive.com/guides/quick-start/creating-and-sending-a-package-net/)[Creating and Sending a Transaction](/v1/docs/creating-and-sending-a-transaction#net-sdk).

Firs, retrieve your PackageID. The following code will do this:

Then, you can retrieve all signatures. Use the PackageID, SignatureID , and documentID as parameters. The following code will do this:

```plaintext
public List<ESignLiveAPIObjects.Approval> getAllSignableSignatures(
    String packageId, 
    String documentId, 
    String signerId
)
```

Finally, you can loop through each signature to retrieve any additional information, like the positioning of the signature, the accepted date, and so on.

```plaintext
List<ESignLiveAPIObjects.Approval> allSignableSignatures = getAllSignableSignatures(packageId, documentId, signerId);

for (ESignLiveAPIObjects.Approval approval : allSignableSignatures) {
    System.debug('Approval ID: ' + approval.id);
    
    if (approval.fields != null && approval.fields.size() > 0) {
        for (ESignLiveAPIObjects.Field field : approval.fields) {
            System.debug('----Field ID: ' + field.id + ', TYPE: ' + field.type + ' ' + field.subtype);
        }
    }
}
```

If the package contains an “accept only” document then the Approvals node will not have any signatures in it.

### Results

Here is an example of what you can expect to see once you have run your code.

![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/retrieve-all-signatures-1.png)
