Page last updated: July 30, 2026
Canceling a Session
One endpoint cancels every kind of session we offer. You tell us the session type you are canceling and how to identify it, and you authenticate with the API credentials that belong to that session type.
Below is an example of how to cancel a RON session using our session ID:
curl -X POST "https://notarylive.com/api/v1/cancel" \
-H 'Content-Type: application/json' \
-u '((your_api_id)):((your_api_key))' \
-d $'{"session_type":"ron","nl_order_id":"((nl_order_id))"}'
Below is an example of how to cancel an eSign session using your own ID for it:
curl -X POST "https://notarylive.com/api/v1/cancel" \
-H 'Content-Type: application/json' \
-u '((your_api_id)):((your_api_key))' \
-d $'{"session_type":"esign","internal_id":"((internal_order_id))"}'
A successful request will generate the following response:
{
"success": 1,
"canceled": [
{
"nl_order_id": "1s123"
}
],
"not_canceled": []
}
Session Types
The session_type parameter is required. It must be one of the following:
| session_type | Description |
esign |
An eSign session, created through /api/v1/esign/create. |
id_proofing_session |
An ID proofing session, created through /api/v3/id-proofing/create. |
ipen |
An in-person electronic notarization, created through /api/v1/ipen/create. |
ron |
A remote online notarization session, created through /api/v3/order/create. Whitelabel sessions created through /api/v3/whitelabel/create also use this session type, because they are RON sessions that run inside your own iframe. |
Only sessions of the type you name are searched, so an id that belongs to a different session type returns order_not_found rather than being canceled by accident.
Credentials
You must authenticate with the API credentials issued for the session type you are canceling. eSign credentials cancel eSign sessions, IPEN credentials cancel IPEN sessions, and your RON credentials cancel RON, whitelabel and ID proofing sessions. You can find each set on your API credentials page.
| session_type | Credentials to use |
esign |
Your eSign API credentials |
id_proofing_session |
Your RON API credentials. ID proofing has no credentials of its own, and these sessions are created with the same credentials you use to create a RON session. |
ipen |
Your IPEN API credentials |
ron |
Your RON API credentials |
Using credentials that belong to a different session type returns a 401 response:
{
"success": 0,
"errors": [
{
"code": "credential_type_mismatch",
"message": "These API credentials cannot cancel sessions of type 'esign'. Canceling this session type requires your organization's esign API credentials."
}
]
}
The public sandbox credentials for trying out our other endpoints are not accepted here. They belong to no organization, so there is no way for us to tell whose session a cancel request is really for. Use your own organization's credentials, sandbox or production:
{
"success": 0,
"errors": [
{
"code": "public_sandbox_credentials_not_allowed",
"message": "The public sandbox credentials cannot cancel sessions. Please use your own organization's API credentials, either sandbox or production."
}
]
}
Identifying the Session
Along with session_type, send exactly one of the following parameters:
| Parameter | Description |
nl_order_id |
Our ID for the session. This is the value we send back as nl_order_id, nl_esign_id, nl_ipen_id or nl_id_proofing_order_id in that product's webhook events. |
internal_id |
Your own ID for the session, the value you sent as internal_id when it was created. |
whitelabel_token |
The whitelabel token for a whitelabel session. Only applies to the ron session type. |
If you send internal_id and you happen to have created more than one session of that type under the same ID, every one of them is canceled by the single request. Each one is listed in the response, and anything we could not cancel is returned in not_canceled with the reason why:
{
"success": 1,
"canceled": [
{
"nl_order_id": "1s123"
}
],
"not_canceled": [
{
"nl_order_id": "1s124",
"code": "order_already_notarized",
"message": "This order has already been notarized, so it can no longer be canceled."
}
]
}
Sessions That Cannot Be Canceled
Some sessions are too far along to cancel. When nothing matched by your request could be canceled, the response returns a 400 HTTP status with success = 0 and an errors array holding a reason for each session:
{
"success": 0,
"errors": [
{
"nl_order_id": "1s123",
"code": "customer_in_live_session",
"message": "The customer is in the live notarization session for this order right now."
}
]
}
The following are the reasons a session cannot be canceled:
| Code | Session type | Description |
credential_mismatch |
All | You used sandbox credentials against a production session, or production credentials against a sandbox session. When this is the reason nothing could be canceled, the response is a 401 rather than a 400, because the problem is the credentials rather than the session. |
esign_already_canceled |
esign |
This eSign session was already canceled, either by an earlier request or on our side. |
esign_already_complete |
esign |
Every participant finished signing. Use the eSign status endpoint to retrieve the signed documents. |
order_already_canceled |
id_proofing_session, ron |
The session was already canceled, either by an earlier request or on our side. |
order_already_complete |
id_proofing_session |
The participant already finished their identity verification, and you have already received the identity_verified webhook event for this session. |
ipen_already_canceled |
ipen |
This IPEN session was already canceled, either by an earlier request or on our side. |
ipen_already_complete |
ipen |
The notary already completed the notarization. Use the IPEN status endpoint to retrieve the notarized documents. |
customer_in_live_session |
ron |
The customer is in the live notarization session with a notary right now. |
customer_past_identity_verification |
ron |
The customer is in the order form right now and has already passed the ID and KBA step. |
customer_waiting_for_notary |
ron |
The customer finished identity verification and is waiting in the lobby for a notary right now. |
order_already_notarized |
ron |
The notarization is finished. Use the order status endpoint to retrieve the notarized documents. |
For RON sessions, we treat a customer as being in the order form or the live session when we have seen activity from them in the last 5 minutes. Once they have been idle longer than that, the session can be canceled again.
eSign, IPEN and ID proofing sessions that are part way through can always be canceled. An eSign session that only some of the participants have signed, or an IPEN the notary has already opened, is still cancelable, and any work collected so far is discarded along with the session.
What the Customer Sees
Anyone who has the session open on one of our pages when you cancel it is moved to the canceled page for that product immediately, without needing to refresh. Someone who is not on one of our pages at the time will see that same page the next time they open their link. Whitelabel customers see a cancellation message, but stay inside your iframe.
Webhook Events
Every session canceled by this endpoint sends that product's usual cancellation webhook event, the same event you receive when a session is canceled from our dashboard. When your request cancels several sessions at once, you receive one event per session.
| Session type | Event |
esign |
|
id_proofing_session |
|
ipen |
|
ron |
|
Validation Failures
Invalid credentials will return a 401 response with the message: HTTP/1.0 401 Unauthorized. Credentials that are valid but were issued for a different session type return a 401 with the credential_type_mismatch error, and credentials for the wrong environment return a 401 with the credential_mismatch error.
Invalid or missing payload data will return a 400 HTTP response with a JSON body containing success = 0 as well as an array of errors containing both a standardized error code, as well as a human-readable description of what caused the error:
If you continue having issues, please take a look at our troubleshooting guide.
curl -X POST "https://notarylive.com/api/v1/cancel" \
-H 'Content-Type: application/json' \
-u '((your_api_id)):((your_api_key))' \
-d $'{}'
{
"success": 0,
"errors": [
{
"code": "invalid_session_type",
"message": "This endpoint requires a session_type parameter. It must be one of the following: ron, ipen, esign, id_proofing_session. Whitelabelled RON orders use the ron session type."
}
]
}
A request with a valid session_type but no identifier returns:
{
"success": 0,
"errors": [
{
"code": "no_identifier_submitted",
"message": "This endpoint requires either a nl_order_id, an internal_id or a whitelabel_token parameter to identify the session"
}
]
}
An identifier that does not match any of your organization's sessions of that type returns:
{
"success": 0,
"errors": [
{
"code": "order_not_found",
"message": "We could not locate a record belonging to your organization."
}
]
}
Copyright © 2026, NotaryLive.com