Seal a document
curl --request POST \
--url https://signsealship.com/api/passport/seal \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file'const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://signsealship.com/api/passport/seal', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://signsealship.com/api/passport/seal"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, files=files, headers=headers)
print(response.text){
"passportId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verifyCode": "<string>",
"verifyUrl": "<string>",
"docSha256": "<string>",
"sealedSha256": "<string>",
"status": "sealed",
"environment": "live",
"timestamps": {
"rfc3161": {
"authority": "<string>",
"timestampedAtUtc": "2023-11-07T05:31:56Z"
},
"openTimestamps": {
"calendar": "<string>",
"submittedAtUtc": "2023-11-07T05:31:56Z",
"status": "pending"
}
}
}{
"error": "<string>"
}{
"error": "A valid partner API key is required."
}Endpoints
Seal a document
Submit a finished, signed PDF (multipart part named file, up to 35 MB). It returns sealed with Google Cloud KMS, timestamped by independent RFC 3161 and OpenTimestamps authorities, and wrapped in a public verification URL. Bytes are streamed in memory, never to disk, and discarded after sealing.
POST
/
api
/
passport
/
seal
Seal a document
curl --request POST \
--url https://signsealship.com/api/passport/seal \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file'const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://signsealship.com/api/passport/seal', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://signsealship.com/api/passport/seal"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, files=files, headers=headers)
print(response.text){
"passportId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verifyCode": "<string>",
"verifyUrl": "<string>",
"docSha256": "<string>",
"sealedSha256": "<string>",
"status": "sealed",
"environment": "live",
"timestamps": {
"rfc3161": {
"authority": "<string>",
"timestampedAtUtc": "2023-11-07T05:31:56Z"
},
"openTimestamps": {
"calendar": "<string>",
"submittedAtUtc": "2023-11-07T05:31:56Z",
"status": "pending"
}
}
}{
"error": "<string>"
}{
"error": "A valid partner API key is required."
}Authorizations
Partner API key. Send as Authorization: Bearer sss_pk_....
Body
multipart/form-data
The executed PDF. Maximum 35 MB.
Response
Document sealed.
Absolute public verification URL.
SHA-256 of the exact bytes you uploaded (pre-seal).
SHA-256 of the sealed PDF SignSealShip produced.
Example:
"sealed"
Environment of the key that sealed it. The public verifier flags test-environment evidence.
Available options:
live, test Independent timestamp evidence; either member is null when the authority could not be reached.
Show child attributes
Show child attributes