The API is in every plan.
A key does what a person at the keyboard can do, and it is covered by the plan your team is already on. There is no per-call charge and no separate price for building against it.
Decisions worth knowing before you start
There is no sign endpoint
A signature is only ever applied inside a session the party authenticated into. You can mint that session through the API; you cannot apply a signature with an API key.
Cursor pagination
Agreements, templates, the audit trail and the usage ledger page with an opaque cursor rather than an offset. If rows are added or removed while you are paging through, you still will not miss one or see one twice.
Real JSON types
Booleans are booleans and numbers are numbers. Nothing arrives as the string "true".
One error shape
A code, a message, the request id, a link to the explanation, and whether retrying unchanged is worth your time.
You choose the ids
Documents and people carry ids you assign, unique within the agreement, so a whole agreement is one request with no round trip to learn ours.
Explicit transitions
Sending is a call to send. Writing a status field never triggers anything.
Every route, all 26 of them
Agreements
GET/v1/agreementsList agreementsPOST/v1/agreementsCreate an agreementGET/v1/agreements/{id}Read an agreementPOST/v1/agreements/{id}/correctCorrect an agreement in flightGET/v1/agreements/{id}/documentsList documentsGET/v1/agreements/{id}/documents/{documentId}Download a documentGET/v1/agreements/{id}/fieldsRead field valuesGET/v1/agreements/{id}/partiesList partiesPOST/v1/agreements/{id}/resendResend to outstanding partiesPOST/v1/agreements/{id}/sendSend an agreementPOST/v1/agreements/{id}/voidVoid an agreement
Templates
GET/v1/templatesList templatesPOST/v1/templatesCreate a templateGET/v1/templates/{id}Read a templateDELETE/v1/templates/{id}Delete a template
Evidence
GET/v1/agreements/{id}/audit-eventsRead the audit trailGET/v1/agreements/{id}/certificateRead the Signing Certificate
Signing
POST/v1/agreements/{id}/signing-sessionsMint a signing session
Webhooks
GET/v1/webhooksList webhook endpointsPOST/v1/webhooksCreate a webhook endpointPUT/v1/webhooks/{id}Update a webhook endpointDELETE/v1/webhooks/{id}Delete a webhook endpointGET/v1/webhooks/deliveriesRead the delivery logPOST/v1/webhooks/deliveries/{id}/replayReplay a delivery
Account
GET/v1/capabilitiesRead the capability objectGET/v1/usageRead the usage ledger
This list is read from the OpenAPI document rather than written out again here, so the page and the document always say the same thing. The field types, statuses, event names and error codes in it are read from the modules the server itself imports, so those sets are the ones the code has.
Webhooks
Deliveries are signed over the timestamp and the body together, so a captured request cannot be replayed at you later. Failures back off, an endpoint that keeps failing is suspended rather than retried forever, and every attempt stays in the delivery log with the status code and the response body your endpoint returned, so you can fix your receiver and replay a delivery by its id.