Developers/API Reference
REST

API Reference

The SalesPulse REST API lets you sync contacts, retrieve call logs, update pipeline stages, and trigger automations from your own systems. All responses are JSON.

Base URL

text
https://salespulse.app/api/v1

All API endpoints are prefixed with /api/v1. HTTPS only. HTTP requests are redirected.

Authentication

All requests require a Bearer token in the Authorization header. Generate API keys under Settings → API Keys.

bash
curl https://salespulse.app/api/v1/contacts \
  -H "Authorization: Bearer sp_live_YOUR_API_KEY"
Security note: Never expose API keys in client-side JavaScript. Keys should only be used from server-side code. Rotate compromised keys immediately under Settings → API Keys.

Rate Limits

Standard requests100 requests / minute
Bulk create (contacts)1,000 contacts / request
Bulk create rate10 requests / minute
Webhook deliveryNo limit (incoming)

Rate limit headers are returned on every response: X-RateLimit-Limit, X-RateLimit-Remaining.

Endpoints

Contacts

GET
/contacts

List all contacts. Supports ?page=, ?limit=, ?search= query params.

POST
/contacts

Create a single contact.

POST
/contacts/bulk

Create up to 1,000 contacts in a single request.

GET
/contacts/:id

Get a single contact by ID.

PATCH
/contacts/:id

Update contact fields.

DELETE
/contacts/:id

Delete a contact.

bash
# Create a contact
curl -X POST https://salespulse.app/api/v1/contacts \
  -H "Authorization: Bearer sp_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Jane",
    "last_name": "Smith",
    "phone": "+13055551234",
    "email": "jane@example.com",
    "state": "FL",
    "product_interest": "final_expense"
  }'

Calls

GET
/calls

List call history. Filter with ?contact_id=, ?from=, ?to= date params.

GET
/calls/:id

Get call details including recording URL and transcript.

POST
/calls/initiate

Initiate an outbound call from your SalesPulse number.

Pipeline

GET
/pipeline/stages

List all pipeline stages.

PATCH
/contacts/:id/stage

Move a contact to a pipeline stage.

GET
/pipeline/deals

List pipeline deals with contact and stage info.

Webhooks

SalesPulse can POST real-time events to your endpoint. Configure webhooks under Settings → Webhooks.

contact.createdA new contact was created
contact.updatedA contact field was updated
call.completedAn outbound or inbound call ended
call.missedAn inbound call was not answered
sms.receivedAn inbound SMS was received
pipeline.stage_changedA contact moved to a new pipeline stage
callpulse.call_receivedA live CallPulse call came in
json
// Example webhook payload: call.completed
{
  "event": "call.completed",
  "timestamp": "2026-02-26T15:30:00Z",
  "data": {
    "call_id": "call_abc123",
    "contact_id": "ctn_xyz789",
    "direction": "outbound",
    "duration_seconds": 182,
    "recording_url": "https://...",
    "disposition": "interested"
  }
}

Error Codes

200OKSuccess
201CreatedResource created successfully
400Bad RequestInvalid parameters — check the error.message field
401UnauthorizedMissing or invalid API key
404Not FoundResource does not exist
422Unprocessable EntityValidation errors on the submitted data
429Too Many RequestsRate limit exceeded — back off and retry
500Server ErrorContact support if this persists

Need help with the API?

Contact our developer support team or generate your API key in the dashboard.