I am able to post a video from a public URL as a REEL: import requests token = "..." api_version="v23.0" headers = { "Content-Type": "application/json", "Authorization": f"Bearer {token}" } # Get my user ID id_url = f"https://graph.instagram.com/{api_version}/me" id_response = requests.get(id_url, headers=headers) user_id = id_response.json()['id'] # Upload a video on a public URL as a REEL url = f"https://graph.instagram.com/{api_version}/{user_id}/media" video_url = "https://download.samplelib.com/mp4/sample-5s.mp4" payload = { "video_url": video_path, "media_type": "REELS", } response = requests.post( url=url, headers=headers, data=payload ) post_id = json.loads(out.content)['id'] # wait until video has been uploaded ... publish_url = f"https://graph.instagram.com/{api_version}/{user_id}/media_publish" payload = { "creation_id": post_id } response = requests.post(publish_url, headers=headers, data=payload) reel_id = response.json()['id']) However, I cannot upload a local file. I've tried following the documentation but without any luck. I currenty have an App with Instagram Login. Continue reading...