Gestion des versions

Politique

Le préfixe /v1 ne change que si le format de transport casse. Ajouter un champ à une charge utile n'est pas une rupture — analysez avec tolérance et ignorez ce que vous ne connaissez pas. Quand quelque chose doit disparaître, nous le marquons ici comme obsolète et le maintenons en fonctionnement pendant au moins 180 jours. GET /v1/meta/versions renvoie ce tableau.

Version

VersionStatutChangements
2026-10-05actuelletweet.edit: an edited post is delivered as tweet.edit, carrying the new version and edit_of, the version it replaces (it used to arrive as a new tweet.create)
account.status: the account became protected, suspended or unavailable (deactivated, deleted, not visible), or active again; d carries old, new and X's reason
a new account category in GET /v1/meta/event-types; subscriptions that take every type ([]) receive the two new types, explicit lists do not change
post events carry author as a full User (bio, avatar, banner, counts, verification, location, link, join date), the same object as a search.match author; a thin first frame carries the account as last read
every event's target carries name, the account's display name, beside id and screen_name
2026-10-04prise en chargea thin first frame carries author.screen_name and a url with the account's handle (it had neither)
post payloads carry kind_final; a thin first tweet.create can still turn out to be a quote, and the update that settles it is tweet.quote with kind_was: tweet
an update that changes a post's type reaches every key whose choice includes either type (it was filtered by the new type only, so a key taking tweet.create but not tweet.quote never learned its post was a quote)
tweet.delete ts is when the deletion was detected; it was the deleted post's own time
post payloads carry article for X Articles: title, preview, full text, cover and images
Target push_ready means every event type the subscription asks for is collected live
documented: system.hello targets is the count when the connection opened and replay_from echoes ?last_id=; close code 1012 and how to resume
a monitored account is its user id: POST /v1/monitor/targets and batch items take user_id instead of screen_name, and /v1/monitor/targets/{target} takes the user id, the current handle or a former handle
an account that changes its handle keeps being delivered, later events carry the new target.screen_name, and profile.screen_name / profile.name report the change; Target objects carry previous_screen_names
two keys asking for the same unknown account at once are both subscribed (the second request used to replace the first)
2026-09-26prise en chargethe WebSocket reads Authorization: Bearer like every REST endpoint; before this, only X-API-Key and ?api_key= were read there although the authentication guide listed all three, so a Bearer-only client was closed with 4001
a 4001 close reason names the problem: missing_api_key, invalid_api_key or key_revoked (documented)
2026-09-25prise en chargea subscription can be narrowed to chosen event types: event_types on POST /v1/monitor/targets and on batch add items, and PATCH /v1/monitor/targets/{screen_name}; null or [] means every type
Target objects carry event_types and event_types_all
the filter applies to the stream, webhooks and GET /v1/events alike; an open connection picks up a change on its next refresh
2026-09-17prise en chargeevery key is served alike: the tier and priority fields, PATCH /v1/monitor/targets/{screen_name}, the batch patch op and the tier:ultra scope are gone; subscriptions cannot be narrowed by event type
keywords no longer take interval_s; how often a keyword is searched is decided on our side
keyword matches reach only the keys that watch the keyword; there is no operator broadcast
event envelope no longer carries src or lat; payloads no longer carry push_type, x_push_ts, ts_estimated, confirmed, deep
/v1/status reports component state only; /v1/meta/event-types reports category and second_frame
Authorization: Bearer accepted alongside X-API-Key
401 key_revoked distinguished from invalid_api_key
402 plan_limit replaces target_limit and keyword_limit
X-RateLimit-* headers and 429 rate_limited per key
Idempotency-Key on writes, ETag / If-None-Match on reads, If-Match on PATCH
POST /v1/monitor/targets:batch
GET /v1/monitor/targets/{screen_name} with queued / failed resolution state
cursor paging on /v1/monitor/targets and /v1/events
/v1/meta/* public metadata
PUT /v1/account/webhook keeps the secret when the URL is unchanged
2026-09-08prise en chargeInitial v1: targets, keywords, stream, replay, webhooks, reads