Create RON Sessions

Use this guide to master the creation of RON session

Remote Online Notarization (RON) sessions connect signers with a notary over live video. This guide covers everything you need to create a RON session via the BlueNotary API.

Other signing types: For eSign-only sessions, see Create an eSign Session. For In-Person Electronic Notarization (IPEN), see Create an IPEN Session.


Base URL

POST https://{your-domain}/api/integrationsv2/sessions

Replace {your-domain} with app.bluenotary.us or your custom white-label domain if applicable.


Authentication

All requests require a Bearer token in the Authorization header.

Authorization: Bearer YOUR_API_KEY

Your API key is available in your BlueNotary Business Admin account under Settings → API.


Request Parameters

Top-Level Fields

FieldTypeRequiredDescription
signing_typestringYesMust be "ron" for Remote Online Notarization.
notarization_idstringNoYour own reference ID for this session. Returned as a query parameter on the completion redirect page. Can be any alphanumeric string.
all_signersarrayYesList of signers. See Signers Object below.
session_typestringNo"closing" for mortgage/loan closings, "gnw" for general notarization. Defaults to "closing".
notarization_timing_typestringYes"notarize_now" for on-demand notary assignment, or "notarize_later" to schedule a specific time.
session_timingstringConditionalRequired when notarization_timing_type is "notarize_later". ISO 8601 datetime string, e.g. "2024-09-15T10:00:00-05:00".
session_notary_emailstringConditionalRequired when assigning a specific notary from your team. Must be a notary user on your Business Admin account. If omitted, BlueNotary assigns an on-demand notary from the network.
notarization_typesstringNoThe notarial act(s) required. Comma-separated for multiple. Common values: "Acknowledgement", "Jurat", "Oath", "Copy Certification". Defaults to "Acknowledgement".
witnessesobjectNoConfigure witnesses for the session. See Witnesses Object.
session_documentsarrayNoDocuments to be notarized, uploaded as base64. See Documents Object. Required if document_templates is not provided.
document_templatesarrayNoList of template IDs from your BlueNotary account to use instead of uploading documents. Required if session_documents is not provided.
final_documents_delivery_modestringNo"immediately" delivers signed documents to signers upon session completion (default). "notary_manual" holds delivery until the notary manually releases them.
send_invite_after_pretaggingstringNoWhen true, invitation emails are held until the session notary, pretagger, or admin marks the document as pretagged. Useful when using templates that require annotation review before signers are notified. Defaults to false.
loan_detailsobjectNoRequired for eClosing sessions (session_type: "closing"). See eClosing Scenario.
session_configurationsobjectNoSession-level overrides. See Session Configurations.

Signers Object

Each object in all_signers represents one signer.

FieldTypeRequiredDescription
emailstringYesSigner's email address.
first_namestringYesSigner's first name.
last_namestringYesSigner's last name.
middle_namestringNoSigner's middle name.
suffixstringNoName suffix. Accepted values: J, Jr, JR, S, Sr, SR, I, II, III, IV, V, VI, VII, VIII, IX, 29.
addressstringNoStreet address.
citystringNoCity.
statestringNoState abbreviation, e.g. "CA".
zipstringNoZIP code.
contact_methodstringNoContact method, e.g. "Mobile".
contact_detailsstringNoContact value, e.g. phone number.
authentication_typestringNoIdentity verification method for the signer when entering the session. "kba" (Knowledge-Based Authentication), "biometrics" (ID scan + selfie), or "skip" (no verification).
is_shared_device_ownerbooleanNoSet to true to designate this signer as the host in Same Device Signing mode. Only one signer can be the host. If not set, the primary signer (first in the array) is the host by default for RON sessions.

Witnesses Object

FieldTypeDescription
number_of_bluenotary_witnessesintegerNumber of witnesses to source from the BlueNotary notary network. Defaults to 0.
bluenotary_witness_id_auth_requiredbooleanSet to true if BlueNotary-sourced witnesses must complete ID authentication. Defaults to false.
invited_witness_detailsarrayProvide your own witnesses. Each object requires email and optionally firstname, lastname, phoneNumber, witnessAdressLine1, witnessAddressState, isPhysicallyPresent, and need_id_auth.

Documents Object

Each object in session_documents represents one document.

