REST API reference

Every REST route an organization API key can call — 393 operations, generated from the API's own controllers.

This page is generated from the API's own controllers, so it cannot fall behind what your client sees. CI fails if it does.

The Marketing OS REST API: the same routes the dashboard calls, reachable with an organization API key.

Create a key under Settings → API keys and send it as Authorization: Bearer mos_…. A key is confined to its organization (every path starts with /organizations/{orgId}) and, when it was created for one business, to that business. A read key can only call GET; anything else needs a write key.

Agents should prefer the MCP endpoint (POST /mcp): every tool there runs through the risk tiers, spend caps and approvals inbox. See https://marketing.keyescode.com/docs.

Getting started

  • Base URL: https://marketing-api.keyescode.com
  • OpenAPI 3.0 document: https://marketing-api.keyescode.com/openapi.json — import it into Postman or Insomnia, or feed it to a client generator.
  • Auth: Authorization: Bearer mos_… on every route below unless it says otherwise.
  • Path scope: {orgId} is your organization id and {businessId} one of its businesses (GET /organizations/{orgId}/businesses lists them); both are UUIDs and every route below that has them requires them. A key created for one business can only reach that business.
  • Errors: a JSON body with a message. A request that fails validation is a 400 whose body adds issues, one { path, message } per field.
  • Rate limits: per key. A 429 carries Retry-After in seconds.

Account checkup

GET /organizations/{orgId}/businesses/{businessId}/account-checkup

POST /organizations/{orgId}/businesses/{businessId}/account-checkup/claim

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
checkupIdstring (uuid)yes

Ad entities

GET /organizations/{orgId}/businesses/{businessId}/entities/campaigns

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/entities/adsets

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes
campaignMetaIdquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/entities/ads

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes
adSetMetaIdquerystringyes
campaignMetaIdquerystringyes

PATCH /organizations/{orgId}/businesses/{businessId}/entities/{level}/{metaId}/status

Needs a write key.

ParameterInTypeRequiredNotes
levelpathstringyes
metaIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
statusstringyesOne of ACTIVE, PAUSED.

Agency roll-up

GET /organizations/{orgId}/clients

ParameterInTypeRequiredNotes
windowDaysquerystringyes
includeDemoquerystringyes

GET /organizations/{orgId}/clients/export.csv

ParameterInTypeRequiredNotes
windowDaysquerystringyes
filterquerystringyes
qquerystringyes
includeDemoquerystringyes

Agents

GET /organizations/{orgId}/businesses/{businessId}/agent-scorecard

GET /organizations/{orgId}/businesses/{businessId}/agents

GET /organizations/{orgId}/businesses/{businessId}/agents/runs

GET /organizations/{orgId}/businesses/{businessId}/agents/runs/{runId}

ParameterInTypeRequiredNotes
runIdpathstringyes
eventsBeforequerystringyes
limitquerystringyes

POST /organizations/{orgId}/businesses/{businessId}/agents/{agentKey}/runs

Needs a write key.

ParameterInTypeRequiredNotes
agentKeypathstringyes

Request body (JSON):

FieldTypeRequiredNotes
briefstringyes1–4000 characters.
assetTypestringnoOne of blog_post, email, ad_copy, landing_page, social_post.
existingAssetIdstring (uuid)no

AI visibility

GET /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/ai-visibility/overview

ParameterInTypeRequiredNotes
daysquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/ai-visibility/results.csv

ParameterInTypeRequiredNotes
daysquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/ai-visibility/schedules

POST /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/ai-visibility/schedules

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
namestringyes1–120 characters.
place_idstringyes1–200 characters.
location_namestringnoAt most 200 characters.
keywordsstring[]yes1–20 items.
centersobject[]yes1–5 items.
centers[].labelstringyes1–80 characters.
centers[].latstringyesAt most 32 characters.
centers[].lngstringyesAt most 32 characters.
surfacesstring[]yes1–5 items.
grid_sizestringyesOne of 3, 5, 7, 9, 11, 13, 15, 17, 19, 21.
radiusnumberyes0.1–100.
measurementstringyesOne of mi, km.
frequencystringyesOne of daily, weekly, monthly.
hour_utcintegeryes0–23.
day_of_weekintegerno0–6.
day_of_monthintegerno1–28.
enabledbooleanno

PATCH /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/ai-visibility/schedules/{scheduleId}

Needs a write key.

ParameterInTypeRequiredNotes
scheduleIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
namestringno1–120 characters.
place_idstringno1–200 characters.
location_namestringnoAt most 200 characters.
keywordsstring[]no1–20 items.
centersobject[]no1–5 items.
centers[].labelstringyes1–80 characters.
centers[].latstringyesAt most 32 characters.
centers[].lngstringyesAt most 32 characters.
surfacesstring[]no1–5 items.
grid_sizestringnoOne of 3, 5, 7, 9, 11, 13, 15, 17, 19, 21.
radiusnumberno0.1–100.
measurementstringnoOne of mi, km.
frequencystringnoOne of daily, weekly, monthly.
hour_utcintegerno0–23.
day_of_weekintegerno0–6.
day_of_monthintegerno1–28.
enabledbooleanno

DELETE /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/ai-visibility/schedules/{scheduleId}

Needs a write key.

ParameterInTypeRequiredNotes
scheduleIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/ai-visibility/schedules/{scheduleId}/run

Needs a write key.

ParameterInTypeRequiredNotes
scheduleIdpathstringyes

API keys

GET /organizations/{orgId}/api-keys

POST /organizations/{orgId}/api-keys

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
namestringyes1–64 characters.
scopestringnoOne of read, write. Default "read".
expiresInDaysintegerno1–365.
businessIdstring (uuid) or nullno

DELETE /organizations/{orgId}/api-keys/{keyId}

Needs a write key.

ParameterInTypeRequiredNotes
keyIdpathstringyes

GET /api-keys/current

Approvals

GET /organizations/{orgId}/businesses/{businessId}/publish-target

PUT /organizations/{orgId}/businesses/{businessId}/publish-target

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
urlstring (uri)yesAt most 512 characters.
secretstringno8–128 characters.

POST /organizations/{orgId}/businesses/{businessId}/marketing-assets/{assetId}/publish

Needs a write key.

ParameterInTypeRequiredNotes
assetIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/external-actions

ParameterInTypeRequiredNotes
pendingquerystringyes

POST /organizations/{orgId}/businesses/{businessId}/external-actions/batch

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
idsstring (uuid)[]yes1–100 items.
decisionstringyesOne of approve, reject.
notestringnoAt most 500 characters.

POST /organizations/{orgId}/businesses/{businessId}/external-actions/plans/{planId}/approve

Needs a write key.

ParameterInTypeRequiredNotes
planIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/external-actions/plans/{planId}/reject

Needs a write key.

ParameterInTypeRequiredNotes
planIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
notestringnoAt most 500 characters.

GET /organizations/{orgId}/businesses/{businessId}/external-actions/{actionId}

ParameterInTypeRequiredNotes
actionIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/external-actions/{actionId}/approve

Needs a write key.

ParameterInTypeRequiredNotes
actionIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/external-actions/{actionId}/reject

Needs a write key.

ParameterInTypeRequiredNotes
actionIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
notestringnoAt most 500 characters.

GET /organizations/{orgId}/businesses/{businessId}/client-reviews

POST /organizations/{orgId}/businesses/{businessId}/external-actions/{actionId}/request-client-review

Needs a write key.

ParameterInTypeRequiredNotes
actionIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
messagestringnoAt most 1000 characters.

POST /organizations/{orgId}/businesses/{businessId}/social/posts/{postId}/request-client-review

Needs a write key.

ParameterInTypeRequiredNotes
postIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
messagestringnoAt most 1000 characters.

POST /organizations/{orgId}/businesses/{businessId}/external-actions/{actionId}/client-review

Needs a write key.

ParameterInTypeRequiredNotes
actionIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
decisionstringyesOne of approved, changes_requested.
notestringnoAt most 1000 characters.

POST /organizations/{orgId}/businesses/{businessId}/social/posts/{postId}/client-review

Needs a write key.

ParameterInTypeRequiredNotes
postIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
decisionstringyesOne of approved, changes_requested.
notestringnoAt most 1000 characters.

Assets

GET /organizations/{orgId}/businesses/{businessId}/assets

ParameterInTypeRequiredNotes
viewquerystringyes

POST /organizations/{orgId}/businesses/{businessId}/assets

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/assets/{assetId}

ParameterInTypeRequiredNotes
assetIdpathstringyes

PATCH /organizations/{orgId}/businesses/{businessId}/assets/{assetId}

Needs a write key.

ParameterInTypeRequiredNotes
assetIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
originalFilenamestringno1–200 characters.
folderIdstring (uuid) or nullno

DELETE /organizations/{orgId}/businesses/{businessId}/assets/{assetId}

Needs a write key.

ParameterInTypeRequiredNotes
assetIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/assets/move

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
assetIdsstring (uuid)[]yes1–200 items.
folderIdstring (uuid) or nullyes

POST /organizations/{orgId}/businesses/{businessId}/assets/{assetId}/save

Needs a write key.

ParameterInTypeRequiredNotes
assetIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/asset-folders

POST /organizations/{orgId}/businesses/{businessId}/asset-folders

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
namestringyes1–80 characters.
parentIdstring (uuid) or nullno

