ClientCasa Developer Platform
Build with the ClientCasa REST API — type-safe TypeScript SDK, OAuth 2.0 with PKCE, signed webhooks, and first-class resources for invoicing, CRM, contracts, scheduling, and more.
Build invoicing, CRM, scheduling, and payments into your product with a small, type-safe REST API and an official TypeScript SDK.
New here? Start with a free developer account
Building an integration begins with a free-forever developer account — no
subscription, no trial clock, no card on file. Create one at
/developers/signup, then walk
Publishing your app from your first
API call to a listing in the integrations directory.
Quick start
import { ClientCasa } from '@clientcasa/sdk'
const cc = new ClientCasa()
const security = { apiKey: process.env.CLIENTCASA_API_KEY ?? '' }
const result = await cc.clients.listClients(security, { pageSize: 25 })
for (const client of result.data) {
console.log(client.name, client.status)
}
await cc.invoices.createInvoice(security, {
clientId: result.data[0]!.id,
issueDate: '2026-05-19',
dueDate: '2026-06-18',
lineItems: [
{ description: 'Strategy consult', quantity: 4, unitPrice: 250, taxable: false },
],
})# Install nothing. Hit the API directly.
curl -s "https://www.clientcasa.com/api/v1/clients?pageSize=25" \
-H "x-api-key: $CLIENTCASA_API_KEY" \
| jq '.data[] | { name, status }'
# Create an invoice
curl -s "https://www.clientcasa.com/api/v1/invoices" \
-X POST \
-H "x-api-key: $CLIENTCASA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"clientId": "<id>",
"issueDate": "2026-05-19",
"dueDate": "2026-06-18",
"lineItems": [
{ "description": "Strategy consult", "quantity": 4, "unitPrice": 250, "taxable": false }
]
}'Get an API key at Settings → Advanced → API Keys. For partner apps acting on behalf of users, register an OAuth app under Settings → Advanced → OAuth Apps instead.
Where the developer surfaces live
API keys, OAuth apps, and webhook subscriptions live under Settings → Advanced (admin-only, collapsed by default). Jump straight there: API Keys · OAuth Apps · Webhooks. On a fresh developer account, the welcome checklist links them too.
Start here
Authentication
API keys for server-to-server. OAuth 2.0 + PKCE for third-party apps.
OAuth Apps
Build a Sign-in-with-ClientCasa integration. Self-serve registration, no SQL inserts.
Webhooks
HMAC-signed, replay-protected delivery. 50+ event types across the full lifecycle.
Idempotency
Safely retry POSTs and PATCHes with an Idempotency-Key header.
Resources
Seventeen first-class resources covering the full business cycle. Most follow the
same shape — list / create / get / update / delete — with offset pagination
(page / pageSize), typed errors, and OpenAPI-driven SDK methods. A few are
read-only where the underlying record is built elsewhere (Payouts come from
Stripe; Forms, Form Submissions, Document Versions, and Client Documents are
composer- or platform-built), and Payments omits delete because money events are
immutable. (Leads aren't a separate resource — a lead is a client at an early
lifecycle stage, so fetch them via /v1/clients?status=new|contacted|qualified.)
Clients
The financial entity in the CRM.
Contacts
People, with or without a client relationship.
Forms
Inquiry + questionnaire definitions (read-only).
Form Submissions
Submitted answers to your forms (read-only).
Projects
The work you do for clients.
Invoices
Line items, payment derivation, partial payments.
Contracts
E-signature-ready terms with multiple signers.
Client Documents
Composer-built proposals & smart-files (read-only).
Document Versions
Immutable audit trail of issued versions (read-only).
Payments
Immutable money events. Refunds as negative entries.
Payouts
Stripe-managed payouts to your bank (read-only).
Time Entries
Billable + non-billable time against projects.
Milestones
Schedule markers that attach to your projects.
Calendar Events
Your business schedule.
Transactions
Expenses and charges (recurring or one-off).
Catalog Items
Reusable line items, services, expense templates.
Webhooks
Subscribe to events with HTTP POST notifications.
Tutorials
Hands-on walkthroughs for the most common integration patterns.
OAuth quick-start with PKCE
End-to-end authorization code flow in Node.js. Copy-pasteable, ~50 lines.
Webhook receiver with HMAC verification
Verify signatures, handle retries, dedupe by event ID. Works on Edge runtimes.
Idempotent writes for safe retries
Why every POST should send Idempotency-Key, and how it interacts with refunds.
Publish & distribute
Build for other ClientCasa businesses, then list your app so they can find and connect it.
Publishing your app
The full path: sign up, make your first call, register an OAuth app, confirm your domain, and publish.
Developer accounts
Free-forever accounts, the persistence contract for your client_id, sandbox limits, and ownership transfer.
Integrations directory
The public marketplace where published apps appear. Listing opens once the Developer App Agreement is finalized.
SDKs
@clientcasa/sdk
TypeScript / JavaScript. Type-safe, retries, pagination iterators, published with provenance.
clientcasa/sdk-typescript
SDK source. File issues, open PRs, or fork.
Helpful conventions
Errors
Standard envelope with code, message, requestId, and details.
Pagination
page / pageSize, max 100. hasMore + totalPages metadata.
Rate limits
1000 req/hour per key. X-RateLimit-* headers + Retry-After.
Changelog
Versioned record of API changes. Subscribe via the SDK GitHub Releases.
Already an integrator?
Existing Zapier / n8n / Make users — keep using your current integration. The v1 API is additive; nothing existing breaks. See Integrations for platform-specific setup guides.
Where to get help
- Bugs and feature requests: GitHub Issues
- Security disclosures: security@clientcasa.com — see SECURITY.md
- General support: support@clientcasa.com