Skip to content

Ad Study

Updated: Mar 24, 2026

Test your ads and choose the strategy that is driving the most conversions. For example, create a split test to find out which ad set performs the best:

Select language

cURL


curl \
-F 'name="new study"' \
-F 'description="test creative"' \
-F 'start_time=1435622400' \
-F 'end_time=1436918400' \
-F 'type=SPLIT_TEST' \
-F 'cells=[{name:"Group A",treatment_percentage:50,adsets:[<AD_SET_ID>]},{name:"Group B",treatment_percentage:50,adsets:[<AD_SET_ID>]}]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/ad_studies

Use ad study for these experiments:

Study TypeUse Case
Split TestingInform near-term optimization decisions. Example: Is Creative A doing better than Creative B?
Conversion LiftMeasure incremental impact of Facebook ads on business outcomes.
Multi-Cell Conversion LiftMeasure incremental impact of different Facebook ads strategies on business outcomes.
Brand Lift ResultsRetrieve and analyze your brand lift study results.

See Lift Study for setting up Conversion Lift and Multi-Cell Conversion Lift.

Reading

A lift study object

Examples

To read the details for a study, make a HTTP GET to:

https://graph.facebook.com/<API_VERSION>/<AD_STUDY_ID>

To read about the cells in a study:

Select language

cURL


curl -G \
-d 'fields="name,treatment_percentage,campaigns,adsets,adaccounts"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<API_VERSION>/<AD_STUDY_ID>/cells

// The response
{
  "data": [
    {
      "id": "<CELL_ID>",
      "name": Group A,
      "treatment_percentage": 50,
      "adsets": {
        "data": [
          {
           "id": "<AD_SET_ID>"
          }
        ],
      }
    },
    {
      "id": "<CELL_ID>",
      "name": Group B,
      "treatment_percentage": 50,
      "adsets": {
        "data": [
          {
            "id": "<AD_SET_ID>"
          }
        ],
      }
    }
  ],
}

Example

Select language

HTTPPHP SDKJavaScript SDKAndroid SDKiOS SDK


GET /v25.0/{ad-study-id} HTTP/1.1
Host: graph.facebook.com

Try it in Graph API Explorer

If you want to learn how to use the Graph API, read our Using Graph API guide

Parameters

This endpoint doesn't have any parameters.

Fields

FieldDescription
id numeric stringID of the Lift study default
business BusinessThe business that owns this study if it exists.
canceled_time datetimeTime stamp when study was canceled
cooldown_start_time datetimeCooldown start time
created_by UserWho Lift study was created by
created_time datetimeWhen was the Lift study created
description stringDescription default
end_time datetimeEnd time default
name stringName of the Lift study default
observation_end_time datetimeObservation end time
results_first_available_date stringWhen results for at least one objective of the study are available
start_time datetimeStart time default
type stringThe type of study, either audience segmentation or lift.
updated_by UserUpdated by
updated_time datetimeUpdated time

Edges

EdgeDescription
cells Edge<AdStudyCell>The cells which are part of the objective
objectives Edge<AdStudyObjective>The objectives which are part of the objective

Error Codes

Error CodeDescription
368The action attempted has been deemed abusive or is otherwise disallowed
100Invalid parameter
190Invalid OAuth 2.0 Access Token

Creating

Requirements

  • treatment_percentage for each cell should be at least 10.
  • The sum of treatment_percentage for all study cells should be less or equal to 100.
  • Each cell must have at least one object associated with it. The object can be adaccounts, campaigns, or adsets.

/{user_id}/ad_studies

You can make a POST request to ad_studies edge from the following paths:

When posting to this edge, an AdStudy will be created.

Parameters

