Developers · REST API

WhatsApp & leads, from your own software

One API key, plain JSON over HTTPS. Send WhatsApp messages from your connected number, push and update leads with the same rules the CRM uses, and get every lead, message and payment event pushed to your system. Works from PHP, Python, Node, Java, Google Sheets, Zapier, n8n — anything that can call a URL.

Base URLhttps://api.salesdaddy.inAuthAuthorization: Bearer sd_live_…Jump to the reference ↓

Quick start — four calls

1 · Create a key

In the CRM: Settings → Integrations → Developer API → Create API key. Pick the workspace, the default WhatsApp number and what the key may reach (WhatsApp, Leads, Webhooks). The key is shown once.

2 · Send it as a header

Authorization: Bearer sd_live_… on every call (X-Api-Key works too). For tools that can only open a link, append ?key=sd_live_… to a GET URL.

3 · Copy an example

Every endpoint below has curl, PHP, Python and Node samples and a Try-it panel. Responses are JSON: ok:true, or ok:false with an error code and a plain-English message.

Send a WhatsApp template — works any time
curl -X POST https://api.salesdaddy.in/v1/ext/whatsapp/send \
  -H "Authorization: Bearer sd_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"template","to":"919876543210",
       "template":"appointment_reminder","params":["Ramesh","4 pm"]}'

→ {"ok":true,"messageId":"4c1d…","status":"queued"}
The same send as ONE link (browser, Google Sheets, Excel, any tool)
https://api.salesdaddy.in/v1/ext/whatsapp/send
  ?key=sd_live_YOUR_KEY
  &to=919876543210
  &template=appointment_reminder
  &params=Ramesh,4pm

# or free text while the 24-hour window is open:
  ?key=sd_live_YOUR_KEY&to=919876543210&text=Hello
Create a lead (a known number returns the existing lead)
curl -X POST https://api.salesdaddy.in/v1/ext/leads \
  -H "Authorization: Bearer sd_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Ramesh Kumar","mobile":"9876543210",
       "source":"website","city":"Chennai"}'

→ {"ok":true,"leadId":"a3f1…","duplicate":false}
Get events pushed to you
curl -X POST https://api.salesdaddy.in/v1/ext/webhooks \
  -H "Authorization: Bearer sd_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"ERP","url":"https://erp.example.com/salesdaddy",
       "events":["lead.created","message.received","message.status","payment.paid"]}'

→ {"ok":true,"webhook":{"id":"…","secret":"a1b2…"}}   # secret shown once

What the API covers

WhatsApp

  • • Text, image, video, audio, PDF
  • • Approved templates with variables and media headers
  • • Reply buttons and list menus
  • • Is the 24-hour window open?
  • • Delivery status: sent → delivered → read
  • • Your numbers and templates

Leads

  • • Create with dedupe by mobile
  • • Find by phone, search, page newest first
  • • Update fields, add notes with follow-ups
  • • Move the pipeline status
  • • Statuses, sources, users, tags, custom fields

Webhooks

  • • lead.created, lead.status_changed
  • • message.received, message.status
  • • payment.paid, payment.failed
  • • task.overdue, form.submitted
  • • HMAC-signed, retried for 6 hours
  • • Pause, resume, test ping

Two WhatsApp rules to know (Meta sets them)

  • • 24-hour window. Free text, files, buttons and lists can be sent only within 24 hours of the customer’s last message (window_closed otherwise). Check with GET /v1/ext/whatsapp/window?to=….
  • • Templates work any time. Create them in Sales Daddy (Settings → Templates), wait for Meta’s approval, then send by name with params. GET /v1/ext/whatsapp/templates lists the approved ones and how many params each takes.
  • • Every send lands in the inbox as a normal conversation, the customer becomes a lead if new, and your team can take over the chat at any point.
  • • Delivery is asynchronous. A send returns queued; poll GET /v1/ext/whatsapp/messages/:id or subscribe to message.status.

Reference

Generated from the server’s own request schemas, so it is always current. Open an endpoint for fields, examples and copy-ready code; the Try-it panel calls the real API with your key. The raw spec is at https://api.salesdaddy.in/v1/ext/openapi.json.

Limits, security, errors

  • • A key acts as the user who created it: their role, one workspace, and only the scopes it was given. It can never do more than that person can in the CRM.
  • • Keys are stored hashed and shown once. Revoke in one click; it stops on the very next call. Admins see every key in the company.
  • • 60 requests a minute and 5,000 a day per key (rate_limited with retryAfter). Ask us for more.
  • • Every call is logged with its endpoint and result. Unexpected failures are logged on our side and fixed by us — reply server_error means retry in a moment.
  • • Webhooks are signed: x-sales-daddy-signature: sha256=HMAC_SHA256(secret, timestamp + "." + body). Verify it, reply 2xx within 15 s; we retry after 1 m, 5 m, 30 m, 2 h, 6 h.
  • • Errors are { ok:false, error, message }: invalid_key, scope_denied, window_closed, template_not_approved, template_params_mismatch, invalid_number, status_requires_manager, rate_limited…

Questions, answered

Do I need a developer?

For the one-link send, no: paste the URL with your key into a browser, a Google Sheet formula, Excel, Zapier or n8n. For everything else, any developer who has called a REST API before is done in an hour with the samples.

Can I send to any number?

Yes — any WhatsApp number. Outside the 24-hour window you need an approved template; inside it, free text and files work. The number becomes a lead in your CRM automatically.

Which WhatsApp number sends?

The key’s default number, or the workspace primary. Pass `from` on a send to pick another connected number.

Does it cost extra?

The API is part of your Sales Daddy plan. WhatsApp conversation charges from Meta apply as usual.

Can I limit what a key can do?

Yes. When creating it, tick only WhatsApp, only Leads, only Webhooks, or any mix. The key also inherits the creator’s CRM role.

Is there an AI / Claude connection too?

Yes — a separate MCP server lets Claude, ChatGPT and other assistants work your CRM in natural language. See /developers/mcp.

Your CRM, wired to everything you run.

Start free, create a key in Settings → Integrations, send your first message in a minute.