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

# Submit Incorporation Details

> Submits incorporation details after payment has been completed. Registers the project with its founders, company name preferences, and category.

The sum of all founder `shareBasisPoint` values plus `incorporationShareBasisPoint` must equal exactly `10000` (100%).



## OpenAPI

````yaml POST /incorporate/incorporate
openapi: 3.1.0
info:
  title: Bags Public API v2
  description: API endpoints for Bags platform
  version: 2.0.0
  contact:
    name: Bags Support
    url: https://support.bags.fm
servers:
  - url: https://public-api-v2.bags.fm/api/v1
    description: Production server
security:
  - ApiKeyAuth: []
tags:
  - name: Token Launch
    description: Endpoints for creating and managing token launches
  - name: Fee Share
    description: Endpoints for managing fee sharing configs
  - name: Fee Share Admin
    description: >-
      Endpoints for fee share admin operations including listing, transferring
      admin authority, and updating configs
  - name: Analytics
    description: Endpoints for retrieving token analytics and metadata
  - name: Fee Claiming
    description: Endpoints for claiming fees from various sources
  - name: State
    description: Endpoints for retrieving on-chain state and derived state
  - name: Trade
    description: Endpoints for getting trade quotes and executing token swaps
  - name: Partner
    description: Endpoints for managing partner configurations and claiming partner fees
  - name: Incorporation
    description: >-
      Endpoints for token incorporation payment, submission, and project
      management
  - name: Solana
    description: Endpoints for direct Solana blockchain interactions
  - name: Dexscreener
    description: >-
      Endpoints for managing Dexscreener token info orders, payments, and image
      uploads
  - name: Auth
    description: Endpoints for retrieving authenticated user information
  - name: Agent
    description: Endpoints for AI agent wallet-signature authentication (V2)
paths:
  /incorporate/incorporate:
    post:
      tags:
        - Incorporation
      summary: Submit incorporation details
      description: >-
        Submits incorporation details after payment has been completed.
        Registers the project with its founders, company name preferences, and
        category.


        The sum of all founder `shareBasisPoint` values plus
        `incorporationShareBasisPoint` must equal exactly `10000` (100%).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IncorporateRequest'
      responses:
        '200':
          description: Successfully submitted incorporation details
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/SuccessResponse'
                  - type: object
                    properties:
                      response:
                        $ref: '#/components/schemas/IncorporateResponse'
        '400':
          description: >-
            Bad request - Invalid incorporation parameters or share basis points
            do not sum to 10000
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized - Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    IncorporateRequest:
      type: object
      properties:
        orderUUID:
          type: string
          description: Order UUID from the start payment step
        paymentSignature:
          type: string
          description: On-chain signature of the submitted payment transaction
        projectName:
          type: string
          description: Project name (1-200 chars)
        tokenAddress:
          type: string
          description: Token mint address
        founders:
          type: array
          items:
            $ref: '#/components/schemas/IncorporationFounderParams'
          description: 1-10 founders for the incorporation
          minItems: 1
          maxItems: 10
        category:
          $ref: '#/components/schemas/IncorporationCategory'
          nullable: true
          description: Project category
        twitterHandle:
          type: string
          nullable: true
          description: Twitter handle (alphanumeric and underscores only, max 50 chars)
        incorporationShareBasisPoint:
          type: number
          description: Incorporation share in basis points (2000-3000)
          minimum: 2000
          maximum: 3000
        preferredCompanyNames:
          type: array
          items:
            type: string
          description: Exactly 3 preferred company names (each 1-200 chars)
          minItems: 3
          maxItems: 3
      required:
        - orderUUID
        - paymentSignature
        - projectName
        - tokenAddress
        - founders
        - incorporationShareBasisPoint
        - preferredCompanyNames
    SuccessResponse:
      type: object
      properties:
        success:
          type: boolean
          example: true
        response:
          description: ''
      required:
        - success
    IncorporateResponse:
      type: object
      properties:
        tokenAddress:
          type: string
          description: Token mint address
        incorporationStatus:
          type: string
          description: Current incorporation status
        founders:
          type: array
          items:
            $ref: '#/components/schemas/IncorporationFounderResponse'
          description: Founders with KYC details
        incorporationShareBasisPoint:
          type: number
          description: Incorporation share in basis points
        category:
          type: string
          nullable: true
          description: Selected project category
        twitterHandle:
          type: string
          nullable: true
          description: Twitter handle
        preferredCompanyNames:
          type: array
          items:
            type: string
          description: Preferred company names
      required:
        - tokenAddress
        - incorporationStatus
        - founders
        - incorporationShareBasisPoint
        - preferredCompanyNames
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          description: Error message
      required:
        - success
        - error
    IncorporationFounderParams:
      type: object
      properties:
        firstName:
          type: string
          description: First name (1-100 chars)
        lastName:
          type: string
          description: Last name (1-100 chars)
        email:
          type: string
          description: Email address
        nationalityCountry:
          type: string
          description: ISO 3166-1 alpha-3 country code (e.g. USA)
        taxResidencyCountry:
          type: string
          description: ISO 3166-1 alpha-3 country code
        residentialAddress:
          type: string
          description: Full residential address (1-500 chars)
        shareBasisPoint:
          type: number
          description: Founder's share in basis points (0-10000)
      required:
        - firstName
        - lastName
        - email
        - nationalityCountry
        - taxResidencyCountry
        - residentialAddress
        - shareBasisPoint
    IncorporationCategory:
      type: string
      enum:
        - RWA
        - AI
        - DEFI
        - INFRA
        - DEPIN
        - LEGAL
        - GAMING
        - NFT
        - MEME
      description: Category for the incorporation project
    IncorporationFounderResponse:
      type: object
      properties:
        founderId:
          type: string
          description: Unique founder identifier
        firstName:
          type: string
          description: First name
        lastName:
          type: string
          description: Last name
        kycUrl:
          type: string
          description: URL for KYC verification
        kycStatus:
          type: string
          enum:
            - PENDING
            - VERIFIED
            - REJECTED
            - EXPIRED
          description: Current KYC verification status
        shareBasisPoint:
          type: number
          description: Founder's share in basis points
        formUrl:
          type: string
          nullable: true
          description: URL for the incorporation form
        pep:
          $ref: '#/components/schemas/IncorporationFounderPepResponse'
          description: Politically exposed person data
        ipAttributionAcknowledgedAt:
          type: string
          nullable: true
          description: ISO timestamp of IP attribution acknowledgment
      required:
        - founderId
        - firstName
        - lastName
        - kycUrl
        - kycStatus
        - shareBasisPoint
        - pep
    IncorporationFounderPepResponse:
      type: object
      properties:
        isSelfPoliticallyExposed:
          type: boolean
          nullable: true
          description: Whether the founder is a politically exposed person
        selfPoliticalPositions:
          type: string
          nullable: true
          description: Political positions held by the founder
        isCloseToPoliticallyExposed:
          type: boolean
          nullable: true
          description: >-
            Whether the founder is closely associated with a politically exposed
            person
        closeToPoliticallyExposedFullName:
          type: string
          nullable: true
          description: Full name of the associated politically exposed person
        closeToPoliticallyExposedPositions:
          type: string
          nullable: true
          description: Political positions held by the associated person
        closeToPoliticallyExposedRelationship:
          type: string
          nullable: true
          description: Relationship to the politically exposed person
        politicallyExposedDataUpdatedAt:
          type: string
          nullable: true
          description: ISO timestamp of the last PEP data update
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key authentication. Provide your API key as the header value.

````