Run approved submissions as ads on the brand's own ad accounts, and see what each creator's work drives.
Campaigns
A campaign runs on one Meta, TikTok, Google, or Snapchat connection. Its creatives are approved submissions; creators earn what their program pays.
{
"name": "Spring launch – Meta",
"connection": "conn_02PEZI7pHWLT3UpakbRmfNB",
"destination": { "type": "website", "value": "https://acme.com/spring" },
"budget": { "daily": 5000 },
"audience": { "countries": ["US"], "ageMin": 21 },
"creatives": ["sub_14XA4WGiSOmaVI3B4QLm4Fs"],
"ad": { "primaryText": "Made for spring.", "callToAction": "shop_now" }
}
It's created on the ad platform paused; set status to live to start it, or send "launch": false to save it as ready without creating it. Pause, resume, or archive with status. A webhook reports when publishing finishes.
Ad defaults
PATCH /v1/ad-defaults sets what new campaigns start with: objective, Meta Advantage+ audience, naming, and tracking.
Tracking
tracking sets click tracking: urlParameters on every platform, a Google trackingUrlTemplate, and TikTok click and impression trackers. Change it on a live campaign with PATCH.
Ad sets and ads
GET /v1/ad-sets and GET /v1/ads list what's running. PATCH renames, pauses, or archives them; Meta and TikTok ad sets also take bidding and audience, including saved audiences and interests (GET /v1/ad-audiences, GET /v1/ad-interests). Copy any of them with POST …/copies.
Ad fields
GET /v1/ad-fields lists every setting each platform takes, with the platform's own name and docs.
Ad authorizations
To run a submission under the creator's own account (TikTok Spark or Meta Partnership ads), request an authorization with POST /v1/ad-authorizations; the creator grants it.
Analytics
GET /v1/analytics returns daily spend, revenue, clicks, and conversions between from and to, split by campaign, submission, creator, or platform.
Endpoints
/v1/analyticsGet daily ad results, or creators' organic results, optionally filtered and split by campaign, submission, creator or platform; as a creator, your own work's ad results across brands
lucra.analytics.retrieve({ query })Query parameters
fromstringrequiredtostringrequiredmodeenumpaid: ad results. organic: creators' own posts' views and engagement, for the last 90 days at most.
paidorganiccampaigncamp_…submissionsub_…programprog_…creatorcrtr_…platformenummetatiktokgooglesnapchatinstagramgroupstringSplit each day by campaign, submission (the creative), creator and/or platform, e.g. group=campaign,submission.
/v1/campaignsCreate and launch a campaign
lucra.campaigns.create({ body })Body
namestringrequiredobjectiveenumDefaults to the account's (GET /v1/ad-defaults), conversions unless set.
conversionstrafficawarenessdestinationobjectrequiredShow 2 child fieldsHide child fields
typestringrequiredvaluestring
budgetobjectrequiredbillingLimitintegerStop spending once the campaign has spent this much, in cents.
scheduleobjectrequiredShow 2 child fieldsHide child fields
startDatestringrequiredendDatestring
audienceobjectShow 5 child fieldsHide child fields
countriesenum[]USCAGBAUNZATBECZDKFIFRDEGRHUIEITNLNOPLPTROESSECHBRMXJPKRSGZASAAEageMinintegerageMaxintegergenderenumallfemalemaleexpandbooleanMeta: let it reach people beyond this audience when it expects better results (Advantage+ audience).
creativessub_…[]requiredadSetsobject[]How the creatives are split into ad sets; by default one ad per creative, packed into as few ad sets as the platform allows.
Show 4 child fieldsHide child fields
idadset_…An `adset_` ID from the campaign's `adSets`, to keep that ad set across edits; omit to add one.
namestringbudgetSharenumberIts share of the campaign budget, in percent; shares add up to 100.
adsobject[]requiredShow 3 child fieldsHide child fields
idad_…An `ad_` ID from the ad set's `ads`, to keep it.
creativesub_…requirednamestring
adobjectrequiredShow 3 child fieldsHide child fields
primaryTextstringrequiredcallToActionenumrequiredbook_nowcontact_usdownloadlearn_moreshop_nowsign_upsubscribeheadlinestring
optimizationEventenuminstallpurchasesubscriptiontrial_startinitiate_checkoutadd_to_cartview_contentcomplete_registrationleadcontactsettingsobjectShow 9 child fieldsHide child fields
pixelstringMeta, TikTok or Snapchat pixel ID in that platform's own format.
conversionstringMeta custom conversion ID, or Google conversion action resource name.
conversionGoalstringGoogle custom conversion goal resource name.
revenueConversionstringGoogle conversion action that reports revenue, for revenue-share campaigns.
appstringMeta or TikTok registered app ID, for app store destinations.
logostringGoogle: square logo asset resource name and business name, for website destinations.
businessNamestringtargetCpaintegerGoogle app campaigns: target cost per action in cents.
locationsstring[]TikTok location IDs.
trackingobjectShow 4 child fieldsHide child fields
urlParametersstringAdded to every click's landing page: Meta's URL parameters, Google's final URL suffix, appended to TikTok's landing page.
trackingUrlTemplatestringGoogle: the tracking template clicks go through.
clickTrackingUrlstringTikTok: your measurement partner's click tracker.
impressionTrackingUrlstringTikTok: your measurement partner's impression tracker.
connectionconn_…requiredidentityenumRun ads under the brand's identity (default) or the creator's.
brandcreatorlaunchbooleanCreate it on the ad platform now, paused until you PATCH status "live" (the default), or false to save it ready to create later.
Response20127 fieldsShow
idcamp_…namestringstatusenumdraftreadylivepausedneeds_attentionarchivedobjectiveenumconversionsawarenesstrafficengagementleadsapp_promotionsalesconnectionconn_…nullableplatformstringnullabledestinationobjectShow 2 child fieldsHide child fields
typeenumwebsitemobile_appios_app_storegoogle_playdeep_linkvaluestringnullable
budgetobjectIn cents.
currencystringLowercase ISO 4217 code, e.g. usd.
scheduleobjectShow 2 child fieldsHide child fields
startDatestringendDatestringnullable
audienceobjectShow 5 child fieldsHide child fields
countriesenum[]USCAGBAUNZATBECZDKFIFRDEGRHUIEITNLNOPLPTROESSECHBRMXJPKRSGZASAAEageMinnumbernullableageMaxnumbernullablegenderenumnullableallfemalemaleexpandboolean
adobjectShow 3 child fieldsHide child fields
primaryTextstringnullablecallToActionenumnullablebook_nowcontact_usdownloadlearn_moreshop_nowsign_upsubscribeheadlinestringnullable
optimizationEventenumnullableinstallpurchasesubscriptiontrial_startinitiate_checkoutadd_to_cartview_contentcomplete_registrationleadcontactsettingsanytrackinganyidentityenumbrandcreatorcreativessub_…[]adSetsobject[]The campaign's ad sets as planned: each one's share of the budget and its ads. Names can use {{variables}}.
Show 4 child fieldsHide child fields
idadset_…namestringbudgetSharenumberIn percent.
adsobject[]Show 3 child fieldsHide child fields
idad_…creativesub_…namestring
billingLimitnumbernullableThe campaign stops spending at this amount, in cents.
creatorPayobjectWhat creators earn, as their programs' pay set it when the campaign was saved.
Show 6 child fieldsHide child fields
modelenumad_spendattributed_revenueleadcreatorSharenumbernullableThe creator's share of spend or revenue, in percent.
feenumbernullableThe total usage fee on spend or revenue, in percent.
leadAmountintegernullableWhat a creator earns per lead, in cents.
capintegernullableThe most a creator earns from the campaign, in cents.
revenueEventstringnullable
platformsobject[]How each ad platform reports the campaign.
Show 3 child fieldsHide child fields
platformstringstatusstringerrorstringnullable
pendingChangeobjectnullableA change still settling: waiting for the brand's approval (PATCH `pendingChange: "approved"`), or running on the ad platforms.
Show 2 child fieldsHide child fields
actionstringstatusenumawaiting_approvalin_progress
partnerApprovalobjectnullableShow 4 child fieldsHide child fields
statusenumdraftpendingapprovedrejectedchanges_requestednotestringnullablerequestedAtstringnullablereviewedAtstringnullable
createdByPartneracct_…nullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/campaigns/:id/copiesCopy a campaign with its ad sets and ads, as a new campaign
lucra.campaigns.copies.create({ path: { id }, body })Path parameters
idstringrequired
Body
namestringDefaults to the source's name with " (copy)".
launchbooleanPublish the copy now, or (default) save it ready to launch with PATCH status "live".
Response20127 fieldsShow
idcamp_…namestringstatusenumdraftreadylivepausedneeds_attentionarchivedobjectiveenumconversionsawarenesstrafficengagementleadsapp_promotionsalesconnectionconn_…nullableplatformstringnullabledestinationobjectShow 2 child fieldsHide child fields
typeenumwebsitemobile_appios_app_storegoogle_playdeep_linkvaluestringnullable
budgetobjectIn cents.
currencystringLowercase ISO 4217 code, e.g. usd.
scheduleobjectShow 2 child fieldsHide child fields
startDatestringendDatestringnullable
audienceobjectShow 5 child fieldsHide child fields
countriesenum[]USCAGBAUNZATBECZDKFIFRDEGRHUIEITNLNOPLPTROESSECHBRMXJPKRSGZASAAEageMinnumbernullableageMaxnumbernullablegenderenumnullableallfemalemaleexpandboolean
adobjectShow 3 child fieldsHide child fields
primaryTextstringnullablecallToActionenumnullablebook_nowcontact_usdownloadlearn_moreshop_nowsign_upsubscribeheadlinestringnullable
optimizationEventenumnullableinstallpurchasesubscriptiontrial_startinitiate_checkoutadd_to_cartview_contentcomplete_registrationleadcontactsettingsanytrackinganyidentityenumbrandcreatorcreativessub_…[]adSetsobject[]The campaign's ad sets as planned: each one's share of the budget and its ads. Names can use {{variables}}.
Show 4 child fieldsHide child fields
idadset_…namestringbudgetSharenumberIn percent.
adsobject[]Show 3 child fieldsHide child fields
idad_…creativesub_…namestring
billingLimitnumbernullableThe campaign stops spending at this amount, in cents.
creatorPayobjectWhat creators earn, as their programs' pay set it when the campaign was saved.
Show 6 child fieldsHide child fields
modelenumad_spendattributed_revenueleadcreatorSharenumbernullableThe creator's share of spend or revenue, in percent.
feenumbernullableThe total usage fee on spend or revenue, in percent.
leadAmountintegernullableWhat a creator earns per lead, in cents.
capintegernullableThe most a creator earns from the campaign, in cents.
revenueEventstringnullable
platformsobject[]How each ad platform reports the campaign.
Show 3 child fieldsHide child fields
platformstringstatusstringerrorstringnullable
pendingChangeobjectnullableA change still settling: waiting for the brand's approval (PATCH `pendingChange: "approved"`), or running on the ad platforms.
Show 2 child fieldsHide child fields
actionstringstatusenumawaiting_approvalin_progress
partnerApprovalobjectnullableShow 4 child fieldsHide child fields
statusenumdraftpendingapprovedrejectedchanges_requestednotestringnullablerequestedAtstringnullablereviewedAtstringnullable
createdByPartneracct_…nullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/campaignsList campaigns
lucra.campaigns.list({ query })Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
statusenumdraftreadylivepausedneeds_attentionarchivedplatformenummetatiktokgooglesnapchatconnectionconn_…
Response200A page of items, 27 fields each, and nextCursorShow
idcamp_…namestringstatusenumdraftreadylivepausedneeds_attentionarchivedobjectiveenumconversionsawarenesstrafficengagementleadsapp_promotionsalesconnectionconn_…nullableplatformstringnullabledestinationobjectShow 2 child fieldsHide child fields
typeenumwebsitemobile_appios_app_storegoogle_playdeep_linkvaluestringnullable
budgetobjectIn cents.
currencystringLowercase ISO 4217 code, e.g. usd.
scheduleobjectShow 2 child fieldsHide child fields
startDatestringendDatestringnullable
audienceobjectShow 5 child fieldsHide child fields
countriesenum[]USCAGBAUNZATBECZDKFIFRDEGRHUIEITNLNOPLPTROESSECHBRMXJPKRSGZASAAEageMinnumbernullableageMaxnumbernullablegenderenumnullableallfemalemaleexpandboolean
adobjectShow 3 child fieldsHide child fields
primaryTextstringnullablecallToActionenumnullablebook_nowcontact_usdownloadlearn_moreshop_nowsign_upsubscribeheadlinestringnullable
optimizationEventenumnullableinstallpurchasesubscriptiontrial_startinitiate_checkoutadd_to_cartview_contentcomplete_registrationleadcontactsettingsanytrackinganyidentityenumbrandcreatorcreativessub_…[]adSetsobject[]The campaign's ad sets as planned: each one's share of the budget and its ads. Names can use {{variables}}.
Show 4 child fieldsHide child fields
idadset_…namestringbudgetSharenumberIn percent.
adsobject[]Show 3 child fieldsHide child fields
idad_…creativesub_…namestring
billingLimitnumbernullableThe campaign stops spending at this amount, in cents.
creatorPayobjectWhat creators earn, as their programs' pay set it when the campaign was saved.
Show 6 child fieldsHide child fields
modelenumad_spendattributed_revenueleadcreatorSharenumbernullableThe creator's share of spend or revenue, in percent.
feenumbernullableThe total usage fee on spend or revenue, in percent.
leadAmountintegernullableWhat a creator earns per lead, in cents.
capintegernullableThe most a creator earns from the campaign, in cents.
revenueEventstringnullable
platformsobject[]How each ad platform reports the campaign.
Show 3 child fieldsHide child fields
platformstringstatusstringerrorstringnullable
pendingChangeobjectnullableA change still settling: waiting for the brand's approval (PATCH `pendingChange: "approved"`), or running on the ad platforms.
Show 2 child fieldsHide child fields
actionstringstatusenumawaiting_approvalin_progress
partnerApprovalobjectnullableShow 4 child fieldsHide child fields
statusenumdraftpendingapprovedrejectedchanges_requestednotestringnullablerequestedAtstringnullablereviewedAtstringnullable
createdByPartneracct_…nullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/campaigns/:idGet a campaign
lucra.campaigns.retrieve({ path: { id } })Path parameters
idstringrequired
Response20027 fieldsShow
idcamp_…namestringstatusenumdraftreadylivepausedneeds_attentionarchivedobjectiveenumconversionsawarenesstrafficengagementleadsapp_promotionsalesconnectionconn_…nullableplatformstringnullabledestinationobjectShow 2 child fieldsHide child fields
typeenumwebsitemobile_appios_app_storegoogle_playdeep_linkvaluestringnullable
budgetobjectIn cents.
currencystringLowercase ISO 4217 code, e.g. usd.
scheduleobjectShow 2 child fieldsHide child fields
startDatestringendDatestringnullable
audienceobjectShow 5 child fieldsHide child fields
countriesenum[]USCAGBAUNZATBECZDKFIFRDEGRHUIEITNLNOPLPTROESSECHBRMXJPKRSGZASAAEageMinnumbernullableageMaxnumbernullablegenderenumnullableallfemalemaleexpandboolean
adobjectShow 3 child fieldsHide child fields
primaryTextstringnullablecallToActionenumnullablebook_nowcontact_usdownloadlearn_moreshop_nowsign_upsubscribeheadlinestringnullable
optimizationEventenumnullableinstallpurchasesubscriptiontrial_startinitiate_checkoutadd_to_cartview_contentcomplete_registrationleadcontactsettingsanytrackinganyidentityenumbrandcreatorcreativessub_…[]adSetsobject[]The campaign's ad sets as planned: each one's share of the budget and its ads. Names can use {{variables}}.
Show 4 child fieldsHide child fields
idadset_…namestringbudgetSharenumberIn percent.
adsobject[]Show 3 child fieldsHide child fields
idad_…creativesub_…namestring
billingLimitnumbernullableThe campaign stops spending at this amount, in cents.
creatorPayobjectWhat creators earn, as their programs' pay set it when the campaign was saved.
Show 6 child fieldsHide child fields
modelenumad_spendattributed_revenueleadcreatorSharenumbernullableThe creator's share of spend or revenue, in percent.
feenumbernullableThe total usage fee on spend or revenue, in percent.
leadAmountintegernullableWhat a creator earns per lead, in cents.
capintegernullableThe most a creator earns from the campaign, in cents.
revenueEventstringnullable
platformsobject[]How each ad platform reports the campaign.
Show 3 child fieldsHide child fields
platformstringstatusstringerrorstringnullable
pendingChangeobjectnullableA change still settling: waiting for the brand's approval (PATCH `pendingChange: "approved"`), or running on the ad platforms.
Show 2 child fieldsHide child fields
actionstringstatusenumawaiting_approvalin_progress
partnerApprovalobjectnullableShow 4 child fieldsHide child fields
statusenumdraftpendingapprovedrejectedchanges_requestednotestringnullablerequestedAtstringnullablereviewedAtstringnullable
createdByPartneracct_…nullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/campaigns/:idChange a campaign, its ad sets' budgets, or its status: launch, pause, resume, retry or archive
lucra.campaigns.update({ path: { id }, body })Path parameters
idstringrequired
Body
namestringobjectiveenumconversions (default) optimizes for `optimizationEvent`; traffic (link clicks) and awareness (reach) run on Meta websites (beta).
conversionstrafficawarenessdestinationobjectShow 2 child fieldsHide child fields
typestringrequiredvaluestring
budgetobjectbillingLimitintegerStop spending once the campaign has spent this much, in cents.
scheduleobjectShow 2 child fieldsHide child fields
startDatestringrequiredendDatestring
audienceobjectShow 5 child fieldsHide child fields
countriesenum[]USCAGBAUNZATBECZDKFIFRDEGRHUIEITNLNOPLPTROESSECHBRMXJPKRSGZASAAEageMinintegerageMaxintegergenderenumallfemalemaleexpandbooleanMeta: let it reach people beyond this audience when it expects better results (Advantage+ audience).
creativessub_…[]adSetsobject[]How the creatives are split into ad sets; by default one ad per creative, packed into as few ad sets as the platform allows.
Show 4 child fieldsHide child fields
idadset_…An `adset_` ID from the campaign's `adSets`, to keep that ad set across edits; omit to add one.
namestringbudgetSharenumberIts share of the campaign budget, in percent; shares add up to 100.
adsobject[]requiredShow 3 child fieldsHide child fields
idad_…An `ad_` ID from the ad set's `ads`, to keep it.
creativesub_…requirednamestring
adobjectShow 3 child fieldsHide child fields
primaryTextstringrequiredcallToActionenumrequiredbook_nowcontact_usdownloadlearn_moreshop_nowsign_upsubscribeheadlinestring
optimizationEventenuminstallpurchasesubscriptiontrial_startinitiate_checkoutadd_to_cartview_contentcomplete_registrationleadcontactsettingsobjectShow 9 child fieldsHide child fields
pixelstringMeta, TikTok or Snapchat pixel ID in that platform's own format.
conversionstringMeta custom conversion ID, or Google conversion action resource name.
conversionGoalstringGoogle custom conversion goal resource name.
revenueConversionstringGoogle conversion action that reports revenue, for revenue-share campaigns.
appstringMeta or TikTok registered app ID, for app store destinations.
logostringGoogle: square logo asset resource name and business name, for website destinations.
businessNamestringtargetCpaintegerGoogle app campaigns: target cost per action in cents.
locationsstring[]TikTok location IDs.
trackingobjectShow 4 child fieldsHide child fields
urlParametersstringAdded to every click's landing page: Meta's URL parameters, Google's final URL suffix, appended to TikTok's landing page.
trackingUrlTemplatestringGoogle: the tracking template clicks go through.
clickTrackingUrlstringTikTok: your measurement partner's click tracker.
impressionTrackingUrlstringTikTok: your measurement partner's impression tracker.
statusenumlive publishes a ready campaign, resumes a paused one, or retries a launch that needs attention.
pausedlivearchivedadSetBudgetsobject[]New budgets, in cents, for launched Meta or Snapchat ad sets, by their IDs from the campaign's `adSets` (GET /v1/campaigns/:id).
Show 2 child fieldsHide child fields
idadset_…requiredbudgetintegerrequired
pendingChangestringAs the brand: approves the change a partner made, which `pendingChange` shows awaiting approval.
approvedversioninteger
Response20027 fieldsShow
idcamp_…namestringstatusenumdraftreadylivepausedneeds_attentionarchivedobjectiveenumconversionsawarenesstrafficengagementleadsapp_promotionsalesconnectionconn_…nullableplatformstringnullabledestinationobjectShow 2 child fieldsHide child fields
typeenumwebsitemobile_appios_app_storegoogle_playdeep_linkvaluestringnullable
budgetobjectIn cents.
currencystringLowercase ISO 4217 code, e.g. usd.
scheduleobjectShow 2 child fieldsHide child fields
startDatestringendDatestringnullable
audienceobjectShow 5 child fieldsHide child fields
countriesenum[]USCAGBAUNZATBECZDKFIFRDEGRHUIEITNLNOPLPTROESSECHBRMXJPKRSGZASAAEageMinnumbernullableageMaxnumbernullablegenderenumnullableallfemalemaleexpandboolean
adobjectShow 3 child fieldsHide child fields
primaryTextstringnullablecallToActionenumnullablebook_nowcontact_usdownloadlearn_moreshop_nowsign_upsubscribeheadlinestringnullable
optimizationEventenumnullableinstallpurchasesubscriptiontrial_startinitiate_checkoutadd_to_cartview_contentcomplete_registrationleadcontactsettingsanytrackinganyidentityenumbrandcreatorcreativessub_…[]adSetsobject[]The campaign's ad sets as planned: each one's share of the budget and its ads. Names can use {{variables}}.
Show 4 child fieldsHide child fields
idadset_…namestringbudgetSharenumberIn percent.
adsobject[]Show 3 child fieldsHide child fields
idad_…creativesub_…namestring
billingLimitnumbernullableThe campaign stops spending at this amount, in cents.
creatorPayobjectWhat creators earn, as their programs' pay set it when the campaign was saved.
Show 6 child fieldsHide child fields
modelenumad_spendattributed_revenueleadcreatorSharenumbernullableThe creator's share of spend or revenue, in percent.
feenumbernullableThe total usage fee on spend or revenue, in percent.
leadAmountintegernullableWhat a creator earns per lead, in cents.
capintegernullableThe most a creator earns from the campaign, in cents.
revenueEventstringnullable
platformsobject[]How each ad platform reports the campaign.
Show 3 child fieldsHide child fields
platformstringstatusstringerrorstringnullable
pendingChangeobjectnullableA change still settling: waiting for the brand's approval (PATCH `pendingChange: "approved"`), or running on the ad platforms.
Show 2 child fieldsHide child fields
actionstringstatusenumawaiting_approvalin_progress
partnerApprovalobjectnullableShow 4 child fieldsHide child fields
statusenumdraftpendingapprovedrejectedchanges_requestednotestringnullablerequestedAtstringnullablereviewedAtstringnullable
createdByPartneracct_…nullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/ad-fieldsList the settings each ad platform takes for campaigns, ad sets and ads
lucra.adFields.list({ query })Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
platformenumAlso returns the universal settings unless `universal`.
metatiktokgooglesnapchatuniversalresourceenumcampaignad_setadcreativestatusenumimplementedplannedprovider_gatedread_onlydeprecated
/v1/ad-defaultsGet what the account's new campaigns start with
lucra.adDefaults.retrieve()/v1/ad-defaultsChange what the account's new campaigns start with
lucra.adDefaults.update({ body })Body
objectiveenumnullableconversionstrafficawarenessaudienceExpansionbooleannullablenamingobjectShow 2 child fieldsHide child fields
adSetstringnullableadstringnullable
trackingobjectnullableShow 4 child fieldsHide child fields
urlParametersstringAdded to every click's landing page: Meta's URL parameters, Google's final URL suffix, appended to TikTok's landing page.
trackingUrlTemplatestringGoogle: the tracking template clicks go through.
clickTrackingUrlstringTikTok: your measurement partner's click tracker.
impressionTrackingUrlstringTikTok: your measurement partner's impression tracker.
/v1/ad-audiencesList an ad account's saved audiences (Meta custom and lookalike audiences, TikTok audiences)
lucra.adAudiences.list({ query })Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
connectionconn_…requiredA Meta or TikTok ad account `conn_` from GET /v1/connections.
/v1/ad-interestsSearch the interests an ad set can target on Meta or TikTok
lucra.adInterests.list({ query })Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
connectionconn_…requiredA Meta or TikTok ad account `conn_` from GET /v1/connections.
qstringrequiredWhat to search for, e.g. running.
/v1/ad-setsList ad sets (Meta ad sets, TikTok and Google ad groups, Snapchat ad squads)
lucra.adSets.list({ query })Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
campaigncamp_…platformenummetatiktokgooglesnapchatstatusenumdraftactivepausedarchiveddeletedunknown
/v1/ad-sets/:idGet an ad set
lucra.adSets.retrieve({ path: { id } })Path parameters
idstringrequired
/v1/ad-sets/:idRename, pause, resume, archive or re-budget an ad set on its platform
lucra.adSets.update({ path: { id }, body })Path parameters
idstringrequired
Body
namestringstatusenumactive resumes it, paused pauses it, archived stops and archives it.
activepausedarchivedbudgetobjectIn cents. Meta ad sets only: TikTok and Google budgets live on the campaign.
biddinganyMeta and TikTok ad sets (beta).
audienceanyMeta and TikTok ad sets (beta).
/v1/ad-sets/:id/copiesCopy an ad set (and run it paused) in its campaign or another one
lucra.adSets.copies.create({ path: { id }, body })Path parameters
idstringrequired
Body
namestringDefaults to the source's name with " (copy)".
intocamp_…Another launched campaign on the same ad account; defaults to the source's own.
Response2021 fieldsShow
idstringThe copy's ID; it reads back from GET once the platform confirms it.
/v1/adsList ads
lucra.ads.list({ query })Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
campaigncamp_…platformenummetatiktokgooglesnapchatstatusenumdraftactivepausedarchiveddeletedunknownadSetadset_…
/v1/ads/:idGet an ad
lucra.ads.retrieve({ path: { id } })Path parameters
idstringrequired
/v1/ads/:idRename, pause, resume or archive an ad on its platform
lucra.ads.update({ path: { id }, body })Path parameters
idstringrequired
Body
namestringstatusenumactive resumes it, paused pauses it, archived stops and archives it.
activepausedarchived
/v1/ads/:id/copiesCopy an ad (and run it paused) in its ad set or another one
lucra.ads.copies.create({ path: { id }, body })Path parameters
idstringrequired
Body
namestringDefaults to the source's name with " (copy)".
intoadset_…Another launched ad set on the same ad account; defaults to the source's own.
Response2021 fieldsShow
idstringThe copy's ID; it reads back from GET once the platform confirms it.
/v1/ad-authorizationsList ad authorizations: a brand's requests, or, as a creator, the ones asked of you
lucra.adAuthorizations.list({ query })Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
submissionsub_…platformenumtiktokmetastatusstringOne or more, comma-separated: requested, granted, revoked, expired.
Response200A page of items, 14 fields each, and nextCursorShow
idadauth_…submissionsub_…creatorcrtr_…accountacct_…The brand that asks.
brandNamestringplatformenumtiktokmetastatusenumrequested by the brand, granted by the creator, revoked by either; expired once `expiresAt` passes.
requestedgrantedrevokedexpiredcodestringnullableThe TikTok Spark code the creator granted with; null for Meta and until granted.
authorizedAtstringnullableexpiresAtstringnullablerevokedAtstringnullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/ad-authorizations/:idGet an ad authorization
lucra.adAuthorizations.retrieve({ path: { id } })Path parameters
idstringrequired
Response20014 fieldsShow
idadauth_…submissionsub_…creatorcrtr_…accountacct_…The brand that asks.
brandNamestringplatformenumtiktokmetastatusenumrequested by the brand, granted by the creator, revoked by either; expired once `expiresAt` passes.
requestedgrantedrevokedexpiredcodestringnullableThe TikTok Spark code the creator granted with; null for Meta and until granted.
authorizedAtstringnullableexpiresAtstringnullablerevokedAtstringnullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/ad-authorizationsAsk a submission's creator to authorize it as a TikTok Spark or Meta partnership ad
lucra.adAuthorizations.create({ body })Body
submissionsub_…requiredAn approved submission of a creator.
platformenumrequiredtiktokmeta
Response20114 fieldsShow
idadauth_…submissionsub_…creatorcrtr_…accountacct_…The brand that asks.
brandNamestringplatformenumtiktokmetastatusenumrequested by the brand, granted by the creator, revoked by either; expired once `expiresAt` passes.
requestedgrantedrevokedexpiredcodestringnullableThe TikTok Spark code the creator granted with; null for Meta and until granted.
authorizedAtstringnullableexpiresAtstringnullablerevokedAtstringnullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/ad-authorizations/:idGrant an ad authorization as its creator, or revoke it
lucra.adAuthorizations.update({ path: { id }, body })Path parameters
idstringrequired
Body
statusenumrequiredgrantedrevokedcodestringWith granted on TikTok: the Spark code the creator generated for the post.
expiresAtstringWith granted: when the creator's authorization ends, as they set it on the platform.
versioninteger
Response20014 fieldsShow
idadauth_…submissionsub_…creatorcrtr_…accountacct_…The brand that asks.
brandNamestringplatformenumtiktokmetastatusenumrequested by the brand, granted by the creator, revoked by either; expired once `expiresAt` passes.
requestedgrantedrevokedexpiredcodestringnullableThe TikTok Spark code the creator granted with; null for Meta and until granted.
authorizedAtstringnullableexpiresAtstringnullablerevokedAtstringnullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring