> ## 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.

# Refresh tracking

> Request the latest courier tracking details for a redemption order.

Refresh a specific order with its original builder key and a wallet access token for its owner. Display tracking details when the courier provides them.

## Request

Builder key and wallet access token

## 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` | `error` | `Invalid redemption input` A field is missing or has the wrong form, or the body is larger than 16 KiB. Fix the request and send it again. |
| `401` | `API_AUTH_INVALID_CREDENTIAL` | `error` | `Invalid authentication credential` The builder key or the wallet access token is malformed, unknown, expired or revoked. Check the key. For the token, refresh the tokens or have the wallet sign in again. |
| `401` | `API_AUTH_MISSING_CREDENTIAL` | `error` | `Required authentication credential is missing` The builder key or the wallet access token is missing. Send both: the key in the `x-builder-api-key` header and the token as a Bearer token. |
| `403` | `API_AUTH_CREDENTIAL_NOT_ALLOWED` | `error` | `Credential is not allowed by this policy` A credential this route does not take was sent. Send the builder key and the wallet access token only. |
| `403` | `API_AUTH_INSUFFICIENT_SCOPE` | `error` | `Required authentication scope is missing` The wallet access token lacks the scope this route needs: `redeem:read` to read, `redeem:write` to change. Have the wallet sign in again and ask for the scope. |
| `403` | `API_AUTH_INTEGRATION_MISMATCH` | `error` | `Authentication integrations do not match` The wallet access token was issued to another builder than the key. Use the key of the builder that issued the token. |
| `403` | `API_AUTH_SUBJECT_MISMATCH` | `error` | `Authentication subjects do not match` The wallet access token is not for the chain of this API. Have the wallet sign in again for the right chain. |
| `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. |
| `404` | `REDEMPTION_ORDER_NOT_FOUND` | `error` | `Redemption request failed` There is no such order for this wallet and builder. Check the request id. |
| `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_INVALID_CONFIGURATION` | `error` | `Internal server error` Contact Renaiss with `x-request-id` if wallet authentication keeps failing. |
| `500` | `API_AUTH_ERROR` | `error` | `Internal server error` |
| `500` | `FUNCTION_ERROR` | `error` | `Internal server error` |
| `500` | `REDEEM_TRACKING_SYNC_FAILED` `REDEMPTION_ORDER_QUERY_FAILED` | `error` | `Internal server error` Read again after a short wait. |


## OpenAPI

````yaml api-reference/openapi.json POST /v2/redeem/orders/{requestId}/tracking
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/redeem/orders/{requestId}/tracking:
    post:
      tags:
        - Redemption
      summary: Refresh tracking for an authorized redemption order
      description: Request the latest courier tracking details for a redemption order.
      parameters:
        - schema:
            type: string
            pattern: ^0x[\da-fA-F]{64}$
          required: true
          name: requestId
          in: path
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  requestId:
                    type: string
                    description: 32 bytes encoded as 0x followed by 64 hexadecimal digits.
                  status:
                    type: string
                  tokenStatuses:
                    type: object
                    additionalProperties:
                      type: string
                  address:
                    type: object
                    properties:
                      countryCode:
                        type: string
                        pattern: ^[A-Z]{2}$
                      addressLine1:
                        type: string
                        minLength: 1
                        maxLength: 35
                      addressLine2:
                        type: string
                        maxLength: 35
                      city:
                        type: string
                        minLength: 1
                        maxLength: 200
                      state:
                        type: string
                        maxLength: 200
                      postalCode:
                        type: string
                        minLength: 1
                        maxLength: 20
                    required:
                      - countryCode
                      - addressLine1
                      - city
                      - postalCode
                    additionalProperties: false
                  recipient:
                    type: object
                    properties:
                      name:
                        type: string
                        minLength: 1
                        maxLength: 22
                      phone:
                        type: string
                        pattern: ^\+[1-9]\d{6,14}$
                      email:
                        type: string
                        maxLength: 50
                        format: email
                      chineseName:
                        type: string
                        maxLength: 100
                    required:
                      - name
                      - phone
                      - email
                    additionalProperties: false
                  courierName:
                    type: string
                  estimatedDeliveryDaysMin:
                    type:
                      - number
                      - 'null'
                  estimatedDeliveryDaysMax:
                    type:
                      - number
                      - 'null'
                  fees:
                    type: object
                    properties:
                      handlingFeeInUsd:
                        type: string
                        pattern: ^\d{1,78}$
                        description: >-
                          Unsigned decimal integer smaller than 2^256, encoded
                          as a string.
                      shippingFeeInUsd:
                        type: string
                        pattern: ^\d{1,78}$
                        description: >-
                          Unsigned decimal integer smaller than 2^256, encoded
                          as a string.
                      insuranceFeeInUsd:
                        type: string
                        pattern: ^\d{1,78}$
                        description: >-
                          Unsigned decimal integer smaller than 2^256, encoded
                          as a string.
                      dutyAndTaxesInUsd:
                        type: string
                        pattern: ^\d{1,78}$
                        description: >-
                          Unsigned decimal integer smaller than 2^256, encoded
                          as a string.
                    required:
                      - handlingFeeInUsd
                      - shippingFeeInUsd
                      - insuranceFeeInUsd
                      - dutyAndTaxesInUsd
                  trackingNumber:
                    type:
                      - string
                      - 'null'
                  trackingUrl:
                    type:
                      - string
                      - 'null'
                  shipmentStatus:
                    type:
                      - string
                      - 'null'
                  trackingLastSyncedAt:
                    type:
                      - string
                      - 'null'
                  createdAt:
                    type: string
                    format: date-time
                  updatedAt:
                    type:
                      - string
                      - 'null'
                    format: date-time
                  collectibles:
                    type: array
                    items:
                      type: object
                      properties:
                        tokenId:
                          type: string
                          pattern: ^\d{1,78}$
                          description: >-
                            Unsigned decimal integer smaller than 2^256, encoded
                            as a string.
                        name:
                          type: string
                        frontImageUrl:
                          type: string
                          format: uri
                        rixPriceInUsd:
                          type:
                            - string
                            - 'null'
                          pattern: ^\d{1,78}$
                          description: >-
                            The RIX price is the collectible’s estimated fair
                            market value (FMV) in USD cents, or `null` if
                            unavailable. Unsigned decimal integer smaller than
                            2^256, encoded as a string.
                        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.
                        regionCountryCode:
                          type: string
                        vaultDisplayName:
                          type: string
                      required:
                        - tokenId
                        - name
                        - frontImageUrl
                        - rixPriceInUsd
                        - rixPriceUpdatedAt
                        - regionCountryCode
                        - vaultDisplayName
                required:
                  - requestId
                  - status
                  - tokenStatuses
                  - address
                  - recipient
                  - courierName
                  - estimatedDeliveryDaysMin
                  - estimatedDeliveryDaysMax
                  - fees
                  - trackingNumber
                  - trackingUrl
                  - shipmentStatus
                  - trackingLastSyncedAt
                  - createdAt
                  - updatedAt
                  - collectibles
        '400':
          description: >-
            The request was refused before anything happened.


            See [error codes and
            recovery](/api-reference/redeem/refresh-tracking#http-errors).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: A short sentence about what went wrong.
                  code:
                    type: string
                    enum:
                      - WRONG_REQUEST_PARAMS
                required:
                  - error
                  - code
              example:
                error: Invalid redemption input
                code: WRONG_REQUEST_PARAMS
        '401':
          description: >-
            The builder key or the wallet access token is not accepted.


            See [error codes and
            recovery](/api-reference/redeem/refresh-tracking#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 or the wallet access token is not allowed to do
            this.


            See [error codes and
            recovery](/api-reference/redeem/refresh-tracking#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_INSUFFICIENT_SCOPE
                      - API_AUTH_INTEGRATION_MISMATCH
                      - API_AUTH_SUBJECT_MISMATCH
                      - API_AUTH_CREDENTIAL_NOT_ALLOWED
                      - GACHA_V3_BUILDER_NOT_ACCEPTED_ON_PUBLIC_API
                required:
                  - error
                  - code
              example:
                error: Required authentication scope is missing
                code: API_AUTH_INSUFFICIENT_SCOPE
        '404':
          description: >-
            The order was not found.


            See [error codes and
            recovery](/api-reference/redeem/refresh-tracking#http-errors).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: A short sentence about what went wrong.
                  code:
                    type: string
                    enum:
                      - REDEMPTION_ORDER_NOT_FOUND
                required:
                  - error
                  - code
              example:
                error: Redemption request failed
                code: REDEMPTION_ORDER_NOT_FOUND
        '429':
          description: >-
            Too many requests with this builder key.


            See [error codes and
            recovery](/api-reference/redeem/refresh-tracking#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/redeem/refresh-tracking#http-errors).
          content:
            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: []
          walletSession: []
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.
    walletSession:
      type: http
      scheme: bearer
      description: 'Wallet access token: Bearer authentication for Redeem'

````

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