For AI agents: a documentation index is available at the root level at /llms.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
1.3.0
POST /analyses — create an analysis from a content selection: a collectionId, explicit postIds, or posts filters (the same filters as GET /posts, including the new tag). Optionally narrow the comments with dashboard filters (mix-bar buckets, keywords, usernames, creator, replies, questions, mentions, emoji, minLikes, date range) or an AI / keyword search. Requires the new analyses:run scope. See Analyses.
- Analyses carry a
status. Snapshots of up to 100 posts compute inline and return 201 ready; AI searches and larger selections return 202 queued with Location and Retry-After, then move through running to ready or failed on GET /analyses/{analysisId}. Analyses expire after 7 days.
GET /analyses/{analysisId}/comments applies the analysis’s own filters / search first for API-created analyses, returns 409 analysis_not_ready until the analysis is ready, and still accepts the mix-bar query filters and source= sampling.
GET /analyses merges API-created analyses with saved campaign reports; filter with kind=snapshot|search|report|all. Every row carries kind and status.
- New post filter
tag on GET /posts, GET /collections/{collectionId}/posts, and selection.posts (case-insensitive, leading # optional, comma list matches any).
- Full analysis payloads are now documented end to end: Post analysis includes a complete
GET /posts/{postId}/analysis response, and the API reference carries full examples for PostAnalysis and Analysis.
- Rate limits re-sized for scheduled BI refreshes. Burst caps are now sized so a sequential refresh loop cannot trip them, and per-day budgets fit eight full refreshes a day of a 500-post workspace (the Power BI Pro scheduler maximum), or one full refresh plus hourly incrementals. Global cap is 300 requests / minute and 10,000 / day per key (was 120 / minute with no daily request budget). Expensive routes have class budgets with both a burst and a daily cap:
comments (per-post sample) 120 / min · 1,000 / day, analysis_comments (GET /analyses/{id}/comments) 20 / min · 300 / day, collection_posts 60 / min · 1,000 / day, analysis_read 60 / min · 2,000 / day, analysis_create 10 / min · 100 / day, analysis_search (AI) 2 / min · 10 / day. Daily transfer cap raised from 50 MB to 500 MB. New headers X-RateLimit-Daily-Limit, X-RateLimit-Daily-Remaining, X-RateLimit-Class, X-RateLimit-Class-Limit; GET /me reports remainingDailyRequests and routeClasses. pollAfterMs for analysis jobs is now 3000. See Rate limits for the worked BI budget.
- The overview now lays out the API as selection → analysis → comments, with new core-concept explainers for Content selection and Analyses (including a worked Dove brand + influencer example).
1.2.0
- New post filters on
GET /posts and GET /collections/{collectionId}/posts: link, account, posted_until, min_score / max_score, and min_*_percent / max_*_percent for each sentiment bucket (positive, lean_positive, neutral, lean_negative, negative). See Filtering posts.
GET /posts/{postId}/analysis returns content + comment analysis. Comments for that analysis are GET /posts/{postId}/analysis/comments. Campaign reports use the same nesting: GET /analyses/{analysisId}/comments, for analyses of up to 1,000 posts. Mix-bar filters (sentiment, content, topic, relevance, consensus). See Post analysis and Retrieving comments.
GET /posts/{postId}/metrics also returns content and topic mix bars for score version 2+.
platform now accepts a comma-separated list (platform=instagram,tiktok). link and account accept lists too.
GET /collections/{collectionId}/posts now supports platform, posted_since, and updated_since as well.
- Post list responses echo the active filters in
meta.filters.
- Invalid filter values (bad dates, out-of-range numbers,
min greater than max) now return 400 with a descriptive message. Previously an invalid updated_since was silently ignored.