FieldTypeRequiredDescription
namestringYesFile name including extension, e.g. "deed.pdf".
base64DocstringYesBase64-encoded document content. Supported formats: PDF, DOCX, TXT, JPG, PNG. Maximum file size: 10MB per document.
applyTemplatestringNoTemplate ID to use for auto-tagging this document. The uploaded PDF must match the template's original PDF.
annotationsarrayNoPre-placed annotation fields. Each annotation requires fieldType, pageNum, x, y, width, height, and role. See the Annotations reference for full field definitions.
notary_can_edit_documentsbooleanNoAllow the session notary to add new annotations to this document. Defaults to false.

Session Configurations

FieldTypeDescription
auto_expire_session_onstringISO 8601 datetime after which the session is automatically expired.
notary_can_edit_documentsbooleanAllow the notary to add annotations across all session documents. Defaults to false. Overrides the per-document setting.
same_device_signing_modestringSet to "all" to enable Same Device Signing. In this mode, all signers share one physical device. The host signer joins first and manages access for other signers. See Same Device Signing scenario.
delay_thresholdobjectControls the modal shown to participants if the notary is late to join. Accepts title, message, and up to 2 actions (link buttons). Overrides your account-level defaults.

Response

A successful 200 response returns the following fields:

FieldDescription
response"Pass" on success.
response_messageHuman-readable status, e.g. "Session created successfully".
notarization_idThe notarization_id you provided in the request, echoed back.
bn_session_idBlueNotary's unique ID for this session. Store this — you'll need it for status lookups and webhooks.
bn_signing_urlRelative signing URL for the primary signer (first in all_signers).
full_signing_urlAbsolute signing URL for the primary signer. Redirect the signer to this URL or embed it in your application to launch their session.
additional_signers_signing_urlsArray of {bn_signing_url, full_signing_url} objects for each additional signer, in the same order as all_signers[1...]. Distribute each URL only to the corresponding signer — each URL is personalized and pre-authenticated.
witnessess_signing_urlsArray of signing URLs for any invited witnesses, in the same order as witnesses.invited_witness_details.

Security note: Each full_signing_url contains a pre-authenticated token for that specific signer. Do not share one signer's URL with another participant.


Scenarios


Scenario 1: On-Demand Notary (Notarize Now)

The simplest RON session. BlueNotary automatically assigns an available notary from its network. The signer can join immediately after receiving their invitation.

Omit session_notary_email — leaving it blank triggers on-demand assignment.

curl
curl --location 'https://app.bluenotary.us/api/integrationsv2/sessions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
  "signing_type": "ron",
  "notarization_id": "order-001",
  "notarization_timing_type": "notarize_now",
  "notarization_types": "Acknowledgement",
  "all_signers": [
    {
      "email": "[email protected]",
      "first_name": "Jane",
      "last_name": "Doe",
      "authentication_type": "kba"
    }
  ],
  "session_documents": [
    {
      "name": "power-of-attorney.pdf",
      "base64Doc": "YOUR_BASE64_ENCODED_PDF"
    }
  ]
}'
JavaScript (fetch)
const response = await fetch('https://app.bluenotary.us/api/integrationsv2/sessions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    signing_type: 'ron',
    notarization_id: 'order-001',
    notarization_timing_type: 'notarize_now',
    notarization_types: 'Acknowledgement',
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    session_documents: [
      {
        name: 'power-of-attorney.pdf',
        base64Doc: 'YOUR_BASE64_ENCODED_PDF'
      }
    ]
  })
});

const data = await response.json();
console.log(data.full_signing_url); // Redirect the signer here
Node.js
const request = require('request');

request({
  method: 'POST',
  url: 'https://app.bluenotary.us/api/integrationsv2/sessions',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  json: {
    signing_type: 'ron',
    notarization_id: 'order-001',
    notarization_timing_type: 'notarize_now',
    notarization_types: 'Acknowledgement',
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    session_documents: [
      {
        name: 'power-of-attorney.pdf',
        base64Doc: 'YOUR_BASE64_ENCODED_PDF'
      }
    ]
  }
}, (error, response, body) => {
  if (error) throw new Error(error);
  console.log(body.full_signing_url); // Redirect the signer here
});

Sample Response

{
  "response": "Pass",
  "response_message": "Session created successfully",
  "notarization_id": "order-001",
  "bn_session_id": "67af8e4d1dfa453d2a05b24e",
  "bn_signing_url": "/sign-in?type=customer&...",
  "full_signing_url": "https://app.bluenotary.us/sign-in?type=customer&...",
  "additional_signers_signing_urls": [],
  "witnessess_signing_urls": []
}