PATCH /organizations/{orgId}/businesses/{businessId}/asset-folders/{folderId}

Needs a write key.

ParameterInTypeRequiredNotes
folderIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
namestringno1–80 characters.
parentIdstring (uuid) or nullno

DELETE /organizations/{orgId}/businesses/{businessId}/asset-folders/{folderId}

Needs a write key.

ParameterInTypeRequiredNotes
folderIdpathstringyes

Audiences

GET /organizations/{orgId}/businesses/{businessId}/audiences

PUT /organizations/{orgId}/businesses/{businessId}/audiences/{segment}/{channel}

Needs a write key.

ParameterInTypeRequiredNotes
segmentpathstringyes
channelpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
enabledbooleanyes

Audit log

GET /organizations/{orgId}/audit-log.csv

ParameterInTypeRequiredNotes
fromquerystringno
toquerystringno

Benchmarks

GET /organizations/{orgId}/businesses/{businessId}/benchmarks/compare

PUT /organizations/{orgId}/benchmarks/contribution

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
contributeBenchmarksbooleanyes

Billing

GET /organizations/{orgId}/billing

GET /organizations/{orgId}/billing/plans

POST /organizations/{orgId}/billing/checkout

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
planstringyesOne of starter, pro, agency.
intervalstringnoOne of month, year. Default "month".
referralstringno1–200 characters.
promoCodestringno1–32 characters.

POST /organizations/{orgId}/billing/promo-code/validate

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
codestringyes1–32 characters.

GET /organizations/{orgId}/billing/invoices

PUT /organizations/{orgId}/billing/ai-spend-alert

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
thresholdUsdintegeryes0–1000000.

POST /organizations/{orgId}/billing/portal

Needs a write key.

Branding

GET /organizations/{orgId}/branding

PUT /organizations/{orgId}/branding

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
companyNamestring or nullno1–120 characters.
accentColorstring or nullno
accentForegroundColorstring or nullno
senderNamestring or nullno1–120 characters.
replyToEmailstring (email) or nullnoAt most 254 characters.
senderEmailstring (email) or nullnoAt most 254 characters.
footerTextstring or nullnoAt most 500 characters.
supportUrlstring (uri) or nullnoAt most 500 characters.

Needs a write key.

Needs a write key.

GET /organizations/{orgId}/branding/domains

POST /organizations/{orgId}/branding/domains

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
hostnamestringyes1–253 characters.

POST /organizations/{orgId}/branding/domains/{domainId}/verify

Needs a write key.

ParameterInTypeRequiredNotes
domainIdpathstringyes

DELETE /organizations/{orgId}/branding/domains/{domainId}

Needs a write key.

ParameterInTypeRequiredNotes
domainIdpathstringyes

Business brain

GET /organizations/{orgId}/businesses/{businessId}/brain/profile

PUT /organizations/{orgId}/businesses/{businessId}/brain/profile

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
brandstringnoAt most 20000 characters. Default "".
industrystringnoOne of ``, apparel_accessories, beauty_personal_care, food_beverage, home_garden, health_fitness, electronics, jewellery, pets, baby_kids, sports_outdoors, b2b_software, professional_services, home_services, health_practice, legal, financial_services, real_estate, education, travel_hospitality, automotive, nonprofit, other. Default "".
voicestringnoAt most 20000 characters. Default "".
audiencestringnoAt most 20000 characters. Default "".
offeringsstringnoAt most 20000 characters. Default "".
competitorsstringnoAt most 20000 characters. Default "".
notesstringnoAt most 20000 characters. Default "".
colorsobject[]noAt most 24 items. Default [].
colors[].namestringyes1–60 characters.
colors[].hexstringyes
brandingobjectnoDefault {}.
branding.logoFilesstringnoAt most 20000 characters. Default "".
branding.headingFontstringnoAt most 20000 characters. Default "".
branding.bodyFontstringnoAt most 20000 characters. Default "".
branding.buttonFontstringnoAt most 20000 characters. Default "".
branding.letterSpacingstringnoAt most 20000 characters. Default "".
branding.fontWeightsstringnoAt most 20000 characters. Default "".
branding.lineHeightstringnoAt most 20000 characters. Default "".
branding.iconSetstringnoOne of ``, heroicons, lucide, font_awesome, other. Default "".
branding.iconStylestringnoOne of ``, outline, filled, rounded. Default "".
branding.graphicElementsstringnoAt most 20000 characters. Default "".
seoobjectnoDefault {}.
seo.primaryKeywordsstringnoAt most 20000 characters. Default "".
seo.secondaryKeywordsstringnoAt most 20000 characters. Default "".
seo.negativeKeywordsstringnoAt most 20000 characters. Default "".
seo.competitorsstringnoAt most 20000 characters. Default "".
seo.locationsstringnoAt most 20000 characters. Default "".
seo.servicesstringnoAt most 20000 characters. Default "".
seo.faqQueriesstringnoAt most 20000 characters. Default "".
socialobjectnoDefault {}.
social.postingFrequencystringnoAt most 20000 characters. Default "".
social.hashtagRulesstringnoAt most 20000 characters. Default "".
social.emojiRulesstringnoAt most 20000 characters. Default "".
social.ctaRulesstringnoAt most 20000 characters. Default "".
social.imageDimensionsstringnoAt most 20000 characters. Default "".
social.videoDimensionsstringnoAt most 20000 characters. Default "".
social.brandHashtagsstringnoAt most 20000 characters. Default "".
knowledgeBaseobjectnoDefault {}.
knowledgeBase.faqsstringnoAt most 20000 characters. Default "".
knowledgeBase.policiesstringnoAt most 20000 characters. Default "".
knowledgeBase.refundPolicystringnoAt most 20000 characters. Default "".
knowledgeBase.supportProcessstringnoAt most 20000 characters. Default "".
knowledgeBase.hoursstringnoAt most 20000 characters. Default "".
knowledgeBase.locationsstringnoAt most 20000 characters. Default "".
knowledgeBase.integrationsstringnoAt most 20000 characters. Default "".
knowledgeBase.documentationstringnoAt most 20000 characters. Default "".
knowledgeBase.caseStudiesstringnoAt most 20000 characters. Default "".
knowledgeBase.testimonialsstringnoAt most 20000 characters. Default "".
aiInstructionsobjectnoDefault {}.
aiInstructions.alwaysRulesstringnoAt most 20000 characters. Default "".
aiInstructions.neverRulesstringnoAt most 20000 characters. Default "".
aiInstructions.bannedWordsstringnoAt most 20000 characters. Default "".
aiInstructions.requiredMentionsstringnoAt most 20000 characters. Default "".
marketingAssetsobjectnoDefault {}.
marketingAssets.assetReferencesstringnoAt most 20000 characters. Default "".

GET /organizations/{orgId}/businesses/{businessId}/brain/knowledge

POST /organizations/{orgId}/businesses/{businessId}/brain/knowledge

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
kindstringyesOne of guideline, past_campaign, testimonial, faq, case_study, research, note.
titlestringyes1–200 characters.
bodystringyes1–50000 characters.

DELETE /organizations/{orgId}/businesses/{businessId}/brain/knowledge/{itemId}

Needs a write key.

ParameterInTypeRequiredNotes
itemIdpathstringyes

Businesses

GET /organizations/{orgId}/businesses

POST /organizations/{orgId}/businesses

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
namestringyes1–120 characters.
storefrontUrlstring (uri)no
goalstringnoOne of sales, leads. Default "sales".
currencystringno3–3 characters. Default "USD".
timezonestringnoAt most 64 characters.
breakEvenRoasnumberno0–100.
avgOrderValueCentsintegerno0–9007199254740991.
targetCpaCentsintegerno0–9007199254740991.
targetCplCentsintegerno0–9007199254740991.
monthlyBudgetCentsintegerno0–9007199254740991.
dailyBudgetCapCentsintegerno0–9007199254740991.
metaAttributionWindowsstring[]no1–2 items.
autoRecommendationsbooleanno

POST /organizations/{orgId}/businesses/demo

Needs a write key.

DELETE /organizations/{orgId}/businesses/demo

Needs a write key.

POST /organizations/{orgId}/businesses/demo/reset

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}

PATCH /organizations/{orgId}/businesses/{businessId}

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
namestringno1–120 characters.
storefrontUrlstring (uri)no
goalstringnoOne of sales, leads.
currencystringno3–3 characters.
timezonestringnoAt most 64 characters.
breakEvenRoasnumberno0–100.
avgOrderValueCentsintegerno0–9007199254740991.
targetCpaCentsintegerno0–9007199254740991.
targetCplCentsintegerno0–9007199254740991.
monthlyBudgetCentsintegerno0–9007199254740991.
dailyBudgetCapCentsintegerno0–9007199254740991.
metaAttributionWindowsstring[]no1–2 items.
autoRecommendationsbooleanno

POST /organizations/{orgId}/businesses/{businessId}/target-suggestions

Needs a write key.

Campaign plans

GET /organizations/{orgId}/businesses/{businessId}/campaign-plans

ParameterInTypeRequiredNotes
includeSupersededquerystringyes

