Notary Everyday API Documentation
This page will help you get started with Notary Everyday's API.
Order Creation API Documentation
This documentation covers the API endpoints for creating orders and uploading documents in the Notary Everyday platform. Please request access from an admin team member to retrieve your api key(s).
Base URL
https://api.notaryeveryday.com
Authentication
All API requests require authentication. Include your API key in the request headers:
Authorization: Bearer YOUR_API_KEY
Order Creation Endpoints
1. Create Order (Without Documents)
Create a new notarial order without uploading documents.
Endpoint: POST /api/order/create
Content-Type: application/json
Request Body:
{
"signingContactsFormData": {
"orderContactEmail": "[email protected]",
"clientCompanyId": 123,
"observer": "[email protected]",
"inHouseContact": {
"contact_name": "John Smith",
"contact_phone": "+1-555-0123",
"contact_email": "[email protected]"
},
"inHouseContact2": {
"contact_name": "Jane Doe",
"contact_phone": "+1-555-0124",
"contact_email": "[email protected]"
}
},
"signingDetailsFormData": {
"fileNumber": "REF-2024-001",
"signingDate": "2024-02-15",
"signingTimeType": "at",
"specificTime": "14:30",
"timeZoneId": "America/New_York",
"propertyAddress": "123 Main St, Anytown, NY 12345",
"signingType": "Refinance",
"signerName": "Michael Johnson",
"signerPhone": "+1-555-0125",
"signerEmail": "[email protected]",
"city": "Anytown",
"state": "NY",
"zipcode": "12345",
"language": "en",
"spouseName": "Sarah Johnson",
"coSignerName": "Robert Brown",
"coSignerSpouseName": "Lisa Brown",
"coSignerPhone": "+1-555-0126",
"coSignerEmail": "[email protected]",
"signingAddress": "456 Oak Ave, Anytown, NY 12345",
"signingCity": "Anytown",
"signingState": "NY",
"signingZipcode": "12345",
"isPropertyAddressSame": false,
"esigningPlatform": "DocuSign",
"scanbacksRequired": true,
"ronSigning": false,
"documentDelivery": "Email",
"lender": "First National Bank",
"specialInstructions": "Please bring two forms of ID",
"loanOfficer": {
"contact_name": "Tom Wilson",
"contact_email": "[email protected]",
"contact_phone": "+1-555-0127"
},
"invoiceOrderTo": {
"company_name": "ABC Title Company",
"invoice_address": "789 Business Blvd",
"city": "Anytown",
"state": "NY",
"zipcode": "12345"
},
"invoiceName": "ABC Title Company",
"invoicePhone": "+1-555-0128",
"invoiceEmail": "[email protected]",
"startTime": "14:00",
"endTime": "16:00",
"invoiceFee": 150.00,
"notaryPay": 100.00
},
"signingServiceId": 456,
"utcTimeDate": "2024-02-15T19:30:00.000Z",
"utcStartTimeDate": "2024-02-15T19:00:00.000Z",
"utcEndTimeDate": "2024-02-15T21:00:00.000Z",
}Field Descriptions:
signingContactsFormData (required)
orderContactEmail(string, required): Primary contact email for the orderclientCompanyId(integer, optional): ID of the client companyobserver(string, optional): Observer email addressinHouseContact(object, optional): Primary in-house contactcontact_name(string): Contact person's full namecontact_phone(string): Phone number with country codecontact_email(string): Email address
inHouseContact2(object, optional): Secondary in-house contact (same structure as above)
signingDetailsFormData (required)
fileNumber(string, required): Unique file/loan numbersigningDate(string, required): Signing date in YYYY-MM-DD formatsigningTimeType(string, required): Time type - "at", "between", or "anytime"specificTime(string, conditional): Required if signingTimeType is "at" - format HH:MM (24-hour)startTime(string, conditional): Required if signingTimeType is "between" - format HH:MMendTime(string, conditional): Required if signingTimeType is "between" - format HH:MMtimeZoneId(string, required): IANA timezone identifier (e.g., "America/New_York")propertyAddress(string, required): Full property addresssigningType(string, required): Type of signing (e.g., "Refinance", "Purchase", "HELOC")signerName(string, required): Primary signer's full namesignerPhone(string, required): Primary signer's phone numbersignerEmail(string, required): Primary signer's email addresscity(string, required): Property citystate(string, required): Property state (2-letter code)zipcode(string, required): Property ZIP code (5 digits)language(string, optional): Language preference (default: "en")spouseName(string, optional): Spouse's full namecoSignerName(string, optional): Co-signer's full namecoSignerSpouseName(string, optional): Co-signer's spouse namecoSignerPhone(string, optional): Co-signer's phone numbercoSignerEmail(string, optional): Co-signer's email addresssigningAddress(string, optional): Signing location address (uses propertyAddress if not provided)signingCity(string, optional): Signing location citysigningState(string, optional): Signing location statesigningZipcode(string, optional): Signing location ZIP codeisPropertyAddressSame(boolean, optional): Whether signing location is same as property (default: true)esigningPlatform(string, optional): E-signing platform namescanbacksRequired(boolean, optional): Whether scanbacks are required (default: false)ronSigning(boolean, optional): Whether this is a remote online notarization (default: false)documentDelivery(string, optional): Document delivery methodlender(string, optional): Lender namespecialInstructions(string, optional): Special instructions for the notaryloanOfficer(object, optional): Loan officer informationcontact_name(string): Loan officer's namecontact_email(string): Loan officer's emailcontact_phone(string): Loan officer's phone
invoiceOrderTo(object, optional): Invoice recipient informationcompany_name(string): Company name for invoicinginvoice_address(string): Billing addresscity(string): Billing citystate(string): Billing statezipcode(string): Billing ZIP code
invoiceName(string, optional): Invoice contact nameinvoicePhone(string, optional): Invoice contact phoneinvoiceEmail(string, optional): Invoice contact emailinvoiceFee(number, optional): Invoice amountnotaryPay(number, optional): Notary payment amount
Additional Fields
signingServiceId(integer, required): ID of the signing serviceutcTimeDate(string, optional): UTC datetime for specific time appointmentsutcStartTimeDate(string, optional): UTC start datetime for time range appointmentsutcEndTimeDate(string, optional): UTC end datetime for time range appointmentsrequestedBy(object, required): Information about who is creating the orderuserId(integer): User IDuserRole(string): User rolesigningServiceId(integer): Signing service ID
Success Response (201 Created):
{
"order_id": 12345,
"file_number": "REF-2024-001",
"order_status": "NEW",
"signer_name": "Michael Johnson",
"signing_date": "2024-02-15",
"property_address": "123 Main St, Anytown, NY 12345",
"signing_service_id": 456,
"client_company_id": 123,
"notary_id": null,
"invoice_fee": 150.00,
"notary_pay": 100.00,
"created_at": "2024-01-15T10:30:00.000Z",
"updated_at": "2024-01-15T10:30:00.000Z"
}Error Responses:
400 Bad Request: Invalid request data or missing required fields409 Conflict: Duplicate order detected (same file number created within 1 minute)500 Internal Server Error: Server error
2. Create Order with Documents
Create a new notarial order and upload documents simultaneously.
Endpoint: POST /api/order/create-with-documents
Content-Type: multipart/form-data
Form Data Fields:
signingContactsFormData(string, required): JSON string with the same structure as abovesigningDetailsFormData(string, required): JSON string with the same structure as abovesigningServiceId(string, required): Signing service IDutcTimeDate(string, optional): UTC datetime for specific time appointmentsutcStartTimeDate(string, optional): UTC start datetime for time range appointmentsutcEndTimeDate(string, optional): UTC end datetime for time range appointmentsrequestedBy(string, required): JSON string with requestedBy informationdocuments(file array, required): Document files to upload
Document Requirements:
- Supported formats: PDF, DOC, DOCX, JPG, JPEG, PNG
- Maximum file size: 10MB per file
- Maximum files: 20 files per request
- File naming: Files will be sanitized (special characters replaced with underscores)
Example cURL Request:
curl -X POST "https://api.notaryeveryday.com/api/order/create-with-documents" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "signingContactsFormData={\"orderContactEmail\":\"[email protected]\",\"clientCompanyId\":123}" \
-F "signingDetailsFormData={\"fileNumber\":\"REF-2024-001\",\"signingDate\":\"2024-02-15\",\"signingTimeType\":\"at\",\"specificTime\":\"14:30\",\"timeZoneId\":\"America/New_York\",\"propertyAddress\":\"123 Main St\",\"signingType\":\"Refinance\",\"signerName\":\"Michael Johnson\",\"signerPhone\":\"+1-555-0125\",\"signerEmail\":\"[email protected]\",\"city\":\"Anytown\",\"state\":\"NY\",\"zipcode\":\"12345\"}" \
-F "signingServiceId=456" \
-F "requestedBy={\"userId\":789,\"userRole\":\"admin\",\"signingServiceId\":456}" \
-F "documents=@/path/to/document1.pdf" \
-F "documents=@/path/to/document2.pdf"Success Response (201 Created):
{
"order_id": 12345,
"file_number": "REF-2024-001",
"order_status": "NEW",
"signer_name": "Michael Johnson",
"signing_date": "2024-02-15",
"property_address": "123 Main St, Anytown, NY 12345",
"signing_service_id": 456,
"client_company_id": 123,
"notary_id": null,
"invoice_fee": 150.00,
"notary_pay": 100.00,
"documents_uploaded": 2,
"created_at": "2024-01-15T10:30:00.000Z",
"updated_at": "2024-01-15T10:30:00.000Z"
}Error Responses:
400 Bad Request: Invalid request data, missing required fields, or invalid file format409 Conflict: Duplicate order detected413 Payload Too Large: File size exceeds limit500 Internal Server Error: Server error
Example Code Implementations
JavaScript/Node.js (without documents)
const axios = require('axios');
const createOrder = async () => {
const orderData = {
signingContactsFormData: {
orderContactEmail: "[email protected]",
clientCompanyId: 123
},
signingDetailsFormData: {
fileNumber: "REF-2024-001",
signingDate: "2024-02-15",
signingTimeType: "at",
specificTime: "14:30",
timeZoneId: "America/New_York",
propertyAddress: "123 Main St, Anytown, NY 12345",
signingType: "Refinance",
signerName: "Michael Johnson",
signerPhone: "+1-555-0125",
signerEmail: "[email protected]",
city: "Anytown",
state: "NY",
zipcode: "12345"
},
signingServiceId: 456,
requestedBy: {
userId: 789,
userRole: "admin",
signingServiceId: 456
}
};
try {
const response = await axios.post('https://api.notaryeveryday.com/api/order/create', orderData, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
});
console.log('Order created:', response.data);
return response.data;
} catch (error) {
console.error('Error creating order:', error.response?.data || error.message);
throw error;
}
};JavaScript/Node.js (with documents)
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
const createOrderWithDocuments = async () => {
const formData = new FormData();
// Add form fields as JSON strings
formData.append('signingContactsFormData', JSON.stringify({
orderContactEmail: "[email protected]",
clientCompanyId: 123
}));
formData.append('signingDetailsFormData', JSON.stringify({
fileNumber: "REF-2024-001",
signingDate: "2024-02-15",
signingTimeType: "at",
specificTime: "14:30",
timeZoneId: "America/New_York",
propertyAddress: "123 Main St, Anytown, NY 12345",
signingType: "Refinance",
signerName: "Michael Johnson",
signerPhone: "+1-555-0125",
signerEmail: "[email protected]",
city: "Anytown",
state: "NY",
zipcode: "12345"
}));
formData.append('signingServiceId', '456');
formData.append('requestedBy', JSON.stringify({
userId: 789,
userRole: "admin",
signingServiceId: 456
}));
// Add document files
formData.append('documents', fs.createReadStream('/path/to/document1.pdf'));
formData.append('documents', fs.createReadStream('/path/to/document2.pdf'));
try {
const response = await axios.post(
'https://api.notaryeveryday.com/api/order/create-with-documents',
formData,
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
...formData.getHeaders()
}
}
);
console.log('Order with documents created:', response.data);
return response.data;
} catch (error) {
console.error('Error creating order with documents:', error.response?.data || error.message);
throw error;
}
};Python Example
import requests
import json
def create_order():
url = "https://api.notaryeveryday.com/api/order/create"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {
"signingContactsFormData": {
"orderContactEmail": "[email protected]",
"clientCompanyId": 123
},
"signingDetailsFormData": {
"fileNumber": "REF-2024-001",
"signingDate": "2024-02-15",
"signingTimeType": "at",
"specificTime": "14:30",
"timeZoneId": "America/New_York",
"propertyAddress": "123 Main St, Anytown, NY 12345",
"signingType": "Refinance",
"signerName": "Michael Johnson",
"signerPhone": "+1-555-0125",
"signerEmail": "[email protected]",
"city": "Anytown",
"state": "NY",
"zipcode": "12345"
},
"signingServiceId": 456,
"requestedBy": {
"userId": 789,
"userRole": "admin",
"signingServiceId": 456
}
}
try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
print("Order created:", response.json())
return response.json()
except requests.exceptions.RequestException as e:
print(f"Error creating order: {e}")
raise
def create_order_with_documents():
url = "https://api.notaryeveryday.com/api/order/create-with-documents"
headers = {
"Authorization": "Bearer YOUR_API_KEY"
}
# Prepare form data
data = {
'signingContactsFormData': json.dumps({
"orderContactEmail": "[email protected]",
"clientCompanyId": 123
}),
'signingDetailsFormData': json.dumps({
"fileNumber": "REF-2024-001",
"signingDate": "2024-02-15",
"signingTimeType": "at",
"specificTime": "14:30",
"timeZoneId": "America/New_York",
"propertyAddress": "123 Main St, Anytown, NY 12345",
"signingType": "Refinance",
"signerName": "Michael Johnson",
"signerPhone": "+1-555-0125",
"signerEmail": "[email protected]",
"city": "Anytown",
"state": "NY",
"zipcode": "12345"
}),
'signingServiceId': '456',
'requestedBy': json.dumps({
"userId": 789,
"userRole": "admin",
"signingServiceId": 456
})
}
# Prepare files
files = [
('documents', ('document1.pdf', open('/path/to/document1.pdf', 'rb'), 'application/pdf')),
('documents', ('document2.pdf', open('/path/to/document2.pdf', 'rb'), 'application/pdf'))
]
try:
response = requests.post(url, headers=headers, data=data, files=files)
response.raise_for_status()
print("Order with documents created:", response.json())
return response.json()
except requests.exceptions.RequestException as e:
print(f"Error creating order with documents: {e}")
raise
finally:
# Close file handles
for _, file_tuple in files:
if len(file_tuple) > 2:
file_tuple[1].close()Important Notes
-
File Number Uniqueness: The system prevents duplicate orders with the same file number created within a 1-minute window.
-
Time Zone Handling: Always provide
timeZoneIdusing IANA timezone identifiers (e.g., "America/New_York", "America/Los_Angeles"). -
UTC Timestamps: When providing specific times, the system will automatically convert to UTC based on the timezone provided.
-
Document Processing: Uploaded documents are automatically processed, stored in AWS S3, and associated with the order.
-
Async Processing: Some post-creation tasks (like sending notification emails) happen asynchronously after the order is created.
-
Error Handling: Always implement proper error handling to catch validation errors, network issues, and server errors.
-
Rate Limiting: API requests may be rate-limited. Implement exponential backoff for retry logic.
-
File Security: All uploaded documents are stored securely and are only accessible to authorized users.
Support
For API support, please contact:
- Email: [email protected]
Updated 6 months ago