Scenario 2: Schedule for Later

Use notarize_later when you want the session to occur at a specific date and time. The signer receives an invitation with the scheduled time, and the notary is assigned closer to the session start.

curl
curl --location 'https://app.bluenotary.us/api/integrationsv2/sessions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
  "signing_type": "ron",
  "notarization_id": "order-002",
  "notarization_timing_type": "notarize_later",
  "session_timing": "2024-09-15T10:00:00-05:00",
  "notarization_types": "Acknowledgement",
  "all_signers": [
    {
      "email": "[email protected]",
      "first_name": "Jane",
      "last_name": "Doe",
      "authentication_type": "kba"
    }
  ],
  "session_documents": [
    {
      "name": "deed.pdf",
      "base64Doc": "YOUR_BASE64_ENCODED_PDF"
    }
  ]
}'
JavaScript (fetch)
const response = await fetch('https://app.bluenotary.us/api/integrationsv2/sessions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    signing_type: 'ron',
    notarization_id: 'order-002',
    notarization_timing_type: 'notarize_later',
    session_timing: '2024-09-15T10:00:00-05:00',
    notarization_types: 'Acknowledgement',
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    session_documents: [
      {
        name: 'deed.pdf',
        base64Doc: 'YOUR_BASE64_ENCODED_PDF'
      }
    ]
  })
});

const data = await response.json();
Node.js
request({
  method: 'POST',
  url: 'https://app.bluenotary.us/api/integrationsv2/sessions',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  json: {
    signing_type: 'ron',
    notarization_id: 'order-002',
    notarization_timing_type: 'notarize_later',
    session_timing: '2024-09-15T10:00:00-05:00',
    notarization_types: 'Acknowledgement',
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    session_documents: [
      {
        name: 'deed.pdf',
        base64Doc: 'YOUR_BASE64_ENCODED_PDF'
      }
    ]
  }
}, (error, response, body) => {
  console.log(body);
});

Timezone note: Always include the UTC offset in session_timing. 2024-09-15T10:00:00-05:00 means 10:00 AM Central time. Omitting the offset may cause the session to be scheduled in the wrong timezone.


Scenario 3: Team Notary (Assign Your Own Notary)

Use session_notary_email to assign a specific notary from your Business Admin account. The notary must already exist as a notary user under your account. This is the recommended approach when you have a dedicated notary workforce.

curl
curl --location 'https://app.bluenotary.us/api/integrationsv2/sessions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
  "signing_type": "ron",
  "notarization_id": "order-003",
  "notarization_timing_type": "notarize_later",
  "session_timing": "2024-09-15T14:00:00-05:00",
  "session_notary_email": "[email protected]",
  "notarization_types": "Acknowledgement",
  "all_signers": [
    {
      "email": "[email protected]",
      "first_name": "Jane",
      "last_name": "Doe",
      "authentication_type": "kba"
    }
  ],
  "session_documents": [
    {
      "name": "affidavit.pdf",
      "base64Doc": "YOUR_BASE64_ENCODED_PDF"
    }
  ]
}'
JavaScript (fetch)
const response = await fetch('https://app.bluenotary.us/api/integrationsv2/sessions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    signing_type: 'ron',
    notarization_id: 'order-003',
    notarization_timing_type: 'notarize_later',
    session_timing: '2024-09-15T14:00:00-05:00',
    session_notary_email: '[email protected]',
    notarization_types: 'Acknowledgement',
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    session_documents: [
      {
        name: 'affidavit.pdf',
        base64Doc: 'YOUR_BASE64_ENCODED_PDF'
      }
    ]
  })
});
Node.js
request({
  method: 'POST',
  url: 'https://app.bluenotary.us/api/integrationsv2/sessions',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  json: {
    signing_type: 'ron',
    notarization_id: 'order-003',
    notarization_timing_type: 'notarize_later',
    session_timing: '2024-09-15T14:00:00-05:00',
    session_notary_email: '[email protected]',
    notarization_types: 'Acknowledgement',
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    session_documents: [
      {
        name: 'affidavit.pdf',
        base64Doc: 'YOUR_BASE64_ENCODED_PDF'
      }
    ]
  }
}, (error, response, body) => {
  console.log(body);
});

Prerequisites: The email in session_notary_email must belong to a notary user created under your Business Admin account. If the email is not found or is not credentialed as a notary, the request will fail.


