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

# Redeem Position

> Redeems position from a resolved Polymarket market. For positions with a current value > 0, this endpoint allows users to claim their winnings from a specific market condition. For losing positions with a current value = 0, this endpoint allows users to burn their position tokens to clean up their account. 
 Endpoint awaits successful execution of the redemption transaction before returning the transaction hash.

Proceeds default to the caller's `evmEoa`. To deliver them to a different wallet or token, set `dstWalletAddress` and/or `dstToken`; when `dstWalletAddress` is present the request must be signed — see the [Polymarket Signing Guide](../polymarket-signing).

> ⚠️ **Upcoming change:** `signatureByEvmEoa` + `expiration` will soon be required on every `redeemPosition` request, regardless of whether `dstWalletAddress` is set. The signature is currently optional when `dstWalletAddress` is omitted, but partners should plan to sign every call ahead of the cutover.



## OpenAPI

````yaml /swap-api-reference/openapi.json post /workflows/polymarket/redeemPosition
openapi: 3.1.0
info:
  title: Swaps API
  description: >-
    The Swaps API provides instant cross-chain swap and bridge functionality for
    decentralized applications.

    It supports multiple virtual machines (EVM, Solana, Bitcoin) and various DEX
    protocols and bridge solutions.
  version: 3.0.0
  contact:
    name: Swaps.xyz
    url: https://swaps.xyz
servers:
  - url: https://api-v2.swaps.xyz/api
    description: Production server
security:
  - ApiKeyAuth: []
paths:
  /workflows/polymarket/redeemPosition:
    post:
      tags:
        - Polymarket
      summary: Redeem Position
      description: >-
        Redeems position from a resolved Polymarket market. For positions with a
        current value > 0, this endpoint allows users to claim their winnings
        from a specific market condition. For losing positions with a current
        value = 0, this endpoint allows users to burn their position tokens to
        clean up their account. 
         Endpoint awaits successful execution of the redemption transaction before returning the transaction hash.

        Proceeds default to the caller's `evmEoa`. To deliver them to a
        different wallet or token, set `dstWalletAddress` and/or `dstToken`;
        when `dstWalletAddress` is present the request must be signed — see the
        [Polymarket Signing Guide](../polymarket-signing).


        > ⚠️ **Upcoming change:** `signatureByEvmEoa` + `expiration` will soon
        be required on every `redeemPosition` request, regardless of whether
        `dstWalletAddress` is set. The signature is currently optional when
        `dstWalletAddress` is omitted, but partners should plan to sign every
        call ahead of the cutover.
      operationId: redeemPosition
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - evmEoa
                - conditionId
                - assetId
              properties:
                evmEoa:
                  $ref: '#/components/schemas/EvmAddress'
                  description: User's EVM wallet address
                conditionId:
                  type: string
                  description: Polymarket condition ID for the position to redeem
                  example: >-
                    0x52f13a5eaf375170189f326e58cc6d217515de1cf9e41bff17be7779ea9a295c
                assetId:
                  type: string
                  description: Polymarket asset ID for the asset to redeem
                  example: >-
                    25851216745091725550702226389795916287148711992808817855215289655518936398397
                dstToken:
                  $ref: '#/components/schemas/PolymarketDstToken'
                  description: >-
                    Optional destination token. When set, redeemed USDC.e is
                    swapped into this token (address + chainId) before delivery.
                dstWalletAddress:
                  $ref: '#/components/schemas/EvmAddress'
                  description: >-
                    Optional wallet that receives the proceeds. When set,
                    `expiration` and `signatureByEvmEoa` become required — see
                    the [Polymarket Signing Guide](../polymarket-signing).
                expiration:
                  type: integer
                  description: >-
                    Unix timestamp (seconds) when `signatureByEvmEoa` expires.
                    Must be in the future and ≤ 300s ahead.
                signatureByEvmEoa:
                  $ref: '#/components/schemas/Hex'
                  description: >-
                    EIP-712 signature by the EOA over the `RedeemPosition` typed
                    data. Required when `dstWalletAddress` is set. See the
                    [Polymarket Signing Guide](../polymarket-signing).
      responses:
        '200':
          description: Position redeemed successfully
          content:
            application/json:
              schema:
                type: object
                required:
                  - txHash
                  - status
                properties:
                  txHash:
                    $ref: '#/components/schemas/Hex'
                    description: Transaction hash of the redemption
                  status:
                    type: string
                    description: Status message of the redemption
        '400':
          description: Bad request due to missing or invalid parameters
          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'
      servers:
        - url: https://api-v2.swaps.xyz/api
          description: Core Swap API Server
components:
  schemas:
    EvmAddress:
      type: string
      pattern: ^0x[a-fA-F0-9]{40}$
      description: EVM address (0x prefix + 40 hex characters)
    PolymarketDstToken:
      type: object
      required:
        - address
        - chainId
      description: >-
        Destination token used by Polymarket workflow endpoints. When provided,
        proceeds are swapped into this token before delivery.
      properties:
        address:
          $ref: '#/components/schemas/EvmAddress'
          description: Destination token contract address
        chainId:
          type: number
          description: Destination chain ID. See the [chain list](/resources/chain-list).
    Hex:
      type: string
      pattern: ^0x[a-fA-F0-9]*$
      description: Hex string with 0x prefix
    ErrorResponse:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          description: Always false for error responses
          enum:
            - false
          example: false
        error:
          type: object
          required:
            - code
            - name
            - message
            - title
            - statusCode
            - timestamp
          properties:
            code:
              type: string
              description: Error type code for programmatic handling
            name:
              type: string
              description: Error class name
            message:
              type: string
              description: Detailed error message
            title:
              type: string
              description: Short, user-friendly error title
            statusCode:
              type: integer
              description: HTTP status code
            details:
              type: object
              description: Additional error details
              additionalProperties: true
            timestamp:
              type: string
              description: ISO 8601 timestamp when the error occurred
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: 'Limited demo key for API Reference: `5c951bc81da566bbd030ba8e20724063`.'

````