Skip to content

Other Endpoints ​

Miscellaneous live backend endpoints that do not fit the main auth/products/wallet groups.


GET /api/app-data ​

Public configuration bootstrap for clients.

  • Auth required: No
  • Roles: Public

Returned areas ​

Current response includes keys such as:

  • products.sort_by
  • products.media.max_mb_size
  • products.min_price_cents - lowest accepted product price in minor units (500)
  • products.manual_price_review_threshold_cents - above this amount a product waits for Fangate's compliance review before it can be bought (15000)
  • feedback.topics
  • affiliate.default_fee_percentage
  • currencies[] (id, code, and bank_fields - the currency's usual payout fields; since 2026-09-27 the payout account type is the creator's choice whatever the currency, see bank_account_types[])
  • registration.legal - required, acceptance_label, documents[] (key, label, url): what registration_legal_accepted: true on POST /api/register stands for
  • registration.signature - the creator contract's signature form (Jotform): form_url, form_id, iframe_id, title, prefill_fields (the form's field names for e-mail, first and last name) and prefill_url_template (the form URL with {email}, {first_name}, {last_name} placeholders to fill in). Embed it in an iframe with the creator's e-mail prefilled; see Onboarding
  • registration.content_display_consent - required, field (content_display_consent), label: the separate consent checkbox a registration screen shows next to the legal acceptance; required follows an admin switch (see Auth)
  • bank_account_types[] - type (iban, us_routing, uk_sort_code, crypto), label, fields[], currencies[], optional available: false: the payout account types a creator can save. Every real type lists every currency - a USD balance may be paid to an IBAN, a EUR balance to a US routing number. crypto is the Tron USDT wallet (payout_method, see Users); selectable once crypto_payouts_enabled is true.
  • crypto_payouts_enabled (boolean, 2026-10-08) - whether a creator can choose crypto payouts yet; false = the crypto tile is shown greyed out and payout_method: crypto is refused.
  • withdrawal_fees[] - key (sepa, usd_ach, usd_swift, gbp, crypto), label, fixed, minimum, percentage: what a payout costs on each rail. The payout currency picks the rail: EUR to an IBAN pays sepa, USD to a US routing number usd_ach, GBP to a sort code or an IBAN gbp; USD to any other account, and a EUR or GBP balance to a US routing number or (EUR) a UK sort code, pay usd_swift ("International (SWIFT)"). fixed and minimum count in the payout's currency.
  • features[]
  • settings[]

Success response example ​

json
{
  "success": true,
  "errors_message": null,
  "data": {
    "products": {
      "sort_by": ["newest", "most_earnings", "most_views", "collection"],
      "media": {
        "max_mb_size": 20480
      }
    },
    "feedback": {
      "topics": ["bug", "feature", "other"]
    },
    "affiliate": {
      "default_fee_percentage": 3
    },
    "currencies": [
      {
        "id": 1,
        "code": "USD",
        "symbol": "$",
        "bank_fields": ["account_number", "routing_number"]
      }
    ]
  }
}

GET /api/maps/autocomplete ​

Return raw Google Places autocomplete data for address input.

  • Auth required: No in current route definition
  • Roles: Public

Used by the sign-up address form; not part of the integration surface. GET /api/maps/place-details?place_id= resolves a prediction to address_components / formatted_address, also as the raw Google payload.

Rate limit per IP: autocomplete 60/min and 1000/day, place details 20/min and 200/day; over the limit the answer is 429 with Retry-After (see Error handling).

Query parameters ​

ParameterTypeRequired
inputstringYes

Success response example ​

This endpoint currently returns the raw Google Maps service payload, not the standard Fangate wrapper.

json
{
  "predictions": [
    {
      "description": "123 Main Street, Paris, France"
    }
  ],
  "status": "OK"
}

POST /api/report ​

Submit a public report about content or a transaction.

  • Auth required: No
  • Roles: Public
  • Content type: application/json

Request body ​

FieldTypeRequiredNotes
reasonstringYesReport reason text.
emailstringYesReporter email.
report_contextstringNopurchase (default), trailer_preview or thumbnail_preview.
transaction_idintegerFor purchase reportsMust exist in transactions.id.
product_idintegerFor preview reportsThe product whose public preview is reported.
preview_uploaded_asset_idstringFor preview reportsId of the approved trailer or thumbnail asset being reported.
media_idsstringNoComma-separated media ids.
commentstringNoAdditional context.

Success response example ​

The stored report is answered in the standard envelope with its id (since 2026-09; it used to be an empty object):

json
{
  "success": true,
  "errors_message": null,
  "data": {
    "id": 88
  }
}

Error example ​

Validation failures use Laravel's plain format, not the envelope:

json
{
  "message": "A transaction is required for purchase reports.",
  "errors": {
    "transaction_id": [
      "A transaction is required for purchase reports."
    ]
  }
}

POST /api/feedback ​

Submit authenticated feedback with optional attachments.

  • Auth required: Yes
  • Roles: Authenticated creator
  • Content type: multipart/form-data

Request fields ​

FieldTypeRequiredNotes
emailstringYesFeedback contact email.
messagestringYesFeedback body.
topicstringYesTopic name from app-data config.
attachments[]file[]NoOptional attachments.

Success response example ​

json
{
  "success": true,
  "errors_message": null,
  "data": "stored"
}

Side effects ​

  • attachments are stored on the public disk
  • backend dispatches SendFeedbackJob

Fangate backend developer documentation