Don't adopt a workflow. Build your own.

Proposals, e-signing, deal rooms and the analytics behind them. Composable REST endpoints and webhooks. No rigid template, no black box. Wire them together however you work.

curl https://api.getaccept.com/v1/documents -H "Authorization: Bearer $TOKEN"

What teams build first

Connect GetAccept to the systems you already run — automate documents, react to every event, and build on any stack.

Automate document generation

Create documents straight from your system of record, using the data you already have — less manual entry, more throughput.

Trigger workflows from any event

Fire a workflow when a document or room changes status, extract attachments, and keep your CPQ and CRM in sync.

Build on your own stack

Running a custom CRM or ERP? Connect GetAccept to your platform and keep every benefit of both systems.

Building blocks for the whole deal

Drive contracts end-to-end, or orchestrate deal rooms. Same REST foundation, same webhooks, same depth of analytics.

Build a contract, call by call

From blank document to sealed, legally binding signature in six calls — products from your catalog, layered identity verification, even edits after sending. No UI required.

Create the document

Spin up a branded contract — from a template or your own file — with recipients and roles set on the first call.

POST /v1/documents
{
  "name": "Software as a service proposal",
  "type": "sales",
  "value": 54600,
  "recipients": [
    { "first_name": "Jordan", "last_name": "Avery", "email": "jordan@acme.com", "role": "signer" }
  ]
}

Pull in products & pricing

Fetch products from your catalogue, then attach them as a pricing table — quantities, tax and totals handled for you.

GET /v1/products?limit=100
PUT /v1/documents/xy45za9/pricing-tables
{ "pricing_tables": [ { "currency_settings": { "currency": "USD", "locale": "en-US" }, "sections": [ { "display_name": "Subscriptions", "rows": [
                        { "name": "Platform license", "quantity": 25, "price": 39 },
                      
                        { "name": "Onboarding", "quantity": 1, "price": 1500 },
                      
                        { "name": "Premium support", "quantity": 12, "price": 120 }
                      
                      ] } ] } ] }

Lock in secure e-signing

Enforce signing order and layered identity checks — SMS, eID (BankID) or Q&A — per recipient.

PUT /v1/documents/xy45za9

Seal & send

One call seals the document tamper-proof and delivers secure, verified links to every recipient.

POST /v1/documents/xy45za9/send
{
  "sender_id": "abc123"
}

Edit after sending

Change the live document after it is out — here, drop a loyalty discount onto the pricing table. Recipients see it instantly.

PUT /v1/documents/xy45za9/pricing-tables
{
  "pricing_tables": [
    {
      "locked": false,
      "summary_values": {
        "discount": { "value": "10", "flat_fee": false, "enabled": true, "display_name": "Loyalty discount" }
      }
    }
  ]
}

The recipient signs

Your recipient verifies their identity and signs. GetAccept fires a document.signed webhook with the full audit trail.

POST https://your-app.com/webhooks
{
  "event": "document.signed",
  "document": { "id": "xy45za9", "status": "signed" },
  "recipient": {
    "fullname": "Jordan Avery",
    "email": "jordan@acme.com",
    "status": "signed",
    "signing_methods": [ { "type": "eid", "verified_name": "Jordan Avery" } ]
  }
}
Preview
techflow.getaccept.com/v/xy45za9
Sent to Jordan Avery

T3chFlow sales proposal

Document expires in 14 days

Draft

Pricing details

Revised after send · net terms updated
Name Units Amount
Platform license 25 $39
Onboarding 1 $1500
Premium support 12 $120
Subtotal $0
Loyalty discount −$0
Total $0

Signatures

Tamper-proof seal
Awaiting signature
JO Jordan Avery signing…
Signed by Jordan Avery · just now
Jordan Avery Nestbuy · Signing date
John A. Lake T3chFlow · Signing date

Every interaction, captured

A live activity stream for every document — who did what, when, with the full payload behind each event.

acme.getaccept.com/v/xy45za9
Master Services Agreement Sent
live
Live Document activity
  1. 200 OK sent the document · payload
    {
      "event": "document.sent",
      "event_type": "document",
      "event_action": "sent",
      "subscription_id": "pw1333abc",
      "document": {
        "id": "xy45za9",
        "name": "Master Services Agreement",
        "status": "sent",
        "value": 48000,
        "send_date": "2026-06-28T09:14:02+00:00"
      }
    }
  2. 200 OK opened the document · payload
    {
      "event": "document.viewed",
      "event_type": "document",
      "event_action": "viewed",
      "subscription_id": "pw1333abc",
      "document": { "id": "xy45za9", "name": "Master Services Agreement" },
      "recipient": {
        "fullname": "Jordan Avery",
        "email": "jordan@acme.com",
        "role": "signer",
        "order_num": "1"
      }
    }
  3. 200 OK read every page · payload
    {
      "event": "document.reviewed",
      "event_type": "document",
      "event_action": "reviewed",
      "subscription_id": "pw1333abc",
      "document": { "id": "xy45za9", "name": "Master Services Agreement" },
      "recipient": {
        "fullname": "Jordan Avery",
        "email": "jordan@acme.com",
        "role": "signer",
        "order_num": "1"
      }
    }
  4. 200 OK left a comment · payload
    {
      "event": "comment.created",
      "event_type": "comment",
      "event_action": "created",
      "subscription_id": "pw1333abc",
      "event_meta": {
        "comment_id": "64edd66ea8e65ce5b233b922",
        "created_by": "Sam Rivera",
        "created_at": "2026-06-28T09:48:11.000Z",
        "text": "Can we revisit the payment terms on page 3?"
      }
    }
  5. 200 OK signed the document · payload
    {
      "event": "document.signed",
      "event_type": "document",
      "event_action": "signed",
      "subscription_id": "pw1333abc",
      "document": {
        "id": "xy45za9",
        "name": "Master Services Agreement",
        "status": "signed",
        "sign_date": "2026-06-28T09:52:10+00:00"
      },
      "recipient": {
        "fullname": "Jordan Avery",
        "email": "jordan@acme.com",
        "role": "signer",
        "status": "signed",
        "order_num": "1",
        "ip_address": "81.12.44.7",
        "signing_methods": [
          { "type": "sms", "signed_at": "2026-06-28T09:52:10.000Z" }
        ]
      },
      "recipients": [
        { "fullname": "Jordan Avery", "role": "signer", "status": "signed" }
      ]
    }
  6. 200 OK downloaded the PDF · payload
    {
      "event": "document.downloaded",
      "event_type": "document",
      "event_action": "downloaded",
      "subscription_id": "pw1333abc",
      "document": {
        "id": "xy45za9",
        "status": "signed",
        "download_url": "https://app.getaccept.com/document/view/xy45za9"
      },
      "recipient": {
        "fullname": "Sam Rivera",
        "email": "sam@acme.com",
        "role": "cc"
      }
    }

Subscribe once. Automate everything.

Pick any of GetAccept's webhook events, inspect the exact payload, and fan it out to the tools you already run — CRM, chat, automation, or your own endpoint.

19 webhook events — select one
One event → your workflow
POST https://your-app.com/webhooks/getaccept expects 2xx
{}
Act on GetAccept
Fetch or update anythingAny GetAccept API call
Send it anywhere
Automate anythingZapier, Make, n8n & more
Call your own endpointYour API, queue or function

Start wowing buyers and hitting quotas now

Teams scaling on the GetAccept API

From thousands of signers at once to 10+ hours saved every week — here's what teams build on our API.

book_a_demo_screen_1.5x

Talk to an API expert