> ## Documentation Index
> Fetch the complete documentation index at: https://api.fanvue.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Onboard a creator

> Create a pre-filled Fanvue creator signup from the supplied details.

The account is provisioned with the given banking country, content category and subscription price already completed, and a pending identity-verification (KYC) session is started for it. The response includes `kycUrl`, the hosted verification link: give it to the creator so they can complete verification. Verification is performed entirely by Fanvue's verification provider — this API only initiates the session and never sees or influences the verification itself. A verification email is sent to the creator's address as part of signup.

The account is not yet an active creator: it becomes active once the creator passes verification and completes profile setup in the standard Fanvue onboarding flow (which is also where they land on first login if the link is lost).

<Info>Access is limited to approved partner applications. Contact Fanvue to have your application enabled for creator onboarding. Requests are additionally capped per application per day.</Info>

<Info>
  **Required scope**

  * `write:creator` — Modify creator profiles, settings, and creator-specific data.
</Info>


## OpenAPI

````yaml /openapi.json post /onboarding/creators
openapi: 3.1.0
info:
  title: Fanvue API
  version: '0.1'
servers: []
security: []
paths:
  /onboarding/creators:
    post:
      summary: Onboard a creator
      description: >-
        Create a pre-filled Fanvue creator signup from the supplied details.


        The account is provisioned with the given banking country, content
        category and subscription price already completed, and a pending
        identity-verification (KYC) session is started for it. The response
        includes `kycUrl`, the hosted verification link: give it to the creator
        so they can complete verification. Verification is performed entirely by
        Fanvue's verification provider — this API only initiates the session and
        never sees or influences the verification itself. A verification email
        is sent to the creator's address as part of signup.


        The account is not yet an active creator: it becomes active once the
        creator passes verification and completes profile setup in the standard
        Fanvue onboarding flow (which is also where they land on first login if
        the link is lost).


        <Info>Access is limited to approved partner applications. Contact Fanvue
        to have your application enabled for creator onboarding. Requests are
        additionally capped per application per day.</Info>
      operationId: onboardCreator
      parameters:
        - $ref: '#/components/parameters/ApiVersionHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  format: email
                  description: Email address for the new creator account
                password:
                  type: string
                  pattern: ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{9,30}$
                  description: >-
                    Password for the new account (9-30 characters, at least one
                    uppercase letter, one lowercase letter and one number). When
                    omitted, an unguessable random password is generated; the
                    creator can gain access via the standard password-reset
                    flow.
                handle:
                  type: string
                  description: >-
                    Fanvue handle for the new creator. When omitted, a unique
                    handle is generated.
                displayName:
                  type: string
                  minLength: 1
                  maxLength: 50
                  description: >-
                    Display name for the new creator. Defaults to a name derived
                    from the handle.
                bankingCountry:
                  type: string
                  pattern: ^[A-Z]{2}$
                  description: Payout country of the creator (ISO 3166-1 alpha-2, e.g. GB)
                contentType:
                  type: string
                  enum:
                    - GENERAL
                    - NSFW
                  default: GENERAL
                  description: Content category for the new creator
                isAiCreator:
                  type: boolean
                  default: false
                  description: Whether this is an AI creator
                subscriptionPrice:
                  type: integer
                  minimum: 399
                  maximum: 10000
                  description: Monthly subscription price in USD cents (399-10000)
              required:
                - email
                - bankingCountry
                - subscriptionPrice
      responses:
        '201':
          description: Creator signup created with a pending verification session
          content:
            application/json:
              schema:
                type: object
                properties:
                  uuid:
                    type: string
                    description: UUID of the newly created creator
                  handle:
                    type: string
                    description: Handle of the newly created creator
                  displayName:
                    type: string
                    description: Display name of the newly created creator
                  email:
                    type: string
                    description: Email address of the newly created creator
                  kycUrl:
                    type:
                      - string
                      - 'null'
                    description: >-
                      Hosted identity-verification URL. Give this link to the
                      creator so they can complete KYC; verification is
                      performed entirely by Fanvue's verification provider. Null
                      when a verification session could not be started — the
                      creator can still verify by logging in to Fanvue.
                required:
                  - uuid
                  - handle
                  - displayName
                  - email
                  - kycUrl
              example:
                uuid: b7e6a2a0-1c2d-4e3f-9a4b-5c6d7e8f9a0b
                handle: amazing-falcon-123
                displayName: Amazing Falcon
                email: creator@example.com
                kycUrl: >-
                  https://idv.ondato.com/?id=1eb2f0cc-4ba4-4b71-9e42-4b4b0d6c1a2f
        '400':
          description: Bad Request - API version not supported OR validation failed
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/UnsupportedVersionError'
                  - $ref: '#/components/schemas/ValidationError'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/UnauthorizedResponse'
        '410':
          $ref: '#/components/responses/SunsetVersionResponse'
        '429':
          $ref: '#/components/responses/RateLimitResponse'
      security:
        - BearerAuth:
            - write:creator
