{"id":18370,"library":"facebook-nodejs-business-sdk","title":"Facebook Business SDK for Node.js","description":"The Facebook Business SDK for Node.js (v24.0.1) is the official SDK from Meta for interacting with the Facebook Marketing API, Pages API, Business Manager API, Instagram API, and other Facebook APIs. Released monthly in sync with API version updates, it supports both server-side (Node.js) and client-side (browser) usage via UMD/AMD/CommonJS modules. Key differentiators: bundles multiple Facebook APIs into one SDK, includes request-level retry logic, and provides TypeScript definitions. Compared to raw HTTP requests or third-party wrappers, it handles authentication, rate limiting, and pagination automatically. Requires a Facebook App ID and access token; deprecated features are communicated via version bumps.","status":"active","version":"24.0.1","language":"javascript","source_language":"en","source_url":"git://github.com/facebook/facebook-nodejs-business-sdk","tags":["javascript","facebook","meta","ads","sdk","api","es6","es2015"],"install":[{"cmd":"npm install facebook-nodejs-business-sdk","lang":"bash","label":"npm"},{"cmd":"yarn add facebook-nodejs-business-sdk","lang":"bash","label":"yarn"},{"cmd":"pnpm add facebook-nodejs-business-sdk","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core HTTP client for making API requests to Graph API endpoints.","package":"fb","optional":false},{"reason":"Alternative HTTP client used internally for request handling.","package":"axios","optional":true}],"imports":[{"note":"Default export provides the API client class. CJS require works but TypeScript prefers ESM imports.","wrong":"const FacebookAdsApi = require('facebook-nodejs-business-sdk')","symbol":"facebook-nodejs-business-sdk","correct":"import FacebookAdsApi from 'facebook-nodejs-business-sdk'"},{"note":"Named exports for each API object (AdAccount, AdSet, Campaign, etc.) are available since v5+.","wrong":"const AdAccount = require('facebook-nodejs-business-sdk').AdAccount","symbol":"AdAccount","correct":"import { AdAccount } from 'facebook-nodejs-business-sdk'"},{"note":"init() is a static factory method; constructing directly is deprecated since v16 and will break.","wrong":"new FacebookAdsApi(accessToken, appSecret)","symbol":"FacebookAdsApi.init","correct":"FacebookAdsApi.init(accessToken, appSecret)"},{"note":"AccessToken is a named export, not default. Use destructured import.","wrong":"import AccessToken from 'facebook-nodejs-business-sdk'","symbol":"AccessToken","correct":"import { AccessToken } from 'facebook-nodejs-business-sdk'"}],"quickstart":{"code":"import FacebookAdsApi, { AdAccount } from 'facebook-nodejs-business-sdk';\n\nconst accessToken = process.env.FACEBOOK_ACCESS_TOKEN ?? '';\nconst appSecret = process.env.FACEBOOK_APP_SECRET ?? '';\nconst adAccountId = 'act_<AD_ACCOUNT_ID>';\n\nFacebookAdsApi.init(accessToken, appSecret);\n\nconst account = new AdAccount(adAccountId);\n\naccount.getAdSets(['name', 'status', 'daily_budget'])\n  .then(adsets => {\n    adsets.forEach(adset => {\n      console.log(adset.name, adset.status, adset.daily_budget);\n    });\n  })\n  .catch(err => console.error(err));","lang":"typescript","description":"Initialize the SDK, create an AdAccount object, and fetch ad sets with specific fields."},"warnings":[{"fix":"Migrate to Advantage+ setup using the streamlined Automation Unification. Use 'adv campaign' parameter instead.","message":"Advantage+ Shopping Campaigns (ASC) and Advantage+ App Campaigns (AAC) cannot be created or updated via Marketing API starting v25.0, extending to all versions by May 19, 2026.","severity":"breaking","affected_versions":">=25.0"},{"fix":"Replace with new metrics as per Facebook Ads Insights migration guide.","message":"Legacy metrics (Page Reach, Impressions, 3-second Viewers) are planned for deprecation in June 2026.","severity":"deprecated","affected_versions":">=23.0"},{"fix":"Set 'dynamic_media' parameter to false in ad creative when creating ads.","message":"Dynamic Media is enabled by default for Advantage+ Catalog ads starting v24.0. Must explicitly opt out if static media is required.","severity":"breaking","affected_versions":">=24.0"},{"fix":"Review weekly spend limits; adjust campaign budget optimization settings to keep daily budget within bounds.","message":"Daily budget flexibility increased from 25% to 75% starting v24.0. Campaigns may spend more on high-opportunity days.","severity":"breaking","affected_versions":">=24.0"},{"fix":"Remove them; they have no effect.","message":"Deprecated 'use_jpg_2000' and 'use_wii' parameters as of v21.0.","severity":"deprecated","affected_versions":">=21.0"},{"fix":"Always call FacebookAdsApi.init(accessToken, appSecret) as the first step.","message":"When using 'FacebookAdsApi.init()', you must call it before creating any API objects. Forgetting to call init() results in silent failures.","severity":"gotcha","affected_versions":">=16.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Ensure you call FacebookAdsApi.init(accessToken, appSecret) with valid strings.","cause":"FacebookAdsApi.init() not called, or access token not passed correctly.","error":"Error: Cannot read properties of undefined (reading 'access_token')"},{"fix":"Use FacebookAdsApi.init(accessToken, appSecret) instead of new.","cause":"Using 'new FacebookAdsApi()' instead of the static factory method init().","error":"TypeError: FacebookAdsApi is not a constructor"},{"fix":"Check that all required fields are included and are correct per the Marketing API documentation for your SDK version.","cause":"Missing required fields in API call, or using invalid parameters for current API version.","error":"Error: (#100) Invalid parameter"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}