POST /organizations/{orgId}/businesses/{businessId}/campaign-plans

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
channelstringnoWhere the campaign runs: "meta" (Facebook & Instagram, the default) or "google_ads" (a Google Search campaign in the linked Google Ads account) One of meta, google_ads. Default "meta".
businessModelstringyesOne of ecommerce, lead_gen.
monthlyBudgetCentsintegeryes0–9007199254740991.
aovCentsintegerno0–9007199254740991.
breakEvenRoasnumbernoAt least 0.
targetCplCentsintegerno0–9007199254740991.
dealValueCentsintegernoLead gen: the value of one closed deal, in cents 0–9007199254740991.
closeRatePercentnumbernoLead gen: the percent of leads that become customers (0–100) 0–100.
offerstringnoThe offer the ads should lead with: the hook, price, discount or guarantee At most 500 characters.
landingUrlstringnoThe page every ad links to; omitted = the business storefront URL At most 2048 characters.
promotionIdstring (uuid)noA promotion id from promotions_list (or the one promotions_create_draft returned). Fills offer ("10% off with code X") and landingUrl (the discount link) when those are omitted, grounds the copy in the code, and tags the ads with the promotion’s utm_campaign. Call promotions_list first; never invent a code or a discount
leadProductIdsstring (uuid)[]noUp to 3 synced commerce product ids (from the catalog) the ads should feature At most 3 items. Default [].
emailListSizestringyesOne of none, under_1k, 1k_to_10k, over_10k.
socialFollowingstringyesOne of none, under_1k, 1k_to_10k, over_10k.
creativeAssetsstring[]yes
creativeAssetIdsstring (uuid)[]noDefault [].
countriesstring[]yesAt least 1 items.
geoobjectnoLocal targeting: { kind: "places", places: [{ key, name, type, countryCode, radiusKm? }] } from the geo search, or { kind: "radius", addressString, radiusKm (1–80) }. Omitted = the whole countries
pixelInstalledbooleannoIgnored for a real ad account (derived from the synced pixel); only honoured on a demo account
bidStrategyobjectno
bidStrategy.strategystringyesLOWEST_COST_WITHOUT_CAP (no cap), COST_CAP (average cost per result), LOWEST_COST_WITH_BID_CAP (maximum bid per auction) or LOWEST_COST_WITH_MIN_ROAS (minimum return on ad spend; value-optimised ad sets only) One of LOWEST_COST_WITHOUT_CAP, COST_CAP, LOWEST_COST_WITH_BID_CAP, LOWEST_COST_WITH_MIN_ROAS.
bidStrategy.amountCentsintegernoRequired for COST_CAP and LOWEST_COST_WITH_BID_CAP: the cap, in cents of the ad account’s currency 0–100000000.
bidStrategy.minRoasnumbernoRequired for LOWEST_COST_WITH_MIN_ROAS: the ROAS floor as a ratio, e.g. 2.5 0–100.
specialAdCategoriesstring[]noSpecial ad categories the campaign falls under (housing, financial products, employment, politics); empty = none. Any category forces ages 18–65+ and all genders Default [].
ageMinintegernoThe youngest age to target (18–65); omitted = the planner decides 18–65.
localesinteger[]noMeta adlocale ids for the languages to target (e.g. 1001 English (All)); empty = all At most 10 items. Default [].
supersedesPlanIdstring (uuid)noA draft this plan replaces; it is hidden from the plan list once this one is created

GET /organizations/{orgId}/businesses/{businessId}/campaign-plans/latest

ParameterInTypeRequiredNotes
includeSupersededquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/campaign-plans/prerequisites

ParameterInTypeRequiredNotes
channelquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/campaign-plans/meta-pages

PATCH /organizations/{orgId}/businesses/{businessId}/campaign-plans/{planId}/page

Needs a write key.

ParameterInTypeRequiredNotes
planIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
pageIdstringyesAt least 1 characters.

PUT /organizations/{orgId}/businesses/{businessId}/campaign-plans/{planId}/lead-form

Needs a write key.

ParameterInTypeRequiredNotes
planIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
leadFormobjectyes

PATCH /organizations/{orgId}/businesses/{businessId}/campaign-plans/{planId}/audiences

Needs a write key.

ParameterInTypeRequiredNotes
planIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
excludestring[]yesAt most 4 items.
includestring[]yesAt most 4 items.
lookalikebooleanyes

PUT /organizations/{orgId}/businesses/{businessId}/campaign-plans/{planId}/plan

Needs a write key.

ParameterInTypeRequiredNotes
planIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
campaignobjectno
campaign.namestringyes1–200 characters.
adCreativesobject[]noAt most 50 items.
adCreatives[].primaryTextstringyes1–2000 characters.
adCreatives[].headlinestringyes1–255 characters.
adCreatives[].descriptionstringyesAt most 255 characters.
adCreatives[].callToActionstringyesOne of SHOP_NOW, LEARN_MORE, SIGN_UP, GET_OFFER, CONTACT_US, SUBSCRIBE.
adCreatives[].headlinesstring[]no1–5 items.
adCreatives[].primaryTextsstring[]no1–5 items.
adSetobjectno
adSet.ageMinintegeryes13–65.
adSet.ageMaxintegeryes13–65.
adSet.gendersstringyesOne of all, male, female.
adSet.countriesstring[]yes1–25 items.
adSet.interestsobject[]yesAt most 25 items.
adSet.interests[].idstringno
adSet.interests[].namestringyes1–200 characters.
adSet.interests[].audienceSizeLowerBoundinteger or nullno0–9007199254740991.
targetCplCentsintegerno0–9007199254740991.

GET /organizations/{orgId}/businesses/{businessId}/campaign-plans/{planId}/previews

ParameterInTypeRequiredNotes
planIdpathstringyes

PATCH /organizations/{orgId}/businesses/{businessId}/campaign-plans/{planId}/budget

Needs a write key.

ParameterInTypeRequiredNotes
planIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
dailyBudgetCentsintegeryes0–9007199254740991.

POST /organizations/{orgId}/businesses/{businessId}/campaign-plans/{planId}/approve

Needs a write key.

ParameterInTypeRequiredNotes
planIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/campaign-plans/{planId}/deploy

Needs a write key.

ParameterInTypeRequiredNotes
planIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/campaign-plans/{planId}/abandon-deploy

Needs a write key.

ParameterInTypeRequiredNotes
planIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/campaign-plans/{planId}/activate

Needs a write key.

ParameterInTypeRequiredNotes
planIdpathstringyes

Competitors

GET /organizations/{orgId}/businesses/{businessId}/competitors

POST /organizations/{orgId}/businesses/{businessId}/competitors

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
pageHandlestringyesThe competitor's Facebook Page — a full URL ("https://facebook.com/acmecoffee"), an @handle, or the bare handle. This is what their ads are looked up by. 1–512 characters.
namestringnoWhat to call them. Defaults to the handle when omitted. 1–200 characters.
websitestringnoThe competitor's website, if you know it. Optional and never fetched on add. At most 512 characters.

POST /organizations/{orgId}/businesses/{businessId}/competitors/refresh

Needs a write key.

ParameterInTypeRequiredNotes
competitorIdquerystringyes

DELETE /organizations/{orgId}/businesses/{businessId}/competitors/{competitorId}

Needs a write key.

ParameterInTypeRequiredNotes
competitorIdpathstringyes

Content

GET /organizations/{orgId}/businesses/{businessId}/content/page-posts

ParameterInTypeRequiredNotes
pageIdquerystringyes
refreshquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/content/post-comments

ParameterInTypeRequiredNotes
pageIdquerystringyes
postIdquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/content/organic-posts

ParameterInTypeRequiredNotes
platformquerystringnoOne of facebook_page, instagram, tiktok, youtube, gbp.
sortquerystringnoOne of engagement, recent. Default "engagement".
limitqueryintegerno1–100. Default 50.
cursorquerystringnoAt most 64 characters.

POST /organizations/{orgId}/businesses/{businessId}/content/organic-posts/refresh

Needs a write key.

Content hub

GET /organizations/{orgId}/businesses/{businessId}/content-hub/assets/{assetId}

ParameterInTypeRequiredNotes
assetIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/content-hub/assets/{assetId}/publish

Needs a write key.

ParameterInTypeRequiredNotes
assetIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
collectionstringnoOne of blog, learn. Default "blog".
slugstringno1–120 characters.

GET /organizations/{orgId}/businesses/{businessId}/content-hub/topics

POST /organizations/{orgId}/businesses/{businessId}/content-hub/topics

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
titlestringyes1–200 characters.
collectionstringnoOne of blog, learn. Default "blog".
briefstringyes1–4000 characters.
keywordsstring[]noAt most 20 items. Default [].
sourcestringnoAt most 120 characters. Default "manual".
priorityintegerno0–1000. Default 100.

Conversions

GET /organizations/{orgId}/businesses/{businessId}/integrations/shopify/conversions

GET /organizations/{orgId}/businesses/{businessId}/conversions

GET /organizations/{orgId}/businesses/{businessId}/integrations/shopify/conversions/imports

POST /organizations/{orgId}/businesses/{businessId}/integrations/shopify/conversions/imports

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/conversions/imports

POST /organizations/{orgId}/businesses/{businessId}/conversions/imports

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/integrations/shopify/conversions/imports/template

GET /organizations/{orgId}/businesses/{businessId}/conversions/imports/template

POST /organizations/{orgId}/businesses/{businessId}/integrations/shopify/conversions/imports/preview

Needs a write key.

POST /organizations/{orgId}/businesses/{businessId}/conversions/imports/preview

