Salesloft hello world
Create a minimal working SalesLoft example \u2014 list people and create\ \ a person. Use when starting a new SalesLoft integration, testing your setup, \ or learning the People and Cadences API patterns. Trigger: "salesloft hello world"\ , "salesloft example", "salesloft quick start".From its SKILL.md
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill salesloft-hello-worldAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.8 KB, 860 tokens by cl100k_base, as published. Nobody here has run it
SalesLoft Hello World
Overview
List people and create a new person — the two fundamental SalesLoft API operations. Uses the REST API v2 at https://api.salesloft.com/v2/. All endpoints return JSON with a data wrapper and support pagination via page and per_page params.
Prerequisites
- Valid OAuth token or API key (see
salesloft-install-auth) SALESLOFT_API_KEYenvironment variable set
Instructions
Step 1: List People
import axios from 'axios';
const api = axios.create({
baseURL: 'https://api.salesloft.com/v2',
headers: { Authorization: `Bearer ${process.env.SALESLOFT_API_KEY}` },
});
// List people — returns paginated results
const { data } = await api.get('/people.json', {
params: { per_page: 25, page: 1 },
});
console.log(`Total people: ${data.metadata.paging.total_count}`);
data.data.forEach((person: any) => {
console.log(` ${person.display_name} <${person.email_address}>`);
});
Step 2: Create a Person
// Create a new person record
const { data: created } = await api.post('/people.json', {
email_address: '[email protected]',
first_name: 'Alex',
last_name: 'Johnson',
title: 'VP Engineering',
company_name: 'Acme Corp',
phone: '+1-555-0100',
city: 'Austin',
state: 'TX',
custom_fields: {
lead_source: 'website',
},
});
console.log(`Created person: ${created.data.id} — ${created.data.display_name}`);
Step 3: Add Person to a Cadence
// First, list available cadences
const { data: cadences } = await api.get('/cadences.json', {
params: { per_page: 10 },
});
const cadenceId = cadences.data[0].id;
// Add person to cadence
const { data: membership } = await api.post('/cadence_memberships.json', {
person_id: created.data.id,
cadence_id: cadenceId,
});
console.log(`Added to cadence: ${membership.data.cadence.name}`);
Output
Total people: 1,247
Alex Johnson <[email protected]>
Created person: 98765 — Alex Johnson
Added to cadence: Q1 Outbound Sequence
Error Handling
| Error | Cause | Solution |
|---|---|---|
422 Unprocessable Entity | Missing required field (email) | Ensure email_address is provided |
409 Conflict | Duplicate email address | Search existing people first with ?email_addresses[]= |
401 Unauthorized | Invalid/expired token | Refresh OAuth token |
429 Too Many Requests | Rate limit exceeded (600 cost/min) | Back off and retry after Retry-After header |
Examples
Search People by Email
const { data } = await api.get('/people.json', {
params: { email_addresses: ['[email protected]'] },
});
Update a Person
await api.put(`/people/${personId}.json`, {
title: 'CTO',
company_name: 'New Corp',
});
List Activities for a Person
const { data: activities } = await api.get('/activities/emails.json', {
params: { person_id: personId, per_page: 50 },
});
Resources
- List People Endpoint
- SalesLoft API Reference
- Retrieving Actions, Cadences, Steps
Next Steps
Proceed to salesloft-local-dev-loop for development workflow setup.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.