Create Click-to-Call ad
Changed onCreates a Meta ad with a Call Now button that dials your phone number, optimized for quality calls.
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). If the first request is cut off mid-create (for example by a function timeout), its key can stay in progress and keep returning 409 until it expires; use a new key to retry sooner, after checking whether the ad was created. Keys are scoped to your credential and expire after 24h.
Request
- Base URL: https://zernio.com/api
- URL: https://zernio.com/api/v1/ads/call
- Auth: HTTP bearer
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. A request cut off mid-handler (for example by a function timeout) can leave its key in progress, answering 409 until the key expires after 24 hours.
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
- info
added the new optional request property
/////
- info
- info
added the new optional request property
/////// - info
added the new optional request property
//// - info
the request property
///////became optional
- info