This guide explains how to create and publish call ads using the Marketing API from Meta.
This guide assumes you have:
To make successful calls to all endpoints in this guide, you will need:
ADVERTIZE task on the Pageads_managementpages_manage_adspages_read_engagementpages_show_list
Be sure to set the open hours for you business in your
Facebook Page Settings.

When testing an API call, you can include the access_token parameter set to your access token. However, when making secure calls from your app, use the access token class.
To create your ad campaign send a POST request to the act_ad_account_id/campaigns endpoint where ad_account_id is the ID for your Meta ad account. Your request must include:
nameobjective – set to one of the following supported objectives:
OUTCOME_AWARENESSOUTCOME_ENGAGEMENTOUTCOME_LEADSOUTCOME_SALESOUTCOME_TRAFFICspecial_ad_categories
curl -X POST "https://graph.facebook.com/v24.0/act_ad_account_id/campaigns" \
-H "Content-Type: application/json" \
-d '{
"name":"Call_ad_campaign_name",
"objective":"OUTCOME_TRAFFIC",
"special_ad_categories":["NONE"],
}'On success your app receives a JSON response with the ID for your campaign.
{
"id": "campaign_id"
}
To create an ad set, send a POST request to the act_ad_account_id/adsets endpoint where ad_account_id is the ID for your Meta ad account. Your request must include:
bid_amountbilling_event set to IMPRESSIONScampaign_iddaily_budgetdestination_type set to PHONE_CALLnameoptimization_goal set to QUALITY_CALL for call adstargeting
curl -X POST "https://graph.facebook.com/v24.0/act_ad_account_id/adsets"
-H "Content-Type: application/json"
-d '{
"bid_amount":"Your_bid_amount",
"billing_event":"IMPRESSIONS",
"campaign_id":"Your_campaign_id",
"daily_budget":"Your_daily_budget",
"destination_type":"PHONE_CALL",
"name:"Your_call_adset_name",
"optimization_goal":"QUALITY_CALL",
"targeting":{
"geo_locations": { "countries":["US","CA"] },
"device_platforms": ["mobile"],
"publisher_platforms": ["facebook"]
}
}'
On success your app receives the following JSON response with the ID for the ad set.
{
"id": "adset_id"
}
The ad creative allows you to add assets to your ads. Carousel, image, text-only, and video ads are supported.
To create an ad creative, send a POST request to the /act_ad_account_id/adcreatives endpoint where ad_account_id is the ID for your Meta ad account. Your request must include:
nameobject_story_specobject_story_spec with a link_data object that defines the call_to_action with type set to CALL_NOW and value as the phone number for your business
curl -X POST "https://graph.facebook.com/v24.0/act_ad_account_id/adcreatives"
-H "Content-Type: application/json"
-d '{
"name":"Your_call_image_ad_name",
"object_story_spec":{
"page_id": "your_page_id",
"link_data": {
"picture": "Your_image_URL",
"link": "Your_business_page_URL",
"call_to_action": {
"type":"CALL_NOW",
"value":{ "link":"tel:+Your_business_phone_number_with_country_code" }
}
}
}
}'
On success your app receives the following JSON response with the ID for the ad creative.
{
"id": "ad_creative_id"
}
To create the ad you need to associate the ad creative and the ad set. To create the ad, send a POST request to the /act_ad_account_id/ads endpoint where ad_account_id is the ID for your Meta ad account. Your request must included:
curl -X POST "https://graph.facebook.com/v24.0/act_ad_account_id/ads"
-H "Content-Type: application/json"
-d '{
"adset_id": "Your_ad_set_id",
"creative": { "creative_id": "Your_ad_creative_id" },
"status": "PAUSED"
}'
On success your app receives the following JSON response with the ID for the ad.
{
"id": "ad_id"
}
Visit the Get Started guide to learn how submit your ad for review.
Learn more about the Marketing API and additional options for call ads.