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/receiptsRate 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
/api/receiptsCookie + API KeyCreate 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"
}/api/receipts/{id}Cookie + API KeyGet receipt details including status, signatures, audit trail.
/api/receipts/{id}/remindCookieSend a manual reminder email to the client for a pending receipt.
/api/sign/{token}None (public)Retrieve receipt for client sign-off page. Token is unique per receipt.
/api/sign/{token}None (public)Client signs or disputes the receipt. Validates OTP if required.
{
"action": "acknowledged",
"clientName": "Sarah Johnson",
"otp": "4829"
}/api/clientsCookie + API KeyList all clients for the authenticated user.
/api/clientsCookie + API KeyAdd a new client with email, name, phone, and preferred channel.
{
"email": "client@example.com",
"name": "Sarah Johnson",
"phone": "+14155551234",
"channel": "email"
}/api/analyticsCookie + API KeyUser analytics: receipt counts, sign-off rate, time-to-sign, client stats, trends.
/api/webhooks/settingsCookieGet configured webhook URL, secret, and event subscriptions.
/api/webhooks/testCookieSend a test webhook payload to the configured URL.
{
"event": "receipt.signed"
}/api/teamCookieList team members and pending invites.
/api/team/inviteCookieInvite a team member by email. Returns invite URL.
{
"email": "teammate@company.com",
"role": "admin"
}/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 userreceipt.sentReceipt was delivered to the clientreceipt.signedClient signed the receipt (acknowledged)receipt.disputedClient disputed the receiptclient.createdA new client was added to the address booktemplate.createdA new template was createdWebhook 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.