@@ -128,13 +128,13 @@ export default class TwitterApiv2ReadWrite extends TwitterApiv2ReadOnly {
128128 * https://docs.x.com/x-api/media/media-upload
129129 *
130130 * @param media The media buffer to upload
131- * @param options Upload options including media type and category
131+ * @param options Upload options including media type and category, and additional owners
132132 * @param chunkSize Size of each chunk in bytes (default: 1MB)
133133 * @returns The media ID of the uploaded media
134134 */
135135 public async uploadMedia (
136136 media : Buffer ,
137- options : { media_type : `${EUploadMimeType } ` | EUploadMimeType ; media_category ?: MediaV2MediaCategory } ,
137+ options : { media_type : `${EUploadMimeType } ` | EUploadMimeType ; media_category ?: MediaV2MediaCategory , additional_owners ?: string [ ] } ,
138138 chunkSize : number = 1024 * 1024
139139 ) : Promise < string > {
140140 let media_category = options . media_category ;
@@ -150,12 +150,13 @@ export default class TwitterApiv2ReadWrite extends TwitterApiv2ReadOnly {
150150 }
151151
152152 const initArguments : MediaV2UploadInitParams = {
153+ additional_owners : options . additional_owners ,
153154 media_type : options . media_type ,
154155 total_bytes : media . length ,
155156 media_category,
156157 } ;
157158
158- const initResponse = await this . post < MediaV2UploadResponse > ( 'media/upload/initialize' , initArguments , { forceBodyMode : 'form-data' } ) ;
159+ const initResponse = await this . post < MediaV2UploadResponse > ( 'media/upload/initialize' , initArguments ) ;
159160 const mediaId = initResponse . data . id ;
160161
161162 const chunksCount = Math . ceil ( media . length / chunkSize ) ;
@@ -167,7 +168,7 @@ export default class TwitterApiv2ReadWrite extends TwitterApiv2ReadOnly {
167168 const chunkedBuffer = Buffer . from ( mediaChunk ) ;
168169
169170 const appendArguments : MediaV2UploadAppendParams = {
170- segment_index : i ,
171+ segment_index : i + 1 ,
171172 media : chunkedBuffer ,
172173 } ;
173174
0 commit comments