Scenario 4: State-Specific Notary

By default, BlueNotary allows cross-state notarization and selects from the full notary network. Use state_specific_notary only when your transaction legally requires a notary commissioned in a particular state. Note that specifying a state significantly reduces the available notary pool and may increase wait times.

curl
curl --location 'https://app.bluenotary.us/api/integrationsv2/sessions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
  "signing_type": "ron",
  "notarization_id": "order-004",
  "notarization_timing_type": "notarize_now",
  "state_specific_notary": "Florida",
  "notarization_types": "Acknowledgement",
  "all_signers": [
    {
      "email": "[email protected]",
      "first_name": "Jane",
      "last_name": "Doe",
      "authentication_type": "kba"
    }
  ],
  "session_documents": [
    {
      "name": "contract.pdf",
      "base64Doc": "YOUR_BASE64_ENCODED_PDF"
    }
  ]
}'
JavaScript (fetch)
const response = await fetch('https://app.bluenotary.us/api/integrationsv2/sessions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    signing_type: 'ron',
    notarization_id: 'order-004',
    notarization_timing_type: 'notarize_now',
    state_specific_notary: 'Florida',
    notarization_types: 'Acknowledgement',
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    session_documents: [
      {
        name: 'contract.pdf',
        base64Doc: 'YOUR_BASE64_ENCODED_PDF'
      }
    ]
  })
});
Node.js
request({
  method: 'POST',
  url: 'https://app.bluenotary.us/api/integrationsv2/sessions',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  json: {
    signing_type: 'ron',
    notarization_id: 'order-004',
    notarization_timing_type: 'notarize_now',
    state_specific_notary: 'Florida',
    notarization_types: 'Acknowledgement',
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    session_documents: [
      {
        name: 'contract.pdf',
        base64Doc: 'YOUR_BASE64_ENCODED_PDF'
      }
    ]
  }
}, (error, response, body) => {
  console.log(body);
});

Scenario 5: Using a Template Instead of Uploading a Document

If you have pre-configured document templates in your BlueNotary account (with signature fields, notary seals, and other annotations already placed), you can reference them by ID instead of uploading a base64 document. This avoids re-uploading the same document repeatedly and ensures consistent annotation placement.

Find your template IDs in your Business Admin account under Templates.

Optionally set send_invite_after_pretagging: true if you want to review annotation placement before the signer receives their invitation.

curl
curl --location 'https://app.bluenotary.us/api/integrationsv2/sessions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
  "signing_type": "ron",
  "notarization_id": "order-005",
  "notarization_timing_type": "notarize_now",
  "notarization_types": "Acknowledgement",
  "all_signers": [
    {
      "email": "[email protected]",
      "first_name": "Jane",
      "last_name": "Doe",
      "authentication_type": "kba"
    }
  ],
  "document_templates": ["template_id_abc123"]
}'
JavaScript (fetch)
const response = await fetch('https://app.bluenotary.us/api/integrationsv2/sessions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    signing_type: 'ron',
    notarization_id: 'order-005',
    notarization_timing_type: 'notarize_now',
    notarization_types: 'Acknowledgement',
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    document_templates: ['template_id_abc123']
  })
});
Node.js
request({
  method: 'POST',
  url: 'https://app.bluenotary.us/api/integrationsv2/sessions',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  json: {
    signing_type: 'ron',
    notarization_id: 'order-005',
    notarization_timing_type: 'notarize_now',
    notarization_types: 'Acknowledgement',
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    document_templates: ['template_id_abc123']
  }
}, (error, response, body) => {
  console.log(body);
});

Template vs. applyTemplate: document_templates replaces the need to upload a document entirely. If you upload a document via session_documents and also provide applyTemplate on that document, BlueNotary will attempt to auto-tag the uploaded PDF using the matching template's annotations. Both approaches require the PDF to match the template's original file.


Scenario 6: Same Device Signing

Use Same Device Signing when multiple signers are physically present in the same location and sharing one device. The host signer joins first; the session then prompts each additional signer to complete their portion in sequence on the same device.

For RON sessions, the primary signer (first in all_signers) is the default host. Set is_shared_device_owner: true on a specific signer to override this.

