X Ads API
Conversion API Google Tag Manager server-side template
Advertisers can now send website conversions through the official X Ads Conversion API (Official) tag in a Google Tag Manager server container, without writing Conversion API request code.See Set up the Conversion API with Google Tag Manager for Pixel ID, access token, event mapping, and Pixel + Conversion API deduplication steps. The template is published in the Google Tag Manager Community Template Gallery.X Ads API
REGIONS segmentation for Analytics
Asynchronous analytics jobs now supportREGIONS as a segmentation_type. The country parameter is required when requesting a regional breakdown.See Metrics and Segmentation for the full list of enabled segmentation types.X Ads API
Lead Generation API
We documented the Lead Generation API for Lead Gen campaigns. You can now create and manage native lead forms, attach a form to a card with theLEAD_FORM destination, and export submitted leads as JSON, CSV, or XLSX.- POST /12/accounts/:account_id/lead_forms creates a form (introduction, fields, privacy policy, and optional thank-you page)
- POST /12/accounts/:account_id/cards accepts destination type
LEAD_FORM - POST /12/accounts/:account_id/ad-export/api/v1/exports with
entity_type=leadsexports submissions for a form and time window
X API v2
Media upload and Post-create size and duration limits
We documented the size and duration limits that apply when uploading media and when attaching it to a Post. Upload andPOST /2/tweets are separately enforced. Limits follow the authenticated user’s X Premium / verified status and media_category, not your developer API plan.- Default accounts: Post video up to 20 minutes and 8 GB (
tweet_video/amplify_video) - X Premium / verified: Post video up to 125 minutes and 16 GB
- Direct Message video is unchanged: 140 seconds / 512 MB default, 10 minutes / 1 GB Premium
- Exceeding the posting user’s duration cap returns 403
This user is not allowed to post a video longer than N minutes.
POST /2/media/upload/initialize, /{id}/append, /{id}/finalize) instead of the previous command-style POST /2/media/upload flow.X Ads API
Updated video_total_views definition
We updated the definition of the video_total_views metric in the VIDEO metrics group of the X Ads API Analytics endpoints. It now reports views that are 100% in-view for at least 3 seconds, plus any view where a user manually clicks the play button.The previous definition (at least 50% in-view for 2 seconds, per the MRC standard) no longer applies. The prior “100% in-view for 3 seconds” definition remains available as the video_3s100pct_views metric, and you can continue bidding on it via the VIEW_3S_100PCT bid unit.X API v2
Mute and block events for X Activity API
Today, we added mute and block events to the X Activity API. You can now subscribe by User ID to receive real-time notifications when a user mutes or unmutes (mute.mute, mute.unmute) or blocks or unblocks (block.block, block.unblock) another user.These are private events: they require user-context (OAuth 2.0) authentication with the mute.read or block.read scope, respectively, and the user_id filter matches the user performing the action.X API v2
Articles draft and publish endpoints
Today, we added new endpoints for drafting and publishing Articles via the X API.X API v2
Post create and delete events for X Activity API
Today, we addedpost.create and post.delete events to the X Activity API. You can now subscribe by User ID to receive real-time notifications when a user creates or deletes a Post.For basic per-user post activity, use XAA. For advanced keyword filtering and the full set of Filtered Stream operators, continue to use the Filtered Stream.X API v2
paid_partnership Post field
Added support for the paid_partnership field on Posts.- When creating a Post via
POST /2/tweets, set"paid_partnership": trueto indicate the Post is a paid partnership (i.e., the author is disclosing that it contains paid promotion). The Post will be labeled as a paid promotion. - When reading Posts, request
tweet.fields=paid_partnershipto retrieve the value (trueif the author has disclosed the Post as containing paid promotion).
X API v2
Search endpoints migrating to new search index
Today, we migrated the X API v2 search endpoints (/2/tweets/search/recent, /2/tweets/search/all, /2/tweets/counts/recent, /2/tweets/counts/all) to the new X core platform search index. This brings major performance improvements, dramatically fewer 503 errors, and three new precision operators: min\_likes:, min\_replies:, and min\_reposts:. Note: retweets are no longer returned in keyword-based search results (the Filtered Stream is unchanged). Learn more here.X API
X API pricing update: Owned Reads now $0.001
Effective April 20, 2026, we introduced new “Owned Reads” pricing at $0.001 per resource (1,000 for $1) for qualifying endpoints when accessing your own data:GET /2/users/{id}/bookmarks, /blocking, /muting, /pinned_lists, /tweets, /mentions, /liked_tweets, /followers, /following, /owned_lists, /followed_lists, and /list_memberships.We also updated writes — POST /2/tweets is now $0.015 per post, and Posts containing a URL are $0.20 per Post (summoned replies remain $0.01).Following, Likes, and Quote-Posts via the API have been removed from all self-serve tiers.Learn more here.X API v2
Deprecation of Account Activity replay endpoint
Today, we announced the deprecation ofPOST /2/account_activity/replay/webhooks/{webhook_id}/subscriptions/all, effective March 25, 2026 at 12:00 PM ET. Use the new consolidated POST /2/webhooks/replay endpoint instead — it provides identical functionality. Learn more here.X API v2
Direction filter for X Activity API subscriptions
Today, we added an optionaldirection filter to X Activity API subscriptions. Subscribers can now scope DM and chat events to sent, received, or both, reducing noise when only outgoing or incoming events are needed.X API v2
Updates to event types format in the X Activity API
Today, we announced changes to event type naming in the X Activity API, effective March 18, 2026. PascalCase event types (e.g.,ProfileBioUpdate) are being deprecated in favor of a dot-separated lowercase format (e.g., profile.update.bio). Update any filtering, switch statements, or deserialization logic that relies on the old values. Learn more here.X API v2
Legacy Direct Message events in the X Activity API
Today, we added legacy DM events (dm.received, dm.sent, dm.read, dm.indicate_typing) to the X Activity API. This brings DM event delivery from the Account Activity API into the lower-latency XAA pipeline.X API v2
Addressing LLM-generated spam
Today, we made changes to reduce automated, low-quality replies on X. Programmatic replies viaPOST /2/tweets are now only permitted when the original Post’s author has “summoned” the replier (by @mentioning that account or quoting one of its Posts). Additional restrictions apply to programmatically @mentioning or quoting users. These changes affect self-serve tiers only — Enterprise access is not impacted. Learn more here.X API
Launch of X API Pay-Per-Use pricing
Today, we officially launched X API Pay-Per-Use pricing — a flexible credit-based model built for indie builders, startups, and hobbyists. Highlights:- A new Developer Console at console.x.com
- The XDK (X Developer Kit) with first-party Python and TypeScript SDKs
- An interactive Playground for testing
- An MCP server for AI models
- Earn up to 20% back in xAI/Grok API credits on every dollar spent on the X API
X API v2
Spaces events in the X Activity API
Today, we added Spaces lifecycle events (spaces.start, spaces.end) to the X Activity API. Subscribe by User ID to be notified in real time when a Space starts or ends.