Install
openclaw skills install viral-appUse the viral.app API from an agent with a local CLI for account analytics, tracked videos/accounts, projects, creator hub, and live data operations.
openclaw skills install viral-appUse this skill when you need to read or manage data through the viral.app API.
viral-app CLI is installed and available in PATH.viral-app --help
export VIRAL_API_KEY="..."
Get this key from viral.app dashboard at Settings -> API Keys.
viral-app accounts-list --per-page 1
The wrapper injects x-api-key automatically from VIRAL_API_KEY unless a header is already passed.
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.Discover available operations:
viral-app --help
viral-app <command> --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.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 (<archetype>): text + visual + audio.not confidently detected.Rules for creator payments + CPM reports:
creatorIds and campaigns.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:
internalcompetitorsallCommon routes:
https://viral.app/app/analytics/overview?accounts=<orgAccountId>&viewMode=internal
https://viral.app/app/analytics/accounts?accounts=<orgAccountId>&viewMode=internal
https://viral.app/app/analytics/videos?accounts=<orgAccountId>&viewMode=internal
https://viral.app/app/analytics/videos?accounts=<orgAccountId>&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=<orgAccountId1>,<orgAccountId2>&viewMode=all
https://viral.app/app/creator-hub/creators?campaigns=<campaignId>
https://viral.app/app/creator-hub/creators?search=alex%40example.com&status=all
https://viral.app/app/creator-hub/campaigns?creatorIds=<orgCreatorId>
https://viral.app/app/creator-hub/campaigns/<campaignId>
https://viral.app/app/creator-hub/payouts/due?creatorIds=<orgCreatorId>
https://viral.app/app/creator-hub/payouts/due?campaigns=<campaignId>
https://viral.app/app/creator-hub/payouts/upcoming?creatorIds=<orgCreatorId>&campaigns=<campaignId>
https://viral.app/app/creator-hub/payouts/upcoming?creatorIds=<orgCreatorId>
https://viral.app/app/creator-hub/payouts/canceled?campaigns=<campaignId>
https://viral.app/app/creator-hub/payouts/paid?creatorIds=<orgCreatorId>
https://viral.app/app/library/viral-videos?search=notion&dateRange=30d&sort=views
https://viral.app/app/library/viral-videos?brandId=<brandId>®ions=US,GB&minViews=100000&sort=outlier
https://viral.app/app/library/viral-videos/tiktok/7491234567890123456
Supported filter keys you can safely use:
accountsplatformsprojectscontentTypesviewModedfdtpublicationModetopVideosBytopAccountsBytopCreatorsBytopEntitytopListsPerPagesearchcampaignsstatussearchstatuscreatorIdscampaignscreatorIdsscopepublicationModedfdtcreatorIdscampaignssearchbrandIddateRangesortminViewsminOutlierFactorregionsproductTypesverticalsformatshookArchetypesproductDetectedbrandDetectedmatchedTermsIf you do not know the correct org-scoped IDs yet:
POST, PUT, PATCH, or DELETE unless the user explicitly asked for that mutation.<command> --help before mutations to verify required flags and body schema.--per-page, filters, date ranges) before broad exports.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.RSH_OUTPUT_FORMAT=json unless overridden).RSH_NO_PAGINATE=true) for predictable scripted behavior.