ParameterDescription
cells list<Object>A shape to describe the cells of the study --- description string id int64 name string creation_template enum {AUTOMATIC_PLACEMENTS, BRAND_AWARENESS, FACEBOOK, FACEBOOK_AUDIENCE_NETWORK, FACEBOOK_INSTAGRAM, FACEBOOK_NEWS_FEED, FACEBOOK_NEWS_FEED_IN_STREAM_VIDEO, IN_STREAM_VIDEO, INSTAGRAM, MOBILE_OPTIMIZED_VIDEO, PAGE_POST_ENGAGEMENT, REACH, TV_COMMERCIAL, TV_FACEBOOK, VIDEO_VIEW_OPTIMIZATION, LOW_FREQUENCY, MEDIUM_FREQUENCY, HIGH_FREQUENCY} adaccounts list<int64> ads list<numeric string or integer> adsets list<numeric string or integer> campaigns list<numeric string or integer> control_percentage float with at most two digits after decimal point treatment_percentage float with at most two digits after decimal point Show child parameters
client_business numeric string or integerBusiness associated with study
confidence_level floatConfidence level used in power calculation and final report
cooldown_start_time integerThe beginning of the pre measurement cooldown period. This period ends when the study period starts.
creative_test_config JSON object(Optional) Configuration for launching a 2-5 cell creative test. Specify either daily_budget or lifetime_budget_percentage to set the budget allocation for the study across the cells' ads. Study "type" field must be defined as SPLIT_TEST_V2 when creative_test_config is included in the request.
description stringA brief description about the purpose of the study.
end_time integerThe time when the study period ends.
name stringThe name of the study.
objectives list<Object>A vector of objects describing the objectives assigned to this study --- id numeric string or integer is_primary boolean name string type enum {SALES, NONSALES, MAE, TELCO, FTL, MAI, PARTNER, BRANDLIFT, BRAND, MPC_CONVERSION, CONVERSIONS} offsite_datasets list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters adspixels list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters customconversions list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters applications list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters offline_conversion_data_sets list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters product_sets list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters product_catalogs list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters Show child parameters
observation_end_time integerThe end of the observation period for this study, this period starts when the study period ends.
start_time integerThe time when the study period starts.
type enum {LIFT, SPLIT_TEST, CONTINUOUS_LIFT_CONFIG, GEO_LIFT, BACKEND_AB_TESTING, CREATIVE_SPEND_ENFORCEMENT, PORTFOLIO_OPTIMIZER, VERSION_CONTROL}The type of ad study, either SPLIT_TEST or LIFT.
viewers list<int>The list of people who this study has been shared with.

Return Type

This endpoint supports read-after-write and will read the node represented by id in the return type.

Struct  {
id: numeric string,
cell_ids:  List  [numeric string],
objective_ids:  List  [numeric string],
}

Error Codes

Error CodeDescription
100Invalid parameter
200Permissions error

/{business_id}/ad_studies

You can make a POST request to ad_studies edge from the following paths:

When posting to this edge, an AdStudy will be created.

Parameters

ParameterDescription
cells list<Object>Describes the cells in the study. required --- description string id int64 name string creation_template enum {AUTOMATIC_PLACEMENTS, BRAND_AWARENESS, FACEBOOK, FACEBOOK_AUDIENCE_NETWORK, FACEBOOK_INSTAGRAM, FACEBOOK_NEWS_FEED, FACEBOOK_NEWS_FEED_IN_STREAM_VIDEO, IN_STREAM_VIDEO, INSTAGRAM, MOBILE_OPTIMIZED_VIDEO, PAGE_POST_ENGAGEMENT, REACH, TV_COMMERCIAL, TV_FACEBOOK, VIDEO_VIEW_OPTIMIZATION, LOW_FREQUENCY, MEDIUM_FREQUENCY, HIGH_FREQUENCY} adaccounts list<int64> ads list<numeric string or integer> adsets list<numeric string or integer> campaigns list<numeric string or integer> control_percentage float with at most two digits after decimal point treatment_percentage float with at most two digits after decimal point Show child parameters
client_business numeric string or integerBusiness associated with the study.
confidence_level floatConfidence level used in power calculations and final study report.
cooldown_start_time integerStart of the pre-measurement cool-down period. This period ends when the study period starts.
creative_test_config JSON object(Optional) Configuration for launching a 2-5 cell creative test. Specify either daily_budget or lifetime_budget_percentage to set the budget allocation for the study across the cells' ads. The study's "type" field must also be defined as SPLIT_TEST_V2 when creative_test_config is included in the request.
description stringThe purpose of the study.
end_time integerTime when the study period ends. required
name stringName of the study. required
objectives list<Object>A vector of objects describing the objectives assigned to this study. --- id numeric string or integer is_primary boolean name string type enum {SALES, NONSALES, MAE, TELCO, FTL, MAI, PARTNER, BRANDLIFT, BRAND, MPC_CONVERSION, CONVERSIONS} offsite_datasets list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters adspixels list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters customconversions list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters applications list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters offline_conversion_data_sets list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters product_sets list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters product_catalogs list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters Show child parameters
observation_end_time integerThe end of the observation period for this study. This period starts when the study period ends.
start_time integerThe time when the study period starts. required
type enum {LIFT, SPLIT_TEST, CONTINUOUS_LIFT_CONFIG, GEO_LIFT, BACKEND_AB_TESTING, CREATIVE_SPEND_ENFORCEMENT, PORTFOLIO_OPTIMIZER, VERSION_CONTROL}The type of ad study, such as SPLIT_TEST or LIFT.
viewers list<int>This study is shared with these people.

