Skip to content

Agency accounts ​

An agency account is the way to work for several creators on Fangate - and to run AI models and model accounts of its own. It belongs to a company and holds no content itself. It works in three kinds of accounts: the creators it connects to, the AI models it creates, and the model accounts it registers for real people. Every creator keeps an own, verified account - the agency operates those accounts and receives an agreed share of each sale. An AI model is a storefront for fully AI-generated content that the agency creates and runs itself; its sales are the agency's own. A model account is a storefront for content that shows a real person who signed a release with the agency: Fangate reviews the release documents before anything is sold, and the person keeps a page of her own where she can withdraw her consent at any time. See Model accounts.

If you sell for more than one person, this is the model to use. Running several people through one creator account is not supported: identity verification, consent and payouts on Fangate are tied to the person behind an account.

The model in short ​

Creator accountAgency account
Belongs toone verified persona registered company with a verified representative
Uploads and sells contentYesNot on the agency account itself - it operates creator accounts, creates AI models that sell AI-generated content, and runs model accounts for people who signed a release
Public profile, collection, short links, ExploreYesNo
Walletown earningsthe agency's share of its creators' sales and the earnings of its AI models and model accounts, one wallet per currency
Payoutafter identity verificationafter the company review and the representative's identity verification

What an agency account can do ​

  • Connect creators. Invite a creator by email with a revenue share in percent. The creator accepts in the own account; nothing is connected without that step. Up to 100 creators per agency (active relationships plus open invitations). Creators of any currency (USD, EUR, GBP) can be connected to the same agency.
  • Operate a connected creator's account. The agency opens a session for one creator and works there as the creator would: upload content, create products and links, set prices, organise the vault and folders, read analytics and the wallet, start the creator's identity check, and create API keys and webhooks on that account.
  • Create and run AI models. An AI model is a storefront the agency creates itself - in the dashboard or with its API key: an own library, vault, products and statistics, without a login of its own. It sells fully AI-generated content, and its sales are booked to the agency's wallet. See AI models.
  • Register model accounts. For a real person who signed a model release with the agency: the agency registers the person by name and e-mail, files the signed release form and the ID (or asks the person to fill in Fangate's release form), and sells in the account once Fangate approved the file. The person gets a page of her own to see every file that shows her and to withdraw. See Model accounts.
  • Integrate with ONE API key. The agency creates an API key on its own account and names, per call, the account it works in - one of its AI models, one of its model accounts, or a connected creator. See The agency's API key. The older way still works: an API key or webhook created inside a creator session belongs to the creator's account and is labelled created_by_agency.
  • Earn a share of every sale. The share agreed in the invitation is booked automatically on each sale of that creator, into the agency's wallet. A sale in another currency than the agency's is converted into the agency's currency when the share is booked - reference rate minus a conversion buffer of up to 5 %, see Wallet. Refunds and chargebacks reverse both sides in the same proportion, cancellation fees included. A changed percentage applies to future sales only.
  • See earnings per creator and request payouts per currency.

What an agency account cannot do ​

  • Upload or sell on the agency account itself. Without a named account, products, media, upload sessions, content folders, the collection profile, consents and personal-message settings answer 403 for an agency token. The agency account never owns content, a short link or a public profile - content lives in the accounts it works in: its AI models and the connected creators. Webhooks are the exception: an agency registers agency-wide webhooks on its own account.
  • Touch the creator's money or identity. Inside a creator session these are refused with 403: payout details (bank_data, IBAN and the other bank fields), the email address and postal address, the password, deleting the account, requesting a payout, linked accounts and login sessions. GET /api/user hides the payout details there.
  • Decide about the relationship for the creator. Accepting or declining an invitation and leaving an agency are the creator's actions only.
  • Act unseen. Everything an agency does in a creator account - every change, and reads of the account, wallet and analytics - is written to an activity log the creator can read.
  • Take 100 % silently. A share of 100 % needs the creator's explicit confirmation when accepting, and an existing share cannot be raised to 100 % without a new invitation.
  • Manage the relationship with an API key. The list of creators with their addresses, revenue shares, resending an invitation, ending a relationship, opening an app session, the company record and the earnings overview need the agency's login token. An API key reaches the AI models, the list of accounts it can work in, invitations, webhooks, the state of the company review and - for what the review still needs - its documents; see below.
  • Answer for the creator. A consent request addressed to a creator is answered by that creator alone - not in an agency session, not with the agency's key. Asking other people for consent on the creator's content is open.
  • Touch the creator's own webhooks. Inside a creator's account the agency changes and removes only the webhooks it registered there itself. It can see the others.

AI models ​

An AI model is an account of kind ai_model that belongs to the agency. It sells fully AI-generated content only: a file declared as anything but synthetic is refused (422, see AI content). It has no login and is never verified itself - the agency behind it is the responsible, verified seller, so an AI model can take uploads once the agency's company review and the representative's identity verification are complete. Its revenue share is fixed at 100 %: sales are booked to the agency's wallet. Nobody has to accept anything; the agency creates, renames and deactivates its models itself. A deactivated model can no longer be worked in; refunds of its earlier sales still reach the agency.

MethodPathPurpose
GET/api/agencies/me/ai-modelsThe agency's AI models, each with its account_key
POST/api/agencies/me/ai-modelsCreate one: { "name": "Luna Vale" }, optionally with "currency": "EUR"
PATCH/api/agencies/me/ai-models/{link}Rename
DELETE/api/agencies/me/ai-models/{link}Deactivate

Login token, or an API key with can_manage_ai_models. AI models count towards the agency's 100 open relationships.

Names. The name is the model's stage name and is free: two models - of your agency or of another - may carry the same name, and so may a model and a creator. It is 2 to 80 characters. The model's profile address is not made from the name: it is ten random lower-case letters and digits, given when the model is created and never changed by a rename, so links to the profile keep working. Deactivating a model gives it a new address and frees every address it used; its name stays.

Currency. A model sells in its own currency: send currency (USD, EUR or GBP) when creating it, otherwise it takes the agency's currency. It is set once - a rename cannot change it (422). Prices are in minor units of that currency, with the usual minimum of 500. Mind the conversion buffer: when the model's currency differs from the agency's, the agency's share of every sale is converted into the agency's currency when it is booked - at the reference rate minus Fangate's conversion buffer of up to 5 % (see Wallet). A model in the agency's own currency is not converted. The model object carries creator.currency.

Model accounts ​

A model account is for content that shows a real person who signed a release with the agency - a shoot the agency produced, for example. It is two accounts in one: the showroom (kind model_showroom, a storefront the agency uploads to and sells in, like an AI model) and the person (kind model_person, the model herself, reached by her e-mail address). Fangate reviews the release documents; until the file is approved nothing can be uploaded and nothing is sold. Its revenue share is fixed at 100 %: sales are booked to the agency's wallet.

Registering. POST /api/agencies/me/models with the person's name, her e-mail address and the way the release documents come in:

json
{
  "name": "Mia Rose",
  "email": "mia@example.com",
  "scope": "Photo and video content from the shoot of 12 March 2026, for sale on Fangate without time limit."
}
  • scope (10 to 2000 characters) states what the model's consent covers - which content, from which shoot or period, for what use and how long. The model reads it in her mail and on her page; Fangate checks the uploads against it. It is required when the agency files the documents itself.
  • "request_documents": true instead asks the model to fill in Fangate's release form herself (she gets the link by mail and attaches a photo of her ID, front and back); the signed form reaches Fangate directly. scope is not taken on this path.
  • The address must not belong to a Fangate account yet (422 model_email_taken): that person is a creator to invite, or someone to tag in your content. The usual limits apply: the agency's company review and the representative's identity verification must be complete, and model accounts count towards the 100 open relationships.

The answer (201) is the relationship with creator.is_model_showroom: true and creator.model_release - the file: status (pending, approved, rejected), scope, proof (veriff, id_document, release_form, statement - what is on file), documents (the agency's own), rejection_reason, admin_note, submitted_at, reviewed_at. The model receives a mail with a one-time link to her page.

Documents. Until the file is approved the agency files the signed release form and the ID: POST /api/agencies/me/models/{link}/documents, multipart with type (release_form, id_document, other) and file (PDF, JPG, PNG or WebP, up to 20 MB). Send the ID as two files, front and back, or one file with both sides. DELETE /api/agencies/me/models/{link}/documents/{document} removes one of the agency's own documents. After a rejection, a new document puts the file back into review. Documents Fangate files itself are counted in proof but never listed.

Review and approval. Fangate decides on the file as a whole; a signed release form is what matters most, the model's own identity check (Veriff on her page) and her statement are information. The agency is told by mail. Approved: the showroom becomes operable, every file uploaded to it is tagged with the model automatically and counts as consented, and the model is told. Rejected: the mail names the reason; upload what is missing and the file goes back into review. Before the approval every upload into the showroom answers 403 model_release_pending.

The model's page. The model opens her page through the one-time link from her mail (valid 7 days, works once; she can ask for a new one by e-mail at any time) and can set a password there to come back without a link. The page lists every product that contains a file showing her; she can withdraw her consent for a single product - that product and every other product holding one of its files stop selling (consent_rescinded) - or for everything at once, which closes the model account for good and tells the agency by mail. Buyers keep what they bought. Once a day, when files showing her were uploaded, she gets one digest mail. The page is hers alone: no API key, no agency session and no admin reaches it.

Working in the showroom. Once approved, name the showroom with X-Fangate-Account like any other account (GET /api/agencies/me/accounts lists it with kind: model_showroom): uploads, products, prices, folders and the vault work as for an AI model. A model account takes files of any origin, within the scope of the release; the AI declaration rules of AI content apply as for a creator.

MethodPathPurpose
GET/api/agencies/me/modelsThe agency's model accounts with their files, plus can_create and blocked_reason
POST/api/agencies/me/modelsRegister one (see above)
GET/api/agencies/me/models/{link}One model account with its file
PATCH/api/agencies/me/models/{link}Rename: { "name": "..." }
POST/api/agencies/me/models/{link}/documentsFile a release document (multipart type, file)
DELETE/api/agencies/me/models/{link}/documents/{document}Remove one of the agency's documents, until the approval
POST/api/agencies/me/models/{link}/resend-linkSend the model a fresh link to her page (at most once per 24 hours)
DELETE/api/agencies/me/models/{link}Deactivate for good: the showroom goes offline, the relationship ends, the model is told. The file and its documents stay on record

Login token, or an API key with can_manage_ai_models - the same permission as for AI models. Names and currency follow the AI model rules: the name is free and is the showroom's stage name, the profile address is random, and the showroom sells in the agency's currency.

The agency's API key ​

An agency creates API keys on its own account (API Keys, dashboard: Settings → API keys). Two permissions exist for agency accounts only:

PermissionWhat it opens
can_manage_ai_modelsThe AI model endpoints and the model account endpoints above
can_access_connected_creatorsWorking inside connected creators and inviting creators. Without it a key reaches the agency's AI models and model accounts only

The other permissions (can_create_new_urls, can_view_transactions, can_manage_webhooks) say WHAT the key may do; they apply inside every account it reaches.

Naming the account. Send the account's account_key in the header X-Fangate-Account with any endpoint an API key may call. The call then works in that account - its products, vault, folders, wallet, webhooks - exactly as the account's own key would:

http
GET /api/products
Authorization: Bearer <agency api key>
X-Fangate-Account: conn_418_90211

Without the header the call works on the agency account itself. That account holds no content, so the content endpoints answer 403 there - creating AI models, the list of accounts, invitations and agency-wide webhooks are what a key does without the header. Read the keys from GET /api/agencies/me/accounts:

json
{
  "success": true,
  "data": {
    "agency": { "id": 42, "name": "Vale Studios" },
    "accounts": [
      {
        "account_key": "conn_418_90211",
        "kind": "creator",
        "name": "Mia Example",
        "stage_name": "Mia",
        "is_verified": true,
        "uploads_allowed": true,
        "api_access_allowed": true,
        "currency": "EUR",
        "connected_at": "2026-09-20T10:12:00+00:00"
      }
    ]
  }
}

agency names the agency the access belongs to (trading name, else the legal name) - a key can check it before it writes. The company record itself (GET /api/agencies/me) stays closed to API keys.

A key without can_access_connected_creators sees its AI models only. is_verified tells a program whether an account can take uploads (a creator: identity check done; an AI model: the agency is fully verified) - read it instead of trying an upload. An upload into an unverified account answers 422 creator_verification_required; for an API key no verification session is opened with it.

RefusalMeaning
422 agency_account_key_invalidThe header carries something that is not an account_key (a bare id, for one)
404 agency_account_not_foundUnknown, not one of this agency's accounts, not active (invitation still open, relationship ended, model deactivated) - or a key whose two numbers do not belong together
403 api_key_permission_missingA connected creator was named, but the key has no can_access_connected_creators
403 agency_api_access_revokedThe creator switched off API access for the agency
403 agency_upload_not_allowedThe creator switched off uploads by the agency (new files only - everything else goes on)

The agency's login token reaches AI models with the header, never a connected creator; the dashboard opens creator accounts through a session.

What stays closed inside a creator's account, whatever the key's permissions: payout details, requesting a payout, e-mail address, password, login sessions, company details, deleting the account, the account-wide payment options, answering consent requests addressed to the creator, accepting or ending the agency relationship, and the creator's two switches. Every change the agency makes, and its reads of wallet, account data and analytics, are written to the activity log the creator can read.

The creator's switches. A creator can, at any time and without ending the relationship, switch off API access and sale notifications for the agency and uploads by the agency (PATCH /api/agency-membership with agency_api_access / agency_may_upload, or Settings → Agency). Both take effect at once and are reversible; nothing is deleted. With API access off, keys and webhooks the agency created on that account pause as well.

Rate limits. Every named account has its own counters; across all accounts an agency's key has a higher ceiling per IP - see Rate limits.

A blocked agency reaches no account - not with its key, not in an open session - receives no webhooks and creates no AI models, webhooks or invitations by key until the block is lifted.

Inviting creators with the API key ​

POST /api/agencies/me/creators/invite with { "email": "...", "revenue_share_percent": 30 } also works with an API key that has can_access_connected_creators. The creator receives the invitation by mail and accepts in the own account; from then on the account appears in GET /api/agencies/me/accounts.

An API key can send invitations until the agency has sent 125 invitations in total - counted over the whole life of the agency, from the dashboard and by key, including withdrawn, declined and expired ones. Beyond that the key gets 403 agency_invitation_limit_reached; contact support to have the limit raised. The dashboard is not held to this ceiling. The other limits apply to both: 100 open relationships and invitations at the same time, 30 calls a minute.

Agency-wide webhooks ​

A webhook registered on the agency account listens to the accounts the agency runs. Choose at least one scope:

FieldHears
agency_scope_ai_modelsThe events of the agency's AI models and model accounts (the dashboard calls it Agency accounts)
agency_scope_creatorsThe events of the connected creators - except those who switched off API access for the agency

Deliveries carry the usual payload plus a top-level account block that names the account with the same account_key the header takes - see Webhooks. A sale event follows the relationship that was in force when the sale was made: a refund still reaches the agency after the relationship ended. Sending a scope together with X-Fangate-Account is refused (422): inside an account a webhook belongs to that one account.

How a relationship runs ​

  1. Register the agency at /register/agency in the dashboard (or POST /api/agencies/register): company details, legal form, VAT ID where applicable, and the representative - a real person who completes the same identity check as a creator. The e-mail address is confirmed first, like a creator's: POST /api/user/email/verify, the click on the mailed link, GET /api/registration/email-status - see Onboarding; without the click the registration answers 422 email_not_confirmed. A partner server registered with Fangate may vouch for an address it has verified itself (email_confirmed_by_partner: true in the registration call); only the click is skipped, nothing else changes: the address is the agency's Fangate e-mail address and its sign-in name at Fangate, your screens show it to the agency as exactly that, and password-reset mails and payout warnings go to it. From a partner page the login token in the answer expires after 4 hours; create the agency's API key with it right away.
  2. Company review. Upload a bank statement and an incorporation document (POST /api/agencies/me/documents); a sole proprietor (entity_kind: sole_proprietor at registration) files the bank statement only. The agency's API key may upload as well (not a read-only key): only a required type that is still missing or the answer to an open document request, never other (422 agency_document_not_needed), and at most 10 documents per key (422 agency_document_key_limit_reached). The verdict reaches the agency's webhooks as agency.company_reviewed. Fangate reviews them; GET /api/agencies/me shows kyb_status and verification.payout_released. An API key reads the same state through GET /api/agencies/me/verification: kyb_status, company_approved, identity_verified, payout_released, blocked_reason (the sentence the blocked actions answer with, null once payouts are released), required_documents, missing_documents (required types without an accepted or pending upload), documents with their status, and document_requests (documents Fangate asked for in addition). The agency can invite and operate creators while the review is open - only the payout waits for it.
  3. Invite a creator: POST /api/agencies/me/creators/invite with email and revenue_share_percent. An unregistered address receives a sign-up link that carries the invitation. Invitations expire after 14 days and can be resent a limited number of times.
  4. The creator accepts (POST /api/agency-invitations/{link}/accept, or in the dashboard under Settings → Agency).
  5. Open a session: POST /api/agencies/me/creators/{link}/session returns a token for that creator's account, valid for 12 hours. The dashboard does the same through its account switcher.
  6. Work in the session - with that token every creator endpoint of this documentation applies, within the limits above. For an integration, create an API key there once (API Keys) and use it from your server.
  7. Ending. Either side can end the relationship at any time (DELETE /api/agencies/me/creators/{link} for the agency, DELETE /api/agency-membership for the creator). From that moment the agency's access is gone: open sessions are revoked, API keys the agency created on the creator's account are deleted, webhooks it created are set inactive, and new sales go to the creator in full. Sales made while the relationship was active are still split.
  8. Deleting the agency account ends everything it runs: its AI models are deactivated, every relationship with a creator is ended (the creator is told by mail), and its webhooks are switched off. A blocked agency keeps all of this; it only receives and does nothing while the block lasts.

Endpoints ​

All answer the standard envelope { success, errors_message, data } and are part of the OpenAPI document.

Agency side (agency login token):

MethodPathPurpose
GET / PATCH/api/agencies/meCompany record, review status, documents; editable until the company is approved
POST / DELETE/api/agencies/me/documentsUpload or withdraw a review document
GET/api/agencies/me/verificationWhy the agency is still pending: review status, missing document types, open document requests (login token or any API key of the agency)
GET/api/agencies/me/creatorsConnected creators and open invitations, with max_creators
POST/api/agencies/me/creators/inviteInvite by email with revenue_share_percent
POST/api/agencies/me/creators/{link}/resend-inviteSend the invitation again
PATCH/api/agencies/me/creators/{link}/shareChange the share for future sales
DELETE/api/agencies/me/creators/{link}End the relationship or withdraw the invitation
POST/api/agencies/me/creators/{link}/sessionToken for operating that creator's account
GET/api/agencies/me/earningsEarnings per creator and currency
GET/api/agencies/me/accountsThe accounts this access can work in, with their account_key (login token or any API key of the agency)
GET / POST / PATCH / DELETE/api/agencies/me/ai-modelsAI models (login token, or API key with can_manage_ai_models)
GET / POST / PATCH / DELETE/api/agencies/me/modelsModel accounts and their release documents (login token, or API key with can_manage_ai_models)

Of these, an API key of the agency reaches accounts, verification, ai-models, models and creators/invite (with can_access_connected_creators); everything else needs the login token.

Creator side (creator login token; refused for agency accounts. Inside an agency session these are read-only: the agency can look at them, only the creator can accept, decline or leave):

MethodPathPurpose
GET/api/agency-invitationsOpen invitations
POST/api/agency-invitations/{link}/accept · /declineAnswer an invitation (confirm_full_share: true for a 100 % share)
GET / DELETE/api/agency-membershipThe active relationship with its share history; leave it
PATCH/api/agency-membershipThe creator's switches: agency_api_access, agency_may_upload (booleans, at least one)
GET/api/agency-membership/activityWhat the agency did in this account

Public reference data for the registration form: GET /api/agencies/countries, GET /api/agencies/legal-forms?country=DE, POST /api/agencies/vat/check.

What the buyer sees ​

Nothing about the agency. A product created in a creator session is that creator's product: the link, the buy page and the content belong to the creator's account. The buy page does not show a seller name at all - neither the creator's nor the agency's.

Fangate backend developer documentation