Developer API

Build on ClarAccord

REST API, webhook events, and client portal. Automate agreements. Integrate with your CRM, project management tool, or billing system.

Quick Start

1. Create an API key in Dashboard → Settings → API, then authenticate with it:

curl -H "Authorization: Bearer ca_live_..." \
  https://claraccord.com/api/v1/receipts

2. Create (and deliver) your first receipt, the response includes the client's sign link and the public verification certificate:

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ca_live_..." \
  -d '{"subject":"Scope agreement","bullets":["Redesign homepage"],"clientEmail":"client@example.com","requireOtp":true,"recurrence":null}' \
  https://claraccord.com/api/v1/receipts

Rate limit: 60 requests/minute per key. Receipts created via the API get the full machinery. OTP sign-off, tamper-evident fingerprints, verification certificates, and retainer scheduling via "recurrence": "monthly". Retries are safe: send an Idempotency-Key header and repeat requests replay the original receipt instead of duplicating it. Webhook payloads are signed with HMAC-SHA256 in X-ClarAccord-Signature (hex over the raw body, using your endpoint secret).

Endpoints

POST/api/receiptsCookie + API Key

Create a new receipt with scope bullets, amount, due date, and OTP settings.

{
  "subject": "Website redesign agreement",
  "bullets": ["Homepage redesign", "Mobile responsive"],
  "amount": 8500,
  "currency": "USD",
  "dueDate": "2025-06-15",
  "clientEmail": "client@example.com",
  "clientName": "Sarah",
  "requireOtp": true,
  "channel": "email"
}
GET/api/receipts/{id}Cookie + API Key

Get receipt details including status, signatures, audit trail.

POST/api/receipts/{id}/remindCookie

Send a manual reminder email to the client for a pending receipt.

GET/api/sign/{token}None (public)

Retrieve receipt for client sign-off page. Token is unique per receipt.

POST/api/sign/{token}None (public)

Client signs or disputes the receipt. Validates OTP if required.

{
  "action": "acknowledged",
  "clientName": "Sarah Johnson",
  "otp": "4829"
}
GET/api/clientsCookie + API Key

List all clients for the authenticated user.

POST/api/clientsCookie + API Key

Add a new client with email, name, phone, and preferred channel.

{
  "email": "client@example.com",
  "name": "Sarah Johnson",
  "phone": "+14155551234",
  "channel": "email"
}
GET/api/analyticsCookie + API Key

User analytics: receipt counts, sign-off rate, time-to-sign, client stats, trends.

GET/api/webhooks/settingsCookie

Get configured webhook URL, secret, and event subscriptions.

POST/api/webhooks/testCookie

Send a test webhook payload to the configured URL.

{
  "event": "receipt.signed"
}
GET/api/teamCookie

List team members and pending invites.

POST/api/team/inviteCookie

Invite a team member by email. Returns invite URL.

{
  "email": "teammate@company.com",
  "role": "admin"
}
GET/api/public/statsNone (public)

Public stats: total receipts signed, completion rate, weekly activity. Cached 60s.

Webhook Events

Configure a webhook URL in your dashboard settings. Every event is sent with an HMAC-SHA256 signature in the X-Webhook-Signature header.

receipt.createdA new receipt was created by a user
receipt.sentReceipt was delivered to the client
receipt.signedClient signed the receipt (acknowledged)
receipt.disputedClient disputed the receipt
client.createdA new client was added to the address book
template.createdA new template was created

Webhook payload example:

{
  "event": "receipt.signed",
  "timestamp": "2025-05-13T15:30:00Z",
  "data": {
    "receiptId": "rcpt_abc123",
    "subject": "Website redesign agreement",
    "clientEmail": "client@example.com",
    "clientName": "Sarah Johnson",
    "action": "acknowledged",
    "signedAt": "2025-05-13T15:30:00Z"
  }
}

Stop losing money to scope creep

Start sending receipts after every client call. Free to try. No credit card.