From salesloft-pack
Configures SalesLoft REST API v2 authentication with OAuth 2.0 flows or API key. Provides Node.js/Python setup, env vars, and code examples for integrations.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin salesloft-packThis skill is limited to using the following tools:
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/`.
Builds typed SalesLoft REST API v2 clients in TypeScript with pagination iterators, rate-limit handling, and axios singleton. For integrations and custom SDKs.
Installs and configures Salesforce authentication with jsforce (Node.js), simple-salesforce (Python), or CLI. Supports username-password, JWT Bearer, and web server OAuth flows for integrations.
Sets up Attio REST API authentication with access tokens or OAuth 2.0. Guides token generation, scopes, .env config, TypeScript fetch client, and verification.
Share bugs, ideas, or general feedback.
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 (jane@company.com)
| 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.