Upload & Payment Flow
End-to-end flow from creator upload to buyer purchase and content unlock.
Creator: Upload Flow
1. Initial Upload
- Creator selects media file(s)
- Sets price
- Clicks Generate Link
- Upload begins (background for large files)
API: POST /api/products (multipart/form-data)
bash
curl -X POST https://fangate.info/api/products \
-H "Authorization: Bearer TOKEN" \
-F "media=@video.mp4" \
-F "price=550" \
-F "currency_id=1"2. Post-Upload Configuration (All Optional)
After upload, creator can:
| Action | API / Note |
|---|---|
| Add consent documents | POST /api/consents/store-or-send |
| Add title | PATCH /api/products/{id} |
| Add public description | PATCH /api/products/{id} |
| Add internal note | PATCH /api/products/{id} |
| Toggle Add to Collection | POST /api/products/{id}/collection |
| Toggle AVS (adult content) | PATCH /api/products/{id} |
| Toggle Require age check | PATCH /api/products/{id} |
3. Default Settings
- Each creator has default AVS and Yoti toggles in profile
- New uploads inherit these defaults
- Can be changed per product after upload
4. Processing
- Files < 10 MB: Processed immediately
- Files ≥ 10 MB: Queued (
CreateProductJob) - Media moderation: SightEngine reviews content
Buyer: Purchase Flow
1. Buyer Clicks Product Link
- Link format:
https://fangate.info/p/{link_hash}
2. Age Verification (if required)
- If AVS OFF: No age pop-up
- If AVS ON + Require Age Check: Yoti verification required
- Buyer redirected to Yoti → confirms 18+ → returns
3. Payment
- Payment via PSP: Stripe or PayPal
- Buyer pays with card or PayPal — no fan account required
4. Webhook Confirms Payment
- Stripe/PayPal/Epoch webhook notifies Fangate
- Payment is confirmed server-side
5. Content Unlocked
- Success screen shown to buyer
- Content accessible (download or stream)
6. Confirmation Email
- Sent to buyer with source URL
7. Creator Earnings
- Earnings added to creator wallet as Product Earning
- Funds may be on hold (default 1 hour) before moving to balance
Product Properties (When Set)
| Property | When Set | Notes |
|---|---|---|
| Media file(s) | At upload | Photo(s) or video |
| Price | At upload | In pre-defined currency |
| Title | After upload | Optional |
| Public description | After upload | Buyer-visible |
| Internal note | After upload | Creator-only |
| Thumbnail | Automatic | Auto-generated |
| AVS flag | Default or after | Mark as adult content |
| Required age check | Default or after | Force Yoti |
| Third-party consent | After upload | If content shows others |
Collections
- Add/remove products via
POST /api/products/{id}/collection - Single shareable link for entire collection
- Currently: one collection per user