Developer Platform

Build with the Propper® API

Integrate document signing and document workflows into your applications. Our REST API and webhooks make it easy to build powerful integrations.

Quick Start

Authenticate, then send your first document for signature.

Get an Access Token

const response = await fetch('https://auth.propper.ai/oauth2/token', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    grant_type: 'client_credentials',
    client_id: process.env.PROPPER_CLIENT_ID,
    client_secret: process.env.PROPPER_CLIENT_SECRET,
    scope: 'sign:read sign:write',
  }),
});

const { access_token } = await response.json();

With a token in hand, create an agreement, add recipients, and send it. Follow the Sign quickstart for the full flow.

What You Build On

Two surfaces, and the code for both is above.

A REST request creating a document and returning its ID

REST API

Full-featured REST API for creating, sending, and managing documents. Comprehensive endpoints for all Propper features.

View examples
A webhook delivering an agreement.completed event to an application

Webhooks

Real-time event notifications for document status changes. Build event-driven integrations that respond instantly.

View events

Webhook Events

Draft
agreement.created

A new agreement was created

Out
agreement.sent

Agreement was sent for signature

Delivered
agreement.delivered

Agreement reached a recipient

Opened
agreement.viewed

Recipient viewed the agreement

Signed
agreement.recipient_signed

A recipient completed signing

Closed
agreement.completed

All signatures collected

Refused
agreement.declined

Recipient declined to sign

Voided
agreement.voided

Sender voided the agreement

Recalled
agreement.recalled

Sender recalled the agreement

Lapsed
agreement.expired

Signing period expired

Example Webhook Payload

{
  "id": "8f1a6c2e-4b7d-4a91-9c3e-2d5f8b0a7e14",
  "type": "agreement.recipient_signed",
  "version": 1,
  "occurredAt": "2026-01-15T10:30:00Z",
  "orgId": "3c9d1e77-2a45-4f68-b0c1-9e7a4d2b6f83",
  "source": "sign-api",
  "data": {
    "orgId": "3c9d1e77-2a45-4f68-b0c1-9e7a4d2b6f83",
    "agreementId": "b2e4f915-7c8a-4d13-9f60-1a8c5e3b7d92",
    "title": "Service Agreement",
    "status": "IN_PROGRESS",
    "occurredAt": "2026-01-15T10:30:00Z",
    "recipient": {
      "id": "d7c3a018-5f2b-4e96-8a41-6b0d9c2e5f37",
      "email": "signer@propper.ai",
      "name": "Jordan Lee",
      "role": "SIGNER",
      "order": 1
    }
  }
}

Authentication

Your Server
An OAuth client being created in the Propper dashboard

Client Credentials

Best for server-to-server integrations. Create an OAuth client in your organization settings, then exchange its id and secret for an access token.

Authorization: Bearer eyJhbGciOiJSUzI1NiIs...
Your User's
An OAuth consent screen granting an application access

Authorization Code

Best for user-facing integrations. Authenticate on behalf of Propper users.

Authorization: Bearer eyJhbGciOiJSUzI1NiIs...

Developer Resources

Where to go once the first request works.

The Propper API reference open to the documents endpoint

API Reference

Complete documentation for all API endpoints.

View the API reference
The Propper API reference open at the agreements endpoints

Start Building

Create an account and an OAuth client, and make your first call.

Talk to our team

Ready to Build?

Get your API credentials and start integrating Propper into your application today.