Overview
Creators are merchants or brands within an organization. They manage products, fulfill orders, receive payouts, and run campaigns. Public-facing creator pages are accessed by slug; authenticated operations use creator ID. A user creates a creator profile viaPOST /user/{id}/creator, and the creator is linked to the user through the CreatorUser join table. One user can own multiple creator profiles.
Public Endpoints (by Slug)
Public endpoints don’t require the user to own the creator.Get Creator Profile
Public Stats
Browse Products
Public Collectibles & Rewards
| Endpoint | Returns |
|---|---|
/creator/{slug}/collectibles | On-chain collectibles |
/creator/{slug}/collectibles/metadata | Collectible metadata |
/creator/{slug}/rewards | Available reward programs |
Update Creator Profile
| Field | Type | Description |
|---|---|---|
displayName | string | Brand/creator name |
description | string | Bio/description |
avatarUrl | string | Profile image URL |
heroUrl | string | Storefront banner image URL |
flatShippingRate | integer | Default shipping rate in cents (e.g., 799 = $7.99) |
socialProfiles | array | { platform, url } pairs |
Product Management
Create a Product
List All Products (Including Drafts)
Product Sales & Analytics
| Endpoint | Returns |
|---|---|
/creator/id/{creatorId}/products/sales | Sales data per product |
/creator/id/{creatorId}/products/analytics | Aggregate product analytics |
/creator/id/{creatorId}/product/{productId}/analytics | Single product analytics |
Product Lifecycle
| Endpoint | Action |
|---|---|
POST /creator/id/{creatorId}/product/{productId}/publish | Publish a draft product |
POST /creator/id/{creatorId}/product/{productId}/restore | Restore an archived product |
DELETE /creator/id/{creatorId}/product/{productId} | Archive (soft delete) |
DELETE /creator/id/{creatorId}/product/{productId}/purge | Permanently delete |
Order Management
List Orders
Update Order Shipping Status
| Shipping Status | Description |
|---|---|
PENDING | Order placed, not yet shipped |
PROCESSING | Being prepared for shipment |
SHIPPED | In transit |
DELIVERED | Delivered to recipient |
RETURNED | Returned by customer |
Generate Shipping Label
Stripe Connect Onboarding
Creators receive payouts through Stripe Connect. The onboarding flow creates a Stripe Express account linked to the creator.Initiate Stripe Connect
Onboarding Flow
Onboarding Reminders
If a creator hasn’t completed Stripe onboarding within 48 hours, thestripe-onboarding-reminder cron job sends an email reminder. The stripeOnboardingReminderSentAt and stripeOnboardingReminderClaimedUntil fields on the Creator model track this flow.
Payout Lifecycle
When an order is paid, aCreatorPayout record is created to track the creator’s share:
| Status | Description |
|---|---|
PENDING | Order paid, payout created. Funds held during review period |
ELIGIBLE | Hold period complete, payout ready for transfer |
TRANSFERRED | Funds sent to creator’s Stripe Connect account |
View Payouts
amount is in cents and represents the creator’s share after the platform application fee (STRIPE_PLATFORM_APPLICATION_FEE_BPS).
Payout Sweep Cron
Thepayouts-sweep cron job runs periodically to:
- Query all
ELIGIBLEpayouts - Execute Stripe Connect transfers to each creator’s account
- Update status to
TRANSFERREDwith thestripeTransferId
Dashboard Analytics
| Endpoint | Returns |
|---|---|
/creator/id/{creatorId}/dashboard | Overview dashboard |
/creator/id/{creatorId}/dashboard/rewards | Reward program performance |
/creator/id/{creatorId}/dashboard/fans | Fan/follower analytics |
/creator/id/{creatorId}/dashboard/campaigns | Campaign performance |
Campaigns
| Endpoint | Returns |
|---|---|
/creator/id/{creatorId}/campaigns | All campaigns |
/creator/id/{creatorId}/campaigns/titles | Campaign title list |
/creator/id/{creatorId}/campaigns/latest | Most recent campaign |
/creator/id/{creatorId}/campaigns/analytics/participants/count | Total participants |
Archive / Restore / Purge Campaigns
| Endpoint | Action |
|---|---|
DELETE /creator/id/{creatorId}/campaign/{id} | Archive |
POST /creator/id/{creatorId}/campaign/{id}/restore | Restore |
DELETE /creator/id/{creatorId}/campaign/{id}/purge | Permanent delete |
Followers
| Endpoint | Returns |
|---|---|
/creator/id/{creatorId}/followers | Follower list |
/creator/id/{creatorId}/followers/count | Follower count |
/creator/followers/{id} | Followers by creator (public) |
/creator/followers/{id}/top | Top followers |
/creator/followers/{id}/growth | Follower growth over time |
Rewards & Airdrops
| Endpoint | Returns |
|---|---|
/creator/id/{creatorId}/nft-rewards | Reward programs |
/creator/id/{creatorId}/nft-rewards/redeemed | Redeemed rewards |
/creator/id/{creatorId}/latest-earned-reward | Latest earned reward |
/creator/id/{creatorId}/latest-airdrop | Latest airdrop |
/creator/id/{creatorId}/earned-rewards | All earned rewards |
/creator/id/{creatorId}/airdrops | Airdrop history |
Groups
Creators can organize followers into groups for targeted campaigns and communications:| Endpoint | Action |
|---|---|
GET /creator/id/{creatorId}/groups | List groups |
POST /creator/id/{creatorId}/group | Create group |
Token Presales
Creators can run token presale campaigns:| Endpoint | Action |
|---|---|
GET /creator/id/{creatorId}/token-presales | List presales |
POST /creator/id/{creatorId}/token-presales | Create presale |
GET /creator/id/{creatorId}/token-presales/{id} | Get presale |
PATCH /creator/id/{creatorId}/token-presales/{id} | Update presale |
DELETE /creator/id/{creatorId}/token-presales/{id} | Delete presale |
Creator Model
| Field | Type | Description |
|---|---|---|
id | string | CUID2 identifier |
slug | string | URL-friendly unique handle |
displayName | string | Brand/creator name (unique) |
description | string | Creator bio |
avatarUrl | string | Profile image URL |
heroUrl | string | Storefront banner image |
flatShippingRate | integer | Default shipping rate in cents |
pointsAccepted | enum | SELF (own points only) or ALL |
createdAt | datetime | Creation timestamp |
organizationId | string | Parent organization |
CreatorPayout Model
| Field | Type | Description |
|---|---|---|
id | string | CUID2 identifier |
creatorId | string | Owning creator |
orderId | string | Source order (unique) |
amount | integer | Payout amount in cents |
currency | string | Currency code (default: usd) |
status | enum | PENDING, ELIGIBLE, TRANSFERRED |
stripeTransferId | string | Stripe transfer ID (when transferred) |
createdAt | datetime | Creation timestamp |
transferredAt | datetime | Transfer timestamp |
Endpoint Summary
| Method | Path | Description |
|---|---|---|
GET | /creator/{slug} | Public profile |
GET | /creator/{slug}/products | Published products |
GET | /creator/{slug}/product/{productSlug} | Product by slug |
GET | /creator/{slug}/collectibles | Collectibles |
GET | /creator/{slug}/collectibles/metadata | Collectible metadata |
GET | /creator/{slug}/rewards | Rewards |
GET | /creator/{slug}/stats | Public stats |
GET | /creator/id/{creatorId} | Get by ID |
PATCH | /creator/id/{creatorId} | Update profile |
GET | /creator/id/{creatorId}/products | All products |
GET | /creator/id/{creatorId}/products/sales | Sales data |
GET | /creator/id/{creatorId}/products/analytics | Product analytics |
POST | /creator/id/{creatorId}/product | Create product |
GET | /creator/id/{creatorId}/product/{productId} | Get product |
PATCH | /creator/id/{creatorId}/product/{productId} | Update product |
DELETE | /creator/id/{creatorId}/product/{productId} | Archive product |
POST | /creator/id/{creatorId}/product/{productId}/publish | Publish |
POST | /creator/id/{creatorId}/product/{productId}/restore | Restore |
DELETE | /creator/id/{creatorId}/product/{productId}/purge | Purge |
GET | /creator/id/{creatorId}/orders | Orders |
PATCH | /creator/id/{creatorId}/order/{id} | Update order |
GET | /creator/id/{creatorId}/order/{id}/shipping/label | Shipping label |
GET | /creator/id/{creatorId}/payouts | Payouts |
POST | /creator/id/{creatorId}/stripe/account | Stripe Connect |
GET | /creator/id/{creatorId}/dashboard | Dashboard |
GET | /creator/id/{creatorId}/dashboard/rewards | Rewards dash |
GET | /creator/id/{creatorId}/dashboard/fans | Fan analytics |
GET | /creator/id/{creatorId}/dashboard/campaigns | Campaign dash |
GET | /creator/id/{creatorId}/campaigns | Campaigns |
GET | /creator/id/{creatorId}/campaigns/titles | Campaign titles |
GET | /creator/id/{creatorId}/campaigns/latest | Latest campaign |
GET | /creator/id/{creatorId}/followers | Followers |
GET | /creator/id/{creatorId}/followers/count | Follower count |
GET | /creator/id/{creatorId}/nft-rewards | Rewards |
GET | /creator/id/{creatorId}/nft-rewards/redeemed | Redeemed |
GET | /creator/id/{creatorId}/airdrops | Airdrops |
GET | /creator/id/{creatorId}/groups | Groups |
POST | /creator/id/{creatorId}/group | Create group |
GET | /creator/id/{creatorId}/notifications | Notifications |
POST | /creator/id/{creatorId}/chat | Initialize chat |

