A Docusign®-compatible eSignature API
What is the Propper Sign API?
The Propper Sign API is a REST eSignature API that uses the same /restapi/v2.1 path structure as the Docusign® eSignature REST API for core envelope operations, so an existing Docusign integration can be pointed at Propper with minimal code changes.
The docs cover the signing workflows most integrations are built on:
- Create and send envelopes, with Base64 document upload
- Multiple recipients with sequential and parallel routing
- Embedded signing through the recipient view
- Envelope status tracking, listing, updates, and voiding
- Document download and a JSON or PDF audit trail
- Templates, template roles, and use of templates for envelopes
What does a Docusign request look like on Propper?
The same create-envelope request, before and after. The host, the account segment, and the token change. The body does not.
Before: Docusign®
POST https://{base_uri}/restapi/v2.1/accounts/{accountId}/envelopes
Authorization: Bearer <JWT grant access token>
Content-Type: application/json
{
"emailSubject": "Please sign",
"status": "sent",
"documents": [
{ "documentId": "1", "name": "Contract.pdf", "documentBase64": "..." }
],
"recipients": {
"signers": [{
"recipientId": "1",
"email": "signer@example.com",
"name": "John Smith",
"tabs": { "signHereTabs": [
{ "documentId": "1", "pageNumber": "1", "xPosition": "100", "yPosition": "500" }
] }
}]
}
}After: Propper Sign
POST https://api.propper.ai/restapi/v2.1/accounts/{organizationId}/envelopes
Authorization: Bearer <client credentials access token>
Content-Type: application/json
{
"emailSubject": "Please sign",
"status": "sent",
"documents": [
{ "documentId": "1", "name": "Contract.pdf", "documentBase64": "..." }
],
"recipients": {
"signers": [{
"recipientId": "1",
"email": "signer@example.com",
"name": "John Smith",
"tabs": { "signHereTabs": [
{ "documentId": "1", "pageNumber": "1", "xPosition": "100", "yPosition": "500" }
] }
}]
}
}The JWT grant becomes an OAuth client-credentials request, with no user-consent step:
curl -X POST https://auth.propper.ai/oauth2/token \
-H "Content-Type: application/json" \
-d '{
"grant_type": "client_credentials",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"scope": "sign:read sign:write"
}'How do Docusign concepts map to Propper?
Everything on the left has a counterpart on the right, and the notes say where they differ.
| Docusign® | Propper Sign | Notes |
|---|---|---|
| Base URL from /oauth/userinfo (account-region specific) | https://api.propper.ai/restapi/v2.1 | The path structure after the base URL is the same for core envelope operations. |
| Account ID (account GUID) | Propper organization ID | Different value, same position in the path. Find it in Organization Settings. |
| JWT grant (signature scope) | OAuth client credentials (sign:read sign:write) | No user-consent flow. The impersonation scope is not supported; use service credentials. |
| Envelopes, recipients, documents | Envelopes, recipients, documents | Docusign v2.1 request shapes (envelopeDefinition, recipients, documents, tabs). |
| Embedded signing (clientUserId + recipient view) | clientUserId + POST .../views/recipient | returnUrl and clientUserId behave the same. Signing URLs expire in 5 minutes. |
| Connect (webhooks) | Propper Webhooks | Separate systems with separate secrets. Connect can keep importing into Propper during migration. |
| Docusign SDK (docusign-esign) | Direct HTTP calls | Replace SDK calls with HTTP, or write a thin wrapper of your own. |
| Docusign error codes | Propper error format (code, message, requestId) | For example ENVELOPE_DOES_NOT_EXIST becomes ENVELOPE_NOT_FOUND (404). |
Embedded signing works the way you already build it: set clientUserId on the recipient, request a recipient view, and load the returned URL in an iframe. The embedded signing guide covers the iframe events, the CSP setting, and mobile webviews.
What is not supported yet?
Check this list against your integration before you plan a cutover.
Tabs
Not yet supported: formulaTabs, notaryTabs, attachmentTabs. Formula and attachment tabs are on the roadmap.
Partial, with basic support: checkboxTabs, radioGroupTabs, listTabs.
Signature, initial, date signed, text, full name, email, company, and title tabs are supported.
Other differences
- Bulk send through the API. Loop over the standard create-envelope call.
- Docusign Admin API. Use the Propper admin dashboard.
- PowerForms. Use embedded signing with your own forms.
- SMS delivery. Email delivery only.
- ID verification (IDV). On the roadmap.
- Impersonation scope. Use Propper service credentials.
- No Propper SDK. Integrate with direct HTTP calls.
- No separate sandbox. Build and test against a 14-day trial account, which runs on the Business plan with full API access.
If your integration depends on an unsupported tab type, the migration guide recommends contacting support to discuss alternatives or timing.
What does the Propper API cost?
API access is included on the Business plan. There is no separate API tier to buy. Business is $180 per year billed annually, with unlimited users.
Documents sent through the API are priced the same as documents sent from the web app. See Propper pricing for the current plans and volume rates, and the Propper and Docusign comparison for a dated side-by-side.
How is the Propper API secured?
Server-to-server calls authenticate with OAuth 2.0 client credentials and scopes (sign:read and sign:write for the Sign API). Access tokens expire after one hour.
Propper has completed a SOC 2 Type II audit by an independent CPA firm. Data is encrypted at rest with AES-256, and data in transit is protected with TLS 1.2 or higher. The security page has the full detail, including how to request the SOC 2 report under NDA.
How do you migrate a Docusign integration?
Seven steps, drawn from the migration guide in the Propper docs.
Check your tab types
List every tab type your envelope-creation code sends. If it uses formula, notary, or attachment tabs, plan an alternative before you cut over.
Create an OAuth client
Create an OAuth client in your Propper organization and note your organization ID. It replaces your Docusign account ID in every request path.
Swap the base URL and authentication
Point requests at https://api.propper.ai/restapi/v2.1, and replace the JWT grant with a client-credentials token request. Tokens expire in one hour, so cache them and refresh before expiry.
Replace SDK calls with HTTP calls
The request bodies keep the same shape, so this is mostly mechanical. A thin wrapper of your own keeps the diff small if SDK usage is widespread.
Verify embedded signing
Create an envelope with clientUserId on the recipient, request the recipient view with a returnUrl, and load the URL in an iframe. Generate it just before you show it, because it expires in 5 minutes.
Choose a cutover path
Switch everything in one deployment, or keep Docusign running and import completed envelopes into Propper through Docusign Connect (JSON, Send Individual Messages) while new work moves over.
Run the end-to-end checklist
Create an envelope, generate a signing URL, complete the signature, check the status, and download the signed PDF. The migration guide has pass and fail criteria for each checkpoint.

Try your integration against Propper
Start a free trial, create an OAuth client, and send your first envelope. Or talk through your migration with our team.
Docusign®, Adobe Sign® and Acrobat Sign®, OneSpan®, PandaDoc®, and Dropbox Sign® are registered trademarks of Docusign, Inc., Adobe Inc., OneSpan Inc., PandaDoc, Inc., and Dropbox, Inc., respectively. Propper® is a registered trademark of PropperDocs, Inc.
PropperDocs, Inc. is not affiliated with, endorsed by, or sponsored by these companies.