If something does not work as expected, run the failing command withDocumentation Index
Fetch the complete documentation index at: https://developer.lofty.com/llms.txt
Use this file to discover all available pages before exploring further.
--verbose first — it prints the resolved auth method, the outgoing URL, and any error details to stderr. Most issues fall into one of the buckets below.
Authentication
401 Unauthorized from every command
Check which credential path the CLI is using:
| Symptom | Likely cause | Fix |
|---|---|---|
| No credentials found | None of the four auth methods are configured | Pick one method from Authentication |
| Token expired and refresh failed | Refresh token was revoked or stale | lofty-cli auth logout then re-authenticate |
LOFTY_CUSTOMER_KEY is set but wrong | Key copied with surrounding whitespace | Re-copy from Settings > Integrations > API in the Lofty CRM |
OAuth flow fails with invalid_client | LOFTY_CLIENT_ID / LOFTY_CLIENT_SECRET mismatch | Reissue the credential in the Vendor Portal |
Browser flow opens but never completes
lofty-cli auth login-browser listens on a free local port. Anti-virus, VPNs, or terminal multiplexers that block loopback may interfere. Try one of:
-
Run the command in a plain terminal (outside
tmuxor remote SSH) - Use Method 3 — OAuth client credentials instead, which does not require a browser
-
On a remote machine, run
lofty-cli auth login(client credentials) or setLOFTY_ACCESS_TOKENdirectly
Rate limiting
A429 Too Many Requests response means you have exceeded the API rate budget.
The CLI does not retry automatically. Wrap your invocations in a backoff loop if you are running large bulk jobs:
Pagination cut-offs
If you only see the first page of results, you are hitting the default page size. Use--offset and --limit (where supported) or stream pages until empty:
ID precision in shell pipelines
Lofty IDs are 64-bit integers.jq and most shells preserve precision for --json output, but bc, awk, and JavaScript (when piped through node -e) do not.
When you must hand an ID to JavaScript, treat it as a string from the start:
See JavaScript / TypeScript Integration for full guidance on handling 64-bit IDs.
Network and TLS
getaddrinfo ENOTFOUND or EAI_AGAIN
DNS cannot resolve api.lofty.com. Confirm:
curl also fails, the issue is your network (corporate proxy, VPN, DNS).
TLS certificate errors
If your environment intercepts TLS (corporate proxy with a custom CA), set:Debug output
--verbose is the universal escape hatch:
stderr carries debug; stdout stays clean for piping. Attach the log to any support request along with the failing command and CLI version (lofty-cli --version).
Still stuck?
- Re-check Authentication for the credential precedence rules
-
Reproduce the request directly with
curlagainst the endpoint shown in--verbose -
Ask in the internal
#openapichannel and includelofty-cli --version, the failing command, and the--verboselog