A partner manages client brands. GET /v1/brands lists the ones its key reaches; act for one by sending its ID in Lucra-Account. A brand's own key gets an empty list.
Create a brand
A partner creates a brand with POST /v1/brands. It becomes an active client right away, so every key of the partner reaches it. Send an Idempotency-Key so a retry doesn't create it twice:
const { data: brand } = await lucra.brands.create({
body: { name: "Acme", email: "ops@acme.com", brandFee: { of: "ad_spend", percent: 10 } },
headers: { "Idempotency-Key": "acme-onboarding" },
})
Leave out brandFee to use your default from GET /v1/account.
Payment method
The brand pays for its own programs and creator payments. Until a brand member adds a card at the URL from POST /v1/connections (provider: "card"), those writes return 409 requirement_payment_method. The onboarding embed walks them through it.
Update a brand
PATCH /v1/brands/:id sets its name, description, logo (profilePicture) and brandFee. A new fee applies to spend from then on.
Endpoints
/v1/brandsList the brands this key reaches, and a partner's brands whose relationship ended
const { data } = await lucra.brands.list({
query: { status: "active" },
})Response200A page of items, 21 fields each, and nextCursorShow
idacct_…typeenumbrandpartnernamestringstatusenumended: a brand whose relationship with your partner account ended; it reads, but no longer changes.
activeendedmanagedByacct_…nullablebrandFeeobjectnullableThe managing partner's own fee on this brand; null when it's on the partner's default (GET /v1/account
partner.brandFee).Show 2 child fieldsHide child fields
ofenumad_spendgmvpercentnumber
partnerobjectnullableA partner's take rates; null for a brand.
Show 2 child fieldsHide child fields
creatorTakeRateobjectnullableShow 1 child fieldHide child fields
percentnumber
brandFeeobjectnullableShow 2 child fieldsHide child fields
ofenumad_spendgmvpercentnumber
emailstringnullablephonestringnullableprofilePicturefile_…nullableimageobjectnullableThe account's logo, with a short-lived
url.Show 5 child fieldsHide child fields
fileIdfile_…nullableurlstringwidthnumbernullableheightnumbernullableblurHashstringnullable
paymentMethodobjectnullableA brand's payment method; null means none yet (add one with POST /v1/connections, provider card), and always null for a partner.
Show 3 child fieldsHide child fields
statusstringactivebrandstringnullablelast4stringnullable
payoutsobjectWhere it's paid: verified identity lets earnings reach its balance; a bank account is asked for on the first withdrawal. Set up with POST /v1/connections (provider stripe).
Show 2 child fieldsHide child fields
identityobjectShow 1 child fieldHide child fields
statusenumrequiredpendingverified
bankAccountobjectnullableShow 1 child fieldHide child fields
statusenummissingadded
brandsobjectnullableThe brands a partner key reaches; null on a managed brand.
Show 1 child fieldHide child fields
countinteger
creatorsobjectnullableThe account's creators and roster; null on a managed brand.
Show 1 child fieldHide child fields
countinteger
descriptionstringnullablerecruitmentobjectShow 2 child fieldsHide child fields
headlinestringnullabledescriptionstringnullable
listingobjectnullableA partner's marketplace listing; null for a brand.
Show 4 child fieldsHide child fields
listedbooleanheadlinestringnullablecategoriesstring[]registeredAtstringnullable
versionintegercreatedAtstringupdatedAtstring
/v1/brands/:idGet a brand
const { data } = await lucra.brands.retrieve({
path: { id: "acct_…" },
})Path parameters
idacct_…· required
Response20021 fieldsShow
idacct_…typeenumbrandpartnernamestringstatusenumended: a brand whose relationship with your partner account ended; it reads, but no longer changes.
activeendedmanagedByacct_…nullablebrandFeeobjectnullableThe managing partner's own fee on this brand; null when it's on the partner's default (GET /v1/account
partner.brandFee).Show 2 child fieldsHide child fields
ofenumad_spendgmvpercentnumber
partnerobjectnullableA partner's take rates; null for a brand.
Show 2 child fieldsHide child fields
creatorTakeRateobjectnullableShow 1 child fieldHide child fields
percentnumber
brandFeeobjectnullableShow 2 child fieldsHide child fields
ofenumad_spendgmvpercentnumber
emailstringnullablephonestringnullableprofilePicturefile_…nullableimageobjectnullableThe account's logo, with a short-lived
url.Show 5 child fieldsHide child fields
fileIdfile_…nullableurlstringwidthnumbernullableheightnumbernullableblurHashstringnullable
paymentMethodobjectnullableA brand's payment method; null means none yet (add one with POST /v1/connections, provider card), and always null for a partner.
Show 3 child fieldsHide child fields
statusstringactivebrandstringnullablelast4stringnullable
payoutsobjectWhere it's paid: verified identity lets earnings reach its balance; a bank account is asked for on the first withdrawal. Set up with POST /v1/connections (provider stripe).
Show 2 child fieldsHide child fields
identityobjectShow 1 child fieldHide child fields
statusenumrequiredpendingverified
bankAccountobjectnullableShow 1 child fieldHide child fields
statusenummissingadded
brandsobjectnullableThe brands a partner key reaches; null on a managed brand.
Show 1 child fieldHide child fields
countinteger
creatorsobjectnullableThe account's creators and roster; null on a managed brand.
Show 1 child fieldHide child fields
countinteger
descriptionstringnullablerecruitmentobjectShow 2 child fieldsHide child fields
headlinestringnullabledescriptionstringnullable
listingobjectnullableA partner's marketplace listing; null for a brand.
Show 4 child fieldsHide child fields
listedbooleanheadlinestringnullablecategoriesstring[]registeredAtstringnullable
versionintegercreatedAtstringupdatedAtstring
/v1/brandsCreate a brand a partner manages
const { data } = await lucra.brands.create({
body: { name: "…" },
})Body
namestring· requiredbrandFeeobjectShow 2 child fieldsHide child fields
ofenum· requiredad_spendgmvpercentnumber· required
emailstringphonestring
Response20121 fieldsShow
idacct_…typeenumbrandpartnernamestringstatusenumended: a brand whose relationship with your partner account ended; it reads, but no longer changes.
activeendedmanagedByacct_…nullablebrandFeeobjectnullableThe managing partner's own fee on this brand; null when it's on the partner's default (GET /v1/account
partner.brandFee).Show 2 child fieldsHide child fields
ofenumad_spendgmvpercentnumber
partnerobjectnullableA partner's take rates; null for a brand.
Show 2 child fieldsHide child fields
creatorTakeRateobjectnullableShow 1 child fieldHide child fields
percentnumber
brandFeeobjectnullableShow 2 child fieldsHide child fields
ofenumad_spendgmvpercentnumber
emailstringnullablephonestringnullableprofilePicturefile_…nullableimageobjectnullableThe account's logo, with a short-lived
url.Show 5 child fieldsHide child fields
fileIdfile_…nullableurlstringwidthnumbernullableheightnumbernullableblurHashstringnullable
paymentMethodobjectnullableA brand's payment method; null means none yet (add one with POST /v1/connections, provider card), and always null for a partner.
Show 3 child fieldsHide child fields
statusstringactivebrandstringnullablelast4stringnullable
payoutsobjectWhere it's paid: verified identity lets earnings reach its balance; a bank account is asked for on the first withdrawal. Set up with POST /v1/connections (provider stripe).
Show 2 child fieldsHide child fields
identityobjectShow 1 child fieldHide child fields
statusenumrequiredpendingverified
bankAccountobjectnullableShow 1 child fieldHide child fields
statusenummissingadded
brandsobjectnullableThe brands a partner key reaches; null on a managed brand.
Show 1 child fieldHide child fields
countinteger
creatorsobjectnullableThe account's creators and roster; null on a managed brand.
Show 1 child fieldHide child fields
countinteger
descriptionstringnullablerecruitmentobjectShow 2 child fieldsHide child fields
headlinestringnullabledescriptionstringnullable
listingobjectnullableA partner's marketplace listing; null for a brand.
Show 4 child fieldsHide child fields
listedbooleanheadlinestringnullablecategoriesstring[]registeredAtstringnullable
versionintegercreatedAtstringupdatedAtstring
/v1/brands/:idUpdate a brand a partner manages
const { data } = await lucra.brands.update({
path: { id: "acct_…" },
body: { brandFee: {} },
})Path parameters
idacct_…· required
Body
brandFeeobjectnullableShow 2 child fieldsHide child fields
ofenum· requiredad_spendgmvpercentnumber· required
profilePicturefile_…nullablenamestringdescriptionstringnullablerecruitmentobjectShow 2 child fieldsHide child fields
headlinestringnullabledescriptionstringnullable
versioninteger
Response20021 fieldsShow
idacct_…typeenumbrandpartnernamestringstatusenumended: a brand whose relationship with your partner account ended; it reads, but no longer changes.
activeendedmanagedByacct_…nullablebrandFeeobjectnullableThe managing partner's own fee on this brand; null when it's on the partner's default (GET /v1/account
partner.brandFee).Show 2 child fieldsHide child fields
ofenumad_spendgmvpercentnumber
partnerobjectnullableA partner's take rates; null for a brand.
Show 2 child fieldsHide child fields
creatorTakeRateobjectnullableShow 1 child fieldHide child fields
percentnumber
brandFeeobjectnullableShow 2 child fieldsHide child fields
ofenumad_spendgmvpercentnumber
emailstringnullablephonestringnullableprofilePicturefile_…nullableimageobjectnullableThe account's logo, with a short-lived
url.Show 5 child fieldsHide child fields
fileIdfile_…nullableurlstringwidthnumbernullableheightnumbernullableblurHashstringnullable
paymentMethodobjectnullableA brand's payment method; null means none yet (add one with POST /v1/connections, provider card), and always null for a partner.
Show 3 child fieldsHide child fields
statusstringactivebrandstringnullablelast4stringnullable
payoutsobjectWhere it's paid: verified identity lets earnings reach its balance; a bank account is asked for on the first withdrawal. Set up with POST /v1/connections (provider stripe).
Show 2 child fieldsHide child fields
identityobjectShow 1 child fieldHide child fields
statusenumrequiredpendingverified
bankAccountobjectnullableShow 1 child fieldHide child fields
statusenummissingadded
brandsobjectnullableThe brands a partner key reaches; null on a managed brand.
Show 1 child fieldHide child fields
countinteger
creatorsobjectnullableThe account's creators and roster; null on a managed brand.
Show 1 child fieldHide child fields
countinteger
descriptionstringnullablerecruitmentobjectShow 2 child fieldsHide child fields
headlinestringnullabledescriptionstringnullable
listingobjectnullableA partner's marketplace listing; null for a brand.
Show 4 child fieldsHide child fields
listedbooleanheadlinestringnullablecategoriesstring[]registeredAtstringnullable
versionintegercreatedAtstringupdatedAtstring