Request partner access
curl --request POST \
--url https://signsealship.com/api/partner/request \
--header 'Content-Type: application/json' \
--data '
{
"firmName": "Maple Title Co.",
"contactName": "Dana Reyes",
"workEmail": "dana@mapletitle.com",
"role": "Escrow officer",
"expectedVolume": "15 closings/month",
"useCase": "Create a Verified Closing Room per escrow file and share the live link with buyers, sellers, and lenders."
}
'const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
firmName: 'Maple Title Co.',
contactName: 'Dana Reyes',
workEmail: 'dana@mapletitle.com',
role: 'Escrow officer',
expectedVolume: '15 closings/month',
useCase: 'Create a Verified Closing Room per escrow file and share the live link with buyers, sellers, and lenders.'
})
};
fetch('https://signsealship.com/api/partner/request', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://signsealship.com/api/partner/request"
payload = {
"firmName": "Maple Title Co.",
"contactName": "Dana Reyes",
"workEmail": "dana@mapletitle.com",
"role": "Escrow officer",
"expectedVolume": "15 closings/month",
"useCase": "Create a Verified Closing Room per escrow file and share the live link with buyers, sellers, and lenders."
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": "issued",
"message": "Your Closing Rooms access is ready — check your email."
}{
"error": "<string>"
}Endpoints
Request partner access
Request a partner API key self-serve. Public; rate limited to 5 requests per hour per IP. A business-domain work email plus a coherent, on-topic use case is issued a trial key instantly (emailed once); everything else is queued for human review. Both outcomes return 200.
POST
/
api
/
partner
/
request
Request partner access
curl --request POST \
--url https://signsealship.com/api/partner/request \
--header 'Content-Type: application/json' \
--data '
{
"firmName": "Maple Title Co.",
"contactName": "Dana Reyes",
"workEmail": "dana@mapletitle.com",
"role": "Escrow officer",
"expectedVolume": "15 closings/month",
"useCase": "Create a Verified Closing Room per escrow file and share the live link with buyers, sellers, and lenders."
}
'const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
firmName: 'Maple Title Co.',
contactName: 'Dana Reyes',
workEmail: 'dana@mapletitle.com',
role: 'Escrow officer',
expectedVolume: '15 closings/month',
useCase: 'Create a Verified Closing Room per escrow file and share the live link with buyers, sellers, and lenders.'
})
};
fetch('https://signsealship.com/api/partner/request', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://signsealship.com/api/partner/request"
payload = {
"firmName": "Maple Title Co.",
"contactName": "Dana Reyes",
"workEmail": "dana@mapletitle.com",
"role": "Escrow officer",
"expectedVolume": "15 closings/month",
"useCase": "Create a Verified Closing Room per escrow file and share the live link with buyers, sellers, and lenders."
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": "issued",
"message": "Your Closing Rooms access is ready — check your email."
}{
"error": "<string>"
}Body
application/json
Your firm or company name.
Maximum string length:
200The requester's full name.
Maximum string length:
200A deliverable work email. The issued key is sent here; a business domain is the strongest signal for instant issue.
Maximum string length:
254Your role at the firm (e.g. "Escrow officer").
Maximum string length:
120Rough expected volume (e.g. "10-20 closings/month").
Maximum string length:
120What you plan to build or run on the API.
Maximum string length:
4000Optional bot-screening token; omit when calling the API directly.