Upload Image Creative
upload_image_creativeUpload images directly to Metadata platform library to create image creatives. Downloads images from provided URLs and uploads them to the platform. REQUIRED STEP IN AD CREATION WORKFLOW: This tool MUST be called between generate_brand_creative and create_update_image_ad. WORKFLOW INTEGRATION: This tool is part of the ad creation workflow and should be used: 1. BEFORE creating ads with create_update_image_ad (which requires imageLibraryId/creativeID) 2. IN COMBINATION with generate_brand_creative to create AI-generated images first, then upload them 3. When you need to upload existing images from external sources
**COMMON WORKFLOWS:**
- Upload existing images → Get imageLibraryId → Use in create_update_image_ad
- Generate image with generate_brand_creative → Download generated image → Upload with this tool → Use in create_update_image_ad
- Batch upload multiple creative assets for campaign preparation
**IMPORTANT:** The returned image ID (imageLibraryId/creativeID) is REQUIRED when creating ads.
Every ad needs a creative asset, so you must upload images first before calling create_update_image_ad.
REQUIRED PARAMETERS:
- images: Array of image URLs to upload
IMAGE REQUIREMENTS:
- URLs must be valid and publicly accessible
- Supported formats: PNG, JPG, JPEG, GIF, WebP, and others
- Images will be downloaded and then uploaded to platform
- Filenames with spaces will have spaces replaced with underscores
EXAMPLES:
Single Image:
upload_image([
"https://my-bucket.s3.amazonaws.com/images/sample-image.png"
])
Multiple Images:
upload_image([
"https://my-bucket.s3.amazonaws.com/images/logo.png",
"https://example-assets.s3.us-west-2.amazonaws.com/photos/banner.jpg",
"https://content-bucket.s3.eu-west-1.amazonaws.com/uploads/hero image.webp"
])
RESPONSE FORMAT:
Returns array of objects for each image:
[
{
"url": "https://original-url.com/image.png",
"name": "image.png",
"id": 12345,
"success": true
},
{
"url": "https://failed-url.com/bad.png",
"name": "bad.png",
"id": null,
"success": false,
"error": "Download failed: Connection timeout"
}
]
ERROR HANDLING:
- If one upload fails, others will continue
- Each result includes success status
- Failed uploads include error message
- Successful uploads include platform image ID
USE CASES:
- Upload creative assets before creating ads
- Import images from external sources
- Batch upload multiple campaign images
- Migrate images from other platformsInput Schema
| Name | Required | Description | Default |
|---|---|---|---|
| names | No | Optional library name per image, positional against `images`. Pass one whenever you know what the creative is: without it the name is taken from the URL, which for a generated creative is an opaque key like `brand_creative_20260814_211126_66d8a83e.png` and leaves the user unable to tell their creatives apart in the library. Use `<brand-domain>-<channel>-<width>x<height>.png`, e.g. `stripe-com-linkedin-1200x1200.png`. A name MUST end in one of .jpg/.jpeg/.png/.gif/.mov/.mp4/.html/.pdf. | |
| images | Yes | Array of image URLs to upload to platform |