Packages
List
POST
/
packages
/
list
List
curl --request POST \
--url https://sandbox.syngrafii.com/api/v1/packages/list \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"memberId": "<string>",
"teamId": "<string>",
"folderId": "<string>",
"allMembers": true,
"search": "<string>",
"types": [
"<string>"
],
"states": [
"<string>"
],
"isExecuted": true,
"days": 123,
"sortBy": "<string>",
"take": 123,
"skip": 123
}
'import requests
url = "https://sandbox.syngrafii.com/api/v1/packages/list"
payload = {
"memberId": "<string>",
"teamId": "<string>",
"folderId": "<string>",
"allMembers": True,
"search": "<string>",
"types": ["<string>"],
"states": ["<string>"],
"isExecuted": True,
"days": 123,
"sortBy": "<string>",
"take": 123,
"skip": 123
}
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
memberId: '<string>',
teamId: '<string>',
folderId: '<string>',
allMembers: true,
search: '<string>',
types: ['<string>'],
states: ['<string>'],
isExecuted: true,
days: 123,
sortBy: '<string>',
take: 123,
skip: 123
})
};
fetch('https://sandbox.syngrafii.com/api/v1/packages/list', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.syngrafii.com/api/v1/packages/list",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'memberId' => '<string>',
'teamId' => '<string>',
'folderId' => '<string>',
'allMembers' => true,
'search' => '<string>',
'types' => [
'<string>'
],
'states' => [
'<string>'
],
'isExecuted' => true,
'days' => 123,
'sortBy' => '<string>',
'take' => 123,
'skip' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"api_key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.syngrafii.com/api/v1/packages/list"
payload := strings.NewReader("{\n \"memberId\": \"<string>\",\n \"teamId\": \"<string>\",\n \"folderId\": \"<string>\",\n \"allMembers\": true,\n \"search\": \"<string>\",\n \"types\": [\n \"<string>\"\n ],\n \"states\": [\n \"<string>\"\n ],\n \"isExecuted\": true,\n \"days\": 123,\n \"sortBy\": \"<string>\",\n \"take\": 123,\n \"skip\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api_key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.syngrafii.com/api/v1/packages/list")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"memberId\": \"<string>\",\n \"teamId\": \"<string>\",\n \"folderId\": \"<string>\",\n \"allMembers\": true,\n \"search\": \"<string>\",\n \"types\": [\n \"<string>\"\n ],\n \"states\": [\n \"<string>\"\n ],\n \"isExecuted\": true,\n \"days\": 123,\n \"sortBy\": \"<string>\",\n \"take\": 123,\n \"skip\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.syngrafii.com/api/v1/packages/list")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"memberId\": \"<string>\",\n \"teamId\": \"<string>\",\n \"folderId\": \"<string>\",\n \"allMembers\": true,\n \"search\": \"<string>\",\n \"types\": [\n \"<string>\"\n ],\n \"states\": [\n \"<string>\"\n ],\n \"isExecuted\": true,\n \"days\": 123,\n \"sortBy\": \"<string>\",\n \"take\": 123,\n \"skip\": 123\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"packageId": "<string>",
"organizationId": "<string>",
"memberId": "<string>",
"teamId": "<string>",
"folderId": "<string>",
"shared": true,
"timeCreated": "<string>",
"timeLastModified": "<string>",
"timeSignBy": "<string>",
"name": "<string>",
"category": "<string>",
"clientNumber": "<string>",
"matterNumber": "<string>",
"description": "<string>",
"type": "<string>",
"state": "<string>",
"externalData": {},
"documents": [
{
"documentId": "<string>",
"externalId": "<string>",
"index": 123,
"name": "<string>",
"fileName": "<string>",
"isExecuted": true,
"timeExecuted": "<string>"
}
],
"signers": [
{
"signerId": "<string>",
"index": 123,
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"role": "<string>",
"type": "<string>",
"verify": true,
"isVerified": true,
"isNext": true,
"isExecuted": true,
"timeExecuted": "<string>"
}
],
"recipients": [
{
"recipientId": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"type": "<string>"
}
],
"isExecuted": true,
"timeExecuted": "<string>"
}
],
"total": 123,
"take": 123,
"skip": 123
}You can retrieve a list of an organization members’ current packages by calling the
packages/list endpoint.
Request
Request
POST /packages/list
{
"memberId": "e4f0bce5-30fc-43c4-b9ee-364ff5b04dea",
"search": null,
"types": null,
"states": null,
"isExecuted": true,
"sortBy": "created",
"take": 50,
"skip": 0
}
Body
Some filters are restricted based on the authentication method used or permissions of the organization member.To filter packages for other members, you must use one of the following authentication methods:
- Organization API Key
- User API Key with
Sign EditororPackage Editorrole enabled - Organization OAuth App
string
The member ID to retrieve packages for.
string
The team ID to retrieve packages for.
string
Filter packages by folder ID.
boolean
When true, retrieves packages for all members in the organization.
string
Filter packages by search terms.
This performs a full text search on package
name, description, message, category, client number, matter number, as well as signer and recipient first name, last name, email, and mobile number.
You can use * as a wildcard character to perform suffix matching (e.g., Contract* matches any package whose name contains a word starting with “Contract”).string[]
Filter packages by package type.
Show values
Show values
| Value | Description |
|---|---|
| concurrent | Concurrent: Allows multiple signers to sign the document simultaneously. |
| Sequential | Sequential: Requires signers to sign the document in a specific order. |
| Counterpart | Group Send: Enables group signing, where all signers receive the document at the same time. |
| video_closing_room | Video Signing Room: A virtual room for signing documents via video conference. |
| Live Session | In Person: An in-person signing session with all parties present. |
Even though the signing workflow names have evolved, the constants used to identify them have remained the same.
The package type constants are case-sensitive. Ensure that you use the exact casing as shown in the table above when specifying package types in your API requests.
string[]
Filter packages by package state.
Show values
Show values
New package states may be added in future releases. It is recommended that you always validate your integration against the sandbox before new releases are deployed into production.
Release 4.0 introduces two new package states,
executed and expired. In 3.6 both executed and expired packages were in an open state.| Value | Version | Description |
|---|---|---|
| draft | 1.0 | Package will be added in a draft state. Notifications will not be sent to the signer(s). You must call the send API, or the package owner must manually send the package from within iinked Sign. |
| open | 1.0 | The package will be ready for signing, and notifications will be sent to the signer(s) if enabled. |
| executed | 4.0 | The package has been fully executed by all signers. |
| expired | 4.0 | The package was not signed by the sign by date and has now expired. VSR packages will expire 7 days after their scheduled meeting date. |
| rescinded | 3.5 | The package was rescinded and is no longer available for signing. |
| select | 3.6 | Use the select state only when the package will be opened in the embedded package editor and you want the workflow to prompt the user to choose a package type. Packages in the select state will be automatically deleted if not converted to draft or open within 24 hours. |
| add | 2.9 | Use the add state only when the package will be opened in the embedded package editor and you want the workflow to function as if you’re creating a new package, rather than editing an existing one. Packages in the add state will be automatically deleted if not converted to draft or open within 24 hours. |
boolean
When
true will only return executed packages, when false will only return non-executed packages. Leave null to not apply any executed filter.number
Filter packages whose sign by date is within the next X days.
For example, setting
days to 7 will return packages whose sign by date is within the next 7 days.You can use a negative value to filter packages whose sign by date is in the past.
string
default:"created"
Sort results by one of the following:
Hide values
Hide values
| Value | Description |
|---|---|
| created | Date package was created (descending). |
| last_modified | Date package was last modified (descending). |
| reminder | Date of scheduled reminder (descending). |
| signed | Date package was signed by last signer (descending). |
| sign_by | Date package is to be signed by (descending). |
| sign_by_ascending | Date package is to be signed by (ascending). |
number
default:50
Number of packages to return.
number
Number of packages to skip. Used for pagination or infinite scroll.
Response
object[]
Array of packages returned.
Show properties
Show properties
string
Unique identifier for the package.
string
Unique identifier for the organization that owns the package.
string
Identifier for the member who created/owns the package.
string
Team identifier associated with the package. (optional)
string
Folder identifier where the package is stored. (optional)
boolean
Set to
true if the package is shared.string
Creation time (ISO 8601 date-time).
string
Last modification time (ISO 8601 date-time).
string
Deadline for signing (ISO 8601 date-time).
string
Display name of the package.
string
Category for the package. (optional)
string
Client reference number. (optional)
string
Matter reference number. (optional)
string
Description of the package. (optional)
string
Package type identifier.
Show values
Show values
| Value | Description |
|---|---|
| concurrent | Concurrent: Allows multiple signers to sign the document simultaneously. |
| Sequential | Sequential: Requires signers to sign the document in a specific order. |
| Counterpart | Group Send: Enables group signing, where all signers receive the document at the same time. |
| video_closing_room | Video Signing Room: A virtual room for signing documents via video conference. |
| Live Session | In Person: An in-person signing session with all parties present. |
Even though the signing workflow names have evolved, the constants used to identify them have remained the same.
The package type constants are case-sensitive. Ensure that you use the exact casing as shown in the table above when specifying package types in your API requests.
string
Current state of the package.
Show values
Show values
New package states may be added in future releases. It is recommended that you always validate your integration against the sandbox before new releases are deployed into production.
Release 4.0 introduces two new package states,
executed and expired. In 3.6 both executed and expired packages were in an open state.| Value | Version | Description |
|---|---|---|
| draft | 1.0 | Package will be added in a draft state. Notifications will not be sent to the signer(s). You must call the send API, or the package owner must manually send the package from within iinked Sign. |
| open | 1.0 | The package will be ready for signing, and notifications will be sent to the signer(s) if enabled. |
| executed | 4.0 | The package has been fully executed by all signers. |
| expired | 4.0 | The package was not signed by the sign by date and has now expired. VSR packages will expire 7 days after their scheduled meeting date. |
| rescinded | 3.5 | The package was rescinded and is no longer available for signing. |
| select | 3.6 | Use the select state only when the package will be opened in the embedded package editor and you want the workflow to prompt the user to choose a package type. Packages in the select state will be automatically deleted if not converted to draft or open within 24 hours. |
| add | 2.9 | Use the add state only when the package will be opened in the embedded package editor and you want the workflow to function as if you’re creating a new package, rather than editing an existing one. Packages in the add state will be automatically deleted if not converted to draft or open within 24 hours. |
Map<string, object>
Arbitrary external data attached to the package.
object[]
Documents that belong to the package.
Show properties
Show properties
string
Unique identifier for the document.
string
External identifier for the document. (optional)
number
Order/index of the document within the package.
string
Document display name.
string
Original filename uploaded.
boolean
Set to
true if the document has been executed.string
Execution time (ISO 8601 date-time).
object[]
Signers for the package.
Show properties
Show properties
string
Unique identifier for the signer.
number
Signing order index.
string
First name of the signer.
string
Last name of the signer.
string
Email address of the signer.
string
Role of the signer.
Show values
Show values
| Value | Description |
|---|---|
| signer | Signer |
| guest | Guest of VSR or In Person signing that is not a signer of any documents |
| host | Host of VSR or In Person signing |
string
Type of the signer.
Show values
Show values
| Value | Description |
|---|---|
| signer | Signer |
| guest | Signer that was added by the host during VSR or In Person signing session |
boolean
Set to
true if signer requires identity verification before signing.boolean
Set to
true if the signer has been verified.boolean
Set to
true if the signer is the next in line to sign.boolean
Set to
true if the signer has executed all documents in the signing package.string
Execution time (ISO 8601 date-time).
object[]
Recipients related to the package (additional recipients beyond signers).
Show properties
Show properties
boolean
Set to
true if the package has been executed.string
Execution time (ISO 8601 date-time).
number
Total number of packages that match filter criteria.
number
Number of packages returned per request.
number
Number of packages skipped.
⌘I
List
curl --request POST \
--url https://sandbox.syngrafii.com/api/v1/packages/list \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"memberId": "<string>",
"teamId": "<string>",
"folderId": "<string>",
"allMembers": true,
"search": "<string>",
"types": [
"<string>"
],
"states": [
"<string>"
],
"isExecuted": true,
"days": 123,
"sortBy": "<string>",
"take": 123,
"skip": 123
}
'import requests
url = "https://sandbox.syngrafii.com/api/v1/packages/list"
payload = {
"memberId": "<string>",
"teamId": "<string>",
"folderId": "<string>",
"allMembers": True,
"search": "<string>",
"types": ["<string>"],
"states": ["<string>"],
"isExecuted": True,
"days": 123,
"sortBy": "<string>",
"take": 123,
"skip": 123
}
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
memberId: '<string>',
teamId: '<string>',
folderId: '<string>',
allMembers: true,
search: '<string>',
types: ['<string>'],
states: ['<string>'],
isExecuted: true,
days: 123,
sortBy: '<string>',
take: 123,
skip: 123
})
};
fetch('https://sandbox.syngrafii.com/api/v1/packages/list', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.syngrafii.com/api/v1/packages/list",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'memberId' => '<string>',
'teamId' => '<string>',
'folderId' => '<string>',
'allMembers' => true,
'search' => '<string>',
'types' => [
'<string>'
],
'states' => [
'<string>'
],
'isExecuted' => true,
'days' => 123,
'sortBy' => '<string>',
'take' => 123,
'skip' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"api_key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.syngrafii.com/api/v1/packages/list"
payload := strings.NewReader("{\n \"memberId\": \"<string>\",\n \"teamId\": \"<string>\",\n \"folderId\": \"<string>\",\n \"allMembers\": true,\n \"search\": \"<string>\",\n \"types\": [\n \"<string>\"\n ],\n \"states\": [\n \"<string>\"\n ],\n \"isExecuted\": true,\n \"days\": 123,\n \"sortBy\": \"<string>\",\n \"take\": 123,\n \"skip\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api_key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.syngrafii.com/api/v1/packages/list")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"memberId\": \"<string>\",\n \"teamId\": \"<string>\",\n \"folderId\": \"<string>\",\n \"allMembers\": true,\n \"search\": \"<string>\",\n \"types\": [\n \"<string>\"\n ],\n \"states\": [\n \"<string>\"\n ],\n \"isExecuted\": true,\n \"days\": 123,\n \"sortBy\": \"<string>\",\n \"take\": 123,\n \"skip\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.syngrafii.com/api/v1/packages/list")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"memberId\": \"<string>\",\n \"teamId\": \"<string>\",\n \"folderId\": \"<string>\",\n \"allMembers\": true,\n \"search\": \"<string>\",\n \"types\": [\n \"<string>\"\n ],\n \"states\": [\n \"<string>\"\n ],\n \"isExecuted\": true,\n \"days\": 123,\n \"sortBy\": \"<string>\",\n \"take\": 123,\n \"skip\": 123\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"packageId": "<string>",
"organizationId": "<string>",
"memberId": "<string>",
"teamId": "<string>",
"folderId": "<string>",
"shared": true,
"timeCreated": "<string>",
"timeLastModified": "<string>",
"timeSignBy": "<string>",
"name": "<string>",
"category": "<string>",
"clientNumber": "<string>",
"matterNumber": "<string>",
"description": "<string>",
"type": "<string>",
"state": "<string>",
"externalData": {},
"documents": [
{
"documentId": "<string>",
"externalId": "<string>",
"index": 123,
"name": "<string>",
"fileName": "<string>",
"isExecuted": true,
"timeExecuted": "<string>"
}
],
"signers": [
{
"signerId": "<string>",
"index": 123,
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"role": "<string>",
"type": "<string>",
"verify": true,
"isVerified": true,
"isNext": true,
"isExecuted": true,
"timeExecuted": "<string>"
}
],
"recipients": [
{
"recipientId": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"type": "<string>"
}
],
"isExecuted": true,
"timeExecuted": "<string>"
}
],
"total": 123,
"take": 123,
"skip": 123
}