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

# Log in with signed wallet transaction

> Handles `POST /v1/auth/login/wallet/transaction` via `post.v1.auth.login.wallet.transaction`.



## OpenAPI

````yaml /openapi/phoenix-public-api.json post /v1/auth/login/wallet/transaction
openapi: 3.1.0
info:
  title: Phoenix Eternal API
  description: >-
    RESTful API for accessing Phoenix Eternal perpetual trading data. Provides
    real-time orderbook levels, asset information, and market metadata.
  termsOfService: https://www.phoenix.trade/terms-of-service
  contact:
    name: Phoenix Development Team
    url: https://github.com/Ellipsis-Labs/phoenix
  license:
    name: Proprietary
  version: 1.0.0
servers:
  - url: https://perp-api.phoenix.trade
    description: Phoenix Eternal Perp API
security: []
tags:
  - name: Auth
    description: Wallet and session authentication.
  - name: Exchange
    description: Exchange, market, candle, and no-referral register-instruction workflows.
  - name: Invite
    description: Invite validation, referral activation, and wallet allowlist checks.
  - name: Notifications
    description: Trader notification reads and acknowledgement helpers.
  - name: Trader
    description: Trader state, account history, and transaction builders.
externalDocs:
  url: https://docs.phoenix.trade
  description: Phoenix developer documentation
paths:
  /v1/auth/login/wallet/transaction:
    post:
      tags:
        - Auth
      summary: Log in with signed wallet transaction
      description: >-
        Handles `POST /v1/auth/login/wallet/transaction` via
        `post.v1.auth.login.wallet.transaction`.
      operationId: post.v1.auth.login.wallet.transaction
      requestBody:
        description: JSON request payload for `post.v1.auth.login.wallet.transaction`.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WalletTransactionLoginRequest'
            example:
              nonce_id: string
              signed_transaction: string
              wallet_pubkey: string
        required: true
      responses:
        '200':
          description: Phoenix JWT pair issued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthResponse'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        '403':
          $ref: '#/components/responses/ErrorResponse'
        '409':
          $ref: '#/components/responses/ErrorResponse'
        '500':
          $ref: '#/components/responses/ErrorResponse'
        '503':
          $ref: '#/components/responses/ErrorResponse'
components:
  schemas:
    WalletTransactionLoginRequest:
      type: object
      required:
        - wallet_pubkey
        - nonce_id
        - signed_transaction
      properties:
        nonce_id:
          type: string
          description: Echo of the `nonce_id` returned from the challenge endpoint.
        signed_transaction:
          type: string
          description: >-
            Base64-encoded fully-signed Solana legacy transaction (bincode wire

            format). Must be the challenge transaction signed by
            `wallet_pubkey`.

            Wallets are permitted to include additional ComputeBudget or

            Lighthouse instructions before signing (in any position); any other

            instruction (other than the Memo issued by the server) is rejected.

            The server verifies the signature, the memo payload, and that the

            message still uses the issued blockhash so the signed bytes are

            never broadcastable on-chain.
        wallet_pubkey:
          type: string
    AuthResponse:
      type: object
      required:
        - token_type
        - access_token
        - expires_in
        - refresh_token
        - refresh_expires_in
        - pop_key
      properties:
        access_token:
          type: string
        expires_in:
          type: integer
          format: int64
          minimum: 0
        pop_key:
          type: string
        refresh_expires_in:
          type: integer
          format: int64
          minimum: 0
        refresh_token:
          type: string
        token_type:
          type: string
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: string
  responses:
    ErrorResponse:
      description: Standard JSON error payload.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'

````