Get leads in and contacts out with a small, plain API.
One webhook for incoming leads and a REST API for your contacts and deals. API keys come from your workspace settings.
Endpoints
REST calls send your API key as Authorization: Bearer. Keys carry read, write and delete scopes, and API access depends on your plan. Responses use { "ok": true, "data": ... } on success and { "ok": false, "error": { "code", "message" } } on failure.
POST /api/webhooks/leads
Send a lead into your CRM from a form, Zapier, Make or your own code. Set X-Jara-Workspace-Id to your workspace id, then authenticate one of two ways: an X-Jara-Signature header (t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>" with your secret>, valid for five minutes either side), or Authorization: Bearer <secret> for tools that cannot compute an HMAC. Find your secret in Settings under the lead capture webhook. Required fields: email, firstName, lastName. Optional: phone, leadSource (social, gmb, seo, website, referral, event or direct), sourceDetail. An existing email is updated, not duplicated. Returns { "success": true, "contactId": "..." }. Errors: 400 for missing or invalid fields, 401 for bad credentials, 403 if your plan does not include Automations, 413 over 64 KB, 429 when rate limited.
curl -X POST https://YOUR-WORKSPACE-DOMAIN/api/webhooks/leads \
-H "Content-Type: application/json" \
-H "X-Jara-Workspace-Id: YOUR_WORKSPACE_ID" \
-H "Authorization: Bearer YOUR_WEBHOOK_SECRET" \
-d '{
"email": "jane@example.com",
"firstName": "Jane",
"lastName": "Smith",
"phone": "+1-555-0192",
"leadSource": "website"
}'GET, POST /api/v1/contacts
List contacts (page, pageSize up to 100, email, status, tags, sort, order) or create one (firstName and email required; lastName, phone, status, tags, leadSource optional). Create returns 201 with the contact. A duplicate email returns 409.
curl https://YOUR-WORKSPACE-DOMAIN/api/v1/contacts?pageSize=25 \
-H "Authorization: Bearer YOUR_API_KEY"
# 200
{ "ok": true, "data": [ { "id": "...", "firstName": "Jane", "email": "jane@example.com" } ],
"meta": { "page": 1, "pageSize": 25, "total": 1 } }GET, PUT, DELETE /api/v1/contacts/{id}
Read, update (firstName, lastName, email, phone, status, tags, leadSource, lifecycleStage, leadStatus) or delete one contact.
curl -X PUT https://YOUR-WORKSPACE-DOMAIN/api/v1/contacts/CONTACT_ID \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "tags": ["vip"] }'GET, POST /api/v1/deals
List deals (page, pageSize, stage, pipelineId, assigneeId, sort, order) or create one. Only name is required. Optional: amount or amountCents, stage, pipelineId, expectedCloseDate, assigneeId, notes, contactIds.
curl -X POST https://YOUR-WORKSPACE-DOMAIN/api/v1/deals \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Kitchen remodel", "amount": 4500, "stage": "discovery" }'GET, PUT, DELETE /api/v1/deals/{id}
Read, update (name, amount, amountCents, stage, pipelineId, expectedCloseDate, assigneeId, notes, lossReason) or delete one deal.
curl https://YOUR-WORKSPACE-DOMAIN/api/v1/deals/DEAL_ID \
-H "Authorization: Bearer YOUR_API_KEY"Point your form at your CRM.
Start your 7-day trial, grab your workspace id and send your first lead.