Return Type

This endpoint supports read-after-write and will read the node represented by id in the return type.

Struct  {
id: numeric string,
}

Error Codes

Error CodeDescription
100Invalid parameter
200Permissions error

Updating

To update study fields:

Select language

cURL


curl \
-F 'name="new name"' \
-F 'end_time=1437004800' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<API_VERSION>/<AD_STUDY_ID>

Add a cell an existing study and change treatment_percentage of all the cells:

Select language

cURL


curl \
-F 'cells=[{id:<CELL_ID>,treatment_percentage:50},{id:<CELL_ID>,treatment_percentage:10},{name:"Group C",treatment_percentage:20,adsets:[<AD_SET_ID>]}]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<API_VERSION>/<AD_STUDY_ID>

Limitations

To update treatment_percentage for a cell, do it at the study level along with other cells. You also make updates to a study to add additional cells to it. You must provide the percentage of all existing and new cells in the study update since they are correlated.

Once the study runs, you cannot update start_time, treatment_percentage for cells. You cannot remove associated objects such as adsets, adaccounts, campaigns. However, you can update end_time to the future time if the study is not yet ended and add new associated objects to the cells if needed.

/{ad_study_id}

You can update an AdStudy by making a POST request to /{ad_study_id}.

Parameters

ParameterDescription
cells list<Object>A shape to describe the cells of the study --- description string id int64 name string creation_template enum {AUTOMATIC_PLACEMENTS, BRAND_AWARENESS, FACEBOOK, FACEBOOK_AUDIENCE_NETWORK, FACEBOOK_INSTAGRAM, FACEBOOK_NEWS_FEED, FACEBOOK_NEWS_FEED_IN_STREAM_VIDEO, IN_STREAM_VIDEO, INSTAGRAM, MOBILE_OPTIMIZED_VIDEO, PAGE_POST_ENGAGEMENT, REACH, TV_COMMERCIAL, TV_FACEBOOK, VIDEO_VIEW_OPTIMIZATION, LOW_FREQUENCY, MEDIUM_FREQUENCY, HIGH_FREQUENCY} adaccounts list<int64> ads list<numeric string or integer> adsets list<numeric string or integer> campaigns list<numeric string or integer> control_percentage float with at most two digits after decimal point treatment_percentage float with at most two digits after decimal point Show child parameters
client_business numeric string or integerBusiness associated with study
confidence_level floatConfidence level used in power calculation and final report
cooldown_start_time integerThe beginning of the pre measurement cooldown period. This period ends when the study period starts.
creative_test_config JSON object(Optional) Configuration for launching a 2-5 cell creative test. Specify either daily_budget or lifetime_budget_percentage to set the budget allocation for the study across the cells' ads. Must be used with study type SPLIT_TEST_V2
description stringA brief description about the purpose of the study.
end_time integerThe time when the study period ends.
name stringThe name of the study.
objectives list<Object>A vector of objects describing the objectives assigned to this study --- id numeric string or integer is_primary boolean name string type enum {SALES, NONSALES, MAE, TELCO, FTL, MAI, PARTNER, BRANDLIFT, BRAND, MPC_CONVERSION, CONVERSIONS} offsite_datasets list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters adspixels list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters customconversions list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters applications list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters offline_conversion_data_sets list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters product_sets list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters product_catalogs list<JSON or object-like arrays> --- id numeric string or integer required event_names list<string> Show child parameters Show child parameters
observation_end_time integerThe end of the observation period for this study, this period starts when the study period ends.
start_time integerThe time when the study period starts.
type enum {LIFT, SPLIT_TEST, CONTINUOUS_LIFT_CONFIG, GEO_LIFT, BACKEND_AB_TESTING, CREATIVE_SPEND_ENFORCEMENT, PORTFOLIO_OPTIMIZER, VERSION_CONTROL}A type of the study.
viewers list<int>The list of people who this study has been shared with.

Return Type

This endpoint supports read-after-write and will read the node to which you POSTed.

Struct  {
success: bool,
cell_ids:  List  [numeric string],
objective_ids:  List  [numeric string],
}

Error Codes

Error CodeDescription
100Invalid parameter
200Permissions error

Deleting

To delete a study:

curl -X DELETE
"https://graph.facebook.com/<API_VERSION>/<AD_STUDY_ID>"

You can't perform this operation on this endpoint.

Unofficial mirror for reference/search purposes. All content originates from developers.facebook.com — see the source link at the top of each page. Machine-readable indexes: llms.txt · llms-full.txt · About