Skip to content

Upload & Payment Flow

End-to-end flow from creator upload to buyer purchase and content unlock.


Creator: Upload Flow

1. Initial Upload

  1. Creator selects media file(s)
  2. Sets price
  3. Clicks Generate Link
  4. 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:

ActionAPI / Note
Add consent documentsPOST /api/consents/store-or-send
Add titlePATCH /api/products/{id}
Add public descriptionPATCH /api/products/{id}
Add internal notePATCH /api/products/{id}
Toggle Add to CollectionPOST /api/products/{id}/collection
Toggle AVS (adult content)PATCH /api/products/{id}
Toggle Require age checkPATCH /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

  • 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)

PropertyWhen SetNotes
Media file(s)At uploadPhoto(s) or video
PriceAt uploadIn pre-defined currency
TitleAfter uploadOptional
Public descriptionAfter uploadBuyer-visible
Internal noteAfter uploadCreator-only
ThumbnailAutomaticAuto-generated
AVS flagDefault or afterMark as adult content
Required age checkDefault or afterForce Yoti
Third-party consentAfter uploadIf content shows others

Collections

  • Add/remove products via POST /api/products/{id}/collection
  • Single shareable link for entire collection
  • Currently: one collection per user

Fangate API Documentation