Needs a write key.

POST /organizations/{orgId}/businesses/{businessId}/integrations/shopify/conversions/imports/{importId}/retry

Needs a write key.

ParameterInTypeRequiredNotes
importIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/conversions/imports/{importId}/retry

Needs a write key.

ParameterInTypeRequiredNotes
importIdpathstringyes

PUT /organizations/{orgId}/businesses/{businessId}/integrations/shopify/conversions/{channel}

Needs a write key.

ParameterInTypeRequiredNotes
channelpathstringyes

PUT /organizations/{orgId}/businesses/{businessId}/conversions/{channel}

Needs a write key.

ParameterInTypeRequiredNotes
channelpathstringyes

Creative analytics

GET /organizations/{orgId}/businesses/{businessId}/creative-analytics

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/creative-analytics/export.csv

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes
viewquerystringyes
qquerystringyes
onlySpendingquerystringyes

Creative experiments

GET /organizations/{orgId}/businesses/{businessId}/creative-experiments

ParameterInTypeRequiredNotes
limitquerystringyes

POST /organizations/{orgId}/businesses/{businessId}/creative-experiments

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
namestringyesWhat this cycle is called 1–200 characters.
hypothesisstringnoWhat the cycle is trying to learn, in the operator’s own words At most 2000 characters.
adSetMetaIdstringyesThe ad set every arm is launched into — from meta_list_ad_sets 1–64 characters.
pageIdstringnoFacebook Page the generated ads post under; required when any arm is a variant 1–64 characters.
windowHoursintegernoHow long every arm runs before it can be judged. Default 48. 6–720. Default 48.
floorMetricstringnoroas and ctr are floors (higher passes); cpa is a ceiling (lower passes) One of roas, cpa, ctr. Default "roas".
floorValuenumberyesThe floor itself: 1.4 for ROAS, a percentage for CTR, cents for CPA At least 0.
minSpendCentsintegernoNo arm is decided below this spend, whatever the window says 0–9007199254740991. Default 2000.
minImpressionsintegernoNo arm is decided below this many impressions 0–9007199254740991. Default 1000.
promoteRulestringnoOne of budget_increase. Default "budget_increase".
promoteBudgetPctintegernoHow much more daily budget the winner’s ad set gets, as a percentage 1–100. Default 25.
draftDerivativesbooleannoDraft new variants from the winner’s angle when one is promoted Default true.
armsobject[]yes2–8 items.
arms[].variantIdstring (uuid)noA succeeded creative_variants row from the creative studio
arms[].adMetaIdstringnoAn existing Meta ad id to enter as an arm, instead of generating one 1–64 characters.
arms[].labelstringnoWhat to call this arm in the UI At most 120 characters.

GET /organizations/{orgId}/businesses/{businessId}/creative-experiments/{experimentId}

ParameterInTypeRequiredNotes
experimentIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/creative-experiments/{experimentId}/evaluate

Needs a write key.

ParameterInTypeRequiredNotes
experimentIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/creative-experiments/{experimentId}/arms/{armId}/decision

Needs a write key.

ParameterInTypeRequiredNotes
experimentIdpathstringyes
armIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
decisionstringyeskill pauses the ad, promote raises the ad set’s budget, keep only records it One of killed, promoted, kept.
reasonstringnoWhy — recorded on the arm beside the numbers At most 500 characters.

POST /organizations/{orgId}/businesses/{businessId}/creative-experiments/{experimentId}/cancel

Needs a write key.

ParameterInTypeRequiredNotes
experimentIdpathstringyes

Creative studio

GET /organizations/{orgId}/businesses/{businessId}/creative-studio/quota

GET /organizations/{orgId}/businesses/{businessId}/creative-studio/batches

POST /organizations/{orgId}/businesses/{businessId}/creative-studio/batches

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
sourceAssetIdstring (uuid)yes
anglesstring[]yes1–6 items.
placementsstring[]yes1–4 items.
productNotesstringnoAt most 2000 characters.
offerstringnoAt most 500 characters.

GET /organizations/{orgId}/businesses/{businessId}/creative-studio/batches/{batchId}

ParameterInTypeRequiredNotes
batchIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/creative-studio/variants/{variantId}

ParameterInTypeRequiredNotes
variantIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/video/capabilities

GET /organizations/{orgId}/businesses/{businessId}/video/jobs

ParameterInTypeRequiredNotes
sourceAssetIdquerystringyes
batchIdquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/video/jobs/{jobId}

ParameterInTypeRequiredNotes
jobIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/assets/{assetId}/captions

ParameterInTypeRequiredNotes
assetIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/assets/{assetId}/captions

Needs a write key.

ParameterInTypeRequiredNotes
assetIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
sourcestring or objectyes
stylestringnoOne of bold-center, lower-third. Default "bold-center".

POST /organizations/{orgId}/businesses/{businessId}/assets/{assetId}/resize

Needs a write key.

ParameterInTypeRequiredNotes
assetIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
placementstringyesOne of reels, square, landscape.
modestringnoOne of crop, pad. Default "pad".

POST /organizations/{orgId}/businesses/{businessId}/creative-studio/batches/{batchId}/video

Needs a write key.

ParameterInTypeRequiredNotes
batchIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
imageIdsstring (uuid)[]yes3–8 items.
durationSecintegerno10–20. Default 15.
placementstringnoOne of reels, square, landscape. Default "reels".
captionTextstringnoAt most 500 characters.
musicstringnoOne of none. Default "none".

Currency

GET /organizations/{orgId}/fx

PUT /organizations/{orgId}/fx/overrides

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
currencystringyesISO 4217 currency code
ratenumberyes0–1000000.

DELETE /organizations/{orgId}/fx/overrides/{currency}

Needs a write key.

ParameterInTypeRequiredNotes
currencypathstringyes

Data export

GET /organizations/{orgId}/exports

POST /organizations/{orgId}/exports

Needs a write key.

GET /organizations/{orgId}/exports/{exportId}/download

ParameterInTypeRequiredNotes
exportIdpathstringyes

Decision log

GET /organizations/{orgId}/businesses/{businessId}/entities/changes

ParameterInTypeRequiredNotes
channelquerystringnoOne of meta, google_ads, tiktok_ads. Default "meta".
fromquerystringno
toquerystringno

GET /organizations/{orgId}/businesses/{businessId}/entities/{channel}/{entityId}/timeline

ParameterInTypeRequiredNotes
channelpathstringyes
entityIdpathstringyes

Exports

GET /organizations/{orgId}/businesses/{businessId}/exports/entities.csv

GET /organizations/{orgId}/businesses/{businessId}/exports/daily-metrics.csv

Forecast

GET /organizations/{orgId}/businesses/{businessId}/forecast

Goals

GET /organizations/{orgId}/businesses/{businessId}/goals

POST /organizations/{orgId}/businesses/{businessId}/goals

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
objectivestringyes1–500 characters.
metricKeystringyesOne of organic_clicks, sessions, site_conversions, ad_conversions, ad_revenue, ad_roas.
targetValuenumberyesAt least 0.
deadlinestringno
followUpOfGoalIdstring (uuid)no

POST /organizations/{orgId}/businesses/{businessId}/goals/{goalId}/approve-plan

Needs a write key.

ParameterInTypeRequiredNotes
goalIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/goals/{goalId}/refresh

Needs a write key.

ParameterInTypeRequiredNotes
goalIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/goals/{goalId}/status

Needs a write key.

ParameterInTypeRequiredNotes
goalIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
statusstringyesOne of active, paused.

DELETE /organizations/{orgId}/businesses/{businessId}/goals/{goalId}

Needs a write key.

ParameterInTypeRequiredNotes
goalIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/google-ads/status

POST /organizations/{orgId}/businesses/{businessId}/integrations/google-ads/use-organization

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/integrations/google-ads/connect

GET /organizations/{orgId}/businesses/{businessId}/integrations/google-ads/customers

POST /organizations/{orgId}/businesses/{businessId}/integrations/google-ads/link

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
customerIdstringyes
managerCustomerIdstring or nullno

POST /organizations/{orgId}/businesses/{businessId}/integrations/google-ads/sync

Needs a write key.

DELETE /organizations/{orgId}/businesses/{businessId}/integrations/google-ads

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/integrations/google-ads/campaigns

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/google-ads/adgroups

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes
campaignGoogleIdquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/google-ads/ads

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes
adGroupGoogleIdquerystringyes
campaignGoogleIdquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/google-ads/keywords

ParameterInTypeRequiredNotes
adGroupGoogleIdquerystringyes
fromquerystringyes
toquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/google-ads/search-terms

ParameterInTypeRequiredNotes
adGroupGoogleIdquerystringyes
campaignGoogleIdquerystringyes
fromquerystringyes
toquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/google-ads/search-terms/proposal

ParameterInTypeRequiredNotes
adGroupGoogleIdquerystringyes
campaignGoogleIdquerystringyes

GET /organizations/{orgId}/integrations/google-ads/organization

DELETE /organizations/{orgId}/integrations/google-ads/organization

Needs a write key.

GET /organizations/{orgId}/integrations/google-ads/organization/connect

Google Analytics and Search Console

GET /organizations/{orgId}/businesses/{businessId}/integrations/google/status

GET /organizations/{orgId}/businesses/{businessId}/integrations/google/search-performance

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/google/connect

