A program is a brief with pay terms. Creators join, submit work, and get paid on approval or performance.
Create
{
"name": "Spring launch",
"type": "organic",
"visibility": "network",
"brief": "Show the jacket on a real trail run.",
"pay": {
"rules": [{ "per": "view", "amount": 800, "unit": 1000 }],
"cap": 50000,
"schedule": { "after": "measurement", "days": 7 }
},
"promoted": { "products": ["prod_04bst9MGXqblfqHhbR1iGGL"] },
"agreements": ["agr_0HxY6vD1bN4tK8qLm2Rz9sW"]
}
typeisorganic(paid on creators' posts) orpaid_ads(paid on ads made from their work).visibilityisinviteornetwork.promoted.productsare what creators can request samples of.- Creating one needs a payment method (
409 requirement_payment_method).
PATCH changes anything; send status: "archived" to archive.
Pay
| Type | Paid per result | Schedule |
|---|---|---|
paid_ads | A percent of ad spend or revenue, or per lead | As results come in |
organic | Per 1,000 views, per post | After a 1–30 day measurement |
Add flat pay per approved submission, per install, or per click, under a cap. Pay that can't be paid as set returns 422 invalid_pay; see payments.
Changing a program's pay creates a new version. Creators already in it move to it on their next action in the program. PATCH /v1/applications/:id with pay sets one creator's pay.
Applications
A brand adds a creator with { "program", "creator" }: they join approved and are notified. A creator applies to a network program with { "program" }.
Agreements are accepted by the action itself: applying or joining accepts the program's agreements, which you show under the button ("By applying you agree to …"). There's no separate signing step. A creator added by a brand presses Join to accept them.
Review with status: approved, rejected, or pending to reopen.
Agreements
Publish a PDF with POST /v1/agreements, then list it on programs. GET /v1/agreements/acceptances lists who accepted what.
Posts
GET /v1/posts lists the creator posts your organic programs pay for, with views and earnings.
Endpoints
/v1/applicationsList applications
lucra.applications.list({ query })Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
programprog_…creatorcrtr_…statusstringOne or more, comma-separated: pending, approved, rejected, withdrawn.
Response200A page of items, 14 fields each, and nextCursorShow
idappl_…programprog_…creatorcrtr_…statusenumpendingapprovedrejectedwithdrawnpayobjectnullablePay the brand set for this creator over the program's (PATCH `pay`); null when the program's pay applies. `acceptedAt` is set by the creator's next action in the program.
Show 2 child fieldsHide child fields
overrideobjectShow 3 child fieldsHide child fields
rulesobject[]capintegernullableThe most one creator is paid per period, in cents; null or left out for no cap.
scheduleobject
acceptedAtstringnullable
payVersionintegernullableThe program pay version this creator is paid on; null until admitted. Below the program's `payVersion` until their next action in the program accepts the newer pay.
payStatusenumpast_due once a charge for this creator's program pay failed its last retry; back to current when a retry succeeds on an updated payment method.
currentpast_dueagreementsRequiredbooleanThe brand invited the creator, who still has to accept the program's agreements; the application is approved once they do.
reviewedAtstringnullableagreementsany[]On GET /v1/applications/:id as the creator while `agreementsRequired`: what joining accepts.
partnerFeeobjectnullableWith `agreements`: the share of the creator's pay their partner takes, if any.
Show 2 child fieldsHide child fields
partnerstringpercentnumber
versionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/applications/:idGet an application
lucra.applications.retrieve({ path: { id } })Path parameters
idstringrequired
Response20014 fieldsShow
idappl_…programprog_…creatorcrtr_…statusenumpendingapprovedrejectedwithdrawnpayobjectnullablePay the brand set for this creator over the program's (PATCH `pay`); null when the program's pay applies. `acceptedAt` is set by the creator's next action in the program.
Show 2 child fieldsHide child fields
overrideobjectShow 3 child fieldsHide child fields
rulesobject[]capintegernullableThe most one creator is paid per period, in cents; null or left out for no cap.
scheduleobject
acceptedAtstringnullable
payVersionintegernullableThe program pay version this creator is paid on; null until admitted. Below the program's `payVersion` until their next action in the program accepts the newer pay.
payStatusenumpast_due once a charge for this creator's program pay failed its last retry; back to current when a retry succeeds on an updated payment method.
currentpast_dueagreementsRequiredbooleanThe brand invited the creator, who still has to accept the program's agreements; the application is approved once they do.
reviewedAtstringnullableagreementsany[]On GET /v1/applications/:id as the creator while `agreementsRequired`: what joining accepts.
partnerFeeobjectnullableWith `agreements`: the share of the creator's pay their partner takes, if any.
Show 2 child fieldsHide child fields
partnerstringpercentnumber
versionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/applicationsInvite a creator to a program, or apply as one
lucra.applications.create({ body })Body
programprog_…requiredcreatorcrtr_…
Response20114 fieldsShow
idappl_…programprog_…creatorcrtr_…statusenumpendingapprovedrejectedwithdrawnpayobjectnullablePay the brand set for this creator over the program's (PATCH `pay`); null when the program's pay applies. `acceptedAt` is set by the creator's next action in the program.
Show 2 child fieldsHide child fields
overrideobjectShow 3 child fieldsHide child fields
rulesobject[]capintegernullableThe most one creator is paid per period, in cents; null or left out for no cap.
scheduleobject
acceptedAtstringnullable
payVersionintegernullableThe program pay version this creator is paid on; null until admitted. Below the program's `payVersion` until their next action in the program accepts the newer pay.
payStatusenumpast_due once a charge for this creator's program pay failed its last retry; back to current when a retry succeeds on an updated payment method.
currentpast_dueagreementsRequiredbooleanThe brand invited the creator, who still has to accept the program's agreements; the application is approved once they do.
reviewedAtstringnullableagreementsany[]On GET /v1/applications/:id as the creator while `agreementsRequired`: what joining accepts.
partnerFeeobjectnullableWith `agreements`: the share of the creator's pay their partner takes, if any.
Show 2 child fieldsHide child fields
partnerstringpercentnumber
versionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/applications/:idApprove, reject or reopen an application, or set the creator's pay; as the creator, withdraw it or accept an invitation (approved)
lucra.applications.update({ path: { id }, body })Path parameters
idstringrequired
Body
statusenumpending reopens a decided application for review; a creator withdraws their own with withdrawn, or joins a program they're invited to with approved, accepting its agreements.
pendingapprovedrejectedwithdrawnpayobjectnullableMerged over the program's pay for this creator; null returns them to the program's pay.
Show 3 child fieldsHide child fields
rulesobject[]capintegernullableThe most one creator is paid per period, in cents; null or left out for no cap.
scheduleobject
versioninteger
Response20014 fieldsShow
idappl_…programprog_…creatorcrtr_…statusenumpendingapprovedrejectedwithdrawnpayobjectnullablePay the brand set for this creator over the program's (PATCH `pay`); null when the program's pay applies. `acceptedAt` is set by the creator's next action in the program.
Show 2 child fieldsHide child fields
overrideobjectShow 3 child fieldsHide child fields
rulesobject[]capintegernullableThe most one creator is paid per period, in cents; null or left out for no cap.
scheduleobject
acceptedAtstringnullable
payVersionintegernullableThe program pay version this creator is paid on; null until admitted. Below the program's `payVersion` until their next action in the program accepts the newer pay.
payStatusenumpast_due once a charge for this creator's program pay failed its last retry; back to current when a retry succeeds on an updated payment method.
currentpast_dueagreementsRequiredbooleanThe brand invited the creator, who still has to accept the program's agreements; the application is approved once they do.
reviewedAtstringnullableagreementsany[]On GET /v1/applications/:id as the creator while `agreementsRequired`: what joining accepts.
partnerFeeobjectnullableWith `agreements`: the share of the creator's pay their partner takes, if any.
Show 2 child fieldsHide child fields
partnerstringpercentnumber
versionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/agreements/acceptancesList creators' acceptances of your agreements; as a creator, the ones you accepted and the ones waiting on you
lucra.agreements.acceptances.list({ query })Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
agreementagr_…creatorcrtr_…statusenumpending: offers and invitations waiting on a creator; only a creator lists these.
acceptedpending
Response200A page of items, 13 fields each, and nextCursorShow
idagac_…statusenumacceptedpendingaccountacct_…The brand whose agreement it is.
brandNamestringcreatorcrtr_…creatorNamestringnullablecontextenumcreator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissionprogramprog_…nullableretainerret_…nullabletitlestringdocumentanynullableThe version accepted; null while pending.
acceptedAtstringnullablecreatedAtstring
/v1/agreementsList agreements
lucra.agreements.list({ query })Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
statusstringOne or more, comma-separated: active, archived.
Response200A page of items, 11 fields each, and nextCursorShow
idagr_…titlestringdescriptionstringnullablestatusenumactivearchivedapplicabilityenum[]Where every creator must accept it: creator_relationship, program_application, program_enrollment, retainer or content_submission.
creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissionlatestVersionobjectnullableEvery version: GET /v1/agreements/:id/versions.
Show 9 child fieldsHide child fields
agreementagr_…versionintegerfilefile_…nullablefileNamestringsizeintegersha256stringapplicabilityenum[]creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissioncreatedAtstringurlstringnullableA short-lived link to the PDF.
acceptedCountintegerCreators who accepted a version; each acceptance: GET /v1/agreements/acceptances?agreement=…
pendingCountintegerversionintegerSend it back as `version` to reject a change based on a stale read.
createdAtstringupdatedAtstring
/v1/agreements/:idGet an agreement
lucra.agreements.retrieve({ path: { id } })Path parameters
idstringrequired
Response20011 fieldsShow
idagr_…titlestringdescriptionstringnullablestatusenumactivearchivedapplicabilityenum[]Where every creator must accept it: creator_relationship, program_application, program_enrollment, retainer or content_submission.
creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissionlatestVersionobjectnullableEvery version: GET /v1/agreements/:id/versions.
Show 9 child fieldsHide child fields
agreementagr_…versionintegerfilefile_…nullablefileNamestringsizeintegersha256stringapplicabilityenum[]creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissioncreatedAtstringurlstringnullableA short-lived link to the PDF.
acceptedCountintegerCreators who accepted a version; each acceptance: GET /v1/agreements/acceptances?agreement=…
pendingCountintegerversionintegerSend it back as `version` to reject a change based on a stale read.
createdAtstringupdatedAtstring
/v1/agreements/:id/versionsList an agreement's versions, newest first
lucra.agreements.versions.list({ path: { id }, query })Path parameters
idstringrequired
Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
Response200A page of items, 9 fields each, and nextCursorShow
agreementagr_…versionintegerfilefile_…nullablefileNamestringsizeintegersha256stringapplicabilityenum[]creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissioncreatedAtstringurlstringnullableA short-lived link to the PDF.
/v1/agreements/:id/versions/:numberGet a version of an agreement by its number
lucra.agreements.versions.retrieve({ path: { id, number } })Path parameters
idstringrequirednumberstringrequired
Response2009 fieldsShow
agreementagr_…versionintegerfilefile_…nullablefileNamestringsizeintegersha256stringapplicabilityenum[]creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissioncreatedAtstringurlstringnullableA short-lived link to the PDF.
/v1/agreementsPublish an agreement
lucra.agreements.create({ body })Body
filefile_…requiredA ready PDF uploaded with POST /v1/files?purpose=agreement.
titlestringrequireddescriptionstringnullableapplicabilityenum[]Where every creator must accept it; empty (the default) for an agreement only the programs that list it require.
creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submission
Response20111 fieldsShow
idagr_…titlestringdescriptionstringnullablestatusenumactivearchivedapplicabilityenum[]Where every creator must accept it: creator_relationship, program_application, program_enrollment, retainer or content_submission.
creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissionlatestVersionobjectnullableEvery version: GET /v1/agreements/:id/versions.
Show 9 child fieldsHide child fields
agreementagr_…versionintegerfilefile_…nullablefileNamestringsizeintegersha256stringapplicabilityenum[]creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissioncreatedAtstringurlstringnullableA short-lived link to the PDF.
acceptedCountintegerCreators who accepted a version; each acceptance: GET /v1/agreements/acceptances?agreement=…
pendingCountintegerversionintegerSend it back as `version` to reject a change based on a stale read.
createdAtstringupdatedAtstring
/v1/agreements/:id/versionsPublish a new version of an agreement
lucra.agreements.versions.create({ path: { id }, body })Path parameters
idstringrequired
Body
filefile_…requiredA ready PDF uploaded with POST /v1/files?purpose=agreement.
titlestringrequireddescriptionstringnullableapplicabilityenum[]Where every creator must accept it; empty (the default) for an agreement only the programs that list it require.
creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissionversioninteger
Response20111 fieldsShow
idagr_…titlestringdescriptionstringnullablestatusenumactivearchivedapplicabilityenum[]Where every creator must accept it: creator_relationship, program_application, program_enrollment, retainer or content_submission.
creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissionlatestVersionobjectnullableEvery version: GET /v1/agreements/:id/versions.
Show 9 child fieldsHide child fields
agreementagr_…versionintegerfilefile_…nullablefileNamestringsizeintegersha256stringapplicabilityenum[]creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissioncreatedAtstringurlstringnullableA short-lived link to the PDF.
acceptedCountintegerCreators who accepted a version; each acceptance: GET /v1/agreements/acceptances?agreement=…
pendingCountintegerversionintegerSend it back as `version` to reject a change based on a stale read.
createdAtstringupdatedAtstring
/v1/agreements/:idChange where an agreement is required, or archive it
lucra.agreements.update({ path: { id }, body })Path parameters
idstringrequired
Body
applicabilityenum[]creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissionstatusstringarchivedversioninteger
Response20011 fieldsShow
idagr_…titlestringdescriptionstringnullablestatusenumactivearchivedapplicabilityenum[]Where every creator must accept it: creator_relationship, program_application, program_enrollment, retainer or content_submission.
creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissionlatestVersionobjectnullableEvery version: GET /v1/agreements/:id/versions.
Show 9 child fieldsHide child fields
agreementagr_…versionintegerfilefile_…nullablefileNamestringsizeintegersha256stringapplicabilityenum[]creator_relationshipprogram_applicationprogram_enrollmentretainercontent_submissioncreatedAtstringurlstringnullableA short-lived link to the PDF.
acceptedCountintegerCreators who accepted a version; each acceptance: GET /v1/agreements/acceptances?agreement=…
pendingCountintegerversionintegerSend it back as `version` to reject a change based on a stale read.
createdAtstringupdatedAtstring
/v1/postsList creators' posts in organic programs
lucra.posts.list({ query })Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
programprog_…creatorcrtr_…platformenuminstagramtiktokstatusstringDefaults to every status but archived.
Response200A page of items, 26 fields each, and nextCursorShow
idpost_…submissionsub_…creatorcrtr_…programprog_…connectionconn_…nullabletitlestringcreatorNamestringhandlestringplatformenuminstagramtiktokprogramNamestringproductprod_…nullableurlstringnullablevideoUrlstringnullablethumbnailUrlstringnullablestatusenumtracking (views being measured), ready_for_review, approved (reviewed; its payment waits on approval), payment_approved, paid or rejected; archived once hidden from the brand's view.
trackingready_for_reviewapprovedpayment_approvedpaidrejectedarchivedconfidenceenumThe fraud check on the post's views.
looks_goodneeds_reviewnot_enough_datareasonstringamountintegerWhat the creator earns (net); an estimate while the post is tracking.
currencystringLowercase ISO 4217 code, e.g. usd.
eligibleViewsnumbernullabletagsobject[]Each tag with the color it was assigned with.
Show 2 child fieldsHide child fields
namestringcolorenumgreydark_greypurpletealgreenyelloworangepink
dailyobject[]Show 6 child fieldsHide child fields
datestringviewsnumberengagementsnumbernullablelikesnumbernullablecommentsnumbernullablesharesnumbernullable
evidenceobjectOn GET /v1/posts/:id: the claim's measurement windows, hourly snapshots, risk reasons, review history and payout account status.
versionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/posts/:idGet a post with its claim evidence
lucra.posts.retrieve({ path: { id } })Path parameters
idstringrequired
Response20026 fieldsShow
idpost_…submissionsub_…creatorcrtr_…programprog_…connectionconn_…nullabletitlestringcreatorNamestringhandlestringplatformenuminstagramtiktokprogramNamestringproductprod_…nullableurlstringnullablevideoUrlstringnullablethumbnailUrlstringnullablestatusenumtracking (views being measured), ready_for_review, approved (reviewed; its payment waits on approval), payment_approved, paid or rejected; archived once hidden from the brand's view.
trackingready_for_reviewapprovedpayment_approvedpaidrejectedarchivedconfidenceenumThe fraud check on the post's views.
looks_goodneeds_reviewnot_enough_datareasonstringamountintegerWhat the creator earns (net); an estimate while the post is tracking.
currencystringLowercase ISO 4217 code, e.g. usd.
eligibleViewsnumbernullabletagsobject[]Each tag with the color it was assigned with.
Show 2 child fieldsHide child fields
namestringcolorenumgreydark_greypurpletealgreenyelloworangepink
dailyobject[]Show 6 child fieldsHide child fields
datestringviewsnumberengagementsnumbernullablelikesnumbernullablecommentsnumbernullablesharesnumbernullable
evidenceobjectOn GET /v1/posts/:id: the claim's measurement windows, hourly snapshots, risk reasons, review history and payout account status.
versionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/posts/:idTag or archive a post
lucra.posts.update({ path: { id }, body })Path parameters
idstringrequired
Body
versionintegertagobjectShow 2 child fieldsHide child fields
namestringrequiredcolorenumrequiredgreydark_greypurpletealgreenyelloworangepink
assignedbooleanWith tag: add (true) or remove (false) it.
statusstringHides the post from the brand's view.
archived
Response20026 fieldsShow
idpost_…submissionsub_…creatorcrtr_…programprog_…connectionconn_…nullabletitlestringcreatorNamestringhandlestringplatformenuminstagramtiktokprogramNamestringproductprod_…nullableurlstringnullablevideoUrlstringnullablethumbnailUrlstringnullablestatusenumtracking (views being measured), ready_for_review, approved (reviewed; its payment waits on approval), payment_approved, paid or rejected; archived once hidden from the brand's view.
trackingready_for_reviewapprovedpayment_approvedpaidrejectedarchivedconfidenceenumThe fraud check on the post's views.
looks_goodneeds_reviewnot_enough_datareasonstringamountintegerWhat the creator earns (net); an estimate while the post is tracking.
currencystringLowercase ISO 4217 code, e.g. usd.
eligibleViewsnumbernullabletagsobject[]Each tag with the color it was assigned with.
Show 2 child fieldsHide child fields
namestringcolorenumgreydark_greypurpletealgreenyelloworangepink
dailyobject[]Show 6 child fieldsHide child fields
datestringviewsnumberengagementsnumbernullablelikesnumbernullablecommentsnumbernullablesharesnumbernullable
evidenceobjectOn GET /v1/posts/:id: the claim's measurement windows, hourly snapshots, risk reasons, review history and payout account status.
versionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/programsList programs: your own (archived ones only with status=archived), or with scope=network the open programs on the Lucra Network
lucra.programs.list({ query })Query parameters
limitintegercursorstringcreatedAfterstringOnly items created at or after this time.
createdBeforestringOnly items created before this time.
scopestringThe Lucra Network's open programs instead of your own.
networkvisibilityenuminvitenetworkstatusenumdraftopenpausedclosedarchived
Response200A page of items, 35 fields each, and nextCursorShow
idprog_…accountacct_…The brand that runs the program.
brandNamestringThe brand's display name. Network programs are seen by creators who can't read the brand's account.
brandAvatarUrlstringnullableA short-lived link to the brand's picture.
namestringtypeenumorganicpaid_adsstatusenumdraftopenpausedclosedarchivedvisibilityenuminvite: creators the brand invites; network: any creator can find it and apply.
invitenetworkbriefstringnullableWhat creators read before applying.
platformsenum[]instagramtiktokpaidSocialPlatformsenum[]instagramtiktokallowManualOrganicUploadbooleanallowPaidPromotionbooleanallowPaidSocialUploadsbooleanrequireAdAuthorizationbooleanCreators grant an ad authorization (a TikTok Spark code or a Meta partnership) before a submission runs as an ad.
submissionLimitsobjectShow 4 child fieldsHide child fields
modeenumlimitedunlimitedmaxnumberconcurrentModeenumlimitedunlimitedconcurrentMaxnumber
payobjectWhat creators earn. A creator reading the program sees their own pay, with any terms the brand set for them.
Show 5 child fieldsHide child fields
rulesobject[]baseintegerGuaranteed each period, in cents.
capintegernullableThe most one creator is paid per period, in cents; null or left out for no cap.
scheduleobjectapprovalenumautomatic pays each period on its own; manual waits for the brand to approve the calculated amount.
automaticmanual
paySummarystringThe pay in plain English, ready to show.
payVersionintegerThe pay's version, bumped by each pay edit. Admitted creators move to it on their next action in the program; each application shows the version it's on.
payIssuesobject[]Ways the program's pay can't be paid as set, for the brand to fix; it keeps paying as it does until then. Empty when there are none, and on programs seen on the network.
Show 3 child fieldsHide child fields
codeenumpay_invalid_valuepay_cap_zeropay_cap_below_amountpay_cap_requiredpay_base_needs_periodpay_schedule_mismatchpay_duplicate_rulepay_scope_invalidpay_exceeds_budgetpay_primary_missingpay_primary_changedpay_program_unsupportedpathstringmessagestring
promotedobjectShow 4 child fieldsHide child fields
typeenumnullableappofferotherproductsitenamestringnullableurlstringnullableproductsprod_…[]Catalog products, first one primary.
briefFilesobject[]Show 6 child fieldsHide child fields
filefile_…fileNamestringcontentTypestringsizenumberurlstringnullablepreviewobjectnullableShow 3 child fieldsHide child fields
urlstringcontentTypestringnullablesizenumbernullable
referenceVideosobject[]Show 7 child fieldsHide child fields
filefile_…fileNamestringcontentTypestringsizenumberurlstringnullablewidthnumbernullableheightnumbernullable
agreementsany[]The agreements applying accepts: each one's current version.
submissionAgreementsany[]The agreements submitting work to the program accepts.
currencystringLowercase ISO 4217 code, e.g. usd.
budgetobjectnullableThe brand's own numbers; null on programs seen on the network.
Show 3 child fieldsHide child fields
amountnumbernullableThe planned budget.
reservednumbernullableFunds held from the balance for the program's creators.
feeCapnumbernullableThe most a paid-ads program's fees may take from the reserved funds; null until funds are reserved.
adSpendobjectnullableShow 2 child fieldsHide child fields
totalnumberbyPlatformobject[]Show 2 child fieldsHide child fields
platformstringamountnumber
partnerApprovalobjectnullableShow 3 child fieldsHide child fields
statusstringnotestringnullablerequestedAtstringnullable
createdByPartneracct_…nullablestartsAtstringnullableendsAtstringnullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/programs/:idGet a program
lucra.programs.retrieve({ path: { id } })Path parameters
idstringrequired
Response20035 fieldsShow
idprog_…accountacct_…The brand that runs the program.
brandNamestringThe brand's display name. Network programs are seen by creators who can't read the brand's account.
brandAvatarUrlstringnullableA short-lived link to the brand's picture.
namestringtypeenumorganicpaid_adsstatusenumdraftopenpausedclosedarchivedvisibilityenuminvite: creators the brand invites; network: any creator can find it and apply.
invitenetworkbriefstringnullableWhat creators read before applying.
platformsenum[]instagramtiktokpaidSocialPlatformsenum[]instagramtiktokallowManualOrganicUploadbooleanallowPaidPromotionbooleanallowPaidSocialUploadsbooleanrequireAdAuthorizationbooleanCreators grant an ad authorization (a TikTok Spark code or a Meta partnership) before a submission runs as an ad.
submissionLimitsobjectShow 4 child fieldsHide child fields
modeenumlimitedunlimitedmaxnumberconcurrentModeenumlimitedunlimitedconcurrentMaxnumber
payobjectWhat creators earn. A creator reading the program sees their own pay, with any terms the brand set for them.
Show 5 child fieldsHide child fields
rulesobject[]baseintegerGuaranteed each period, in cents.
capintegernullableThe most one creator is paid per period, in cents; null or left out for no cap.
scheduleobjectapprovalenumautomatic pays each period on its own; manual waits for the brand to approve the calculated amount.
automaticmanual
paySummarystringThe pay in plain English, ready to show.
payVersionintegerThe pay's version, bumped by each pay edit. Admitted creators move to it on their next action in the program; each application shows the version it's on.
payIssuesobject[]Ways the program's pay can't be paid as set, for the brand to fix; it keeps paying as it does until then. Empty when there are none, and on programs seen on the network.
Show 3 child fieldsHide child fields
codeenumpay_invalid_valuepay_cap_zeropay_cap_below_amountpay_cap_requiredpay_base_needs_periodpay_schedule_mismatchpay_duplicate_rulepay_scope_invalidpay_exceeds_budgetpay_primary_missingpay_primary_changedpay_program_unsupportedpathstringmessagestring
promotedobjectShow 4 child fieldsHide child fields
typeenumnullableappofferotherproductsitenamestringnullableurlstringnullableproductsprod_…[]Catalog products, first one primary.
briefFilesobject[]Show 6 child fieldsHide child fields
filefile_…fileNamestringcontentTypestringsizenumberurlstringnullablepreviewobjectnullableShow 3 child fieldsHide child fields
urlstringcontentTypestringnullablesizenumbernullable
referenceVideosobject[]Show 7 child fieldsHide child fields
filefile_…fileNamestringcontentTypestringsizenumberurlstringnullablewidthnumbernullableheightnumbernullable
agreementsany[]The agreements applying accepts: each one's current version.
submissionAgreementsany[]The agreements submitting work to the program accepts.
currencystringLowercase ISO 4217 code, e.g. usd.
budgetobjectnullableThe brand's own numbers; null on programs seen on the network.
Show 3 child fieldsHide child fields
amountnumbernullableThe planned budget.
reservednumbernullableFunds held from the balance for the program's creators.
feeCapnumbernullableThe most a paid-ads program's fees may take from the reserved funds; null until funds are reserved.
adSpendobjectnullableShow 2 child fieldsHide child fields
totalnumberbyPlatformobject[]Show 2 child fieldsHide child fields
platformstringamountnumber
partnerApprovalobjectnullableShow 3 child fieldsHide child fields
statusstringnotestringnullablerequestedAtstringnullable
createdByPartneracct_…nullablestartsAtstringnullableendsAtstringnullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/programsCreate a program
lucra.programs.create({ body })Body
namestringrequiredtypeenumrequiredorganicpaid_adsvisibilityenumrequiredinvitenetworkbriefstringplatformsenum[]instagramtiktokpaidSocialPlatformsenum[]instagramtiktokallowManualOrganicUploadbooleanallowPaidPromotionbooleanallowPaidSocialUploadsbooleanrequireAdAuthorizationbooleansubmissionLimitsobjectShow 4 child fieldsHide child fields
modeenumlimitedunlimitedmaxintegerconcurrentModeenumlimitedunlimitedconcurrentMaxinteger
payobjectrequiredShow 5 child fieldsHide child fields
rulesobject[]baseintegerGuaranteed each period, in cents.
capintegernullableThe most one creator is paid per period, in cents; null or left out for no cap.
scheduleobjectrequiredapprovalenumautomatic pays each period on its own; manual waits for the brand to approve the calculated amount.
automaticmanual
promotedobjectShow 4 child fieldsHide child fields
typeenumappofferotherproductsitenamestringurlstringproductsprod_…[]
budgetobjectShow 3 child fieldsHide child fields
amountintegerreservedintegerfeeCapinteger
briefFilesfile_…[]referenceVideosfile_…[]agreementsagr_…[]
Response20135 fieldsShow
idprog_…accountacct_…The brand that runs the program.
brandNamestringThe brand's display name. Network programs are seen by creators who can't read the brand's account.
brandAvatarUrlstringnullableA short-lived link to the brand's picture.
namestringtypeenumorganicpaid_adsstatusenumdraftopenpausedclosedarchivedvisibilityenuminvite: creators the brand invites; network: any creator can find it and apply.
invitenetworkbriefstringnullableWhat creators read before applying.
platformsenum[]instagramtiktokpaidSocialPlatformsenum[]instagramtiktokallowManualOrganicUploadbooleanallowPaidPromotionbooleanallowPaidSocialUploadsbooleanrequireAdAuthorizationbooleanCreators grant an ad authorization (a TikTok Spark code or a Meta partnership) before a submission runs as an ad.
submissionLimitsobjectShow 4 child fieldsHide child fields
modeenumlimitedunlimitedmaxnumberconcurrentModeenumlimitedunlimitedconcurrentMaxnumber
payobjectWhat creators earn. A creator reading the program sees their own pay, with any terms the brand set for them.
Show 5 child fieldsHide child fields
rulesobject[]baseintegerGuaranteed each period, in cents.
capintegernullableThe most one creator is paid per period, in cents; null or left out for no cap.
scheduleobjectapprovalenumautomatic pays each period on its own; manual waits for the brand to approve the calculated amount.
automaticmanual
paySummarystringThe pay in plain English, ready to show.
payVersionintegerThe pay's version, bumped by each pay edit. Admitted creators move to it on their next action in the program; each application shows the version it's on.
payIssuesobject[]Ways the program's pay can't be paid as set, for the brand to fix; it keeps paying as it does until then. Empty when there are none, and on programs seen on the network.
Show 3 child fieldsHide child fields
codeenumpay_invalid_valuepay_cap_zeropay_cap_below_amountpay_cap_requiredpay_base_needs_periodpay_schedule_mismatchpay_duplicate_rulepay_scope_invalidpay_exceeds_budgetpay_primary_missingpay_primary_changedpay_program_unsupportedpathstringmessagestring
promotedobjectShow 4 child fieldsHide child fields
typeenumnullableappofferotherproductsitenamestringnullableurlstringnullableproductsprod_…[]Catalog products, first one primary.
briefFilesobject[]Show 6 child fieldsHide child fields
filefile_…fileNamestringcontentTypestringsizenumberurlstringnullablepreviewobjectnullableShow 3 child fieldsHide child fields
urlstringcontentTypestringnullablesizenumbernullable
referenceVideosobject[]Show 7 child fieldsHide child fields
filefile_…fileNamestringcontentTypestringsizenumberurlstringnullablewidthnumbernullableheightnumbernullable
agreementsany[]The agreements applying accepts: each one's current version.
submissionAgreementsany[]The agreements submitting work to the program accepts.
currencystringLowercase ISO 4217 code, e.g. usd.
budgetobjectnullableThe brand's own numbers; null on programs seen on the network.
Show 3 child fieldsHide child fields
amountnumbernullableThe planned budget.
reservednumbernullableFunds held from the balance for the program's creators.
feeCapnumbernullableThe most a paid-ads program's fees may take from the reserved funds; null until funds are reserved.
adSpendobjectnullableShow 2 child fieldsHide child fields
totalnumberbyPlatformobject[]Show 2 child fieldsHide child fields
platformstringamountnumber
partnerApprovalobjectnullableShow 3 child fieldsHide child fields
statusstringnotestringnullablerequestedAtstringnullable
createdByPartneracct_…nullablestartsAtstringnullableendsAtstringnullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring
/v1/programs/:idUpdate a program; every change in one request applies together, or none does
lucra.programs.update({ path: { id }, body })Path parameters
idstringrequired
Body
namestringbriefstringstatusenumdraftopenpausedarchivedvisibilityenuminvitenetworksubmissionLimitsobjectShow 4 child fieldsHide child fields
modeenumlimitedunlimitedmaxintegerconcurrentModeenumlimitedunlimitedconcurrentMaxinteger
promotedobjectReplaces the promoted catalog products, first one primary.
Show 1 child fieldHide child fields
productsprod_…[]required
briefFilesfile_…[]referenceVideosfile_…[]agreementsagr_…[]payobjectShow 5 child fieldsHide child fields
rulesobject[]baseintegerGuaranteed each period, in cents.
capintegernullableThe most one creator is paid per period, in cents; null or left out for no cap.
scheduleobjectrequiredapprovalenumautomatic pays each period on its own; manual waits for the brand to approve the calculated amount.
automaticmanual
budgetobjectShow 3 child fieldsHide child fields
amountintegerreservedintegerfeeCapinteger
versioninteger
Response20035 fieldsShow
idprog_…accountacct_…The brand that runs the program.
brandNamestringThe brand's display name. Network programs are seen by creators who can't read the brand's account.
brandAvatarUrlstringnullableA short-lived link to the brand's picture.
namestringtypeenumorganicpaid_adsstatusenumdraftopenpausedclosedarchivedvisibilityenuminvite: creators the brand invites; network: any creator can find it and apply.
invitenetworkbriefstringnullableWhat creators read before applying.
platformsenum[]instagramtiktokpaidSocialPlatformsenum[]instagramtiktokallowManualOrganicUploadbooleanallowPaidPromotionbooleanallowPaidSocialUploadsbooleanrequireAdAuthorizationbooleanCreators grant an ad authorization (a TikTok Spark code or a Meta partnership) before a submission runs as an ad.
submissionLimitsobjectShow 4 child fieldsHide child fields
modeenumlimitedunlimitedmaxnumberconcurrentModeenumlimitedunlimitedconcurrentMaxnumber
payobjectWhat creators earn. A creator reading the program sees their own pay, with any terms the brand set for them.
Show 5 child fieldsHide child fields
rulesobject[]baseintegerGuaranteed each period, in cents.
capintegernullableThe most one creator is paid per period, in cents; null or left out for no cap.
scheduleobjectapprovalenumautomatic pays each period on its own; manual waits for the brand to approve the calculated amount.
automaticmanual
paySummarystringThe pay in plain English, ready to show.
payVersionintegerThe pay's version, bumped by each pay edit. Admitted creators move to it on their next action in the program; each application shows the version it's on.
payIssuesobject[]Ways the program's pay can't be paid as set, for the brand to fix; it keeps paying as it does until then. Empty when there are none, and on programs seen on the network.
Show 3 child fieldsHide child fields
codeenumpay_invalid_valuepay_cap_zeropay_cap_below_amountpay_cap_requiredpay_base_needs_periodpay_schedule_mismatchpay_duplicate_rulepay_scope_invalidpay_exceeds_budgetpay_primary_missingpay_primary_changedpay_program_unsupportedpathstringmessagestring
promotedobjectShow 4 child fieldsHide child fields
typeenumnullableappofferotherproductsitenamestringnullableurlstringnullableproductsprod_…[]Catalog products, first one primary.
briefFilesobject[]Show 6 child fieldsHide child fields
filefile_…fileNamestringcontentTypestringsizenumberurlstringnullablepreviewobjectnullableShow 3 child fieldsHide child fields
urlstringcontentTypestringnullablesizenumbernullable
referenceVideosobject[]Show 7 child fieldsHide child fields
filefile_…fileNamestringcontentTypestringsizenumberurlstringnullablewidthnumbernullableheightnumbernullable
agreementsany[]The agreements applying accepts: each one's current version.
submissionAgreementsany[]The agreements submitting work to the program accepts.
currencystringLowercase ISO 4217 code, e.g. usd.
budgetobjectnullableThe brand's own numbers; null on programs seen on the network.
Show 3 child fieldsHide child fields
amountnumbernullableThe planned budget.
reservednumbernullableFunds held from the balance for the program's creators.
feeCapnumbernullableThe most a paid-ads program's fees may take from the reserved funds; null until funds are reserved.
adSpendobjectnullableShow 2 child fieldsHide child fields
totalnumberbyPlatformobject[]Show 2 child fieldsHide child fields
platformstringamountnumber
partnerApprovalobjectnullableShow 3 child fieldsHide child fields
statusstringnotestringnullablerequestedAtstringnullable
createdByPartneracct_…nullablestartsAtstringnullableendsAtstringnullableversionintegerSend it back on PATCH to reject edits based on a stale read.
createdAtstringupdatedAtstring