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

# Post apiv1useraccessactivate



## OpenAPI

````yaml /api-reference/openapi.json post /api/v1/user/access/activate
openapi: 3.1.0
info:
  title: ekiden-gateway
  description: >-
    API Gateway and WebSocket proxy based on Axum and Utoipa, handling auth,
    rate limiting, and connection buffering.
  license:
    name: ''
  version: 0.1.1
servers:
  - url: https://api.ekiden.fi/
    description: Production
  - url: https://api.cnt.ekiden.fi/
    description: Testnet
  - url: https://api.canton.ekiden.fi/
    description: Staging
security: []
paths:
  /api/v1/user/access/activate:
    post:
      tags:
        - User
      operationId: activate_user_access
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActivateAccessRequest'
        required: true
      responses:
        '200':
          description: Wallet activated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessActivateResponse'
        '400':
          description: Invalid, expired, or revoked code
        '403':
          description: Bound sub-account session
        '404':
          description: Access module disabled
        '409':
          description: Code already used or wallet already activated
        '429':
          description: Rate limited
      security:
        - bearer_auth: []
components:
  schemas:
    ActivateAccessRequest:
      type: object
      description: |-
        `POST /user/access/activate` — redeem a closed-launch code for the
        authenticated wallet.

        Identity is the session, so the body carries nothing but the code. This
        replaces the pre-auth signature ceremony below, which custodial (Auth0)
        wallets could never satisfy: they hold no signing key.
      required:
        - code
      properties:
        code:
          type: string
          description: |-
            Plaintext access code. Normalized (trim + uppercase) and hashed
            server-side; the plaintext is never persisted (S1-D5).
    AccessActivateResponse:
      type: object
      required:
        - activated
        - multiplier_bps
        - badge
      properties:
        activated:
          type: boolean
        badge:
          type: boolean
        multiplier_bps:
          type: integer
          format: int32
          minimum: 0
  securitySchemes:
    bearer_auth:
      type: http
      scheme: bearer

````