Create Click-to-Call ad
Same shape and flow as POST /v1/ads/ctwa, but the CTA is CALL_NOW dialing phoneNumber via a tel: link. The ad set is destination_type PHONE_CALL optimizing QUALITY_CALL and the campaign objective defaults to OUTCOME_LEADS. Supports the same single-creative and multi-creative shapes as CTWA.
Idempotency: this endpoint is not idempotent at the platform level (a blind retry creates a second campaign/ad set/ad). Send an Idempotency-Key header to make retries safe: the first request with a given key creates the ad and we store the response; a retry with the same key replays that exact response (with Idempotent-Replayed: true) instead of creating duplicates. Reusing a key with a different body returns 422; a key whose first request is still in flight returns 409 (retry after a short backoff). Keys are scoped to your credential and expire after 24h.
Headers
Optional client-generated unique key (e.g. a UUID) that makes retries safe. Same key + same body replays the original response; same key + different body → 422; key still processing → 409.
Request body
Example request
{
"creativeFeatures": {
"auto_promotion_tag": "OPT_IN"
},
"creatives": [
{
"creativeFeatures": {
"auto_promotion_tag": "OPT_IN"
}
}
]
}Response
Ad(s) created and submitted for review. The route shares its handler with POST /v1/ads/ctwa, so the body is the same tagged union discriminated by adType: single carries { adType, ad, message }, and multi carries { adType, ads, platformCampaignId, platformAdSetId, message }.
Changes
Changed in 17 of the 56 revisions of this API.55
- ○
added the new optional
headerrequest parameterIdempotency-Keynew-optional-request-parameter
- ○
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
This revision also has 2 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ○
- ○
added the new optional request property
//////new-optional-request-property
- ○
added the new optional request property
////new-optional-request-property
- ○
request property
//////deprecatedrequest-property-deprecated
- ○
request property
////deprecatedrequest-property-deprecated
- ○
- ○
added the new optional request property
////new-optional-request-property
- ○
added the new optional request property
////new-optional-request-property
- ○
added the new optional request property
////new-optional-request-property
- ○
- ○
added the new optional request property
/////new-optional-request-property
- ○
the request property
/////became optionalrequest-property-became-optional
- ○
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
- ○
added the new optional request property
////new-optional-request-property
- ○
- ○
added the media type
application/jsonfor the response with the statusresponse-media-type-added
- ○
added the non-success response with the status
response-non-success-status-added
- ○
- ○
added the new optional request property
////new-optional-request-property
- ○
added the new optional request property
//////new-optional-request-property
- ○
added the new optional request property
//////new-optional-request-property
- ○
added the new optional request property
//////new-optional-request-property
- ○
added the new optional request property
////new-optional-request-property
- ○
added the new optional request property
////new-optional-request-property
- ○
added the new optional request property
////new-optional-request-property
- ○
added the new optional request property
////new-optional-request-property
- ○
the request property
//////became optionalrequest-property-became-optional
- ○
the request property
//////became optionalrequest-property-became-optional
- ○
added the media type
application/jsonfor the response with the statusresponse-media-type-added
- ○