components:
  parameters:
    ApiVersionHeader:
      name: X-Fanvue-API-Version
      in: header
      required: true
      schema:
        type: string
        default: '2025-06-26'
        example: '2025-06-26'
      description: API version to use for the request
  schemas:
    UnsupportedVersionError:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
      required:
        - error
        - message
      description: API version not supported
    ValidationError:
      type: object
      properties:
        errors:
          type: array
          items:
            type: string
      required:
        - errors
      description: Request validation failed
  responses:
    UnauthorizedResponse:
      description: Unauthorized Response
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
            required:
              - error
    SunsetVersionResponse:
      description: API version no longer supported (sunset)
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
              message:
                type: string
              nextVersion:
                type: string
            required:
              - error
              - message
    RateLimitResponse:
      description: Too many requests - rate limit exceeded
      headers:
        Retry-After:
          description: Number of seconds to wait before retrying the request
          schema:
            type: integer
        X-RateLimit-Limit:
          description: The maximum number of requests allowed in the current window
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: The number of requests remaining in the current window
          schema:
            type: integer
        X-RateLimit-Reset:
          description: The Unix timestamp (seconds) when the rate limit window resets
          schema:
            type: integer
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
            required:
              - error
  securitySchemes:
    BearerAuth:
      type: oauth2
      description: >-
        OAuth 2.0 access token, presented as a JWT bearer token in the
        `Authorization` header. Obtain a token via the authorization-code flow;
        the scopes granted to the token determine which operations it may call.
      flows:
        authorizationCode:
          authorizationUrl: https://auth.fanvue.com/oauth2/auth
          tokenUrl: https://auth.fanvue.com/oauth2/token
          refreshUrl: https://auth.fanvue.com/oauth2/token
          scopes:
            read:self: >-
              Access your own user profile information, including basic account
              details and settings.
            read:chat: >-
              Read chat conversations, messages, and chat-related data. This
              includes viewing chat lists and message history.
            write:chat: >-
              Create new chats and send messages. This scope is required for any
              chat-related actions that modify data.
            read:experience: >-
              Exchange a fan's experience token for the resolved experience and
              the fan's identity, so an embedded fan-facing experience can
              render the right content.
            write:experience: >-
              Request that the creator publish or unpublish a fan-facing
              experience. The app mints a request token; the creator confirms
              and Fanvue performs the change.
            read:fan: Access fan-related data and information within the platform.
            read:post: Read posts, including post details, comments, likes, and tips.
            write:post: Create, edit, and manage posts and content on behalf of users.
            read:media: Access media files, images, videos, and other content assets.
            write:media: >-
              Upload, modify, and manage media files and content assets. Also
              required for vault folder management.
            read:creator: >-
              Access creator profiles, content, and creator-specific
              information.
            write:creator: Modify creator profiles, settings, and creator-specific data.
            read:insights: >-
              Access analytics, metrics, and insights data for performance
              tracking.
            read:tracking_links: >-
              Read tracking links and the users associated with them, including
              per-user tracking metadata.
            write:tracking_links: Create and delete tracking links.
            read:agency: Read agency information, including the agency's team members.
            write:agency: >-
              Manage agency team members and invites, including inviting new
              team members and creators.

````