GET /organizations/{orgId}/businesses/{businessId}/integrations/google/options

POST /organizations/{orgId}/businesses/{businessId}/integrations/google/select

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
ga4PropertyIdstring or nullnoAt most 64 characters.
ga4PropertyNamestring or nullnoAt most 200 characters.
gscSiteUrlstring or nullnoAt most 512 characters.

POST /organizations/{orgId}/businesses/{businessId}/integrations/google/sync

Needs a write key.

DELETE /organizations/{orgId}/businesses/{businessId}/integrations/google

Needs a write key.

Google Business Profile

GET /organizations/{orgId}/businesses/{businessId}/gbp/status

GET /organizations/{orgId}/businesses/{businessId}/gbp/connect

DELETE /organizations/{orgId}/businesses/{businessId}/gbp

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/gbp/locations/available

POST /organizations/{orgId}/businesses/{businessId}/gbp/locations

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
locationsobject[]yes1–50 items.
locations[].accountNamestringyes
locations[].locationNamestringyes

DELETE /organizations/{orgId}/businesses/{businessId}/gbp/locations/{locationId}

Needs a write key.

ParameterInTypeRequiredNotes
locationIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/gbp/insights

ParameterInTypeRequiredNotes
daysqueryintegernoWindow length in days, ending at the newest day Google has reported 7–90. Default 28.
locationIdquerystring (uuid)noNarrow to one connected location; omit for every location

Guardrails

GET /organizations/{orgId}/businesses/{businessId}/guardrails

PUT /organizations/{orgId}/businesses/{businessId}/guardrails

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
dailySpendCapCentsinteger or nullno0–100000000. Default null.
monthlySpendCapCentsinteger or nullno0–1000000000. Default null.
minRoasnumber or nullno0–100. Default null.
maxBudgetIncreasePctintegerno1–1000. Default 100.
allowedCountriesstring[]noAt most 60 items. Default [].
excludedCountriesstring[]noAt most 60 items. Default [].
blockedAnglesstring[]noAt most 50 items. Default [].
maxSpendDataAgeHoursintegerno1–168. Default 26.

Klaviyo

GET /organizations/{orgId}/businesses/{businessId}/integrations/klaviyo/status

GET /organizations/{orgId}/businesses/{businessId}/integrations/klaviyo/connect

POST /organizations/{orgId}/businesses/{businessId}/integrations/klaviyo/sync

Needs a write key.

DELETE /organizations/{orgId}/businesses/{businessId}/integrations/klaviyo

Needs a write key.

Leads

GET /organizations/{orgId}/businesses/{businessId}/leads

ParameterInTypeRequiredNotes
statusquerystringnoOne of new, contacted, qualified, won, lost.
campaignIdquerystringnoAt most 64 characters.
formIdquerystringnoAt most 64 characters.
fromquerystringno
toquerystringno
limitqueryintegerno1–500. Default 100.
offsetqueryintegerno0–9007199254740991. Default 0.

GET /organizations/{orgId}/businesses/{businessId}/leads.csv

ParameterInTypeRequiredNotes
statusquerystringnoOne of new, contacted, qualified, won, lost.
campaignIdquerystringnoAt most 64 characters.
formIdquerystringnoAt most 64 characters.
fromquerystringno
toquerystringno

GET /organizations/{orgId}/businesses/{businessId}/leads/facets

GET /organizations/{orgId}/businesses/{businessId}/leads/sources

POST /organizations/{orgId}/businesses/{businessId}/leads/sources

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
pageIdstringyes

DELETE /organizations/{orgId}/businesses/{businessId}/leads/sources/{sourceId}

Needs a write key.

ParameterInTypeRequiredNotes
sourceIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/leads/forms

ParameterInTypeRequiredNotes
pageIdquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/leads/{leadId}

ParameterInTypeRequiredNotes
leadIdpathstringyes

PATCH /organizations/{orgId}/businesses/{businessId}/leads/{leadId}

Needs a write key.

ParameterInTypeRequiredNotes
leadIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
statusstringnoOne of new, contacted, qualified, won, lost.
notestring or nullnoAt most 5000 characters.
valueCentsinteger or nullno0–100000000000.
currencystring or nullno

Local Falcon

GET /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/status

POST /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/connect

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
apiKeystringyes8–256 characters.

DELETE /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/account

GET /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/locations

ParameterInTypeRequiredNotes
queryquerystringyes
limitquerystringyes
next_tokenquerystringyes

POST /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/locations/search

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
namestringyes1–200 characters.
proximitystringnoAt most 200 characters.
platformstringnoOne of google, apple.

POST /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/locations/add

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
platformstringyesOne of google, apple.
place_idstringyes1–200 characters.
namestringnoAt most 200 characters.
latstringnoAt most 32 characters.
lngstringnoAt most 32 characters.

PUT /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/locations/{locationId}/pin

Needs a write key.

ParameterInTypeRequiredNotes
locationIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
latstringyesAt most 32 characters.
lngstringyesAt most 32 characters.

DELETE /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/locations/{locationId}/pin

Needs a write key.

ParameterInTypeRequiredNotes
locationIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/reports

ParameterInTypeRequiredNotes
limitquerystringyes
place_idquerystringyes
keywordquerystringyes
platformquerystringyes
start_datequerystringyes
end_datequerystringyes
next_tokenquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/reports/{reportKey}

ParameterInTypeRequiredNotes
reportKeypathstringyes

POST /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/scans

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
place_idstringyes1–200 characters.
keywordstringyes1–200 characters.
latstringyes1–32 characters.
lngstringyes1–32 characters.
grid_sizestringyesOne of 3, 5, 7, 9, 11, 13, 15, 17, 19, 21.
radiusnumberyes0.1–100.
measurementstringyesOne of mi, km.
platformstringyesOne of google, apple, chatgpt, gemini, gaio, aimode, grok.
ai_analysisbooleanno

GET /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/batches

ParameterInTypeRequiredNotes
limitquerystringyes

POST /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/batches

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
namestringnoAt most 120 characters.
place_idstringyes1–200 characters.
grid_sizestringyesOne of 3, 5, 7, 9, 11, 13, 15, 17, 19, 21.
radiusnumberyes0.1–100.
measurementstringyesOne of mi, km.
platformsstring[]yes1–7 items.
keywordsstring[]yes1–50 items.
centersobject[]yes1–10 items.
centers[].labelstringyes1–80 characters.
centers[].latstringyesAt most 32 characters.
centers[].lngstringyesAt most 32 characters.
ai_analysisbooleanno

GET /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/batches/{batchId}

ParameterInTypeRequiredNotes
batchIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/integrations/localfalcon/batches/{batchId}/cancel

Needs a write key.

ParameterInTypeRequiredNotes
batchIdpathstringyes

Marketing assets

GET /organizations/{orgId}/businesses/{businessId}/marketing-assets

GET /organizations/{orgId}/businesses/{businessId}/marketing-assets/{assetId}

ParameterInTypeRequiredNotes
assetIdpathstringyes

PATCH /organizations/{orgId}/businesses/{businessId}/marketing-assets/{assetId}

Needs a write key.

ParameterInTypeRequiredNotes
assetIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
statusstringnoOne of draft, in_review, approved, published, archived.
bodyobjectno
body.titlestringyes1–300 characters.
body.bodyMarkdownstringyes1–100000 characters.
body.metaDescriptionstringnoAt most 300 characters.
body.targetKeywordsstring[]noAt most 20 items.
body.categorystringnoAt most 100 characters.
body.heroImageAssetIdstring (uuid)no
body.videoAssetIdstring (uuid)no
notestringnoAt most 500 characters.

GET /organizations/{orgId}/businesses/{businessId}/marketing-assets/{assetId}/outcome

ParameterInTypeRequiredNotes
assetIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/marketing-assets/{assetId}/outcome/link-post

Needs a write key.

ParameterInTypeRequiredNotes
assetIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
pageIdstringyes1–64 characters.
postIdstringyes1–128 characters.

POST /organizations/{orgId}/businesses/{businessId}/marketing-assets/{assetId}/outcome/sync-engagement

Needs a write key.

ParameterInTypeRequiredNotes
assetIdpathstringyes

MCP

POST /mcp

Auth: an API key or an MCP OAuth access token.

Measurement

GET /organizations/{orgId}/businesses/{businessId}/measurement/health

POST /organizations/{orgId}/businesses/{businessId}/measurement/check

Needs a write key.

Meta Ads

GET /organizations/{orgId}/integrations/meta/reconnect-required

GET /organizations/{orgId}/integrations/meta/organization

DELETE /organizations/{orgId}/integrations/meta/organization

Needs a write key.

GET /organizations/{orgId}/integrations/meta/organization/connect

GET /organizations/{orgId}/businesses/{businessId}/integrations/meta/connect

POST /organizations/{orgId}/businesses/{businessId}/integrations/meta/use-organization

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/integrations/meta/ad-accounts

POST /organizations/{orgId}/businesses/{businessId}/integrations/meta/select-account

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
metaAccountIdstringyesAt least 1 characters.

GET /organizations/{orgId}/businesses/{businessId}/integrations/meta/status

POST /organizations/{orgId}/businesses/{businessId}/integrations/meta/sync

Needs a write key.

DELETE /organizations/{orgId}/businesses/{businessId}/integrations/meta

Needs a write key.

Model gateway

