403 Permission Error When Tryna Upload Reel To Instagram Using Graph API, But Image works?

33 Views Asked by At
def create_media_container_for_reel(video_url, access_token, caption, user_id):

    graph_url = f'https://graph.facebook.com/v19.0/{user_id}/media'
    payload = {
        'media_type': 'REELS',  # Updated as per the new requirement
        'video_url': video_url,
        'caption': caption,
        'access_token': access_token
    }

    response = requests.post(graph_url, json=payload)

    if response.status_code in [200, 201]:
        media_container_id = response.json().get('id')
        return media_container_id
    else:
        logging.error(f"Failed to create media container. Status code: {response.status_code}, Response: {response.text}")
        return None

import time

def publish_media_container_as_reel(media_container_id, access_token, user_id, retries=5, delay=10):
 
    print(media_container_id)
    publish_endpoint = f'https://graph.facebook.com/v19.0/{user_id}/media_publish'
    publish_payload = {
        'creation_id': media_container_id,
        'access_token': access_token
    }
    
    while retries > 0:
        response = requests.post(publish_endpoint, data=publish_payload)

        if response.status_code in [200, 201]:
            logging.info("Reel published successfully.")
            return True
        else:
            error = response.json().get('error', {})
            if error.get('code') == 9007 and retries > 0:
                logging.warning(f"Media not ready for publishing, waiting {delay} seconds before retrying...")
                time.sleep(delay)
                retries -= 1
            else:
                logging.error(f"Failed to publish reel. Status code: {response.status_code}, Response: {response.text}")
                return False
    
    logging.error("Failed to publish reel after retries. Giving up.")
    return False

def post_reel_to_instagram(video_url, access_token, caption, user_id):

    # Step 1: Create Media Container
    media_container_id = create_media_container_for_reel(video_url, access_token, caption, user_id)
    if not media_container_id:
        return False

    # Step 2: Publish the Media Container as a Reel
    return publish_media_container_as_reel(media_container_id, access_token, user_id)

I'm using the above code, all the token and id is same for image and reel, but image upload works flawlessly but reel one doesn't work.

create_media_container_for_reel also returns a media id, it only gives error when i try to post ot on my feed using publish_media_container_as_reel

what am I doing wrong?

0

There are 0 best solutions below