X · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for X API v2 Media API

12 actions 12 updates phrasing extends openapi/x-media-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for X's API. It is a proposal applied on top of the contract, not a document X publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 12

$.info
$.paths['/2/media'].get
$.paths['/2/media/analytics'].get
$.paths['/2/media/metadata'].post
$.paths['/2/media/subtitles'].post
$.paths['/2/media/subtitles'].delete
$.paths['/2/media/upload'].get
$.paths['/2/media/upload'].post
$.paths['/2/media/upload/initialize'].post
$.paths['/2/media/upload/{id}/append'].post
$.paths['/2/media/upload/{id}/finalize'].post
$.paths['/2/media/{media_key}'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for X API v2 Media API
  version: 1.0.0
extends: openapi/x-media-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-09-26'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 11
- target: $.paths['/2/media'].get
  update:
    x-apievangelist-phrasing:
      intent: Look up several media items by key
      effect: read
      questions:
      - Can I get details for a batch of media keys in one call?
      - What type, size and URL info comes back for multiple media keys?
      instructions:
      - text: Get media details for keys {media_keys}.
        slots:
          media_keys: query.media_keys
      - text: 'Look up these media items together: {media_keys}.'
        slots:
          media_keys: query.media_keys
      method: generated
      generated: '2026-09-26'
- target: $.paths['/2/media/analytics'].get
  update:
    x-apievangelist-phrasing:
      intent: Get analytics for media items
      effect: read
      questions:
      - How are my uploaded videos performing over a date range?
      - Can I get media analytics broken down by hour or day?
      instructions:
      - text: Show analytics for media {media_keys} from {start_time} to {end_time}.
        slots:
          media_keys: query.media_keys
          start_time: query.start_time
          end_time: query.end_time
      - text: Get {granularity} media analytics for {media_keys} between {start_time} and {end_time}.
        slots:
          granularity: query.granularity
          media_keys: query.media_keys
          start_time: query.start_time
          end_time: query.end_time
      method: generated
      generated: '2026-09-26'
- target: $.paths['/2/media/metadata'].post
  update:
    x-apievangelist-phrasing:
      intent: Add metadata to uploaded media
      effect: write
      questions:
      - Can I attach extra metadata to an image after uploading it?
      - What call sets metadata on an existing media ID?
      instructions:
      - text: Add metadata {metadata} to media {id}.
        slots:
          metadata: requestBody.metadata
          id: requestBody.id
      - text: Attach metadata to uploaded media {id}.
        slots:
          id: requestBody.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/2/media/subtitles'].post
  update:
    x-apievangelist-phrasing:
      intent: Add subtitles to a video
      effect: write
      questions:
      - Can I attach subtitle files to a video I uploaded?
      - What's needed to add captions to a video's media ID?
      instructions:
      - text: Add subtitles {subtitles} to video {id}.
        slots:
          subtitles: requestBody.subtitles
          id: requestBody.id
      - text: Attach captions {subtitles} to {media_category} media {id}.
        slots:
          subtitles: requestBody.subtitles
          media_category: requestBody.media_category
          id: requestBody.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/2/media/subtitles'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove subtitles from a video
      effect: destructive
      questions:
      - How do I delete a subtitle track in a particular language from a video?
      - Can I remove captions I previously added to media?
      instructions:
      - text: Delete the {language_code} subtitles from {media_category} media {id}.
        slots:
          language_code: requestBody.language_code
          media_category: requestBody.media_category
          id: requestBody.id
      - text: Remove {language_code} captions on video {id} ({media_category}).
        slots:
          language_code: requestBody.language_code
          id: requestBody.id
          media_category: requestBody.media_category
      method: generated
      generated: '2026-09-26'
- target: $.paths['/2/media/upload'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a media upload's processing status
      effect: read
      questions:
      - Is my uploaded video still processing or ready to post?
      - How can I poll the status of a chunked media upload?
      instructions:
      - text: Check the upload status of media {media_id}.
        slots:
          media_id: query.media_id
      - text: Poll processing progress for upload {media_id}.
        slots:
          media_id: query.media_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/2/media/upload'].post
  update:
    x-apievangelist-phrasing:
      intent: Upload a media file in one request
      effect: write
      questions:
      - What's the simplest way to upload an image for a post in a single request?
      - Can I share an uploaded media file with other user accounts?
      instructions:
      - text: Upload {media} as {media_category} and give me its media key.
        slots:
          media: requestBody.media
          media_category: requestBody.media_category
      - text: Upload {media} as {media_category} and also grant access to {additional_owners}.
        slots:
          media: requestBody.media
          media_category: requestBody.media_category
          additional_owners: requestBody.additional_owners
      method: generated
      generated: '2026-09-26'
- target: $.paths['/2/media/upload/initialize'].post
  update:
    x-apievangelist-phrasing:
      intent: Start a chunked media upload
      effect: write
      questions:
      - Where does a chunked upload for a large video begin?
      - What size and type details go into initializing a media upload?
      instructions:
      - text: Initialize a chunked upload of {total_bytes} bytes of type {media_type}.
        slots:
          total_bytes: requestBody.total_bytes
          media_type: requestBody.media_type
      - text: Start a {media_category} chunked upload for a {total_bytes}-byte file.
        slots:
          media_category: requestBody.media_category
          total_bytes: requestBody.total_bytes
      method: generated
      generated: '2026-09-26'
- target: $.paths['/2/media/upload/{id}/append'].post
  update:
    x-apievangelist-phrasing:
      intent: Append a chunk to a media upload
      effect: write
      questions:
      - Which segment index goes with each chunk of a media upload?
      - Can I send a large video to an upload session in pieces?
      instructions:
      - text: Append chunk {segment_index} ({media}) to media upload {id}.
        slots:
          segment_index: requestBody.segment_index
          media: requestBody.media
          id: path.id
      - text: Send segment {segment_index} of the file {media} into upload session {id}.
        slots:
          segment_index: requestBody.segment_index
          media: requestBody.media
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/2/media/upload/{id}/finalize'].post
  update:
    x-apievangelist-phrasing:
      intent: Finalize a chunked media upload
      effect: write
      questions:
      - What do I call after all chunks of a media upload are sent?
      - Does finalizing an upload make the media usable in posts?
      instructions:
      - text: Finalize media upload {id}.
        slots:
          id: path.id
      - text: Complete the chunked upload session {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/2/media/{media_key}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one media item by key
      effect: read
      questions:
      - Can I look up a single media item from its media key?
      - Which fields can I request for one piece of media?
      instructions:
      - text: Get media {media_key}.
        slots:
          media_key: path.media_key
      - text: Show media item {media_key} with fields {fields}.
        slots:
          media_key: path.media_key
          fields: query.media.fields
      method: generated
      generated: '2026-09-26'