uploadInit method

Future<UploadInit> uploadInit({
  1. required int totalBytes,
  2. required String mediaType,
  3. String? mediaCategory,
  4. List<String>? additionalOwners,
  5. TransformResponse<UploadInit> transform = defaultUploadInitTransform,
})

The INIT command request is used to initiate a file upload session. It returns a mediaId which should be used to execute all subsequent requests. The next step after a successful return from INIT command is the APPEND command.

See https://developer.twitter.com/en/docs/media/upload-media/uploading-media/media-best-practices for constraints and requirements on media files.

totalBytes: The size of the media being uploaded in bytes.

mediaType: The MIME type of the media being uploaded.

mediaCategory: A string enum value which identifies a media usecase. This identifier is used to enforce usecase specific constraints (e.g. file size, video duration) and enable advanced features.

additionalOwners: A list of user IDs to set as additional owners allowed to use the returned mediaId in Tweets or Cards. Up to 100 additional owners may be specified.

transform: Can be used to parse the request. By default, the response is parsed in an isolate.

See https://developer.twitter.com/en/docs/media/upload-media/api-reference/post-media-upload-init.

Implementation

Future<UploadInit> uploadInit({
  required int totalBytes,
  required String mediaType,
  String? mediaCategory,
  List<String>? additionalOwners,
  TransformResponse<UploadInit> transform = defaultUploadInitTransform,
}) async {
  final body = <String, String>{}
    ..addParameter('command', 'INIT')
    ..addParameter('total_bytes', totalBytes)
    ..addParameter('media_type', mediaType)
    ..addParameter('media_category', mediaCategory)
    ..addParameter('additional_owners', additionalOwners);

  return client
      .post(
        Uri.https('upload.twitter.com', '1.1/media/upload.json'),
        body: body,
      )
      .then(transform);
}