Bring your image to Meta
Private local uploads are a preview and are not generally available. New uploads are closed after the internal acceptance test. The first pilot scope is 50 Meta images. Support depends on your client and account setup. Image generation happens in the tool or client you choose.
Choose your source
- An existing Meta image
- Reuse its image_hash in the same ad account. No upload is needed.
- A local JPEG or PNG
- The private preview accepts up to 4 MiB and 16 million pixels. It requires an available preview and a client with file access and HTTP upload.
- A public image URL
- Use an approved direct HTTPS image URL. A sharing or viewer page is not necessarily a downloadable image.
- A client without file or HTTP access
- Upload manually to the selected Meta ad-account library and reuse its hash, or use an already approved direct URL. Our remote server cannot open a local attachment.
- Video or another platform
- Use that platform's existing upload or library-ID instructions. Private staging currently supports Meta images only.
Upload with a capable client
- Choose the workspace and Meta account. Ask your client to calculate the file size and SHA-256 locally.
- Use
assets_stagewith file metadata. Your client sends the original file with HTTP PUT using the returned instructions. Keep the temporary upload URL secret. - Use
meta_upload_image(stage_id=...)to finish the upload. Keep the returnedimage_hashfor the same account. - Use that hash in the existing ad-creation flow. Uploading an image does not itself create an ad or authorize spend.
You do not need to publish a private image on a public host. Legacy base64 input remains available, but sends image data through the MCP payload and can use substantial model context.
Cost and safe recovery
A new staged image normally uses two successful tool calls. HTTP PUT uses none. Fifty new images normally use 100 calls, before ad creation, extra checks and successful replays. Your ordinary plan limits apply; a 50-call trial does not cover that full batch.
For a folder, process one or two images at a time. Keep a private local progress record without upload URLs or credentials. Reuse completed hashes. If a PUT response is lost, try finishing the same stage instead of sending the file again. Follow explicit retry hints using the same account and name. If the provider outcome is unknown, stop and inspect the account library before taking another action. Never blindly upload again.
Where your image goes
Original bytes, including any embedded metadata, pass through AdSuperpowers and temporary private Supabase Storage to your selected Meta account. We do not automatically strip metadata. Only this HTTP byte transfer stays out of MCP tool payloads. Metadata, legacy base64 inputs and files already shared with your AI client can still be in its context.
Keep your original. This is not a permanent library or backup. The upload URL permits one attempt within 10 minutes. Ready uploads can begin finalization within 24 hours of reservation. Sources are scheduled for deletion after completion, failure or expiry. Cleanup is scheduled every 15 minutes with a daily bounded orphan scan; outages can delay physical deletion. Result evidence has a separate 30-day window and is pruned after confirmed source deletion. Audit and database backups are separate. Deleting our staging does not remove your local files or Meta copies.
Read the data privacy details