GET /organizations/{orgId}/model-gateway/providers

POST /organizations/{orgId}/model-gateway/providers

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
providerstringyesOne of anthropic, openai, google, xai, openrouter, mistral, deepseek, perplexity, ollama, claude_code, codex, custom.
labelstringyes1–64 characters.
apiKeystringno1–512 characters.
baseUrlstring (uri)noAt most 512 characters.
defaultModelstringno1–128 characters.

PATCH /organizations/{orgId}/model-gateway/providers/{connectionId}

Needs a write key.

ParameterInTypeRequiredNotes
connectionIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
labelstringno1–64 characters.
apiKeystringno1–512 characters.
baseUrlstring (uri)noAt most 512 characters.
defaultModelstringno1–128 characters.
statusstringnoOne of active, disabled.

DELETE /organizations/{orgId}/model-gateway/providers/{connectionId}

Needs a write key.

ParameterInTypeRequiredNotes
connectionIdpathstringyes

POST /organizations/{orgId}/model-gateway/providers/{connectionId}/verify

Needs a write key.

ParameterInTypeRequiredNotes
connectionIdpathstringyes

GET /organizations/{orgId}/model-gateway/assignments

PUT /organizations/{orgId}/model-gateway/assignments

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
purposestringyesOne of recommendations, campaign_planning, target_suggestions, assistant, blog_writer, sales_copy, brand_voice, daily_report, director, onboarding_research, competitor_angles, embeddings, hero_image, creative_studio, transcribe.
connectionIdstring (uuid) or nullyes
modelstringno1–128 characters.
fallbackConnectionIdstring (uuid) or nullno
fallbackModelstringno1–128 characters.

GET /organizations/{orgId}/model-gateway/usage

ParameterInTypeRequiredNotes
daysquerystringyes

GET /organizations/{orgId}/model-gateway/costs

Notifications

GET /organizations/{orgId}/notifications

ParameterInTypeRequiredNotes
unreadquerystringyes

POST /organizations/{orgId}/notifications/{notificationId}/read

Needs a write key.

ParameterInTypeRequiredNotes
notificationIdpathstringyes

POST /organizations/{orgId}/notifications/read-all

Needs a write key.

GET /organizations/{orgId}/notifications/preferences

PUT /organizations/{orgId}/notifications/preferences

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
emailSeveritystringnoOne of all, critical, none.
leadAlertsbooleanno
lifecycleEmailsbooleanno
weeklyDigestbooleanno

GET /organizations/{orgId}/notifications/channels

PUT /organizations/{orgId}/notifications/channels

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
slackWebhookUrlstring or nullno
slackEnabledbooleanno
slackKindsstring[]no

POST /organizations/{orgId}/notifications/channels/slack/test

Needs a write key.

Operating notes

GET /organizations/{orgId}/businesses/{businessId}/operating-notes

ParameterInTypeRequiredNotes
includeExpiredquerystringyes
limitquerystringyes

POST /organizations/{orgId}/businesses/{businessId}/operating-notes

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
textstringyesThe standing instruction, in plain language — what to do or never do, and why if it helps. Written as an instruction to the agents, e.g. "Never run comparison ads against Brand X". 3–500 characters.

POST /organizations/{orgId}/businesses/{businessId}/operating-notes/{noteId}/retire

Needs a write key.

ParameterInTypeRequiredNotes
noteIdpathstringyes

Operator

GET /organizations/{orgId}/businesses/{businessId}/operator/schedule

PUT /organizations/{orgId}/businesses/{businessId}/operator/schedule

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
enabledbooleanyes
hourintegerno0–23. Default 6.
timeZonestringno1–64 characters. Default "UTC".
organicEnabledbooleanno

GET /organizations/{orgId}/businesses/{businessId}/operator/runs

ParameterInTypeRequiredNotes
limitquerystringyes

POST /organizations/{orgId}/businesses/{businessId}/operator/runs

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/operator/runs/{runId}

ParameterInTypeRequiredNotes
runIdpathstringyes

Organizations

PATCH /organizations/{orgId}

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
namestringno1–120 characters.
reportingCurrencystring or nullnoISO 4217 currency code
requireMfabooleanno

DELETE /organizations/{orgId}

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
confirmNamestringyes1–120 characters.

GET /organizations/{orgId}/members

POST /organizations/{orgId}/members

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
emailstring (email)yesAt most 254 characters.
namestringyes1–120 characters.
temporaryPasswordstringyes8–128 characters.
rolestringnoDefault "member".
accessobject[]noAt most 200 items. Default [].
access[].businessIdstring (uuid)yes
access[].rolestringyesOne of admin, manager, analyst, client.

PATCH /organizations/{orgId}/members/{membershipId}

Needs a write key.

ParameterInTypeRequiredNotes
membershipIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
rolestringyes

DELETE /organizations/{orgId}/members/{membershipId}

Needs a write key.

ParameterInTypeRequiredNotes
membershipIdpathstringyes

PUT /organizations/{orgId}/members/{membershipId}/business-access

Needs a write key.

ParameterInTypeRequiredNotes
membershipIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
businessIdstring (uuid)yes
rolestringyesOne of admin, manager, analyst, client.

DELETE /organizations/{orgId}/members/{membershipId}/business-access/{grantedBusinessId}

Needs a write key.

ParameterInTypeRequiredNotes
membershipIdpathstringyes
grantedBusinessIdpathstringyes

Promotions

GET /organizations/{orgId}/businesses/{businessId}/promotions

ParameterInTypeRequiredNotes
statusquerystringyesOne of draft, active, ended, archived.

POST /organizations/{orgId}/businesses/{businessId}/promotions

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
codestringyes
partnerNamestringyes1–120 characters.
discountTypestringyesOne of percent, fixed.
discountValuenumberyes0–1000000.
currencystringno
scopestring or objectnoDefault "all".
startsAtstring (date-time)no
endsAtstring (date-time) or nullno
landingPathstringnoAt most 500 characters.
statusstringnoOne of draft, active. Default "active".

GET /organizations/{orgId}/businesses/{businessId}/promotions/{promotionId}

ParameterInTypeRequiredNotes
promotionIdpathstringyes

PATCH /organizations/{orgId}/businesses/{businessId}/promotions/{promotionId}

Needs a write key.

ParameterInTypeRequiredNotes
promotionIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
startsAtstring (date-time)no
endsAtstring (date-time) or nullno
statusstringnoOne of draft, active, ended, archived.
landingPathstring or nullnoAt most 500 characters.

GET /organizations/{orgId}/businesses/{businessId}/promotions/{promotionId}/performance

ParameterInTypeRequiredNotes
promotionIdpathstringyes

Recommendations

POST /organizations/{orgId}/businesses/{businessId}/recommendations/generate

Needs a write key.

ParameterInTypeRequiredNotes
channelquerystringyes
forcequerystringyes

GET /organizations/{orgId}/businesses/{businessId}/recommendations/latest

GET /organizations/{orgId}/businesses/{businessId}/recommendations/history

ParameterInTypeRequiredNotes
channelquerystringnoOne of meta, google_ads, tiktok_ads.
statusquerystringnoOne of accepted, rejected, unactioned.
cursorquerystringnoAt most 200 characters.
limitqueryintegerno1–100. Default 25.

POST /organizations/{orgId}/businesses/{businessId}/recommendations/{recommendationId}/implement

Needs a write key.

ParameterInTypeRequiredNotes
recommendationIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
modestringyesOne of auto, manual.
confirmedbooleanno
notestringnoAt most 2000 characters.
implementedOnstringno

POST /organizations/{orgId}/businesses/{businessId}/recommendations/{recommendationId}/reject

Needs a write key.

ParameterInTypeRequiredNotes
recommendationIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
reasonstringyesOne of cant_implement, already_doing, not_relevant, budget_constraints, other.
notestringnoAt most 2000 characters.

Reports

GET /organizations/{orgId}/businesses/{businessId}/reports/dashboard

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/reports

POST /organizations/{orgId}/businesses/{businessId}/reports/generate

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/client-reports

GET /organizations/{orgId}/businesses/{businessId}/client-reports/schedule

PUT /organizations/{orgId}/businesses/{businessId}/client-reports/schedule

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
frequencystringyesOne of weekly, monthly.
hourintegeryes0–23.
time_zonestringno1–64 characters.
day_of_weekintegerno0–6.
day_of_monthintegerno1–28.
recipientsstring (email)[]yesAt most 25 items.
include_business_clientsbooleanno
attach_pdfbooleanno
enabledbooleanno

DELETE /organizations/{orgId}/businesses/{businessId}/client-reports/schedule

Needs a write key.

POST /organizations/{orgId}/businesses/{businessId}/client-reports/generate

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/client-reports/{reportId}

ParameterInTypeRequiredNotes
reportIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/client-reports/{reportId}/pdf

ParameterInTypeRequiredNotes
reportIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/client-reports/{reportId}/retry

Needs a write key.

ParameterInTypeRequiredNotes
reportIdpathstringyes

Research

GET /organizations/{orgId}/businesses/{businessId}/research

POST /organizations/{orgId}/businesses/{businessId}/research

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
siteUrlstringno3–2048 characters.
interviewobjectno
interview.whatYouSellstringnoAt most 2000 characters. Default "".
interview.avgOrderValueCentsinteger or nullno0–100000000. Default null.
interview.breakEvenRoasnumber or nullno0–1000. Default null.
interview.targetCpaCentsinteger or nullno0–100000000. Default null.
interview.primaryMarketstringnoAt most 200 characters. Default "".
competitorHandlesstring[]noAt most 5 items. Default [].

