Create lead
Create a single lead in the workspace. Returns 409 if a lead with the same email already exists.
curl -X POST "https://api.sendkit.ai/v1/leads" \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{
"email": "john@acme.com",
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Corp",
"jobTitle": "VP of Sales",
"phone": "+1-555-123-4567",
"linkedinUrl": "https://linkedin.com/in/johndoe",
"city": "San Francisco",
"state": "CA",
"country": "US",
"tags": [
"vip",
"enterprise"
],
"customFields": {
"custom_industry": "SaaS",
"custom_revenue": "$10M"
}
}'
import requests
import json
url = "https://api.sendkit.ai/v1/leads"
headers = {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_API_KEY"
}
data = {
"email": "john@acme.com",
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Corp",
"jobTitle": "VP of Sales",
"phone": "+1-555-123-4567",
"linkedinUrl": "https://linkedin.com/in/johndoe",
"city": "San Francisco",
"state": "CA",
"country": "US",
"tags": [
"vip",
"enterprise"
],
"customFields": {
"custom_industry": "SaaS",
"custom_revenue": "$10M"
}
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://api.sendkit.ai/v1/leads", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_API_KEY"
},
body: JSON.stringify({
"email": "john@acme.com",
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Corp",
"jobTitle": "VP of Sales",
"phone": "+1-555-123-4567",
"linkedinUrl": "https://linkedin.com/in/johndoe",
"city": "San Francisco",
"state": "CA",
"country": "US",
"tags": [
"vip",
"enterprise"
],
"customFields": {
"custom_industry": "SaaS",
"custom_revenue": "$10M"
}
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"email": "john@acme.com",
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Corp",
"jobTitle": "VP of Sales",
"phone": "+1-555-123-4567",
"linkedinUrl": "https://linkedin.com/in/johndoe",
"city": "San Francisco",
"state": "CA",
"country": "US",
"tags": [
"vip",
"enterprise"
],
"customFields": {
"custom_industry": "SaaS",
"custom_revenue": "$10M"
}
}`)
req, err := http.NewRequest("POST", "https://api.sendkit.ai/v1/leads", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.sendkit.ai/v1/leads')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['X-Api-Key'] = 'YOUR_API_KEY'
request.body = '{
"email": "john@acme.com",
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Corp",
"jobTitle": "VP of Sales",
"phone": "+1-555-123-4567",
"linkedinUrl": "https://linkedin.com/in/johndoe",
"city": "San Francisco",
"state": "CA",
"country": "US",
"tags": [
"vip",
"enterprise"
],
"customFields": {
"custom_industry": "SaaS",
"custom_revenue": "$10M"
}
}'
response = http.request(request)
puts response.body
{
"success": true,
"data": {
"_id": "665d4e5f6a7b8c9d0e1f2a3b",
"email": "john@acme.com",
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Corp",
"jobTitle": "VP of Sales",
"phoneNumber": "+1-555-123-4567",
"linkedinUrl": "https://linkedin.com/in/johndoe",
"city": "San Francisco",
"state": "CA",
"country": "US",
"tags": [
"vip",
"enterprise"
],
"customFields": {
"custom_industry": "SaaS",
"custom_revenue": "$10M"
},
"emailVerified": false,
"userId": "664f0a1b2c3d4e5f6a7b8c9d",
"workspaceId": "664f0a1b2c3d4e5f6a7b8c9e",
"createdAt": "2025-06-10T10:30:00.000Z",
"updatedAt": "2025-06-10T10:30:00.000Z"
}
}
{
"success": false,
"error": {
"code": "CONFLICT",
"message": "Lead with this email already exists"
},
"data": {
"_id": "665d4e5f6a7b8c9d0e1f2a3b",
"email": "john@acme.com",
"firstName": "John",
"lastName": "Doe"
}
}
/v1/leads
Target server for requests. Edit to use your own host.
Platform API key (sk_user_...) or Workspace API key (sk_...)
The media type of the request body
Lead email address (stored lowercase)
Phone number
LinkedIn profile URL
Arbitrary key-value custom fields. Keys without the custom_ prefix are accepted for backwards compatibility and are stored with that prefix. Keys cannot contain ..
Request Preview
Response
Response will appear here after sending the request
Authentication
API Key for authentication. Platform API key (sk_user_...) or Workspace API key (sk_...)
Body
Lead email address (stored lowercase)
Phone number
LinkedIn profile URL
Arbitrary key-value custom fields. Keys without the custom_ prefix are accepted for backwards compatibility and are stored with that prefix. Keys cannot contain ..