facebookfacebook-graph-apifacebook-ads-api

Upload image_file using Ads API


I'm trying to create a new Ad Creative for an event ad (Post-Migration), using the field image_file.

Via the Graph API Explorer I send the following post request:

URL: https://graph.facebook.com//act_xxxx/adcreatives

object_id: xxxxx

body: body here

title: title here

name: name here

image_file: @C:\Art.jpg

I get the following exception response:

"The Adcreative Create Failed for the following reason: Invalid image file: The image_file field does not specify a POST file name."

Apparently I'm not using the image_file parameter right. How should I use it?


Solution

  • Try uploading image only, and than use image hash to upload creative.

    Parameters:

    [
     IMAGE_NAME => '@' + path
    ]
    
    POST https://graph.facebook.com//act_xxxx/adimages 
    

    IMAGE_NAME is name with extension - image.jpg, or image.png...

    As the response, you will get

    [
     'images' => [
        [
          'hash' => ...,
          'url' => ....
        ]
      ]
    ]
    

    Than use the image hash you received and create ad creative with that.

    If you want to do only one request, do next:

    curl \
    -F 'access_token=...' \
    -F 'title=Test title' \
    -F 'body=Test body' \
    -F 'link_url=http://www.whatever.com' \
    -F 'name=test creative' \
    -F 'image_file=Art.jpg' \
    -F 'Art.jpg=@C:\Art.jpg ' \
    'https://graph.facebook.com/act_xxxx/adcreatives'