Base URL & auth
https://esig.ca/api
Authorization: Bearer YOUR_TOKEN_HERE Accept: application/json Content-Type: application/json
Create tokens in the app under API Tokens, or via POST /api/tokens. Requires plan feature api_access.
Every product feature is available over REST with a Sanctum personal access token. Plan feature keys gate each resource the same way as the web app.
https://esig.ca/api
Authorization: Bearer YOUR_TOKEN_HERE Accept: application/json Content-Type: application/json
Create tokens in the app under API Tokens, or via POST /api/tokens. Requires plan feature api_access.
Missing a plan feature returns 422 with a plan error. Keys used by the API:
api_access, esignature, templates, bulk_send,
form_fields, reminders, comments, audit_trail,
power_forms, sms_delivery, id_verification, payments,
clm, sso, workspaces, ai_insights, branding
| Method | Path | Description |
|---|---|---|
| GET | /api/user | Current user, plan, feature keys, usage |
| GET | /api/account/features | Enabled feature keys for the caller |
| GET | /api/plans | Public plan catalog |
| GET | /api/tokens | List API tokens (metadata only) |
| POST | /api/tokens | Create token — body: token_name. Returns plain token once |
| DELETE | /api/tokens/{id} | Revoke a token |
| Method | Path | Feature | Description |
|---|---|---|---|
| GET | /api/envelopes | api_access | List. Filters: status, clm_stage, workspace_id, per_page |
| POST | /api/envelopes | api_access | Create (optionally send). See fields below |
| GET | /api/envelopes/{id} | api_access | Detail + signing URLs, fields, comments, audit, AI |
| POST | /api/envelopes/{id}/send | api_access | Send draft (email/SMS/reminders) |
| POST | /api/envelopes/{id}/void | api_access | Void incomplete envelope |
| DELETE | /api/envelopes/{id} | api_access | Delete envelope + document |
| PUT | /api/envelopes/{id}/fields | form_fields | Replace form fields array |
| POST | /api/envelopes/{id}/comments | comments | Body: body |
| GET | /api/envelopes/{id}/reminders | reminders | List reminders |
| POST | /api/envelopes/{id}/reminders | reminders | recipient_id, scheduled_at |
| PATCH | /api/envelopes/{id}/clm-stage | clm | clm_stage: draft|in_review|negotiation|executed|archived |
| POST | /api/envelopes/{id}/ai-insight | ai_insights | Run / refresh AI analysis |
| GET | /api/envelopes/{id}/audit | audit_trail | Audit events |
Create envelope (POST /api/envelopes) body:
| Field | Required | Notes |
|---|---|---|
subject | Yes | Max 200 |
message | No | Note to recipients |
document_base64 + document_name | Unless template | Base64 file bytes (no data: prefix) |
template_id | Alt to document | Requires templates |
workspace_id | No | Requires workspaces |
recipients[] | Yes | name, email, optional phone, role (signer|cc) |
fields[] | No | Requires form_fields. Types: signature, initial, date, text, checkbox, name, email |
send | No | Send immediately after create |
send_sms | No | Requires sms_delivery |
require_id_verification | No | Requires id_verification |
payment_amount | No | Requires payments |
reminders_enabled, reminder_days | No | Requires reminders when enabled |
expires_at | No | ISO datetime |
curl -X POST "https://esig.ca/api/envelopes" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"subject\": \"Please sign NDA\",
\"document_name\": \"nda.txt\",
\"document_base64\": \"U2FtcGxlIE5EQSBjb250ZW50IGZvciBFc2lnIEFQSSBkZW1vLg==\",
\"recipients\": [{ \"name\": \"Alex Signer\", \"email\": \"alex@example.com\" }],
\"send\": true
}"
Feature: templates
| Method | Path | Description |
|---|---|---|
| GET | /api/templates | List |
| POST | /api/templates | name, document_base64, document_name, optional subject/message |
| GET | /api/templates/{id} | Show + fields |
| PATCH | /api/templates/{id} | Update metadata |
| DELETE | /api/templates/{id} | Delete |
Feature: bulk_send — POST /api/bulk-send
Body: subject, document_base64, document_name, recipients[] (max 50), optional message, send (default true). Creates one envelope per recipient.
Feature: power_forms
| Method | Path | Description |
|---|---|---|
| GET | /api/power-forms | List (+ public_url) |
| POST | /api/power-forms | Create with document_base64 or template_id |
| GET | /api/power-forms/{id} | Detail + recent submissions |
| PATCH | /api/power-forms/{id} | Update / activate |
| DELETE | /api/power-forms/{id} | Delete |
Public self-service URL remains https://esig.ca/forms/{slug} (no API token).
Feature: workspaces
| Method | Path | Description |
|---|---|---|
| GET | /api/workspaces | List |
| POST | /api/workspaces | name, optional description |
| GET | /api/workspaces/{id} | Show with envelopes |
| POST | /api/workspaces/{id}/attach | envelope_id |
| POST | /api/workspaces/{id}/detach | envelope_id |
| POST | /api/workspaces/{id}/close | Close workspace |
| Method | Path | Feature | Description |
|---|---|---|---|
| GET | /api/clm/board | clm | Kanban-style stages with envelopes |
| GET | /api/branding | branding | Brand settings |
| PUT | /api/branding | branding | primary_color, accent_color, optional logo_base64 |
| GET | /api/sso | sso | SSO config (secret hidden) |
| PUT | /api/sso | sso | Update SSO (demo/oidc/saml) |
Requires is_admin on the token user.
| Method | Path | Description |
|---|---|---|
| GET | /api/admin/users | List users (q search) |
| PATCH | /api/admin/users/{id} | Update user / plan / flags |
| GET | /api/admin/plans | All plans + features |
| PATCH | /api/admin/plans/{id} | Update plan; optional feature_keys[] |
| GET | /api/admin/features | Feature catalog |
| PATCH | /api/admin/features/{id} | Update feature metadata / active |
401 — missing or invalid token403 — not owner, or not admin422 — validation or plan/feature/limit error404 — resource not found1. Sign in as demo@esig.test → API Tokens → create a token
2. GET /api/user to confirm plan features
3. POST /api/envelopes with send: true
Upgrade to Standard for templates, comments, and bulk send when your team outgrows the free plan.
Compare plans