Install
openclaw skills install snapchat-ads-cliSnapchat Ads data analysis and reporting via snapchat-ads-cli. Use when the user wants to check Snapchat ad performance, pull campaign/ad squad/ad stats, exp...
openclaw skills install snapchat-ads-cliYou have access to snapchat-ads-cli, a read-only CLI for the Snapchat Marketing API (v1). Use it to query organizations and ad accounts, pull performance stats with attribution windows, inspect creatives, debug delivery issues, estimate bids and audience sizes, manage AR lenses, and retrieve billing information.
# Check if the CLI is available
snapchat-ads-cli --help
# List organizations
snapchat-ads-cli organizations
# List ad accounts for an organization
snapchat-ads-cli accounts ORG_ID
If the CLI is not installed, install it:
npm install -g snapchat-ads-cli
The CLI requires a Snapchat OAuth2 access token. Credentials are resolved in this order:
--credentials <path> flag (per-command)SNAPCHAT_ADS_ACCESS_TOKEN~/.config/snapchat-ads-cli/credentials.jsonThe credentials file format:
{
"access_token": "YOUR_ACCESS_TOKEN"
}
Before running any command, verify credentials are configured by running snapchat-ads-cli organizations. If it fails with a credentials error, ask the user to set up authentication.
Organization
+-- Ad Account
+-- Campaign
| +-- Ad Squad (= ad group)
| +-- Ad -> Creative
+-- Creative (managed at ad account level)
Most list commands require the parent entity ID. Start with organizations to find the org, then accounts <org-id> to find ad accounts, and drill down from there.
Snapchat uses micro-currency: 1 dollar = 1,000,000 micro. All spend values in stats and budgets are in micro-currency. Divide by 1,000,000 to get the actual dollar amount.
All commands output pretty-printed JSON by default. Use --format compact for single-line JSON (useful for piping).
Listing commands that support pagination use --limit <n> to control page size (default 50).
# List all organizations the user has access to
snapchat-ads-cli organizations
# Get a specific organization
snapchat-ads-cli organization ORG_ID
Note: organizations does not support --limit pagination. organization fetches a single entity by ID.
# List ad accounts for an organization
snapchat-ads-cli accounts ORG_ID
snapchat-ads-cli accounts ORG_ID --limit 100
# Get a specific ad account
snapchat-ads-cli account ACCOUNT_ID
Options for accounts: --limit <n> (default 50)
# List funding sources for an organization
snapchat-ads-cli funding-sources ORG_ID
snapchat-ads-cli funding-sources ORG_ID --limit 100
# List billing centers for an organization
snapchat-ads-cli billing-centers ORG_ID
snapchat-ads-cli billing-centers ORG_ID --limit 100
Both support --limit <n> (default 50).
# List campaigns for an ad account
snapchat-ads-cli campaigns ACCOUNT_ID
snapchat-ads-cli campaigns ACCOUNT_ID --limit 100
# Get a specific campaign
snapchat-ads-cli campaign CAMPAIGN_ID
Options for campaigns: --limit <n> (default 50)
# List ad squads for a campaign
snapchat-ads-cli adsquads CAMPAIGN_ID
snapchat-ads-cli adsquads CAMPAIGN_ID --limit 100
# Get a specific ad squad
snapchat-ads-cli adsquad ADSQUAD_ID
Options for adsquads: --limit <n> (default 50)
# List ads for an ad squad
snapchat-ads-cli ads ADSQUAD_ID
snapchat-ads-cli ads ADSQUAD_ID --limit 100
# Get a specific ad
snapchat-ads-cli ad AD_ID
Options for ads: --limit <n> (default 50)
# List creatives for an ad account
snapchat-ads-cli creatives ACCOUNT_ID
snapchat-ads-cli creatives ACCOUNT_ID --limit 100
# Get a specific creative
snapchat-ads-cli creative CREATIVE_ID
Options for creatives: --limit <n> (default 50)
# List custom audience segments for an ad account
snapchat-ads-cli audiences ACCOUNT_ID
snapchat-ads-cli audiences ACCOUNT_ID --limit 100
# Get a specific audience segment
snapchat-ads-cli audience SEGMENT_ID
# Get the Snap Pixel for an ad account
snapchat-ads-cli pixel ACCOUNT_ID
Options for audiences: --limit <n> (default 50). audience and pixel do not support --limit.
# List members of an organization
snapchat-ads-cli members ORG_ID
snapchat-ads-cli members ORG_ID --limit 100
# List roles for an organization
snapchat-ads-cli roles ORG_ID
snapchat-ads-cli roles ORG_ID --limit 100
Both support --limit <n> (default 50).
# List invoices for an ad account
snapchat-ads-cli invoices ACCOUNT_ID
snapchat-ads-cli invoices ACCOUNT_ID --limit 100
# List transactions for an organization
snapchat-ads-cli transactions ORG_ID
snapchat-ads-cli transactions ORG_ID --limit 100
Both support --limit <n> (default 50).
Stats commands work on campaigns, ad squads, and ads. All three share the same options.
# Campaign stats (daily granularity)
snapchat-ads-cli campaign-stats CAMPAIGN_ID \
--start-time 2026-03-01T00:00:00.000Z \
--end-time 2026-03-15T00:00:00.000Z \
--granularity DAY
# Ad squad stats (total granularity, default)
snapchat-ads-cli adsquad-stats ADSQUAD_ID \
--start-time 2026-03-01T00:00:00.000Z \
--end-time 2026-03-15T00:00:00.000Z
# Ad stats (hourly granularity with attribution windows)
snapchat-ads-cli ad-stats AD_ID \
--start-time 2026-03-01T00:00:00.000Z \
--end-time 2026-03-15T00:00:00.000Z \
--granularity HOUR \
--swipe-up-attribution-window 28_DAY \
--view-attribution-window 7_DAY
# Campaign stats with specific fields and conversion sources
snapchat-ads-cli campaign-stats CAMPAIGN_ID \
--start-time 2026-03-01T00:00:00.000Z \
--end-time 2026-03-15T00:00:00.000Z \
--fields spend,impressions,swipes \
--conversion-source-types web,app
| Option | Required | Description | Default |
|---|---|---|---|
--start-time <time> | Yes | Start time in ISO 8601 format | -- |
--end-time <time> | Yes | End time in ISO 8601 format | -- |
--granularity <gran> | No | TOTAL, DAY, or HOUR | TOTAL |
--fields <fields> | No | Stat fields to include (comma-separated) | all default fields |
--swipe-up-attribution-window <window> | No | 1_DAY, 7_DAY, 28_DAY | -- |
--view-attribution-window <window> | No | 1_HOUR, 3_HOUR, 6_HOUR, 1_DAY, 7_DAY, 28_DAY | -- |
--conversion-source-types <types> | No | Comma-separated: web, app, total | -- |
The CLI passes --fields values directly to the Snapchat Marketing API without validation. When --fields is omitted, the API returns its default set. Use --fields spend,impressions,swipes to request specific fields. Refer to the Snapchat Measurement API docs for the full list of available fields.
# Get delivery status for a campaign
snapchat-ads-cli delivery-status campaigns CAMPAIGN_ID
# Get delivery status for an ad squad
snapchat-ads-cli delivery-status adsquads ADSQUAD_ID
# Get delivery status for an ad
snapchat-ads-cli delivery-status ads AD_ID
The entity-type argument must be one of: campaigns, adsquads, ads.
# Get targeting insights for an ad account (POST request)
snapchat-ads-cli audience-insights ACCOUNT_ID
# List custom conversions for a pixel
snapchat-ads-cli custom-conversions PIXEL_ID
snapchat-ads-cli custom-conversions PIXEL_ID --limit 100
Options for custom-conversions: --limit <n> (default 50). audience-insights does not support --limit.
# List external changelogs for an entity
snapchat-ads-cli audit-logs campaigns CAMPAIGN_ID
snapchat-ads-cli audit-logs adsquads ADSQUAD_ID
snapchat-ads-cli audit-logs ads AD_ID
snapchat-ads-cli audit-logs campaigns CAMPAIGN_ID --limit 100
The entity-type argument is passed directly to the API path. Common values: organizations, adaccounts, campaigns, adsquads, ads, creatives. Supports --limit <n> (default 50).
# List media files for an ad account
snapchat-ads-cli media ACCOUNT_ID
snapchat-ads-cli media ACCOUNT_ID --limit 100
# List AR lenses for an organization
snapchat-ads-cli lenses ORG_ID
snapchat-ads-cli lenses ORG_ID --limit 100
Both support --limit <n> (default 50).
# Get bid estimate for an ad account
snapchat-ads-cli bid-estimate ACCOUNT_ID --optimization-goal IMPRESSIONS
# Get estimated audience size for an ad account
snapchat-ads-cli audience-size ACCOUNT_ID
# Get event quality scores for a pixel
snapchat-ads-cli signal-readiness PIXEL_ID
# Get ad squad outcome configuration
snapchat-ads-cli ad-outcomes ADSQUAD_ID
bid-estimate has one optional option: --optimization-goal <goal> (e.g., IMPRESSIONS, SWIPES, APP_INSTALLS, VIDEO_VIEWS). The other estimate commands have no additional options.
snapchat-ads-cli organizations to find accessible organizationssnapchat-ads-cli accounts ORG_ID to list ad accountscampaign-stats with a recent date range for a performance snapshotcampaign-stats at --granularity TOTAL for overall performance--granularity DAY to spot daily trendsadsquad-stats and ad-stats for underperforming entities--fields to focus on specific metrics--swipe-up-attribution-window, --view-attribution-window) for conversion analysiscreatives to review creative contentdelivery-status campaigns CAMPAIGN_ID to check campaign deliverydelivery-status adsquads ADSQUAD_ID for ad squad level issuesdelivery-status ads AD_ID for ad-level problemsadsquad and adaudiences ACCOUNT_ID to list custom audience segmentsaudience-size ACCOUNT_ID for reach estimationaudience-insights ACCOUNT_ID for targeting insightspixel ACCOUNT_ID to check pixel setupcustom-conversions PIXEL_ID to review custom conversion rulespixel ACCOUNT_ID to find the Snap Pixelsignal-readiness PIXEL_ID to check event quality scorescustom-conversions PIXEL_ID to list custom conversion rules--conversion-source-types web,app and attribution windowsinvoices ACCOUNT_ID to list invoices for an ad accounttransactions ORG_ID to list transactions for an organizationfunding-sources ORG_ID to check funding sourcesbilling-centers ORG_ID to list billing centersSNAPCHAT_ADS_ACCESS_TOKEN is set, --credentials points to a valid file, or ~/.config/snapchat-ads-cli/credentials.json exists--start-time and --end-time are in ISO 8601 formatdelivery-status to diagnose why an entity is not servingdelivery-status use campaigns, adsquads, or ads; for audit-logs use campaigns, adsquads, ads, or creatives.All errors are written to stderr as JSON with an error field and a non-zero exit code:
{"error": "Unauthorized"}