Build entire GoHighLevel workflows from your terminal - the one thing the official API can't do - by driving GHL's own internal API with Claude.
Can't create or edit workflows at all.
Six menus deep to change one automation.
Paying per task for what a CLI call does free.
A two-week ticket for a two-minute change.


The CLI wraps GoHighLevel's internal v2 API - the same endpoints the dashboard itself uses - so Claude can build and edit entire workflows, not just read contacts. That's the part the public API flatly can't do.
Drop your refresh token in once. The CLI signs every call to GoHighLevel for you.
The superpower: Claude creates and edits entire workflows through the internal API - what the public API can't do.
Create, update, tag, and search contacts and opportunities in bulk - no CSV gymnastics.
Pull bookings, send messages, read email threads, and manage forms straight from the terminal.
Every command prints exactly what it changed, so you review the run before it ever touches production.



No deploys, no servers. You are driving your real GoHighLevel account from a terminal inside a membership session.
Non-technical · point and clickUnlock the GoHighLevel CLI system plus every other AI system Jay has built.
One install command teaches Claude every GoHighLevel CLI command and guardrail.
Pull the CLI from the Resources below and paste in your GoHighLevel token - we made that one click.
'Build a re-engage workflow.' Claude ships it through the internal API and hands you the run log.
Members install the skill above. Here are the two extra pieces the CLI needs - the tool itself, and your GoHighLevel token, the easy way.
Grab the latest leadgenjay/gohighlevel-cli source as a single-use ZIP. Free, email-gated, always the newest build.
Get the CLI ZIPThe CLI signs in with your GoHighLevel refresh token. Drag this button to your bookmarks bar, open GoHighLevel, and click it - your token is copied, ready to paste into .env. No DevTools required.
Get GHL TokenSame result without the bookmarklet. On GoHighLevel, press F12, open the Console tab, paste this, and your refresh token lands on your clipboard.
(async () => {
const db = await new Promise((res, rej) => {
const r = indexedDB.open('firebaseLocalStorageDb');
r.onsuccess = e => res(e.target.result);
r.onerror = () => rej('Cannot open IndexedDB');
});
const entries = await new Promise((res, rej) => {
const tx = db.transaction('firebaseLocalStorage', 'readonly');
const all = tx.objectStore('firebaseLocalStorage').getAll();
all.onsuccess = () => res(all.result);
all.onerror = () => rej('Failed to read store');
});
for (const e of entries) {
const stm = (e?.value || e)?.stsTokenManager;
if (stm?.refreshToken) {
copy(stm.refreshToken);
console.log('Refresh token copied. Paste into .env as GHL_FIREBASE_REFRESH_TOKEN=');
return;
}
}
console.warn('No refresh token found - make sure you are logged into GoHighLevel on this tab.');
})();Your token is read from your own browser and copied straight to your clipboard - it never leaves your machine or touches our servers.
One membership unlocks the GoHighLevel CLI plus every other done-for-you AI system - cold email, lead scraping, ad creative, inbox management, and more.
Join AI Automation Insiders