Skip to main content
Meta Ads connects your own Meta (Facebook and Instagram) ad account to Appeeky. Once connected, you or your AI assistant can create campaigns, ad sets and ads, launch app-install ads, manage audiences and lead forms, and read spend and results. Separately, the Meta Ad Library endpoints let you see which ads any app or brand is running, with no Meta account needed.
Managing ads requires a signed-in Appeeky account on the Indie plan or higher and a connected Meta ad account. Ad Library search works with any API key.

How it works

  • Everything starts paused. Campaigns, ad sets, ads and drafts are created with status: PAUSED unless you pass ACTIVE, so nothing spends money until you turn it on.
  • Default ad account. Every endpoint accepts adAccountId (with or without the act_ prefix). Leave it out and Appeeky uses your default ad account, or the first one you selected.
  • Budgets are in minor units. dailyBudgetMinor: 5000 means 50.00 in your ad account’s currency. The one exception is boosting a post, which takes whole currency units.

Connect Meta Ads

In the dashboard: Settings → Data sources → Ads, then Connect Meta Ads. Sign in with Meta, then pick the ad accounts Appeeky should use.

Pick ad accounts

adAccountIds must contain at least one id. preferredDefaultId is optional.

Connection types

Your account is connected either with a direct Meta login or through a partner connection. GET /v1/connect/meta-ads/credentials/status returns provider: "direct" for a direct login. Most features work with both; a few depend on the connection type: A feature that your connection type doesn’t support returns HTTP 501.

Campaigns, ad sets and ads

List endpoints paginate with ?after=. Create and list endpoints also work under /v1/connect/meta-ads/ad-accounts/:adAccountId/... when you want to name the ad account in the path.

Create a campaign

Create an ad set

name, campaignId and targeting are required. dailyBudgetMinor must be greater than zero unless you also send the first ad’s copy (existingCreativeId, or headline + body + imageUrl/linkUrl). Optional: destinationType, promotedObject, startTime, endTime, bidStrategy, bidAmountMinor, pageId, instagramUserId.

Create an ad

name and adSetId are required. Pass creativeId to reuse a creative, or headline, body, imageUrl, linkUrl and callToAction to create the ad from copy.

One-call campaign

POST /v1/connect/meta-ads/standalone creates a campaign, ad set and ad together. Only name is required.

Update and pause

Campaigns and ad sets accept status, dailyBudgetMinor and lifetimeBudgetMinor. Ads accept status only. status is ACTIVE or PAUSED.

App-install ads

POST /v1/connect/meta-ads/app-install-drafts builds a complete app-install ad in one call: an app promotion campaign, an ad set, an install creative and the ad. The draft is paused by default.
Your app must be registered with Meta and advertisable from the ad account. With a direct login, GET /v1/connect/meta-ads/advertisable-applications lists the apps you can promote.

Creatives and images

Available with a direct Meta login. A creative needs name, linkUrl, message and headline. format is link (default, needs pageId) or app_install (can use instagramUserId instead of a Page). Optional: description, callToActionType (default LEARN_MORE), imageHash or pictureUrl, urlTags.

Audiences, targeting and lead forms

Available with a partner connection. Audiences. name and type are required. Types: customer_list, website (needs pixelId), lookalike (sourceAudienceId, country, ratio such as 0.01 for 1%) and meta_engagement (engagementSource of page, instagram or video, plus sourceId and retentionDays). For a customer list, send users as an array of { "email": "...", "phone": "..." }. Instant forms. Send name, privacyPolicyUrl and optional questions such as [{ "type": "EMAIL" }, { "type": "FULL_NAME" }]. Then create a one-call campaign with goal: "lead_generation" and the form’s id as leadGenFormId.

Boost a post

POST /v1/connect/meta-ads/boost promotes an existing Facebook or Instagram post as an ad.
postId is required. goal defaults to traffic; budget.amount is in whole currency units (40 = 40.00) and budget.type defaults to daily.

Insights

GET /v1/connect/meta-ads/insights returns spend, impressions, reach, clicks, CTR, CPC, CPM, actions and cost per action.

Meta Ad Library

Look up public ads that any advertiser runs on Facebook, Instagram, Messenger, Audience Network and Threads. No Meta connection needed. Each ad includes the library id, Page name, creative text, snapshot and preview URLs, delivery dates and platforms. App ad intelligence. GET /v1/apps/:id/ad-intelligence takes an App Store id or Google Play package (?platform=apple or google) and finds the advertiser’s Page for you. Use ?adCountries= to choose where ads ran. The response adds a summary: total and active ads, Pages, platform counts, first and latest seen dates and sample ad texts. Pass pageIds if you already know the Page.

Launch Tests

To test demand for an app idea, create a paused Meta campaign for a Launch Test (Launch Tests in the dashboard) with POST /v1/validation-experiments/:id/meta-ad-draft. It builds the campaign, ad set, link creative and ad, and points the ad to the hosted Launch Test page unless you pass landingUrl. pageId and dailyBudgetMinor are required.

MCP tools


Credits

Requests made from the Appeeky dashboard don’t use API credits. Ad spend is billed by Meta to your ad account.

Common errors