Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Meta Ads

Scalekit connector
Open markdown

The Meta Ads connector lets your AI agent act in each user's Meta Ads account. Each user signs in to Meta Ads once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 148 tools.

Tools
148
What they doRead · write · destructive
81 · 47 · 2081 read47 write20 destructive
Users sign in with
OAuth app
Your own Meta Ads app

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Meta Ads connection

    In AgentKit > Connections, create a Meta Ads connection and copy its redirect URI. The name you give it is the connection_name your code passes. See Configure connections.

  4. Register an OAuth app

    Meta Ads connections use your own OAuth app. Register one with Meta Ads and add the redirect URI you copied.

    Then enter the app's Client ID and Client Secret on the Meta Ads connection.

    Console steps with screenshots

    Create a Meta app with Facebook Login enabled so Scalekit can authorize access to your Meta Ads accounts on behalf of your users. You’ll register the Scalekit redirect URI in the app, then add the app’s ID and secret to your Scalekit connection.

    1. Create or open a Meta app

      • Go to the Meta for Developers dashboard.

      • Select an existing app or click Create App and choose the Business app type, since Marketing API access requires a business app.

        Meta app dashboard showing app ID, app mode, and available products

    2. Add the Marketing API and Facebook Login products

      • From the app’s Add Product page, add Marketing API so the app can call ad account endpoints.

      • Add Facebook Login as well, since Scalekit uses it to run the OAuth authorization flow.

        App switcher dropdown for selecting or creating a Meta app

    3. Copy the redirect URI from Scalekit

      • In the Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find Meta Ads and click Create.

      • Click Use your own credentials and copy the redirect URI. It looks like https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.

    4. Add the redirect URI to Facebook Login settings

      • In your Meta app, go to Facebook Login > Settings.

      • Paste the redirect URI you copied into Valid OAuth Redirect URIs and save changes.

        Facebook Login settings showing the Valid OAuth Redirect URIs list

    5. Copy your App ID and App secret

      • Go to App settings > Basic.

      • Copy the App ID and click Show to reveal and copy the App secret.

        App settings Basic page showing App ID and App secret fields

    6. Add credentials in Scalekit

      • Return to the connection you created in Scalekit and enter:

        • Client ID — your Meta app’s App ID
        • Client Secret — your Meta app’s App secret
      • Click Save.

  5. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'metaads'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Meta Ads:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'metaads_account_insights_get',
    toolInput: { ad_account_id: 'YOUR_AD_ACCOUNT_ID' },
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • metaads_account_insights_getRetrieve advertising performance insights for an ad account, synchronously aggregated at the account, campaign, ad set, or ad level (level controls the grain even though the call is made on the account edge).Read-only

    Get Account Insights

    Retrieve advertising performance insights for an ad account, synchronously aggregated at the account, campaign, ad set, or ad level (level controls the grain even though the call is made on the account edge). Returns a data array of insight rows for the requested fields and breakdowns, plus paging.cursors for pagination. Use this for smaller or moderate reporting pulls; for large, high-cardinality, or long-date-range requests that risk timing out or being truncated, use metaads_account_insights_create_report_run instead and poll the async job. Subject to a dedicated insights rate limit reported via the x-fb-ads-insights-throttle response header (app_id_util_pct, acc_id_util_pct, ads_api_access_tier) -- back off as utilization nears 100%.

    Inputs

    ad_account_idstringrequired
    Meta Ads ad account ID to fetch insights for, without the leading 'act_' prefix (the tool adds it automatically). Example: 123456789012345.
    action_attribution_windowsstring
    Comma-separated attribution windows to apply to action-based metrics, e.g. "1d_view,7d_click". If omitted, Meta uses the ad account's default attribution setting (or use_account_attribution_setting).
    action_breakdownsstring
    Comma-separated dimensions used to segment the 'actions' and other action-based metrics, e.g. "action_type" or "action_type,action_device". Defaults to action_type if omitted.default action_type
    afterstring
    Pagination cursor from a previous response's paging.cursors.after, used to fetch the next page of results.
    beforestring
    Pagination cursor from a previous response's paging.cursors.before, used to fetch the previous page of results.
    breakdownsstring
    Comma-separated dimensions to segment results by, e.g. "age,gender" or "publisher_platform". High-cardinality or incompatible breakdown combinations can trigger a data-per-call limit (error code 100) -- combine fewer breakdowns or narrow the date range if that happens.
    date_presetstring
    Predefined date range for the metrics window, e.g. last_30d or maximum (Meta's cap of 37 months back). Mutually exclusive with time_range and time_ranges -- provide only one of the three.one of todayyesterdaythis_monthlast_monththis_quartermaximumdata_maximumlast_3dlast_7dlast_14dlast_28dlast_30dlast_90dlast_week_mon_sunlast_week_sun_satlast_quarterlast_yearthis_week_mon_todaythis_week_sun_todaythis_year
    fieldsstring
    Comma-separated list of insight metrics to return, e.g. "impressions,clicks,spend,ctr,actions,reach". If omitted, Meta returns a small default metric set (impressions and spend).
    filteringstring
    JSON array, as a string, of filter objects in {field, operator, value} form to restrict which insight rows are returned, e.g. [{"field":"campaign.name","operator":"CONTAIN","value":"Sale"}].
    levelstring
    Aggregation grain for the returned rows: 'account' rolls everything into one row per account, 'campaign'/'adset'/'ad' return one row per entity at that level. If a breakdown is specified, Meta may automatically raise this to the breakdown's natural level.one of accountcampaignadsetaddefault account
    limitinteger
    Maximum number of insight rows to return in this page of results. Use the after cursor from a previous response to fetch subsequent pages.
    sortstring
    Field and direction to sort insight rows by, e.g. "impressions_descending" or "spend_ascending".
    time_incrementstring
    Splits the requested time range into smaller windows. Use a number of days (as a string, e.g. "1" for daily rows), "all_days" for one row per day across the whole range, or "monthly" for one row per month. If omitted, Meta returns one aggregated row for the whole range.
    time_rangeobject
    Custom single date range {since, until} (each formatted "YYYY-MM-DD") for the metrics window. Example: {"since": "2026-08-01", "until": "2026-08-31"}. Cannot start more than 37 months in the past. Mutually exclusive with date_preset and time_ranges.
    time_rangesstring
    JSON array, as a string, of custom {since, until} date ranges (each formatted "YYYY-MM-DD") to compare in a single call, e.g. [{"since": "2026-07-01", "until": "2026-07-31"}, {"since": "2026-08-01", "until": "2026-08-31"}]. Overrides time_range and date_preset when provided.
    use_account_attribution_settingboolean
    When true, ignore action_attribution_windows and use the ad account's own configured attribution setting instead. Defaults to false.default false
  • metaads_ad_getRetrieve a single Meta Ads ad by ID with the exact fields you request (e.g.Read-only

    Get Ad

    Retrieve a single Meta Ads ad by ID with the exact fields you request (e.g. status, creative, adset_id, campaign_id, review feedback). Returns one Ad object containing only the fields listed in fields; if fields is omitted, Meta returns just id. Use this to check one ad's delivery state, creative, or rejection reason by ID; use List Ads to browse or filter ads across an account instead. effective_status carries far more values than configured_status (e.g. PENDING_REVIEW, DISAPPROVED, PREAPPROVED, WITH_ISSUES) -- surface it separately when explaining why an ad isn't delivering, since configured_status alone (ACTIVE/PAUSED/DELETED/ARCHIVED) won't show a review or issue state.

    Inputs

    ad_idstringrequired
    Meta Ads ad ID to retrieve. Find it in Meta Ads Manager, or from the id field returned by List Ads or Create Ad. Example: 120210000000002.
    fieldsstring
    Comma-separated list of Ad fields to return, e.g. "name,status,effective_status,configured_status,adset_id,campaign_id,creative,bid_type,bid_info,ad_review_feedback,issues_info,tracking_specs,conversion_specs,preview_shareable_link". If omitted, Meta returns only the id field.
  • metaads_ad_get_insightsFetch performance metrics — impressions, clicks, spend, actions, and more — for a single ad, synchronously.Read-only

    Get Ad Insights

    Fetch performance metrics — impressions, clicks, spend, actions, and more — for a single ad, synchronously. Returns a data array of insight rows for the requested fields plus a paging.cursors object for pagination. Use this for smaller, ad-hoc reporting pulls on one ad; for broad, high-cardinality, or account-wide pulls, use an async insights report job instead of this synchronous call. Requires ads_read (or ads_management) permission; subject to a dedicated insights rate-limit reported via the x-fb-ads-insights-throttle response header.

    Inputs

    ad_idstringrequired
    ID of the ad to fetch insights for. Example: 23851234567890123.
    action_attribution_windowsstring
    Comma-separated attribution windows to apply to action-based metrics, e.g. "1d_view,7d_click". If omitted, Meta uses the ad account's default attribution setting.
    afterstring
    Pagination cursor from a previous response's paging.cursors.after, used to fetch the next page of results.
    beforestring
    Pagination cursor from a previous response's paging.cursors.before, used to fetch the previous page of results.
    breakdownsstring
    Comma-separated dimensions to segment results by, e.g. "age,gender" or "publisher_platform". High-cardinality breakdowns can trigger a data-per-call limit (error code 100) — combine fewer breakdowns or narrow the date range if that happens.
    date_presetstring
    Predefined date range for the metrics window, e.g. last_7d. Mutually exclusive with time_range — provide one or the other, not both.one of todayyesterdaythis_monthlast_monththis_quartermaximumdata_maximumlast_3dlast_7dlast_14dlast_28dlast_30dlast_90dlast_week_mon_sunlast_week_sun_satlast_quarterlast_yearthis_week_mon_todaythis_week_sun_todaythis_year
    fieldsstring
    Comma-separated list of insight metrics to return, e.g. "impressions,clicks,spend,ctr,actions,cpc". If omitted, Meta returns a small default metric set.
    filteringstring
    JSON array, as a string, of filter objects in {field, operator, value} form to restrict which insight rows are returned, e.g. [{"field":"action_type","operator":"IN","value":["link_click"]}].
    limitinteger
    Maximum number of insight rows to return in this page of results. Use the after cursor from a previous response to fetch subsequent pages.
    sortstring
    Field and direction to sort insight rows by, e.g. "impressions_descending" or "spend_ascending".
    time_incrementstring
    Splits the requested time range into smaller windows. Use a number of days (as a string, e.g. "1" for daily breakdown), "all_days" for one row per day across the whole range, or "monthly" for one row per month. If omitted, Meta returns one aggregated row for the whole range.
    time_rangeobject
    Custom date range {since, until} (each formatted "YYYY-MM-DD") for the metrics window. Example: {"since": "2026-08-01", "until": "2026-08-31"}. Mutually exclusive with date_preset.
  • metaads_ad_get_previewsGenerate a preview iframe of how an existing Meta Ads ad will render in a specific placement/format.Read-only

    Get Ad Previews

    Generate a preview iframe of how an existing Meta Ads ad will render in a specific placement/format. Returns a data array containing an AdPreview object with a body field: iframe HTML valid for only 24 hours. Use this to preview an ad that already exists in a given ad_format; use the account-level Generate Previews endpoint instead to preview a creative before an ad has been created. Requires ads_read (or ads_management) permission. width/height only resize the returned iframe's container, not the ad itself, and some creative/format combinations are unsupported and will error.

    Inputs

    ad_formatstringrequired
    The placement/format to render the preview for, e.g. DESKTOP_FEED_STANDARD, MOBILE_FEED_STANDARD, INSTAGRAM_STANDARD, INSTAGRAM_STORY, or RIGHT_COLUMN_STANDARD. Not every format is valid for every ad -- an incompatible combination returns an error.one of DESKTOP_FEED_STANDARDFACEBOOK_STORY_MOBILEINSTANT_ARTICLE_STANDARDINSTREAM_VIDEO_DESKTOPINSTREAM_VIDEO_MOBILEMARKETPLACE_MOBILEMOBILE_FEED_BASICMOBILE_FEED_STANDARDRIGHT_COLUMN_STANDARDSUGGESTED_VIDEO_DESKTOPSUGGESTED_VIDEO_MOBILEWATCH_FEED_MOBILEFACEBOOK_REELS_BANNERFACEBOOK_REELS_BANNER_DESKTOPFACEBOOK_REELS_MOBILEFACEBOOK_REELS_POSTLOOPFACEBOOK_REELS_STICKERFACEBOOK_STORY_STICKER_MOBILEWATCH_FEED_HOMEINSTAGRAM_STANDARDINSTAGRAM_STORYINSTAGRAM_EXPLORE_CONTEXTUALINSTAGRAM_EXPLORE_IMMERSIVEINSTAGRAM_EXPLORE_GRID_HOMEINSTAGRAM_FEED_WEBINSTAGRAM_FEED_WEB_M_SITEINSTAGRAM_PROFILE_FEEDINSTAGRAM_REELSINSTAGRAM_REELS_OVERLAYINSTAGRAM_SEARCH_CHAININSTAGRAM_SEARCH_GRIDINSTAGRAM_STORY_WEBINSTAGRAM_STORY_WEB_M_SITEMESSENGER_MOBILE_INBOX_MEDIAMESSENGER_MOBILE_STORY_MEDIAAUDIENCE_NETWORK_INSTREAM_VIDEOAUDIENCE_NETWORK_INSTREAM_VIDEO_MOBILEAUDIENCE_NETWORK_OUTSTREAM_VIDEOAUDIENCE_NETWORK_REWARDED_VIDEOMOBILE_BANNERMOBILE_FULLWIDTHMOBILE_INTERSTITIALMOBILE_MEDIUM_RECTANGLEMOBILE_NATIVE
    ad_idstringrequired
    Meta Ads ad ID to preview. Find it in Meta Ads Manager, or from the id field returned by List Ads or Create Ad. Example: 23851234567890123.
    dynamic_asset_labelstring
    Label identifying which asset variation to render, for a dynamic creative ad with multiple asset options. Leave blank to preview the default combination.
    dynamic_creative_specobject
    JSON object overriding which specific asset combination (images, titles, bodies, etc.) of a dynamic creative ad to render in the preview. Leave blank to preview the ad's default combination.
    dynamic_customizationobject
    JSON object specifying customization (e.g. country or locale) for previewing a multi-language or geographically customized dynamic ad. Leave blank to preview the default customization.
    end_datestring
    Trip end date/time (ISO 8601), used only when previewing a trip or flight ad format that requires one. Leave blank otherwise.
    heightinteger
    Custom iframe container height in pixels. Only affects the returned iframe's container size, not the actual ad's dimensions. Meta recommends at least 280.
    place_page_idstring
    Page ID of the specific local business Page to render in a dynamic local ad's preview. Leave blank for non-local ads.
    postobject
    JSON object describing a Page post to preview instead of the ad's saved creative, e.g. {"link": "...", "message": "...", "picture": "...", "name": "...", "caption": "...", "description": "...", "call_to_action": {...}}. Leave blank to preview the ad's actual saved creative.
    product_item_idsarray
    Product item IDs to render in the preview, for dynamic/catalog ads whose creative pulls from a product catalog. Leave blank for non-catalog ads.
    start_datestring
    Trip start date/time (ISO 8601), used only when previewing a trip or flight ad format that requires one. Leave blank otherwise.
    widthinteger
    Custom iframe container width in pixels. Only affects the returned iframe's container size, not the actual ad's dimensions. Meta recommends at least 280.
  • metaads_ad_listList ads under a Meta Ads ad account, optionally filtered by effective status or other conditions, with field selection.Read-only

    List Ads

    List ads under a Meta Ads ad account, optionally filtered by effective status or other conditions, with field selection. Returns an array of ad objects with the requested fields plus cursor-based pagination info (paging.cursors, next/previous). Use this to browse or audit ads in bulk, or to find the ad_id needed by Get Ad; pass an effective_status or filtering condition to scope large accounts. The same /ads edge also exists nested under a specific campaign or ad set (/{campaign_id}/ads, /{ad_set_id}/ads) -- to scope to one of those, filter with a campaign.id or adset.id condition here instead of a separate tool. Regular accounts cap at 5,000 non-deleted ads (50,000 for Bulk accounts).

    Inputs

    ad_account_idstringrequired
    Meta Ads ad account ID to list ads for, without the leading 'act_' prefix (the tool adds it automatically). Find it in Meta Ads Manager account settings or via the /me/adaccounts endpoint. Example: 123456789012345.
    afterstring
    Pagination cursor from a previous response's paging.cursors.after (or paging.next), used to fetch the next page of results.
    beforestring
    Pagination cursor from a previous response's paging.cursors.before (or paging.previous), used to fetch the previous page of results.
    date_presetstring
    Predefined date range used to aggregate any requested insights-style metrics on the returned ads (does not filter which ads are returned, only the metric window). One of: today, yesterday, this_month, last_month, this_quarter, maximum, data_maximum, last_3d, last_7d, last_14d, last_28d, last_30d, last_90d, last_week_mon_sun, last_week_sun_sat, last_quarter, last_year, this_week_mon_today, this_week_sun_today, this_year. Mutually exclusive with time_range.one of todayyesterdaythis_monthlast_monththis_quartermaximumdata_maximumlast_3dlast_7dlast_14dlast_28dlast_30dlast_90dlast_week_mon_sunlast_week_sun_satlast_quarterlast_yearthis_week_mon_todaythis_week_sun_todaythis_year
    effective_statusstring
    JSON array, as a string, of effective_status values to filter by, e.g. ["ACTIVE","PAUSED"]. Valid values: ACTIVE, PAUSED, DELETED, PENDING_REVIEW, DISAPPROVED, PREAPPROVED, PENDING_BILLING_INFO, CAMPAIGN_PAUSED, ARCHIVED, ADSET_PAUSED, IN_PROCESS, WITH_ISSUES. If omitted, Meta excludes DELETED and ARCHIVED ads by default.
    fieldsstring
    Comma-separated list of Ad fields to return, e.g. "id,name,status,effective_status,adset_id,campaign_id,creative,bid_type,tracking_specs". If omitted, Meta returns a small default field set (typically id and name).
    filteringstring
    JSON array, as a string, of filter conditions in the form {"field": "...", "operator": "...", "value": ...}, e.g. [{"field": "adset.id", "operator": "EQUAL", "value": "120210000000001"}] or [{"field": "campaign.id", "operator": "EQUAL", "value": "120210000000000"}]. Use this to scope results to a specific ad set or campaign. Leave blank to list all ads in the account.
    limitinteger
    Maximum number of ads to return in this page of results. Meta applies its own default and maximum when omitted; use the after cursor from a previous response to fetch subsequent pages.
    time_rangeobject
    Custom date range {since, until} (each formatted "YYYY-MM-DD") used to aggregate any requested insights-style metrics on the returned ads. Example: {"since": "2026-08-01", "until": "2026-08-31"}. Mutually exclusive with date_preset.
  • metaads_ad_list_adcreativesList the ad creative(s) attached to a specific Meta Ads ad.Read-only

    List Ad's Creatives

    List the ad creative(s) attached to a specific Meta Ads ad. Returns an array of AdCreative objects with the requested fields plus cursor-based pagination info (paging.cursors, next/previous). Most ads have exactly one creative, but dynamic/flexible creative ads can return several. Use this to inspect the creative(s) an ad actually uses without a separate lookup once you have its ad_id; use List Ad Creatives to browse all creatives in an ad account instead, or Get Ad Creative when you already have a creative ID. Requires ads_read permission.

    Inputs

    ad_idstringrequired
    Meta Ads ad ID to list creatives for. Find it in Meta Ads Manager, or from the id field returned by List Ads or Create Ad. Example: 23851234567890123.
    afterstring
    Pagination cursor from a previous response's paging.cursors.after (or paging.next), used to fetch the next page of results.
    beforestring
    Pagination cursor from a previous response's paging.cursors.before (or paging.previous), used to fetch the previous page of results.
    fieldsstring
    Comma-separated list of AdCreative fields to return, e.g. "id,name,object_story_spec,image_url,body,title". If omitted, Meta returns a small default field set (typically id and name).
    limitinteger
    Maximum number of creatives to return in this page of results. Meta applies its own default and maximum when omitted; use the after cursor from a previous response to fetch subsequent pages.
  • metaads_ad_list_leadsList the leads generated by a specific ad, as an alternative to listing leads by form.Read-only

    List Leads By Ad

    List the leads generated by a specific ad, as an alternative to listing leads by form. Returns an array of lead objects (id, created_time, ad_id, form_id, field_data, and any other requested fields) plus cursor-based pagination info. Use this when you have an ad_id but not the form_id -- a lead form can be reused across multiple ads, so this returns only the leads tied to this one ad; go to the form's own leads edge instead if you need every lead across all ads using that form. Requires the caller to be a Page Admin (or granted access by one) for the Page behind this ad, plus the leads_retrieval, ads_management, pages_show_list, and pages_read_engagement permissions.

    Inputs

    ad_idstringrequired
    Meta Ads ad ID whose leads to list. Find it in Meta Ads Manager, or from the id field returned by metaads_ad_list. Example: 120210000000002.
    afterstring
    Pagination cursor from a previous response's paging.cursors.after (or paging.next), used to fetch the next page of results.
    beforestring
    Pagination cursor from a previous response's paging.cursors.before (or paging.previous), used to fetch the previous page of results.
    fieldsstring
    Comma-separated list of fields to return per lead, e.g. "id,created_time,ad_id,ad_name,form_id,campaign_id,adset_id,field_data". If omitted, Meta returns a small default field set.
    filteringstring
    JSON array, as a string, of filter objects with field/operator/value, e.g. "[{\"field\":\"time_created\",\"operator\":\"GREATER_THAN\",\"value\":1717000000}]". operator is one of LESS_THAN, GREATER_THAN, GREATER_THAN_OR_EQUAL. Leave blank for no filter.
    limitinteger
    Maximum number of leads to return in this page of results. Meta applies its own default and maximum when omitted; use the after cursor from a previous response to fetch subsequent pages.
  • metaads_adaccount_getRetrieve details for a single ad account, such as status, currency, spend cap, balance, timezone, and business info.Read-only

    Get Ad Account

    Retrieve details for a single ad account, such as status, currency, spend cap, balance, timezone, and business info. Returns the fields you request for the account; account_status and disable_reason come back as numeric enums (e.g. account_status 1=ACTIVE, 2=DISABLED) worth mapping to a human-readable label in your own logic. Use this to check account health, currency, or billing state before running campaigns; you must pass fields explicitly — Meta returns almost nothing without it. Requires ads_management or ads_read on the account; some fields need extra permissions (funding_source_details needs the MANAGE task, spend-related fields need ADVERTISE).

    Inputs

    ad_account_idstringrequired
    Meta Ads ad account ID to retrieve, without the leading 'act_' prefix (the tool adds it automatically). Find it in Meta Ads Manager account settings or via the /me/adaccounts endpoint. Example: 123456789012345.
    fieldsstringrequired
    Comma-separated list of ad account fields to return, e.g. "id,name,account_status,currency,timezone_name,spend_cap,balance,amount_spent,disable_reason,business". Required — Meta returns essentially no fields on this endpoint if this is left blank.