Viral App
by @feliche93
Use the viral.app API from an agent with a local CLI for account analytics, tracked videos/accounts, projects, creator hub, and live data operations.
clawhub install viral-appπ About This Skill
name: viral-app description: Use the viral.app API from an agent with a local CLI for account analytics, tracked videos/accounts, projects, creator hub, and live data operations. homepage: https://github.com/fmd-labs/viral-app-skills/tree/main/viral-app metadata: {"openclaw":{"homepage":"https://github.com/fmd-labs/viral-app-skills/tree/main/viral-app","requires":{"bins":["viral-app"],"env":["VIRAL_API_KEY"]},"primaryEnv":"VIRAL_API_KEY"}}
viral-app
Use this skill when you need to read or manage data through the viral.app API.
When to use
Quick start
1. Ensure viral-app CLI is installed and available in PATH.
viral-app --help
2. Set API key:
export VIRAL_API_KEY="..."
Get this key from viral.app dashboard at Settings -> API Keys.
3. Verify access:
viral-app accounts-list --per-page 1
The wrapper injects x-api-key automatically from VIRAL_API_KEY unless a header is already passed.
Inputs to collect first
orgacc_*, orgproj_*, creator/campaign/payout IDs when relevant.facebook|tiktok|instagram|youtube, platform account/video IDs).--date-range[from], --date-range[to]) for analytics tasks.--per-page, filters) to keep output focused.Command cookbook
Discover available operations:
viral-app --help
viral-app --help
Common reads:
viral-app accounts-list --per-page 10
viral-app videos-list --per-page 10
viral-app analytics-get-kpis
viral-app analytics-top-videos --per-page 10
viral-app integrations-apps-list
Common mutations:
viral-app projects-create --body '{"name":"My Project"}'
viral-app accounts-tracked-refresh --body '{"accounts":["orgacc_..."]}'
viral-app projects-add-to-account --body '{"projectId":"orgproj_...","accountId":"orgacc_..."}'
Payout mutation flow:
viral-app payouts-calculate --body '{"campaignId":"orgcamp_...","creatorId":"orgcre_...","billingPeriodStart":"2026-03-01T00:00:00.000Z","billingPeriodEnd":"2026-03-31T00:00:00.000Z"}'
viral-app payouts-initiate --body '{"campaignId":"orgcamp_...","creatorId":"orgcre_...","billingPeriodStart":"2026-03-01T00:00:00.000Z","billingPeriodEnd":"2026-03-31T00:00:00.000Z","lineItems":[{"title":"Creator payout","amount":1496.62}],"calculation":{...},"integrityToken":"..."}'
Rules for payout mutations:
payouts-calculate immediately before payouts-initiate.calculation payload and integrityToken into payouts-initiate unchanged.integrityToken.autoApproveTalentir=true, also set acknowledgeFullPayoutLiability=true and explain the risk before executing.Report templates
Use the bundled report templates when the user asks for Slack-ready summaries or ranking reports:
Rules for leaderboard-style outputs:
1.4M or 180K.Rules for Viral Video Library reports:
473K or 18.2%.Hook (): text + visual + audio .not confidently detected.Rules for creator payments + CPM reports:
creatorIds and campaigns.Linking Back Into viral.app
When a user would benefit from opening the data in the product UI, include a direct viral.app app link in your response.
Default production base:
https://viral.app/app
Rules:
df and dt with YYYY-MM-DD.viewMode when linking account or creator-related analytics:internal
- competitors
- allCommon routes:
https://viral.app/app/analytics/overview?accounts=&viewMode=internal
https://viral.app/app/analytics/accounts?accounts=&viewMode=internal
https://viral.app/app/analytics/videos?accounts=&viewMode=internal
https://viral.app/app/analytics/videos?accounts=&viewMode=internal&df=2026-03-01&dt=2026-03-18
https://viral.app/app/analytics/videos/tiktok/7491234567890123456
https://viral.app/app/analytics/overview?accounts=,&viewMode=all
https://viral.app/app/creator-hub/creators?campaigns=
https://viral.app/app/creator-hub/creators?search=alex%40example.com&status=all
https://viral.app/app/creator-hub/campaigns?creatorIds=
https://viral.app/app/creator-hub/campaigns/
https://viral.app/app/creator-hub/payouts/due?creatorIds=
https://viral.app/app/creator-hub/payouts/due?campaigns=
https://viral.app/app/creator-hub/payouts/upcoming?creatorIds=&campaigns=
https://viral.app/app/creator-hub/payouts/upcoming?creatorIds=
https://viral.app/app/creator-hub/payouts/canceled?campaigns=
https://viral.app/app/creator-hub/payouts/paid?creatorIds=
https://viral.app/app/library/viral-videos?search=notion&dateRange=30d&sort=views
https://viral.app/app/library/viral-videos?brandId=®ions=US,GB&minViews=100000&sort=outlier
https://viral.app/app/library/viral-videos/tiktok/7491234567890123456
Supported filter keys you can safely use:
accounts
- platforms
- projects
- contentTypes
- viewMode
- df
- dt
publicationMode
- topVideosBy
- topAccountsBy
- topCreatorsBy
- topEntity
- topListsPerPage
search
- campaigns
- status
search
- status
- creatorIds
campaigns
- creatorIds
- scope
- publicationMode
- df
- dt
creatorIds
- campaigns
search
- brandId
- dateRange
- sort
- minViews
- minOutlierFactor
- regions
- productTypes
- verticals
- formats
- hookArchetypes
- productDetected
- brandDetected
- matchedTermsIf you do not know the correct org-scoped IDs yet:
Safety rules
POST, PUT, PATCH, or DELETE unless the user explicitly asked for that mutation. --help before mutations to verify required flags and body schema.--per-page, filters, date ranges) before broad exports.Troubleshooting
401 UNAUTHORIZED: missing/invalid API key; verify VIRAL_API_KEY or -H "x-api-key: ..." value.401 can also happen with expired/revoked keys or wrong org context.429 or retry hints: back off and retry later; inspect response headers such as Retry-After.data arrays: validate filters, project/account IDs, and date range constraints.Agent defaults
RSH_OUTPUT_FORMAT=json unless overridden).RSH_NO_PAGINATE=true) for predictable scripted behavior.β‘ When to Use
π‘ Examples
1. Ensure viral-app CLI is installed and available in PATH.
viral-app --help
2. Set API key:
export VIRAL_API_KEY="..."
Get this key from viral.app dashboard at Settings -> API Keys.
3. Verify access:
viral-app accounts-list --per-page 1
The wrapper injects x-api-key automatically from VIRAL_API_KEY unless a header is already passed.
π Tips & Best Practices
401 UNAUTHORIZED: missing/invalid API key; verify VIRAL_API_KEY or -H "x-api-key: ..." value.401 can also happen with expired/revoked keys or wrong org context.429 or retry hints: back off and retry later; inspect response headers such as Retry-After.data arrays: validate filters, project/account IDs, and date range constraints.