--- 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 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?sv=2026-02-06&spr=https&st=2026-11-13T10%3A09%3A09Z&se=2026-11-13T11%3A09%3A09Z&sr=c&sp=r&sig=Z8JKdwpn15LSctUrj1tXHtjwkIbR8GP%2FDvYMm1Lr%2BRY%3D) ## .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 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?sv=2026-02-06&spr=https&st=2026-11-13T10%3A09%3A09Z&se=2026-11-13T11%3A09%3A09Z&sr=c&sp=r&sig=Z8JKdwpn15LSctUrj1tXHtjwkIbR8GP%2FDvYMm1Lr%2BRY%3D) ## 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.

If you need a comparison to the basic object creation procedure, or if this is the first time creating a transaction, see Creating and Sending a Transaction.

#### 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?sv=2026-02-06&spr=https&st=2026-11-13T10%3A09%3A09Z&se=2026-11-13T11%3A09%3A09Z&sr=c&sp=r&sig=Z8JKdwpn15LSctUrj1tXHtjwkIbR8GP%2FDvYMm1Lr%2BRY%3D) #### 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 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 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?sv=2026-02-06&spr=https&st=2026-11-13T10%3A09%3A09Z&se=2026-11-13T11%3A09%3A09Z&sr=c&sp=r&sig=Z8JKdwpn15LSctUrj1tXHtjwkIbR8GP%2FDvYMm1Lr%2BRY%3D)