From salesloft-pack
Configures SalesLoft API authentication via OAuth 2.0 (authorization code and client credentials) or API key. Use when setting up a new SalesLoft integration.
How this skill is triggered — by the user, by Claude, or both
Slash command
/salesloft-pack:salesloft-install-authThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Configure access to the SalesLoft REST API v2. SalesLoft supports two OAuth 2.0 flows (authorization code and client credentials) plus API key auth. All requests require `Authorization: Bearer <token>` header. Base URL: `https://api.salesloft.com/v2/`.
Configure access to the SalesLoft REST API v2. SalesLoft supports two OAuth 2.0 flows (authorization code and client credentials) plus API key auth. All requests require Authorization: Bearer <token> header. Base URL: https://api.salesloft.com/v2/.
# Node.js — no official SDK, use axios or fetch
npm install axios dotenv
# Python
pip install requests python-dotenv
http://localhost:3000/callback)client_id and client_secret# .env
SALESLOFT_CLIENT_ID=your-client-id
SALESLOFT_CLIENT_SECRET=your-client-secret
SALESLOFT_REDIRECT_URI=http://localhost:3000/callback
SALESLOFT_API_KEY=your-api-key # If using API key auth
import axios from 'axios';
// Step 1: Redirect user to authorize
const authUrl = `https://accounts.salesloft.com/oauth/authorize?` +
`client_id=${process.env.SALESLOFT_CLIENT_ID}` +
`&redirect_uri=${encodeURIComponent(process.env.SALESLOFT_REDIRECT_URI!)}` +
`&response_type=code`;
// Step 2: Exchange code for token (in callback handler)
async function exchangeCode(code: string) {
const { data } = await axios.post('https://accounts.salesloft.com/oauth/token', {
client_id: process.env.SALESLOFT_CLIENT_ID,
client_secret: process.env.SALESLOFT_CLIENT_SECRET,
code,
grant_type: 'authorization_code',
redirect_uri: process.env.SALESLOFT_REDIRECT_URI,
});
// data.access_token, data.refresh_token, data.expires_in
return data;
}
// No user interaction — recommended for background tasks
async function getServiceToken() {
const { data } = await axios.post('https://accounts.salesloft.com/oauth/token', {
client_id: process.env.SALESLOFT_CLIENT_ID,
client_secret: process.env.SALESLOFT_CLIENT_SECRET,
grant_type: 'client_credentials',
});
return data.access_token;
}
const token = await getServiceToken();
const { data } = await axios.get('https://api.salesloft.com/v2/me.json', {
headers: { Authorization: `Bearer ${token}` },
});
console.log(`Authenticated as: ${data.data.name} (${data.data.email})`);
Authenticated as: Jane Smith ([email protected])
| Error | Cause | Solution |
|---|---|---|
401 Unauthorized | Expired or invalid token | Refresh token or re-authorize |
403 Forbidden | Insufficient OAuth scopes | Check app permissions in developer portal |
invalid_grant | Authorization code already used | Codes are single-use; restart OAuth flow |
invalid_client | Wrong client_id/secret | Verify credentials in developer portal |
async function refreshAccessToken(refreshToken: string) {
const { data } = await axios.post('https://accounts.salesloft.com/oauth/token', {
client_id: process.env.SALESLOFT_CLIENT_ID,
client_secret: process.env.SALESLOFT_CLIENT_SECRET,
grant_type: 'refresh_token',
refresh_token: refreshToken,
});
return data; // { access_token, refresh_token, expires_in }
}
After successful auth, proceed to salesloft-hello-world for your first API call.
npx claudepluginhub pw00kt/fuzzy-sniffle --plugin salesloft-pack3plugins reuse this skill
First indexed Jul 18, 2026
Configures SalesLoft API authentication via OAuth 2.0 (authorization code and client credentials) or API key. Use when setting up a new SalesLoft integration.
Installs jsforce, simple-salesforce, or Salesforce CLI and configures OAuth 2.0 auth flows (username-password, JWT Bearer, web server) for Salesforce connectivity.
Guides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.