overlay: 1.0.0 info: title: API Evangelist enhancements to the X API v2 OpenAPI version: 1.0.0 x-provenance: generated: '2026-08-28' method: generated source: openapi/_original/x-api-v2-openapi.json description: >- Captures every change API Evangelist applies on top of X's published OpenAPI (harvested verbatim from https://api.x.com/2/openapi.json, version 2.168) when producing the per-tag documents in openapi/. The original is never mutated. The per-tag split itself is structural and is recorded here as a note rather than as an action, because Overlay cannot express document fan-out. extends: openapi/_original/x-api-v2-openapi.json split_note: >- openapi/x--api-openapi.yml are 23 tag-scoped documents mechanically derived from the original, each carrying the transitive closure of the components its operations reference. No operation, parameter, schema or response was added, removed or reworded. actions: - target: $.info description: Point info.description at the machine-readable discovery surfaces X publishes, so an agent reading only the spec can find them. update: x-discovery: openapi: https://api.x.com/2/openapi.json llms_txt: https://docs.x.com/llms.txt agents_md: https://docs.x.com/AGENTS.md agent_skill: https://docs.x.com/.well-known/agent-skills/x/skill.md agent_card: https://docs.x.com/.well-known/agent-card.json mcp: https://api.x.com/mcp docs_mcp: https://docs.x.com/mcp oauth_authorization_server: https://api.x.com/.well-known/oauth-authorization-server oauth_protected_resource: https://api.x.com/.well-known/oauth-protected-resource changelog: https://docs.x.com/changelog changelog_rss: https://docs.x.com/changelog/rss.xml status: https://developer.x.com/status rate_limits: https://docs.x.com/x-api/fundamentals/rate-limits pricing: https://docs.x.com/x-api/getting-started/pricing - target: $.info description: Record the runtime conventions X documents outside the contract, which the contract itself does not state. update: x-conventions: rate_limit_headers: [x-rate-limit-limit, x-rate-limit-remaining, x-rate-limit-reset] rate_limit_status: 429 error_format: rfc9457 error_media_type: application/problem+json partial_errors: >- A 200 response may carry both `data` and `errors`; callers must inspect `errors` even on success. pagination: token-based via `pagination_token` request parameter and `next_token` in `meta` sparse_fieldsets: '`*.fields` parameters plus `expansions` for related objects' billing: pay-per-usage credits, deduplicated per resource within a 24-hour UTC window