meta_create_creative
Build a Meta ad creative from media you uploaded to AdCrunch. Image and video both work.
Turns media you have uploaded to AdCrunch into a Meta ad creative — the thing meta_create_ad puts into an ad set. This is what closes the loop that Bring your own creative opens: upload, register, build.
Input
| Field | Type | Required | Description |
|---|---|---|---|
advertiserId |
acc_* |
yes | The Meta advertiser. |
assetId |
ast_* |
yes | The AdCrunch asset. Must already be registered to this advertiser. |
pageId |
string |
yes | The Facebook Page the ad speaks from — from meta_list_pages. |
link |
URL | yes | Where the ad sends people. |
message |
string |
yes | Primary text — the body copy above the media. |
headline |
string |
yes | The bold headline beside the button. |
description |
string |
no | Supporting line. Not shown in every placement. |
callToAction |
enum | yes | The button, e.g. SHOP_NOW. NO_BUTTON for none. |
name |
string |
yes | Internal name in Ads Manager. Users never see it. |
You never choose a format
Pass the AdCrunch asset ID — the same ast_* you gave asset_register — not a Meta image hash or video ID. AdCrunch looks up what that asset registered as on this advertiser and builds the right spec: an image becomes a link ad, a video becomes a video ad. That is a fact about the asset, not a decision worth asking you to make, and there is deliberately no way to pass a raw Meta identifier instead.
A video uploaded a moment ago is fine
Meta returns a video ID long before the video is usable, and a video ad needs a thumbnail Meta has not generated yet. This tool waits for processing to finish and then picks Meta’s preferred frame — so you are not told to come back later. If it is still not ready after the wait, you get a clear “still processing, try again shortly”, not a Graph error.
Output
{ workflowId }. Poll get_mutation_status for the new creative’s { id }, then pass that to meta_create_ad.
Errors
Each is decided before anything is created, and says what to do next:
- Not registered to this advertiser — the asset exists, but not in that ad account’s library. Call
asset_registerfor it first. - Registration failed — Meta has no copy of it. Check
asset_getfor the reason, then register again. - Registration still running — wait and retry.
- Video still processing / no thumbnail / Meta could not process it — the upload is fine in the first case, just not ready yet.
Not supported
Carousel creatives (child_attachments), custom video thumbnails, Advantage+ creative, and building a creative from an image that already exists in Meta’s library but was not uploaded through AdCrunch. For that last case, reuse the existing creative instead by passing its ID to meta_create_ad.