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
| Version | Statut | Changements |
|---|---|---|
2026-10-05 | actuelle | tweet.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-04 | prise en charge | a 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-26 | prise en charge | the 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-25 | prise en charge | a 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-17 | prise en charge | every 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-08 | prise en charge | Initial v1: targets, keywords, stream, replay, webhooks, reads |