Validate And Prepare Meta Assets
User wants to upload NEW images for Meta campaigns. This tool validates images and uploads them to Meta to get image hashes.
This tool validates image URLs against Meta’s specifications and uploads them to get image hashes needed for campaign creation. It stores validated assets in a temporary bundle (60-minute TTL).
Returns:
- Validation results (pass/fail per image)
- Image hashes for successfully uploaded images
- Asset bundle ID for use in campaign creation
- Placement compatibility information
When to use this tool:
- “Upload this image for my Meta campaign”
- “Validate my product images for Facebook ads”
- “Prepare images for Instagram ads”
- User provides image URLs and wants to create a campaign
Parameters:
- image_urls: List of public URLs to validate and upload (1-10 images)
- placement: Target placement - ‘feed’ (default), ‘stories_reels’, or ‘carousel’
- ad_account_id: Required for multi-account users. Get from list_connected_accounts
Execution time: 5-15 seconds (depends on image count and size) Data source: Meta Ad Image Upload API
Image Requirements:
| Placement | Aspect Ratio | Min Dimensions | Max Size |
|---|---|---|---|
| Feed | 1:1 or 4:5 | 600x600 | 30MB |
| Stories/Reels | 9:16 | 500x888 | 30MB |
| Carousel | 1:1 | 1080x1080 | 30MB |
Workflow:
- Use
validate_and_prepare_meta_assetswith image URLs - If successful, receive an
asset_bundle_id - Use that bundle_id with
create_meta_image_campaign
Authorizations
API key from https://adspirer.ai/keys. Prefix sk_live_. Treat as a secret — never commit.
Headers
Client-generated UUID to make writes idempotent. Strongly recommended for write tools. A repeat call with the same key returns the cached result instead of re-executing. Example: 550e8400-e29b-41d4-a716-446655440000
Body
All tool arguments are wrapped in an arguments object. The fields accepted inside arguments are listed below — required fields are marked with a red asterisk.
Input schema for validating and uploading Meta ad images
Response
Tool executed successfully. data.text carries the human-readable result (markdown-friendly). data.quota shows your current usage against the plan limit. data.structured appears when the tool emits machine-parseable structured content. data.content appears for tools that return non-text blocks (images, resources).
Returned on HTTP 200. data.text is the primary human-readable output. data.quota is always present for billable calls. data.structured is set only when the tool emits machine-parseable structured content. data.content is set only when the tool emits non-text content blocks.

