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

# Mint one Mainnet invite code

> Mint one invite code from the authenticated wallet's available allowance.
 Every active wallet has one initial code plus one per 250,000 USDC of executed
 Mainnet USDC volume since the configured launch. Revocation never refunds a slot.



## OpenAPI

````yaml /proto-openapi/api/openapi.yaml post /api/v1/invite-codes/requests
openapi: 3.0.3
info:
  title: Monaco Protocol API
  description: REST API for the Monaco Protocol hybrid CLOB exchange.
  version: 1.0.0
servers:
  - url: https://staging.apimonaco.xyz
    description: Staging server (Testnet)
security: []
tags:
  - name: AccountsService
  - name: ApplicationsService
  - name: AuthService
  - name: BuildercodeRewardsService
  - name: CopyTradingService
  - name: DelegatedAgentsService
  - name: FaucetService
  - name: FeesService
  - name: HealthService
  - name: ManagedMarketsService
    description: |-
      Wallet-authenticated maker assignments. The signed session must match both
       configured maker user and application. Owner IDs are process fences, never auth.
       Only wallet sessions are supported; delegated-agent sessions receive 403.
  - name: MarginAccountsService
    description: |-
      Current public isolated-margin semantics:
       - a user has one parent margin account per application scope
       - opening orders create or reuse isolated position buckets under that parent
       - parent account creation is handled internally by margin workflows
  - name: MarketService
  - name: OrderbookService
  - name: OrdersService
  - name: PositionsService
    description: |-
      Current public isolated-margin semantics:
       - positions link to a parent margin account and, when applicable, a bucket id
       - opening orders create or reuse isolated position buckets under the parent
       - users can open another isolated position by reusing the parent account with a different market bucket
  - name: PulseService
  - name: SweeperService
  - name: TraderCodeService
  - name: TradesService
  - name: WhitelistService
  - name: WithdrawalsService
paths:
  /api/v1/invite-codes/requests:
    post:
      tags:
        - AuthService
        - Auth
      summary: Mint one Mainnet invite code
      description: >-
        Mint one invite code from the authenticated wallet's available
        allowance.
         Every active wallet has one initial code plus one per 250,000 USDC of executed
         Mainnet USDC volume since the configured launch. Revocation never refunds a slot.
      operationId: request_invite_codes
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestInviteCodesRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestInviteCodesResponse'
        '401':
          description: Authentication required
        '403':
          description: >-
            Active Mainnet access is required to mint a code; delegated-agent
            sessions cannot mint the owner's codes; deactivated signing accounts
            receive ACCOUNT_DEACTIVATED
        '429':
          description: Request rate limit exceeded
        '500':
          description: Internal server error
        '503':
          description: >-
            Invite encryption is not configured or generation is temporarily at
            capacity
      security:
        - monacoSignature: []
        - monacoHttpSignature: []
components:
  schemas:
    RequestInviteCodesRequest:
      type: object
      properties: {}
      additionalProperties: false
    RequestInviteCodesResponse:
      type: object
      properties:
        mainnetVolumeUsd:
          example: '250000.00'
          type: string
          description: >-
            Executed Mainnet USDC quote notional since the configured production
            launch, counting maker and taker wallets at 1 USDC = 1 USD. Zero
            until volume rewards and the launch timestamp are configured.
          nullable: true
        eligibleMilestones:
          example: 1
          type: integer
          description: Number of completed Mainnet volume milestones of 250,000 USDC each.
          format: int32
          nullable: true
        pendingMilestones:
          example:
            - 1
          type: array
          items:
            type: integer
            format: int32
          description: >-
            Previously pending milestones, retained for compatibility.
            Self-service minting creates an issued code immediately.
          nullable: true
        issuedMilestones:
          example: []
          type: array
          items:
            type: integer
            format: int32
          description: >-
            Issued allowance slots. Slot 0 is the initial code; slot N is the
            Nth 250,000 USDC volume milestone.
          nullable: true
        redeemedMilestones:
          example: []
          type: array
          items:
            type: integer
            format: int32
          description: Milestones whose issued code has been redeemed.
          nullable: true
        newlyRequestedMilestones:
          example:
            - 0
          type: array
          items:
            type: integer
            format: int32
          description: >-
            The single allowance slot minted by this call, or an empty array
            when no allowance remains. Every call may consume the next available
            slot.
          nullable: true
        code:
          type: string
          description: >-
            The newly minted 10-character case-sensitive bearer code. Absent
            when no allowance remains. Store securely; never log it.
          nullable: true
        codeId:
          type: string
          description: >-
            Identifier of the newly minted code; absent when no allowance
            remains.
          nullable: true
        mintedMilestone:
          type: integer
          description: >-
            Consumed allowance slot: 0 for the initial code, N for the Nth
            250,000 USDC milestone.
          format: int32
          nullable: true
        totalAllowance:
          type: integer
          description: >-
            One initial code plus the number of completed Mainnet volume
            milestones of 250,000 USDC each.
          format: int32
          nullable: true
        availableCodes:
          type: integer
          description: Unconsumed allowance after this call. Revoked slots remain consumed.
          format: int32
          nullable: true
        revokedMilestones:
          type: array
          items:
            type: integer
            format: int32
          description: Revoked allowance slots; they cannot be minted again.
          nullable: true
  securitySchemes:
    monacoSignature:
      type: apiKey
      description: >-
        Ed25519 session-key request signing. Every authenticated request carries
        three headers: `X-Monaco-PublicKey` (64-char lowercase-hex session
        public key), `X-Monaco-Timestamp` (Unix milliseconds, within 30s of
        server time), and `X-Monaco-Signature` (hex ed25519 signature). The
        signature is over `METHOD\npath?query\ntimestamp_ms\nSHA256_hex(body)`,
        where the body hash is the SHA-256 of the empty byte string when there
        is no body. Obtain the session keypair from `POST
        /api/v1/auth/challenge` followed by `POST /api/v1/auth/verify`.
      name: X-Monaco-Signature
      in: header
    monacoHttpSignature:
      type: apiKey
      description: >-
        RFC 9421 Ed25519 session-key request signatures. Send Signature-Input,
        Signature, and Content-Digest together; never combine them with
        X-Monaco-* credentials. The monaco signature covers @method, @path,
        @query, and content-digest in that order, with created (Unix seconds
        within 30s of server time), keyid (registered lowercase-hex session
        public key), and alg=ed25519 parameters. Content-Digest uses RFC 9530
        sha-256 over the exact body bytes, including the empty body. Query
        coverage retains ordering and percent encoding. Timestamp freshness does
        not reject repeated identical requests; use endpoint idempotency where
        supported. Existing legacy signing remains supported during server-first
        migration; SDK RFC 9421 signing is opt-in. See
        https://docs.0xmonaco.com/reference/http-message-signatures for the
        complete profile and trust model.
      name: Signature
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.