curl
curl --location 'https://app.bluenotary.us/api/integrationsv2/sessions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
  "signing_type": "ron",
  "notarization_id": "order-006",
  "notarization_timing_type": "notarize_now",
  "notarization_types": "Acknowledgement",
  "session_configurations": {
    "same_device_signing_mode": "all"
  },
  "all_signers": [
    {
      "email": "[email protected]",
      "first_name": "Jane",
      "last_name": "Doe",
      "authentication_type": "kba",
      "is_shared_device_owner": true
    },
    {
      "email": "[email protected]",
      "first_name": "John",
      "last_name": "Doe",
      "authentication_type": "kba"
    }
  ],
  "session_documents": [
    {
      "name": "joint-deed.pdf",
      "base64Doc": "YOUR_BASE64_ENCODED_PDF"
    }
  ]
}'
JavaScript (fetch)
const response = await fetch('https://app.bluenotary.us/api/integrationsv2/sessions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    signing_type: 'ron',
    notarization_id: 'order-006',
    notarization_timing_type: 'notarize_now',
    notarization_types: 'Acknowledgement',
    session_configurations: {
      same_device_signing_mode: 'all'
    },
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba',
        is_shared_device_owner: true
      },
      {
        email: '[email protected]',
        first_name: 'John',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    session_documents: [
      {
        name: 'joint-deed.pdf',
        base64Doc: 'YOUR_BASE64_ENCODED_PDF'
      }
    ]
  })
});
Node.js
request({
  method: 'POST',
  url: 'https://app.bluenotary.us/api/integrationsv2/sessions',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  json: {
    signing_type: 'ron',
    notarization_id: 'order-006',
    notarization_timing_type: 'notarize_now',
    notarization_types: 'Acknowledgement',
    session_configurations: {
      same_device_signing_mode: 'all'
    },
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba',
        is_shared_device_owner: true
      },
      {
        email: '[email protected]',
        first_name: 'John',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    session_documents: [
      {
        name: 'joint-deed.pdf',
        base64Doc: 'YOUR_BASE64_ENCODED_PDF'
      }
    ]
  }
}, (error, response, body) => {
  console.log(body);
});

Scenario 7: eClosing Session

An eClosing session is a RON session with mortgage or loan closing context attached. Use session_type: "closing" and populate the loan_details object with the relevant loan information. This enables loan-specific features in the session UI including loan number display and closing type labeling.

curl
curl --location 'https://app.bluenotary.us/api/integrationsv2/sessions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
  "signing_type": "ron",
  "session_type": "closing",
  "notarization_id": "loan-closing-007",
  "notarization_timing_type": "notarize_later",
  "session_timing": "2024-09-20T09:00:00-06:00",
  "notarization_types": "Acknowledgement",
  "loan_details": {
    "loan_number": "LN-20240920-001",
    "loan_session_type": "refinance",
    "other_details": {
      "property_address": "123 Main St",
      "property_city": "Austin",
      "property_state": "TX",
      "property_zip": "78701",
      "session_instructions": "Please review all pages carefully before signing."
    }
  },
  "all_signers": [
    {
      "email": "[email protected]",
      "first_name": "Jane",
      "last_name": "Doe",
      "authentication_type": "kba"
    }
  ],
  "session_documents": [
    {
      "name": "closing-package.pdf",
      "base64Doc": "YOUR_BASE64_ENCODED_PDF"
    }
  ]
}'
JavaScript (fetch)
const response = await fetch('https://app.bluenotary.us/api/integrationsv2/sessions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    signing_type: 'ron',
    session_type: 'closing',
    notarization_id: 'loan-closing-007',
    notarization_timing_type: 'notarize_later',
    session_timing: '2024-09-20T09:00:00-06:00',
    notarization_types: 'Acknowledgement',
    loan_details: {
      loan_number: 'LN-20240920-001',
      loan_session_type: 'refinance',
      other_details: {
        property_address: '123 Main St',
        property_city: 'Austin',
        property_state: 'TX',
        property_zip: '78701',
        session_instructions: 'Please review all pages carefully before signing.'
      }
    },
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    session_documents: [
      {
        name: 'closing-package.pdf',
        base64Doc: 'YOUR_BASE64_ENCODED_PDF'
      }
    ]
  })
});
Node.js
request({
  method: 'POST',
  url: 'https://app.bluenotary.us/api/integrationsv2/sessions',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  json: {
    signing_type: 'ron',
    session_type: 'closing',
    notarization_id: 'loan-closing-007',
    notarization_timing_type: 'notarize_later',
    session_timing: '2024-09-20T09:00:00-06:00',
    notarization_types: 'Acknowledgement',
    loan_details: {
      loan_number: 'LN-20240920-001',
      loan_session_type: 'refinance',
      other_details: {
        property_address: '123 Main St',
        property_city: 'Austin',
        property_state: 'TX',
        property_zip: '78701',
        session_instructions: 'Please review all pages carefully before signing.'
      }
    },
    all_signers: [
      {
        email: '[email protected]',
        first_name: 'Jane',
        last_name: 'Doe',
        authentication_type: 'kba'
      }
    ],
    session_documents: [
      {
        name: 'closing-package.pdf',
        base64Doc: 'YOUR_BASE64_ENCODED_PDF'
      }
    ]
  }
}, (error, response, body) => {
  console.log(body);
});

