Listening: projects
The account's listening projects
The account's listening projects (with source and mention counts, and problem_sources_count: active sources whose latest collection was blocked or failed, or that carry an error)
Create a project
Create a project (first collection on the next minute)
Industry categories for the project form
Industry categories for the project form: the suggested list and the distinct categories of the projects the caller can open
One project with its sources
One project with its sources (each with its latest collection status, error codes and retry time) and last 30 collections
Update name, filters
Update name, filters (include, exclude, contextual and context keywords), tracking window (track_from/track_until; a window that ends before it starts is 422), category, languages, interval, active (`is_active` pauses or resumes, like POST …/pause and …/resume; all or nothing: a refused resume (window ended, 422) or a status changed meanwhile (409) saves none of the other fields; `is_active: false` on a stopped or completed project changes nothing), prefer_vendor (boolean or null), credential_mode (failover, round_robin, pinned or null), pinned_credentials ({ provider: id } or null; each id must be the account's enabled key of that provider, or a shared Lantfly staff default, else 422), collect_comments (boolean), collect_defaults (what every source collects unless it says otherwise: object of CollectSettings keys, merged over the stored ones, null drops a key, another key 422; `collect_defaults: null` changes nothing; `comments` is collect_comments and wins when both are sent), timezone (IANA or null). `share_enabled` (whether the public wall is on) is returned to project managers only (null for others); the wall link is never returned again after POST …/share made it. `proxy_policy` ({ platform: [{ useLantflyProxy, groups, country }] }, null to clear) only for Lantfly staff (403 otherwise)
Delete with its sources and mentions
Delete with its sources and mentions
Accounts the project can move to
Accounts the project can move to: the caller's personal account and organizations where they have listening.manage, each with whether its plan has room
Ask to move the project to another account
Ask to move the project to another account (one from GET, any account for Lantfly staff). Nothing moves yet: the requester gets an email with a confirmation link (1 hour, POST /listening/transfers/{transfer}/confirm); confirmed, the target account's owners and admins get an acceptance link (7 days); the project moves when one of them accepts. Then sources, mentions, campaigns, alerts and reports go with it; past collection runs stay; the old account's webhooks and Google Sheets of the project are removed; report schedules are paused. 10 a minute.
A project transfer, for the confirm and accept pages
A project transfer, for the confirm and accept pages. Seen by the requester, the source account's owners and admins and Lantfly staff; by the target account's owners and admins with `?token=` from their email. A waiting transfer past its link expiry is answered (and stored) as `expired`
Confirm transfer
Step 1, by the requester (signed in as themselves) with the token from their email: `awaiting_confirmation` → `awaiting_acceptance`; the target account's owners and admins get the acceptance email. 10 a minute
Accept transfer
Step 2, by an owner or admin of the target account (or Lantfly staff) with the token from their email: the plan limits, running collections and the requester's right to move the project are checked again, then the project moves (`completed`). 10 a minute
Decline transfer
An owner or admin of the target account turns the transfer down with the token from their email (`declined`); the requester is emailed. 10 a minute
Cancel transfer
The requester, an owner or admin of the source account, or Lantfly staff withdraws a waiting transfer (`cancelled`). No token. 10 a minute
Resend transfer
The requester, an owner or admin of the source account, or Lantfly staff sends the current step's email again with a new link (the old one stops working). A confirmation link gets a fresh hour; an acceptance link keeps its 7-day deadline. Once a minute per transfer
Collect every active source now, on every platform
Collect every active source now, on every platform: unless `add_keyword_sources` is false, the project's search terms are first added as keyword sources on every platform that searches a keyword (youtube, threads, x, pinterest, lemon8, reddit, telegram, shopee, tiki, lazada, google_maps, app_store, google_play, news, forum) where the project has none yet: each include keyword, and each contextual keyword with each context keyword (`apple iphone`; a contextual keyword without context keywords is not searched). A deactivated one stays off; standalone keywords first, up to the plan's source limit; the interval tick never adds. `credentials` pins one data source key per provider for these collections only (used whatever its health); 'auto' (default) picks by the credential mode
Pause tracking
Pause tracking: active → paused (not collected until resumed)
Resume tracking
Resume tracking: paused, stopped or completed → active, collected on the next tick. A completed project whose track_until has passed needs a later (or no) track_until first (422)
Stop tracking
Stop tracking: active or paused → stopped. Nothing is collected; mentions, analytics and reports stay
Public wall on
Public wall on (a new token each time; the old link stops working) or off ({ enabled: false }). Only the token's SHA-256 hash is stored: this answer is the only place the token appears
The project's collections, newest first
The project's collections, newest first. Without `page`/`per_page` the 30 latest (as `collections` of the project); with either the list is paged (up to 100 a page) and `meta` ({ current_page, last_page, total }) is added
Share of voice between 2–8 projects you can view
Share of voice between 2–8 projects you can view (?projects=a,b,c + filters; days of the first project's timezone). projects[]: id, name, mentions, posts (no comments, no reviews), comment_mentions, reviews, avg_rating (2 places, null without rated reviews), rating_distribution { 1..5: count }, reactions, comments, shares, interactions, views, unique_authors (sources = distinct authors), change { mentions, interactions }, sentiment, net_sentiment, share_of { mentions, posts, comment_mentions, reviews, reactions, comments, shares, interactions, views, unique_authors } (0..1 of the total), share_mentions, share_interactions, by_platform [{ platform, mentions, interactions, sources, source_share (of the project's sources) }], daily, topics (the project's topic cloud, 40, like …/topics; every compared project's keywords and brands left out), demographics (the project's aggregate audience estimates, like …/demographics), videos and avg_duration_seconds (mentions with a known video length), post_formats { format: posts } (unknown: not given). totals: the same counts summed. topics: every topic once with projects [{ id, count }], shared = in 2+ projects (intersect; shared first, then by weight). top_mentions { all, positive, negative, neutral }: 20 mentions by interactions across the projects, feed fields + project_id, text cut to 500 characters, matched_terms of its project; all keeps the sentiment filter, a sentiment tab replaces it. top_influencers { all, positive, negative, neutral }: 20 authors by mentions across the projects, influencer fields + projects { id: mentions }. Numbers come from queries grouped by project, never one per day
Industry overview
Industry overview: the projects of one category the caller can open (own, assigned, shared as guest), benchmarked over the range. At most 200 projects (newest first; meta.capped). Social Buzz = mentions (posts + comments + reviews) + interactions; mentions = posts only; reviews = review mentions with avg_rating; comments = comment mentions; sentiment_score = positive / (positive + negative), 0..1, null when none. Days of the projects' timezone when they share one, else lantfly.listening.timezone
List owned accounts (listening › projects)
The brand's own accounts [{ platform, value }] (handle or profile URL): their mentions are Own media
Replace owned account (listening › projects)
Manage: replace them ({ accounts: [...] }, max 50); every mention's Own / Paid / Earned is worked out again. Paid = #ad/#sponsored/#quangcao or paid-partnership wording, or a creator booked in a campaign (creator list) within its dates/hashtags
Create verify (listening › projects › owned accounts)
Manage: 'Verify URLs' before saving owned accounts. Reads each profile/page URL (TikTok, Instagram, Facebook, YouTube, Threads, X, Pinterest, Lemon8, Reddit, Telegram; a Pinterest board URL reads as its owner, a Lemon8 profile is lemon8-app.com/@⟨user⟩, a Reddit account reddit.com/user/⟨name⟩ or /u/⟨name⟩, a Telegram channel t.me/⟨name⟩ or t.me/s/⟨name⟩) as platform, kind (profile|page|channel), handle (lowercase; numeric id for Facebook profile.php?id= and /people/…/⟨id⟩, UC… id for YouTube /channel/) and a canonical url; error invalid_url | unsupported_platform | short_link (vt.tiktok.com, youtu.be, fb.me, pin.it, v.lemon8-app.com: would need opening) | not_a_profile (post, video, group, search). duplicate_of = index of the earlier URL for the same account, already_owned = the project has it. Parsing only: saves nothing, opens no URL. 30 requests/minute