- Introduction
- OAuth
- API Endpoint
- Quick start with Zoho Sign's API
- Postman collection
- SwaggerHub
- Basic concepts
- Getting started with Zoho Sign's API under 2 minutes
- Signer groups
- Document Management
- POSTCreate document
- PUTUpdate document
- POSTSend document for signature
- POSTCorrect document
- GETGet details of a particular document
- GETGet documents list
- GETDownload PDF
- GETDownload particular PDF file
- GETDownload completion certificate
- GETGet document form data
- POSTRecall Document
- POSTRemind Recipient
- PUTDelete Document
- PUTExtend document
- POSTCreate new Folder
- GETGet folder list
- GETRetrieve field type
- GETGet document type
- POSTCreate new document type
- POSTUpdate document type
- Template Management
- Embedded Signing
- Embedded Sending
- Use Cases
- How-to guides
- Sending a signing request via SMS
- Enforce authentication
- Add fields to your document
- In-Person signing
- Sign documents with digital signature providers
- Sending documents in bulk
- eStamping
- Collecting payments from my recipients
- Adding witness to your envelope
- Manages recipients
- Sending an envelope to a signer group
- Replace signer group with normal recipients
- API error codes
- API limitation
- Security
- Contact details for technical assistance
Checking the document status
- Get the details of a particular document with its ID using the Get details of a particular document API.
- In the response, the request_status field indicates whether the document is completed, in progress, or declined.
- The actions array can be used to check the status of each of the recipients. The action_status key indicates what the status is. If it is UNOPENED or VIEWED, the recipients have received the email but have not signed the document. SIGNED indicates that the recipients have signed and NOACTION means they have not yet been sent the email because the previous signers have not yet signed.
<?php
$curl = curl_init("https://sign.zoho.com/api/v1/requests/<Request-Id>");
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Authorization:Zoho-oauthtoken <Oauth-Token>'
));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
$jsonbody = json_decode($response); // contain filed tyes response
if ($jsonbody->status == "success") {
$createdRequestId = $jsonbody->requests->request_id;
//Save the ID from the response to update later
$createdRequest = new stdClass();
$createdRequest = $jsonbody->requests;
echo ($createdRequest);
} else //Error check for error
{
echo $jsonbody->message;
}
curl_close($curl);
?>
const express = require('express');
const fetch = require('node-fetch');
const app = express();
const port = 4000;
app.get('/requestStatus', async (req, res) => {
let HEADERS = {};
HEADERS['Authorization'] = 'Zoho-oauthtoken <Oauth-Token>';
let URL = 'https://sign.zoho.com/api/v1/requests/<Request-Id>';
let method = 'GET';
let requestOptions = {
method: method,
headers: HEADERS
};
let response = await fetch(URL, requestOptions)
.then((_res) => {
console.log(`Return code is ${_res.status}`);
return _res.json().then((responseJson) => {
return responseJson['requests'];
});
})
.catch((error) => {
let errorResponse = {};
errorResponse['message'] = 'call failed to initiate'; //check internet connection or proper DC type
errorResponse['status'] = 'failure';
res.send(errorResponse);
});
res.send(response.request_status);
});
app.listen(port, () => {
console.log(`Example app listening on port {port}`);
});
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://sign.zoho.com/api/v1/requests/"+<<Request Id>>);
request.Headers["Authorization"] = "Zoho-oauthtoken " + <<accessToken>>;
request.Method = "GET";
JObject responseObj = new JObject();
string requestStatus = string.Empty;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
String responseString = reader.ReadToEnd();
responseObj = JObject.Parse(responseString);
}
if(responseObj.SelectToken("status").ToString().Equals("success"))
{
if(responseObj.ContainsKey("requests"))
{
JObject requests = (JObject)responseObj.GetValue("requests");
requestStatus = requests.GetValue("request_status").ToString();
}
}
res = zoho.sign.getDocumentById(2000001829037);
if(res.get('status') == "success")
{
request_status = res.get('requests').get('request_status');
if(request_status == 'completed')
{
info "Document signed by all parties";
}
else if(request_status == 'inprogress')
{
info 'Document in progress';
actions = res.get('requests').get('actions');
for each i in actions
{
if ( i.get('action_status') == "UNOPENED" || i.get('action_status') == "VIEWED")
{
info 'Recipient yet to sign : '+i.get('recipient_email');
}
}
}
}
def getDocumentDetailsById(request_id,Oauthtoken):
headers = {'Authorization':'Zoho-oauthtoken '+Oauthtoken}
r = requests.get('https://sign.zoho.com/api/v1/requests/'+request_id,headers=headers)
return r.json()
def getDocumentStatus(request_id,Oauthtoken):
response = getDocumentDetailsById(request_id,Oauthtoken)
if response['status'] == 'success':
status = response['requests']['request_status']
if status == 'completed':
print('Document signed by all parties')
elif status == 'inprogress':
actions = response['requests']['actions']
print('Document in progress')
for i in actions:
if i['action_status'] == 'UNOPENED' or i['action_status'] == 'VIEWED':
print('Recipient yet to sign : '+i['recipient_email'])
else:
print('Error in get document : '+response['message'])
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://sign.zoho.com/api/v1/requests/"+<<Request Id>>);
request.Headers["Authorization"] = "Zoho-oauthtoken " + <<accessToken>>;
request.Method = "GET";
JObject responseObj = new JObject();
string requestStatus = string.Empty;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
String responseString = reader.ReadToEnd();
responseObj = JObject.Parse(responseString);
}
if(responseObj.SelectToken("status").ToString().Equals("success"))
{
if(responseObj.ContainsKey("requests"))
{
JObject requests = (JObject)responseObj.GetValue("requests");
requestStatus = requests.GetValue("request_status").ToString();
}
}
Show full
Show less
© 2025, Zoho Corporation Pvt. Ltd. All Rights Reserved.