loan_session_type values

ValueDescription
HELOCHome Equity Line of Credit
refinanceRefinance
sellerSeller closing
cashCash purchase
borrowerBorrower-side closing
otherOther — provide detail in other_loan_session_type

Scenario 8: Session with Witnesses

Some states require one or more witnesses in addition to the notary. BlueNotary supports two approaches: sourcing witnesses from the BlueNotary notary network, or inviting your own. You can combine both in the same session.

curl (BlueNotary witnesses)
curl --location 'https://app.bluenotary.us/api/integrationsv2/sessions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
  "signing_type": "ron",
  "notarization_id": "order-008a",
  "notarization_timing_type": "notarize_now",
  "notarization_types": "Acknowledgement",
  "witnesses": {
    "number_of_bluenotary_witnesses": 2,
    "bluenotary_witness_id_auth_required": false
  },
  "all_signers": [
    {
      "email": "[email protected]",
      "first_name": "Jane",
      "last_name": "Doe",
      "authentication_type": "kba"
    }
  ],
  "session_documents": [
    {
      "name": "will.pdf",
      "base64Doc": "YOUR_BASE64_ENCODED_PDF"
    }
  ]
}'
curl (Invited witnesses)
curl --location 'https://app.bluenotary.us/api/integrationsv2/sessions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
  "signing_type": "ron",
  "notarization_id": "order-008b",
  "notarization_timing_type": "notarize_now",
  "notarization_types": "Acknowledgement",
  "witnesses": {
    "invited_witness_details": [
      {
        "email": "[email protected]",
        "firstname": "Alice",
        "lastname": "Smith",
        "isPhysicallyPresent": false,
        "need_id_auth": false
      }
    ]
  },
  "all_signers": [
    {
      "email": "[email protected]",
      "first_name": "Jane",
      "last_name": "Doe",
      "authentication_type": "kba"
    }
  ],
  "session_documents": [
    {
      "name": "will.pdf",
      "base64Doc": "YOUR_BASE64_ENCODED_PDF"
    }
  ]
}'

The response will include signing URLs for invited witnesses in witnessess_signing_urls, in the same order as witnesses.invited_witness_details. BlueNotary-sourced witnesses are assigned and notified by the platform — no URLs are returned for them.


Error Handling

A failed request returns HTTP 403 with the following shape:

{
  "response": "Fail",
  "response_message": "...",
  "notarization_id": "",
  "bn_session_id": "",
  "bn_signing_url": ""
}

Common errors and how to resolve them:

response_messageCauseResolution
notarization_timing_type fields are missing in requestnotarization_timing_type was not provided.Add "notarization_timing_type": "notarize_now" or "notarize_later" to your request.
session_timing is required when notarization_timing_type is notarize_laternotarize_later was set but no session_timing was provided.Add session_timing as an ISO 8601 datetime string.
Invalid session_notary_emailThe notary email is not found under your Business Admin account, or the user is not credentialed as a notary.Verify the email exists as a notary user in your account under Team → Notaries.
Unauthorized / 403 with no bodyMissing or invalid API key.Check that your Authorization header uses the format Bearer YOUR_API_KEY and that the key is active.
all_signers must have at least one signerall_signers array was empty or missing.Provide at least one signer with email, first_name, and last_name.
session_documents or document_templates requiredNeither documents nor templates were provided.Add either session_documents with a base64-encoded file, or document_templates with at least one template ID.
Document exceeds maximum file sizeA base64-encoded document exceeds the 10MB limit.Compress or split the document before encoding.

Other Signing Types

This guide covers RON sessions only.



Did this page help you?