Skip to main content

smartlead-cli

smartlead-cli provides a smartlead command for working with the Smartlead API from a terminal.

It follows the same project structure as plane-cli and wildberries-cli: Typer commands, a shared config layer, JSON-first output, and a raw command for full API coverage.

Install

pip install smartlead-cli

Authentication

Smartlead uses an API key passed as api_key query parameter. Configure it once:

smartlead config init

You can also override at runtime:

SMARTLEAD_API_KEY=... smartlead campaigns list

Config

Config file path:

  • ~/.config/smartlead-cli/config.toml

Supported keys (examples):

  • core.api_key
  • core.base_url
  • core.timeout_seconds
  • core.retries
  • defaults.limit

Examples:

smartlead config show
smartlead config set core.timeout_seconds 30
smartlead config set core.retries 3
smartlead config set defaults.limit 100

Commands (v1)

  • config - manage local config
  • campaigns - list/get/create/update/schedule/delete/status + analytics/statistics + campaign leads
  • leads - a few global lead operations
  • webhooks - campaign webhook helpers
  • raw - direct API access for unsupported endpoints

Examples

smartlead campaigns list
smartlead campaigns list --client-id 123
smartlead campaigns list --include-tags
smartlead campaigns get 12345
smartlead campaigns create --name "New Campaign"
smartlead campaigns update 12345 --name "New Campaign (edited)"
smartlead campaigns schedule 12345 --timezone "America/New_York" --day 1 --day 2 --day 3 --day 4 --day 5 --start-hour 09:00 --end-hour 18:00
smartlead campaigns status 12345 --status PAUSED
smartlead campaigns statistics 12345 --limit 50 --offset 0
smartlead campaigns analytics top 12345
smartlead campaigns analytics by-date 12345 --start-date 2025-01-01 --end-date 2025-01-31

Campaign leads:

smartlead campaigns leads list 12345
smartlead campaigns leads get 12345 67890
smartlead campaigns leads add 12345 --body-file leads.json
smartlead campaigns leads patch 12345 67890 --first-name "Updated" --custom-fields-file custom-fields.json
smartlead campaigns leads update 12345 67890 --body-file lead-update.json
smartlead campaigns leads pause 12345 67890
smartlead campaigns leads resume 12345 67890 --delay-days 2
smartlead campaigns leads unsubscribe 12345 67890
smartlead campaigns leads delete 12345 67890
smartlead campaigns leads message-history 12345 67890

Global lead helpers:

smartlead leads get-by-email --email person@example.com
smartlead leads unsubscribe-all 67890

Campaign webhooks:

smartlead webhooks list 12345
smartlead webhooks upsert 12345 --body-file webhook.json
smartlead webhooks delete 12345 --webhook-id 555

Webhook upsert payload notes:

  • event_types allowed values: EMAIL_SENT, EMAIL_OPEN, EMAIL_BOUNCE, EMAIL_LINK_CLICK, EMAIL_REPLY, LEAD_UNSUBSCRIBED, LEAD_CATEGORY_UPDATED, CAMPAIGN_STATUS_CHANGED, UNTRACKED_REPLIES, MANUAL_STEP_REACHED
  • categories is required and must contain at least one Smartlead lead category name
  • Smartlead lead categories are workspace-specific/customizable labels, so there is no single global CLI enum for categories
  • If unsure which category names exist, inspect Smartlead UI lead categories or use Smartlead's "Test Webhook" / existing webhook payloads and copy the category labels

Example webhook.json:

{
  "id": null,
  "name": "Reply webhook",
  "webhook_url": "https://example.com/webhook",
  "event_types": ["EMAIL_REPLY"],
  "categories": ["Interested"]
}

Raw endpoint access (fallback for full API surface):

smartlead raw request --method GET --path /campaigns
smartlead raw request --method POST --path /campaigns/12345/status --query status=PAUSED
smartlead raw request --method POST --path /campaigns/12345/leads --body-file leads.json

Preferred Command Style (LLMs / Agents)

  • Prefer curated commands (campaigns, leads, webhooks) over raw whenever possible.
  • Prefer --body-file over inline --body-json for non-trivial payloads (less shell escaping, easier review).
  • Normalize emails to lowercase before lookups/updates.
  • For lead edits, prefer smartlead campaigns leads patch ... if you only want to change a few fields.
  • Delete commands prompt for confirmation in interactive shells; use --yes in scripts/automation.

Output

  • Default output is JSON on stdout
  • Errors are structured JSON on stderr
  • Use --pretty for Rich tables on selected list commands

Publishing to PyPI

The repo includes a GitHub Actions workflow (.github/workflows/publish.yml) for trusted publishing on tags matching v*.

Notes

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smartlead_cli-0.1.4.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smartlead_cli-0.1.4-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file smartlead_cli-0.1.4.tar.gz.

File metadata

  • Download URL: smartlead_cli-0.1.4.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for smartlead_cli-0.1.4.tar.gz
Algorithm Hash digest
SHA256 074703d31db2a2d25f999af3d6d8be4f57a0184723139228e68c439306c22c35
MD5 7c9f40df38560922b4d8b020329347ad
BLAKE2b-256 a18abe455ba509cb48fbcf61fddb42fc032687a4172fb1cc16cb9207894e9053

See more details on using hashes here.

File details

Details for the file smartlead_cli-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: smartlead_cli-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for smartlead_cli-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b4cf7400a423638595a347a3aab44e7e1e6d63a17ec811e8b14eb2fd0704c72c
MD5 cd7328b157a447c1f21cd26067103cd0
BLAKE2b-256 05b24d319bf699bb903d7ac0c3decf7f8ca590963aabd82ca5a215409b3f565f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page