POST /organizations/{orgId}/businesses/{businessId}/research/{runId}/approve

Needs a write key.

ParameterInTypeRequiredNotes
runIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
briefobjectno
brief.headlinestringyesAt most 200 characters.
brief.audiencestringyesAt most 8000 characters.
brief.offerstringyesAt most 8000 characters.
brief.proofPointsstring[]yesAt most 12 items.
brief.noGoAnglesstring[]yesAt most 12 items.
brief.differentiationstringyesAt most 8000 characters.
brief.gapsstring[]yesAt most 10 items.
economicsobjectno
economics.breakEvenRoasnumber or nullno
economics.avgOrderValueCentsnumber or nullno
economics.targetCpaCentsnumber or nullno
economics.targetCplCentsnumber or nullno
economics.monthlyBudgetCentsnumber or nullno
economics.rationalestringno
economics.assumptionsstring[]no
economics.confidencestringnoOne of low, medium, high.
economics.grossMarginPercentnumber or nullno0–1.
economics.derivationstring[]noAt most 12 items.

POST /organizations/{orgId}/businesses/{businessId}/research/{runId}/reject

Needs a write key.

ParameterInTypeRequiredNotes
runIdpathstringyes

GET /organizations/{orgId}/research/pending

Rules

GET /organizations/{orgId}/businesses/{businessId}/rules

POST /organizations/{orgId}/businesses/{businessId}/rules

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
namestringyes1–120 characters.
enabledbooleannoDefault true.
channelstringyesOne of meta, google_ads, tiktok_ads, all.
levelstringyesOne of campaign, ad_set.
scopeobjectnoWhich entities the rule watches. Omit both fields for every entity at the level. Default {}.
scope.namePatternstringnoCase-insensitive text the entity name must contain 1–200 characters.
scope.entityIdsstring[]noExplicit platform ids of the campaigns or ad sets / ad groups to watch 1–200 items.
conditionobjectyes
condition.metricstringyesOne of spend, cpa, roas, ctr, cpc, conversions, frequency.
condition.opstringyesOne of >, <, >=, <=.
condition.valuenumberyesThe threshold, in the metric’s unit: cents for spend/cpa/cpc, % for ctr At least 0.
condition.lookbackDaysintegeryesHow many complete days, ending yesterday in the business’s time zone 1–28.
condition.minSpendCentsinteger or nullnoSkip entities that spent less than this over the lookback 0–9007199254740991.
condition.minConversionsnumber or nullnoSkip entities with fewer conversions than this over the lookback At least 0.
actionobjectyes
action.kindstringyesOne of pause, enable, set_budget_pct, notify.
action.pctinteger or nullnoFor set_budget_pct: the change in percent, -90 to +100, never 0 -90–100.
cooldownHoursintegerno1–720. Default 24.

POST /organizations/{orgId}/businesses/{businessId}/rules/dry-run

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
namestringyes1–120 characters.
enabledbooleannoDefault true.
channelstringyesOne of meta, google_ads, tiktok_ads, all.
levelstringyesOne of campaign, ad_set.
scopeobjectnoWhich entities the rule watches. Omit both fields for every entity at the level. Default {}.
scope.namePatternstringnoCase-insensitive text the entity name must contain 1–200 characters.
scope.entityIdsstring[]noExplicit platform ids of the campaigns or ad sets / ad groups to watch 1–200 items.
conditionobjectyes
condition.metricstringyesOne of spend, cpa, roas, ctr, cpc, conversions, frequency.
condition.opstringyesOne of >, <, >=, <=.
condition.valuenumberyesThe threshold, in the metric’s unit: cents for spend/cpa/cpc, % for ctr At least 0.
condition.lookbackDaysintegeryesHow many complete days, ending yesterday in the business’s time zone 1–28.
condition.minSpendCentsinteger or nullnoSkip entities that spent less than this over the lookback 0–9007199254740991.
condition.minConversionsnumber or nullnoSkip entities with fewer conversions than this over the lookback At least 0.
actionobjectyes
action.kindstringyesOne of pause, enable, set_budget_pct, notify.
action.pctinteger or nullnoFor set_budget_pct: the change in percent, -90 to +100, never 0 -90–100.
cooldownHoursintegerno1–720. Default 24.

GET /organizations/{orgId}/businesses/{businessId}/rules/{ruleId}

ParameterInTypeRequiredNotes
ruleIdpathstringyes

PUT /organizations/{orgId}/businesses/{businessId}/rules/{ruleId}

Needs a write key.

ParameterInTypeRequiredNotes
ruleIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
namestringyes1–120 characters.
enabledbooleannoDefault true.
channelstringyesOne of meta, google_ads, tiktok_ads, all.
levelstringyesOne of campaign, ad_set.
scopeobjectnoWhich entities the rule watches. Omit both fields for every entity at the level. Default {}.
scope.namePatternstringnoCase-insensitive text the entity name must contain 1–200 characters.
scope.entityIdsstring[]noExplicit platform ids of the campaigns or ad sets / ad groups to watch 1–200 items.
conditionobjectyes
condition.metricstringyesOne of spend, cpa, roas, ctr, cpc, conversions, frequency.
condition.opstringyesOne of >, <, >=, <=.
condition.valuenumberyesThe threshold, in the metric’s unit: cents for spend/cpa/cpc, % for ctr At least 0.
condition.lookbackDaysintegeryesHow many complete days, ending yesterday in the business’s time zone 1–28.
condition.minSpendCentsinteger or nullnoSkip entities that spent less than this over the lookback 0–9007199254740991.
condition.minConversionsnumber or nullnoSkip entities with fewer conversions than this over the lookback At least 0.
actionobjectyes
action.kindstringyesOne of pause, enable, set_budget_pct, notify.
action.pctinteger or nullnoFor set_budget_pct: the change in percent, -90 to +100, never 0 -90–100.
cooldownHoursintegerno1–720. Default 24.

DELETE /organizations/{orgId}/businesses/{businessId}/rules/{ruleId}

Needs a write key.

ParameterInTypeRequiredNotes
ruleIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/rules/{ruleId}/dry-run

Needs a write key.

ParameterInTypeRequiredNotes
ruleIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/rules/{ruleId}/run

Needs a write key.

ParameterInTypeRequiredNotes
ruleIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/rules/{ruleId}/runs

ParameterInTypeRequiredNotes
ruleIdpathstringyes
limitquerystringyes

Shopify

GET /organizations/{orgId}/businesses/{businessId}/integrations/shopify/status

POST /organizations/{orgId}/businesses/{businessId}/integrations/shopify/connect

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
shopDomainstringyes

POST /organizations/{orgId}/businesses/{businessId}/integrations/shopify/sync

Needs a write key.

POST /organizations/{orgId}/businesses/{businessId}/integrations/shopify/product-images/import

Needs a write key.

DELETE /organizations/{orgId}/businesses/{businessId}/integrations/shopify

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/integrations/shopify/products

ParameterInTypeRequiredNotes
limitquerystringyes
outOfStockquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/shopify/economics

POST /organizations/{orgId}/businesses/{businessId}/integrations/shopify/economics/apply

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
fieldsstring[]yesThe economics fields to overwrite with the values derived from the store At least 1 items.

GET /organizations/{orgId}/businesses/{businessId}/integrations/shopify/catalog

Site pages

GET /organizations/{orgId}/businesses/{businessId}/site-pages

ParameterInTypeRequiredNotes
limitquerystringyes

POST /organizations/{orgId}/businesses/{businessId}/site-pages/refresh

Needs a write key.

Social

GET /organizations/{orgId}/businesses/{businessId}/social/accounts

DELETE /organizations/{orgId}/businesses/{businessId}/social/accounts/{accountId}

Needs a write key.

ParameterInTypeRequiredNotes
accountIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/social/posts

ParameterInTypeRequiredNotes
statusquerystringyes

POST /organizations/{orgId}/businesses/{businessId}/social/posts

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
captionstringyesAt most 5000 characters.
mediaAssetIdsstring (uuid)[]noAt most 10 items. Default [].
targetsobject[]yes1–20 items.
targets[].socialAccountIdstring (uuid)yes
targets[].optionsobjectno
scheduledAtstring (date-time) or nullno
marketingAssetIdstring (uuid)no
promotionIdstring (uuid)noA promotion id from promotions_list. Appends "Use code CODE for …" to the caption unless the caption already contains the code. Never type a code into the caption that promotions_list did not return

GET /organizations/{orgId}/businesses/{businessId}/social/posts/best-times

ParameterInTypeRequiredNotes
platformquerystringyes
tzquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/social/posts/{postId}

ParameterInTypeRequiredNotes
postIdpathstringyes

PATCH /organizations/{orgId}/businesses/{businessId}/social/posts/{postId}

Needs a write key.

ParameterInTypeRequiredNotes
postIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
scheduledAtstring (date-time)yes

DELETE /organizations/{orgId}/businesses/{businessId}/social/posts/{postId}

Needs a write key.

ParameterInTypeRequiredNotes
postIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/social/posts/{postId}/cancel

Needs a write key.

ParameterInTypeRequiredNotes
postIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/social/posts/{postId}/retry

