Get an access token
Sign up at agency.kovalinq.com/signup, then exchange your email and password for an access token. See Authentication for scopes and how to refresh an expired token.
curl -X POST https://api.kovalinq.com/auth/login \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "you@youragency.com",
"password": "your-password"
}'Create an organization
An organization is one of your clients. Give it a name, timezone and currency — everything else (industry, website) is optional and can be set later.
curl -X POST https://api.kovalinq.com/v1/organizations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Digital Agency",
"timezone": "America/Sao_Paulo",
"currency": "BRL",
"industry": "Marketing",
"website": "https://acme.digital"
}'Connect a WhatsApp number
Start Embedded Signup for the organization's WhatsApp number. The response includes a signup_url — send your client there to connect their number through Meta's flow.
curl -X POST https://api.kovalinq.com/v1/whatsapp/connect \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"organization_id": "org_9fJb2c1a8d4e",
"display_name": "Acme Support"
}'Register a webhook
Register an HTTPS URL to receive message.received and message.status events. Every delivery is signed with an HMAC-SHA256 signature in the X-SalePilot-Signature header — verify it before trusting the payload.
curl -X POST https://api.kovalinq.com/v1/webhooks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://acme.digital/webhooks/salepilot",
"events": [
"message.received",
"message.status"
]
}'Send your first message
Send a free-form text message to a contact who has messaged you in the last 24 hours, or send a pre-approved template to reach someone outside that window.
curl -X POST https://api.kovalinq.com/v1/messages \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+5511999999999",
"type": "text",
"text": {
"body": "Hello from SalePilot! 👋"
}
}'What's next
Browse the full API Reference for every endpoint, or install an official SDK to skip writing the HTTP calls by hand.
Open the API Reference