Introduction
The Online Notary Center API lets you create and manage remote online notarization
(RON) and eSign sessions programmatically. All endpoints accept and return
JSON unless noted otherwise (file uploads use
multipart/form-data, downloads return binary content).
https://app.onlinenotarycenter.com
/api/* endpoints require a valid OAuth 2.0
Bearer access token in the Authorization header.
See Authentication below.
curl https://app.onlinenotarycenter.com/api/check-session-status/abc123 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Use it in your API client
Every endpoint on this page is available as a ready-to-run collection. Import the two files below into the API client of your choice — they use the widely supported v2.1 collection format, which every common desktop and CLI client can read.
Getting started
- Import both files, then select the Online Notary Center environment.
- Fill in
client_idandclient_secret. - Run Authentication → Get Access Token. The token is saved to
access_tokenautomatically and every other request inherits it. - Run a folder top to bottom — each request stores the ids the next one needs
(
notary_id,esign_id,template_id).
Authentication
The API uses the OAuth 2.0 Authorization Code flow. You will need
API client credentials (client_id / client_secret) issued
for your Online Notary Center account.
1. Request an authorization code
Sign in with your account and authorize the client. An authorization code will be generated for the next step.
| Parameter | Type | Description |
|---|---|---|
response_type required | string | Must be code. |
client_id required | string | Your API client ID. |
state optional | string | Opaque value echoed back to prevent CSRF. |
2. Exchange the code for an access token
Authenticate with HTTP Basic auth using your client credentials.
curl -u CLIENT_ID:CLIENT_SECRET https://app.onlinenotarycenter.com/oauth/token \ -d "grant_type=authorization_code&code=AUTHORIZATION_CODE"
{
"access_token": "1c50f0b46c6ad86a4a54a1b0a0f74f18e69a2a90",
"expires_in": 3600,
"token_type": "Bearer",
"scope": null,
"refresh_token": "6ab18483809c970f4aacb72cca31d03eb2a110bd"
}
3. Refresh an expired token
curl -u CLIENT_ID:CLIENT_SECRET https://app.onlinenotarycenter.com/oauth/token \ -d "grant_type=refresh_token&refresh_token=YOUR_REFRESH_TOKEN"
Long-Lived Token
Extend your access token lifetime
Extends the lifetime of your current access token to 365 days, so server-to-server integrations don't need to refresh every hour.
curl -X POST https://app.onlinenotarycenter.com/api/request-long-live-token \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"msg": "Your token lifetime has been extended till 2027-08-03 10:00:00"
}
Errors
Failed requests return a JSON object with an error key describing the
problem. Successful requests generally include "success": "true" or a
msg field.
{
"error": "Main Signer email address is required"
}
401 Unauthorized response.
Notary Sessions
A notary session walks a signer through document upload, identity verification and a
live audio/video notarization meeting. The typical API flow is:
create → update signers → prepare, then share the
returned session_link and passcode with your signer.
Create Notary Session
Creates a new notary session and uploads one or more PDF documents to it.
Send the request as multipart/form-data.
| Field | Type | Description |
|---|---|---|
files[] required | file | One or more PDF documents to be notarized. |
curl -X POST https://app.onlinenotarycenter.com/api/create-notary-session \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -F "files[]=@/path/to/document.pdf" \ -F "files[]=@/path/to/second-document.pdf"
{
"title": "Customer Notary",
"notary_id": "63f4a1b2c3d4e",
"status": "active"
}
notary_id — it identifies the session in every
subsequent call.
Update Notary Signers
Replaces the signer list of a session. The main signer is described by the
top-level fields; additional signers go in other_signers.
Send the body as JSON.
| Field | Type | Description |
|---|---|---|
notary_id required | string | Session ID from Create Notary Session. |
contact_type required | string | Main signer type, e.g. self. |
first_name required | string | Main signer first name. |
last_name required | string | Main signer last name. |
email required | string | Main signer email address. |
phone optional | string | Main signer phone number. |
other_signers optional | array | Additional signers, each with contact_type, first_name, last_name, email, active, share_room. |
curl -X POST https://app.onlinenotarycenter.com/api/update-notary-signers \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"notary_id": "63f4a1b2c3d4e",
"contact_type": "self",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "5551234567",
"other_signers": [
{
"contact_type": "signer",
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"active": 1,
"share_room": 1
}
]
}'
{
"notary_id": "63f4a1b2c3d4e",
"status": "active",
"contacts": [ ... ]
}
Prepare Notary Session
Finalizes the session, sends the invitations and returns the signer join link and passcode.
| Field | Type | Description |
|---|---|---|
notary_id required | string | Session ID. |
business_pay optional | boolean | Set true to bill the session to your business account instead of the signer. |
redirect_uri optional | string | URL the signer is redirected to when the session completes. |
curl -X POST https://app.onlinenotarycenter.com/api/prepare-notary-session \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"notary_id": "63f4a1b2c3d4e",
"business_pay": true,
"redirect_uri": "https://yourapp.example.com/notary/complete"
}'
{
"success": "true",
"session_link": "https://app.onlinenotarycenter.com/notary/client-join/63f4a1b2c3d4e",
"passcode": "482913"
}
Check Session Status
Returns the current room state of a session (e.g. pending, live, completed).
curl https://app.onlinenotarycenter.com/api/check-session-status/63f4a1b2c3d4e \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"success": "true",
"status": "completed"
}
{
"success": "false",
"error": "Please make sure you are supplying a valid session id"
}
Download Notarized Files
Downloads all notarized documents of a completed session as a ZIP archive (binary response).
curl -L https://app.onlinenotarycenter.com/api/download-notarized-files/63f4a1b2c3d4e \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -o notarized-files.zip
Send New Room Push
Broadcasts a real-time new room push notification over the platform's websocket service, alerting online notaries that a session is waiting.
| Field | Type | Description |
|---|---|---|
notary_id required | string | Session ID. |
notarized_by optional | string | User ID of the assigned notary. |
file_title optional | string | Title shown in the notification. |
file_id optional | string | File ID related to the room. |
schedule_id optional | string | Schedule ID if the session was booked. |
session_state optional | string | Current session state. |
display_ringer optional | string | Whether to ring online notaries. |
recipients optional | string | Restrict the push to specific recipients. |
curl -X POST https://app.onlinenotarycenter.com/api/send-new-room-push \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -d "notary_id=63f4a1b2c3d4e" \ -d "file_title=Power of Attorney" \ -d "display_ringer=1"
{
"success": "true",
"msg": "Push notification sent successfully"
}
eSign Sessions
eSign sessions collect legally binding electronic signatures without a notary meeting. The flow mirrors notary sessions — create → update signers → prepare — or can be started in a single call from a saved template.
Create eSign Session
Creates a new eSign session and uploads one or more PDF documents. Send the
request as multipart/form-data.
| Field | Type | Description |
|---|---|---|
files[] required | file | One or more PDF documents to sign. |
curl -X POST https://app.onlinenotarycenter.com/api/create-esign-session \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -F "files[]=@/path/to/contract.pdf"
{
"title": "Customer Notary",
"notary_id": "64a9b8c7d6e5f",
"status": "active"
}
Update eSign Signers
Replaces the signer list of an eSign session. Same shape as Update Notary Signers, with additional address and role fields per signer.
| Field | Type | Description |
|---|---|---|
notary_id required | string | Session ID. |
contact_type required | string | Main signer type, e.g. self. |
first_name required | string | Main signer first name. |
last_name required | string | Main signer last name. |
email required | string | Main signer email address. |
other_signers optional | array | Additional signers with contact_type, first_name, last_name, email, phone, address, city, state, zipcode, role_id, active, share_room. |
curl -X POST https://app.onlinenotarycenter.com/api/update-esign-signers \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"notary_id": "64a9b8c7d6e5f",
"contact_type": "self",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"other_signers": [
{
"contact_type": "signer",
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"phone": "5559876543",
"address": "123 Main St",
"city": "Houston",
"state": "TX",
"zipcode": "77001",
"role_id": 0,
"active": 1,
"share_room": 1
}
]
}'
Prepare eSign Session
Activates the session files and returns a one-time preparation link plus a direct signing link for every signer.
| Field | Type | Description |
|---|---|---|
notary_id required | string | Session ID. |
business_pay optional | boolean | Bill the session to your business account. |
redirect_uri optional | string | URL signers are redirected to on completion. |
curl -X POST https://app.onlinenotarycenter.com/api/prepare-esign-session \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"notary_id": "64a9b8c7d6e5f",
"business_pay": true,
"redirect_uri": "https://yourapp.example.com/esign/complete"
}'
{
"success": "true",
"notary_id": "64a9b8c7d6e5f",
"session_ot_link": "https://app.onlinenotarycenter.com/esign/api-prepare/64a9b8c7d6e5f/8f3a2c",
"contacts": {
"john.doe@example.com": {
"session_ot_link": "https://app.onlinenotarycenter.com/esign/validate-pass-code-direct/64a9b8c7d6e5f/1041/482913"
},
"jane.doe@example.com": {
"session_ot_link": "https://app.onlinenotarycenter.com/esign/validate-pass-code-direct/64a9b8c7d6e5f/1042/482913"
}
}
}
session_ot_link (top level) opens the drag-and-drop field editor
so you can place signature fields before sending. Each contact's
session_ot_link takes that signer straight into the signing room.
Create eSign Session from Template
Starts a ready-to-sign eSign session in a single call from a saved template: the template document, its signature fields and roles are copied, invitations are sent, and signing links are returned immediately.
| Field | Type | Description |
|---|---|---|
file_id required | integer | ID of a saved document-library template. Note this is not a notary_id from List Templates — it identifies a document in your library. |
signers required | array | Signers in template-role order. Index 0 is the main signer. Each entry: first_name, last_name, email, and optional phone, address, city, state, zipcode, role_id. |
var_data optional | object | Key/value pairs used to fill the template's custom fields. |
business_pay optional | boolean | Bill the session to your business account. |
redirect_uri optional | string | URL signers are redirected to on completion. |
curl -X POST https://app.onlinenotarycenter.com/api/create-esign-template-session \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"file_id": "9821",
"signers": [
{ "first_name": "John", "last_name": "Doe", "email": "john.doe@example.com" },
{ "first_name": "Jane", "last_name": "Doe", "email": "jane.doe@example.com", "role_id": 2 }
],
"var_data": {
"company_name": "Acme LLC",
"effective_date": "2026-08-03"
},
"business_pay": true
}'
{
"success": "true",
"notary_id": "64b1c2d3e4f5a",
"session_ot_link": "https://app.onlinenotarycenter.com/esign/api-prepare/64b1c2d3e4f5a/1d9e4b",
"contacts": {
"john.doe@example.com": {
"session_ot_link": "https://app.onlinenotarycenter.com/esign/validate-pass-code-direct/64b1c2d3e4f5a/1101/731658"
},
"jane.doe@example.com": {
"session_ot_link": "https://app.onlinenotarycenter.com/esign/validate-pass-code-direct/64b1c2d3e4f5a/1102/731658"
}
}
}
Templates & Partner Sessions
Templates are reusable documents with predefined signature fields, roles and custom fields. Partner endpoints let an integration list a user's templates, send them out for signature and track the resulting sessions.
List Templates
Returns all active templates created by the given user, keyed by
notary_id.
curl https://app.onlinenotarycenter.com/api/templates/1024 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"templates": {
"63e0f1a2b3c4d": {
"notary_id": "63e0f1a2b3c4d",
"type": "template",
"title": "Customer Notary",
"status": "pending",
"created_by": "1024",
"date_created": "2026-07-14 09:12:03",
"active": "1"
}
}
}
Template Contacts
Returns the signer roles (placeholder contacts) defined on a template. Use the returned contact IDs as keys when calling Build Template Session.
curl https://app.onlinenotarycenter.com/api/template-contacts/63e0f1a2b3c4d \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"notary_id": "63e0f1a2b3c4d",
"contacts": [
{
"contact_id": "501",
"first_name": "Signer",
"last_name": "One",
"contact_type": "signer"
}
],
"self": []
}
Template Items (Custom Fields)
Returns the custom fields defined on a template, so you know which keys to
supply in custom_fields / var_data.
curl https://app.onlinenotarycenter.com/api/template-items/63e0f1a2b3c4d \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"custom_fields": {
"company_name": "value",
"effective_date": "value"
}
}
Partner Sessions
Lists all template sessions of a user, newest first. Each session includes its
signer contacts and a session_status of Pending or
Completed.
curl https://app.onlinenotarycenter.com/api/partner-sessions/1024 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"sessions": [
{
"notary_id": "63e0f1a2b3c4d",
"session_id": "64c0ffee12345",
"file_id": "9821",
"session_status": "Pending",
"last_sent": "2026-07-30 16:04:11",
"contacts": [ ... ]
}
]
}
Build Template Session
Sends a template out for signature: creates the session contacts, fills the custom fields and emails every signer a join link with their passcode.
| Field | Type | Description |
|---|---|---|
contact_info required | object | Map of template contact ID → { first_name, last_name, email }. Get IDs from Template Contacts. |
custom_fields optional | object | Values for the template's custom fields (see Template Items). |
company_name required | string | Sender name shown in the invitation email. |
fromAddress required | string | From email address for the invitation. |
curl -X POST https://app.onlinenotarycenter.com/api/build-template-session/63e0f1a2b3c4d \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"contact_info": {
"501": { "first_name": "John", "last_name": "Doe", "email": "john.doe@example.com" },
"502": { "first_name": "Jane", "last_name": "Doe", "email": "jane.doe@example.com" }
},
"custom_fields": {
"company_name": "Acme LLC",
"effective_date": "2026-08-03"
},
"company_name": "Acme LLC",
"fromAddress": "docs@acme.example.com"
}'
{
"msg": "File sent successfully"
}
Download Session File
Downloads the signed document of a completed template session (binary response).
curl -L https://app.onlinenotarycenter.com/api/download-session-file/9821/64c0ffee12345 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -o signed-document.pdf
Delete Template Session
Removes a template session and its contacts.
curl -X POST https://app.onlinenotarycenter.com/api/delete-template-session/64c0ffee12345 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"msg": "Session has been removed successfully"
}