Needs a write key.

ParameterInTypeRequiredNotes
postIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/social/comments

ParameterInTypeRequiredNotes
platformquerystringnoNarrow to one platform One of facebook_page, instagram, tiktok, youtube, gbp.
filterquerystringnoall, unanswered (no reply yet) or flagged One of all, unanswered, flagged. Default "all".
limitqueryintegernoAt most this many, newest first 1–200. Default 50.

GET /organizations/{orgId}/businesses/{businessId}/social/comments/summary

PATCH /organizations/{orgId}/businesses/{businessId}/social/comments/{commentId}

Needs a write key.

ParameterInTypeRequiredNotes
commentIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
flaggedbooleanyes

GET /organizations/{orgId}/businesses/{businessId}/social/meta/connect

GET /organizations/{orgId}/businesses/{businessId}/social/meta/pages

POST /organizations/{orgId}/businesses/{businessId}/social/meta/select

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
pageIdsstring[]noDefault [].
instagramIdsstring[]noDefault [].

GET /organizations/{orgId}/businesses/{businessId}/social/instagram/status

GET /organizations/{orgId}/businesses/{businessId}/social/instagram/connect

POST /organizations/{orgId}/businesses/{businessId}/social/comments/refresh

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/social/youtube/status

GET /organizations/{orgId}/businesses/{businessId}/social/youtube/connect

GET /organizations/{orgId}/businesses/{businessId}/social/tiktok/status

GET /organizations/{orgId}/businesses/{businessId}/social/tiktok/connect

GET /organizations/{orgId}/businesses/{businessId}/social/tiktok/accounts/{accountId}/creator-info

ParameterInTypeRequiredNotes
accountIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/social/comments/{commentId}/draft

Needs a write key.

ParameterInTypeRequiredNotes
commentIdpathstringyes

Tasks

GET /organizations/{orgId}/businesses/{businessId}/tasks

POST /organizations/{orgId}/businesses/{businessId}/tasks

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
titlestringyes1–200 characters.
descriptionstringnoAt most 4000 characters.

POST /organizations/{orgId}/businesses/{businessId}/tasks/ai

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
briefstringyes1–4000 characters.
connectionIdstring (uuid)no
modelstringno1–128 characters.

PATCH /organizations/{orgId}/businesses/{businessId}/tasks/{taskId}

Needs a write key.

ParameterInTypeRequiredNotes
taskIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
statusstringnoOne of todo, running, blocked, review, done.
titlestringno1–200 characters.
descriptionstringnoAt most 4000 characters.
assigneeUserIdstring (uuid) or nullno

Terminal

GET /organizations/{orgId}/businesses/{businessId}/terminal/sessions

GET /organizations/{orgId}/businesses/{businessId}/terminal/sessions/{sessionId}/messages

ParameterInTypeRequiredNotes
sessionIdpathstringyes
beforequerystringyes
limitquerystringyes

PATCH /organizations/{orgId}/businesses/{businessId}/terminal/sessions/{sessionId}

Needs a write key.

ParameterInTypeRequiredNotes
sessionIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
confirmChangesbooleanyes

DELETE /organizations/{orgId}/businesses/{businessId}/terminal/sessions/{sessionId}

Needs a write key.

ParameterInTypeRequiredNotes
sessionIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/terminal/attachments

Needs a write key.

POST /organizations/{orgId}/businesses/{businessId}/terminal/messages

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
contentstringyesAt most 8000 characters.
sessionIdstring (uuid)no
confirmChangesbooleanno
attachmentIdsstring (uuid)[]noAt most 5 items.

TikTok Ads

GET /organizations/{orgId}/businesses/{businessId}/integrations/tiktok-ads/status

POST /organizations/{orgId}/businesses/{businessId}/integrations/tiktok-ads/use-organization

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/integrations/tiktok-ads/connect

GET /organizations/{orgId}/businesses/{businessId}/integrations/tiktok-ads/advertisers

POST /organizations/{orgId}/businesses/{businessId}/integrations/tiktok-ads/link

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
advertiserIdstringyes

POST /organizations/{orgId}/businesses/{businessId}/integrations/tiktok-ads/sync

Needs a write key.

DELETE /organizations/{orgId}/businesses/{businessId}/integrations/tiktok-ads

Needs a write key.

GET /organizations/{orgId}/businesses/{businessId}/integrations/tiktok-ads/campaigns

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/tiktok-ads/adgroups

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes
campaignTiktokIdquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/tiktok-ads/ads

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes
adGroupTiktokIdquerystringyes
campaignTiktokIdquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/integrations/tiktok-ads/creative-fatigue

ParameterInTypeRequiredNotes
fromquerystringyes
toquerystringyes

GET /organizations/{orgId}/integrations/tiktok-ads/organization

DELETE /organizations/{orgId}/integrations/tiktok-ads/organization

Needs a write key.

GET /organizations/{orgId}/integrations/tiktok-ads/organization/connect

Tools

GET /organizations/{orgId}/tools

ParameterInTypeRequiredNotes
riskquerystringnoOne of read, low, high.
integrationquerystringnoOne of internal, meta_ads, google_ads, tiktok_ads, social, assets, localfalcon, google, commerce, promotions, email, webhook.

GET /organizations/{orgId}/businesses/{businessId}/tools

ParameterInTypeRequiredNotes
riskquerystringnoOne of read, low, high.
integrationquerystringnoOne of internal, meta_ads, google_ads, tiktok_ads, social, assets, localfalcon, google, commerce, promotions, email, webhook.

GET /organizations/{orgId}/businesses/{businessId}/tools/invocations

ParameterInTypeRequiredNotes
limitquerystringyes

GET /organizations/{orgId}/businesses/{businessId}/tools/{toolName}/run

ParameterInTypeRequiredNotes
toolNamepathstringyes
x-marketing-os-sourceheaderstringyes
inputquerystringyes
agentRunIdquerystringyes

POST /organizations/{orgId}/businesses/{businessId}/tools/{toolName}/invoke

Needs a write key.

ParameterInTypeRequiredNotes
toolNamepathstringyes
x-marketing-os-sourceheaderstringyes

Request body (JSON):

FieldTypeRequiredNotes
inputobjectnoDefault {}.
agentRunIdstring (uuid)no
idempotencyKeystringno1–200 characters.
planIdstring (uuid)no
rationalestringnoAt most 600 characters.

POST /organizations/{orgId}/businesses/{businessId}/tools/invocations/{invocationId}/revert

Needs a write key.

ParameterInTypeRequiredNotes
invocationIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/tools/plans/{planId}/revert

Needs a write key.

ParameterInTypeRequiredNotes
planIdpathstringyes

Webhooks

GET /organizations/{orgId}/businesses/{businessId}/webhooks

POST /organizations/{orgId}/businesses/{businessId}/webhooks

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
urlstring (uri)yesAt most 2000 characters.
descriptionstringnoAt most 100 characters.
kindsstring[]yesAt least 1 items.

PATCH /organizations/{orgId}/businesses/{businessId}/webhooks/{endpointId}

Needs a write key.

ParameterInTypeRequiredNotes
endpointIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
descriptionstring or nullnoAt most 100 characters.
kindsstring[]noAt least 1 items.
enabledbooleanno

DELETE /organizations/{orgId}/businesses/{businessId}/webhooks/{endpointId}

Needs a write key.

ParameterInTypeRequiredNotes
endpointIdpathstringyes

POST /organizations/{orgId}/businesses/{businessId}/webhooks/{endpointId}/test

Needs a write key.

ParameterInTypeRequiredNotes
endpointIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/webhooks/{endpointId}/deliveries

ParameterInTypeRequiredNotes
endpointIdpathstringyes

Workflows

GET /organizations/{orgId}/businesses/{businessId}/workflows

POST /organizations/{orgId}/businesses/{businessId}/workflows

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
namestringyes1–120 characters.
triggerobjectyes
trigger.kindstringyesOne of asset_published.
trigger.assetTypestringnoOne of blog_post, email, ad_copy, landing_page, social_post.
stepsobject[]yes1–6 items.

PATCH /organizations/{orgId}/businesses/{businessId}/workflows/{workflowId}

Needs a write key.

ParameterInTypeRequiredNotes
workflowIdpathstringyes

Request body (JSON):

FieldTypeRequiredNotes
enabledbooleanyes

DELETE /organizations/{orgId}/businesses/{businessId}/workflows/{workflowId}

Needs a write key.

ParameterInTypeRequiredNotes
workflowIdpathstringyes

GET /organizations/{orgId}/businesses/{businessId}/workflow-runs

GET /organizations/{orgId}/businesses/{businessId}/autonomy

PUT /organizations/{orgId}/businesses/{businessId}/autonomy

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
scopestringnoOne of publish_asset, tool:read, tool:low, tool:high. Default "publish_asset".
modestringyesOne of ask_always, auto_with_digest, autopilot.
agentKeystring or nullnoOne of blog_writer, sales_copy, fb_ads.

DELETE /organizations/{orgId}/businesses/{businessId}/autonomy/grants

Needs a write key.

Request body (JSON):

FieldTypeRequiredNotes
scopestringyesOne of publish_asset, tool:read, tool:low, tool:high.
agentKeystringyesOne of blog_writer, sales_copy, fb_ads.

Something wrong or missing on this page? Tell us and we will fix it.