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

# List wallet collectibles

> List cards the wallet owns on chain, plus undelivered cards it drew through your integration.

| Card state | When it appears |
| - | - |
| `IN_WALLET` | The address owns the card on chain, including cards bought, transferred or drawn through another builder. |
| `IN_BUYBACK_WINDOW` | The wallet drew the card through your integration and the buyback window is still open. |
| `AWAITING_DELIVERY` | Renaiss still holds the wallet’s draw for your integration after its buyback window closes. |

**Pull details.** `pull` is present only for this wallet’s current draw through your integration. Other owned cards return `pull: null`. A card leaves the collection when sold, bought back, transferred away or redeemed. If a contract wallet permanently fails to accept delivery, the card leaves the list and totals without a refund or a delivery-failure activity.

**Pagination.** `tokenIds` filters the list before sorting, paging and calculating `pagination.total`. The [wallet summary](https://docs.renaiss.xyz/api-reference/wallets/get-collection-value.md) always uses the full collection. Query the signer and its Safe separately. Renaiss custody wallets return an empty list.

## Request

Builder key required

## Response

## Error codes

Match the HTTP status and response text to a row below. For guidance on codes shared across endpoints, see [Error meanings and recovery](https://docs.renaiss.xyz/api-reference/errors.md).

| HTTP | Error code | Text field | Response text and recovery |
| :- | :- | :- | :- |
| `400` | `WRONG_REQUEST_PARAMS` | `message` | `Bad request - invalid parameters` A field is missing, unknown or has the wrong form. Fix the request and send it again. |
| `401` | `API_AUTH_INVALID_CREDENTIAL` | `error` | `Invalid authentication credential` The builder key is malformed, unknown, expired or revoked. Check the key. Do not retry with the same key. |
| `401` | `API_AUTH_MISSING_CREDENTIAL` | `error` | `Required authentication credential is missing` No builder key was sent. Send your builder key in the `x-builder-api-key` header. |
| `403` | `API_AUTH_CREDENTIAL_NOT_ALLOWED` | `error` | `Credential is not allowed by this policy` This route takes a builder key only. Remove the `Authorization` header and any other credential, then send the request again. |
| `403` | `GACHA_V3_BUILDER_NOT_ACCEPTED_ON_PUBLIC_API` | `error` | `This builder checks out on its own surface, not on the public API` This builder key cannot be used on this API. Do not retry; contact Renaiss. |
| `429` | `API_AUTH_RATE_LIMITED` | `error` | `Authentication rate limit exceeded` The builder key hit its rate limit. Wait a little, then retry at a lower rate. |
| `500` | `API_AUTH_ERROR` | `error` | `Internal server error` |
| `500` | `FUNCTION_ERROR` | `error` | `Internal server error` |
| `500` | Other code | `error` | `Internal server error` |
| `500` | No code | `text/plain` | `Internal Server Error` |


## OpenAPI

````yaml api-reference/openapi.json GET /v2/users/{walletAddress}/collectibles
openapi: 3.1.1
info:
  version: 1.0.0
  title: Renaiss Builder API v2
  description: >-
    Builder API v2 for gacha, marketplace and redemption with external wallets
    on BNB Smart Chain (chain 56). Any active, approved builder key can prepare
    purchases.


    A collectible is an item a wallet can pull, trade, sell back or redeem, such
    as a card. This API calls every such item a collectible (e.g. cards), in
    paths, fields and descriptions.


    Browse publicly, then prepare and sign actions with the buyer wallet. Gacha
    history and buyback offers require your builder key; purchases and buybacks
    also require a wallet action signature. Private shipping data and redemption
    require a wallet access token, which the API issues from a registered
    partner origin after the wallet signs a sign-in message. Gacha and
    marketplace never use a wallet access token. Keep the builder key on your
    backend.


    The acting wallet is an EOA or a deployed ERC-1271 contract account.
    EIP-7702 delegated accounts, ERC-6492 and ERC-8010 wrapped signatures and
    Renaiss-managed Safes are refused (a Safe only after its signature
    verified). A pull to a contract account that cannot receive ERC-721 tokens
    returns `CONTRACT_WALLET_CANNOT_RECEIVE_NFT`. A failed chain read returns
    `API_AUTH_ERROR` (500). Wallet access tokens and redemption are EOA only.
servers:
  - url: https://api.renaiss.xyz
    description: BNB Smart Chain
  - url: https://dev-api.renaiss.xyz
    description: BNB testnet
security: []
tags:
  - name: Gacha v2
    description: >-
      Direct-EOA pack browsing, purchases, collectible (e.g. card) reveals,
      purchase history and buybacks. Start here; no wallet access token is
      needed.
  - name: Marketplace
    description: >-
      Public collectible (e.g. card) browsing and external-wallet asks, bids,
      purchases and cancellations. Trading requires builder authorization and
      wallet action signatures.
  - name: Users
    description: >-
      What one wallet address has and did: its collectibles (e.g. cards), their
      total market value and its activities. The whole wallet, whichever builder
      it used. Requires your builder key only.
  - name: Redemption
    description: >-
      Shipping eligibility, quotes, redemption preparation, submission and
      tracking. Requires your builder key and a wallet access token for the same
      wallet.
  - name: Wallet access tokens
    description: >-
      Get, refresh and revoke the wallet access tokens that Redeem needs. The
      wallet signs a sign-in message (valid 5 minutes, one use); the API returns
      a wallet access token (15 minutes) and a refresh token (7 days, single
      use). Register exact partner frontend origins with Renaiss before use.
      Gacha and marketplace never use a wallet access token.
paths:
  /v2/users/{walletAddress}/collectibles:
    get:
      tags:
        - Users
      summary: List the collectibles a wallet has
      description: >-
        List cards the wallet owns on chain, plus undelivered cards it drew
        through your integration.
      parameters:
        - schema:
            type: string
            description: The wallet to read. Exactly this address.
          required: true
          description: The wallet to read. Exactly this address.
          name: walletAddress
          in: path
        - schema:
            type: string
            enum:
              - pulledAt
              - rixPriceInUsd
              - buybackExpiresAt
            default: pulledAt
            description: >-
              `pulledAt`: when the wallet pulled the collectible with your
              builder key. `rixPriceInUsd`: its RIX price (estimated fair market
              value, or FMV). `buybackExpiresAt`: when its current buyback tier
              ends, the `expiresAt` of the first tier in `state.buybackTiers`
              that has not passed; a later tier can remain available. A
              collectible without the value sorts last in both directions.
          required: false
          description: >-
            `pulledAt`: when the wallet pulled the collectible with your builder
            key. `rixPriceInUsd`: its RIX price (estimated fair market value, or
            FMV). `buybackExpiresAt`: when its current buyback tier ends, the
            `expiresAt` of the first tier in `state.buybackTiers` that has not
            passed; a later tier can remain available. A collectible without the
            value sorts last in both directions.
          name: sortBy
          in: query
        - schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
          required: false
          name: sortOrder
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
          required: false
          name: limit
          in: query
        - schema:
            type:
              - integer
              - 'null'
            minimum: 0
            maximum: 10000
            default: 0
          required: false
          name: offset
          in: query
        - schema:
            type: array
            items:
              type: string
              pattern: ^\d+$
            description: >-
              Up to 20 collectible token ids as decimal strings. Comma-separate
              (`?tokenIds=1,2`) or repeat for several. Values are trimmed,
              blanks removed and duplicate strings collapsed before the limit is
              checked. Omitted or empty means no filter. Filters before sorting
              and paging: `pagination.total` counts the filtered list. A token
              id the list does not hold returns nothing for it.
          required: false
          name: tokenIds
          in: query
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  collectibles:
                    type: array
                    items:
                      type: object
                      properties:
                        tokenId:
                          type: string
                          description: The collectible's token id.
                        type:
                          type: string
                          enum:
                            - POKEMON
                            - ONE_PIECE
                            - SPORTS
                          description: The collectible's category.
                        name:
                          type: string
                          description: Grade, year, set, number and title.
                        frontImageUrl:
                          type: string
                          format: uri
                          description: >-
                            The graded slab in its Renaiss frame, on a dark
                            background.
                        rixPriceInUsd:
                          type:
                            - string
                            - 'null'
                          description: >-
                            The RIX price is the collectible’s estimated fair
                            market value (FMV) in USD cents, as shown on
                            renaiss.xyz. The estimate changes with the market.
                            Returns `null` when no estimate is available.
                        rixPriceUpdatedAt:
                          type:
                            - string
                            - 'null'
                          format: date-time
                          description: >-
                            The time of the last update to the RIX price
                            (estimated FMV) in `rixPriceInUsd`. Returns `null`
                            if no timestamp is available.
                        state:
                          oneOf:
                            - type: object
                              properties:
                                status:
                                  type: string
                                  enum:
                                    - IN_WALLET
                              required:
                                - status
                            - type: object
                              properties:
                                status:
                                  type: string
                                  enum:
                                    - IN_BUYBACK_WINDOW
                                buybackBaseValueInUSD:
                                  type: string
                                  description: >-
                                    The collectible's base buyback value for
                                    this pull, in USD cents, bonus included.
                                    Each tier pays its `buybackPercentage` of
                                    it.
                                buybackBonus:
                                  type:
                                    - object
                                    - 'null'
                                  properties:
                                    originalBuybackBaseValueInUSD:
                                      type: string
                                      description: >-
                                        The base buyback value before the bonus,
                                        in USD cents. Frozen when the set
                                        formed.
                                    bonusBps:
                                      type: integer
                                      description: >-
                                        The bonus in basis points: 2000 means
                                        +20%.
                                  required:
                                    - originalBuybackBaseValueInUSD
                                    - bonusBps
                                  description: >-
                                    The buyback bonus of this collectible. The
                                    base buyback value field next to it and the
                                    `buybackTiers` amounts already include the
                                    bonus: do not apply it again. Null when the
                                    collectible has no bonus.
                                buybackTiers:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      buybackPercentage:
                                        type: number
                                        description: >-
                                          Percent of the card's base value, e.g.
                                          90 means 90%.
                                      amountInUsdt:
                                        type: string
                                        description: >-
                                          Price in USDT with 18 decimals in this
                                          tier.
                                      expiresAt:
                                        type: string
                                        description: >-
                                          When this tier ends. The tier still
                                          applies at that moment.
                                    required:
                                      - buybackPercentage
                                      - amountInUsdt
                                      - expiresAt
                                  description: >-
                                    Every buyback tier of this pull, past ones
                                    too, soonest end first, with the same prices
                                    as `GET /v2/gacha/buyback/offers`. The price
                                    now is the `amountInUsdt` of the first tier
                                    whose `expiresAt` has not passed; a tier
                                    still applies at its `expiresAt`.
                              required:
                                - status
                                - buybackBaseValueInUSD
                                - buybackBonus
                                - buybackTiers
                            - type: object
                              properties:
                                status:
                                  type: string
                                  enum:
                                    - AWAITING_DELIVERY
                              required:
                                - status
                          description: >-
                            `IN_WALLET`: the wallet owns the collectible on
                            chain. `IN_BUYBACK_WINDOW`: the wallet pulled the
                            collectible with your builder key, Renaiss holds it
                            and the wallet can still sell it back; sign the
                            offer from `GET /v2/gacha/buyback/offers`.
                            `AWAITING_DELIVERY`: the wallet pulled the
                            collectible with your builder key, no buyback is
                            offered and the collectible is not in the wallet
                            yet.
                        pull:
                          type:
                            - object
                            - 'null'
                          properties:
                            packId:
                              type: string
                              format: uuid
                              description: The pack the collectible was pulled from.
                            packName:
                              type: string
                            permitFundTxHash:
                              type: string
                              description: The payment of the pull.
                            pulledAt:
                              type: string
                              format: date-time
                              description: The block time of that payment.
                          required:
                            - packId
                            - packName
                            - permitFundTxHash
                            - pulledAt
                          description: >-
                            Details of this wallet’s current draw through your
                            integration. Other owned cards return `null`.
                      required:
                        - tokenId
                        - type
                        - name
                        - frontImageUrl
                        - rixPriceInUsd
                        - rixPriceUpdatedAt
                        - state
                        - pull
                  pagination:
                    type: object
                    properties:
                      total:
                        type: number
                      limit:
                        type: number
                      offset:
                        type: number
                      hasMore:
                        type: boolean
                    required:
                      - total
                      - limit
                      - offset
                      - hasMore
                required:
                  - collectibles
                  - pagination
        '400':
          description: >-
            The request was refused before anything happened.


            See [error codes and
            recovery](/api-reference/wallets/list-collectibles#http-errors).
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - WRONG_REQUEST_PARAMS
                  message:
                    type: string
                    description: A short sentence about what went wrong.
                required:
                  - code
                  - message
              example:
                code: WRONG_REQUEST_PARAMS
                message: Bad request - invalid parameters
        '401':
          description: >-
            The builder key is missing or not accepted.


            See [error codes and
            recovery](/api-reference/wallets/list-collectibles#http-errors).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: A short sentence about what went wrong.
                  code:
                    type: string
                    enum:
                      - API_AUTH_MISSING_CREDENTIAL
                      - API_AUTH_INVALID_CREDENTIAL
                required:
                  - error
                  - code
              example:
                error: Required authentication credential is missing
                code: API_AUTH_MISSING_CREDENTIAL
        '403':
          description: >-
            The builder key is not allowed to make this request.


            See [error codes and
            recovery](/api-reference/wallets/list-collectibles#http-errors).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: A short sentence about what went wrong.
                  code:
                    type: string
                    enum:
                      - API_AUTH_CREDENTIAL_NOT_ALLOWED
                      - GACHA_V3_BUILDER_NOT_ACCEPTED_ON_PUBLIC_API
                required:
                  - error
                  - code
              example:
                error: Credential is not allowed by this policy
                code: API_AUTH_CREDENTIAL_NOT_ALLOWED
        '429':
          description: >-
            Too many requests with this builder key.


            See [error codes and
            recovery](/api-reference/wallets/list-collectibles#http-errors).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: A short sentence about what went wrong.
                  code:
                    type: string
                    enum:
                      - API_AUTH_RATE_LIMITED
                required:
                  - error
                  - code
              example:
                error: Authentication rate limit exceeded
                code: API_AUTH_RATE_LIMITED
        '500':
          description: >-
            A failure on our side. Retry later.


            See [error codes and
            recovery](/api-reference/wallets/list-collectibles#http-errors).
          content:
            text/plain:
              schema:
                type: string
              example: Internal Server Error
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: A short sentence about what went wrong.
                  code:
                    type: string
                required:
                  - error
                  - code
              example:
                error: Internal server error
                code: FUNCTION_ERROR
      security:
        - builderAuth: []
components:
  securitySchemes:
    builderAuth:
      type: apiKey
      in: header
      name: x-builder-api-key
      description: >-
        Your approved builder API key. Keep it on your backend. Gacha and
        marketplace writes also require wallet action signatures. Redeem also
        needs a wallet access token, a Bearer token the API issues after the
        wallet signs a sign-in message.

````

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