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

# Unfreeze a self-frozen card

> Scope `cards:freeze`. Same body as freeze. `card_id` hex is
case-insensitive. Accepted only when the partner or cardholder froze
the card (`202`, then `card_unfreeze.status_changed`). Replaying the
same `ext_id` and body returns HTTP `202`; read `status` in the body
(`processing`, then `active` or `failed`). The document
is done when the card is active, including when the issuer already
reported it active. A reported success does not unfreeze the card
while it is still frozen. If IMBA or the issuer freezes the card
again before the issuer answers, the card stays frozen and the
document fails with `unfreeze_not_confirmed` (not a second 409).
`ext_id` is 1..128 characters (`ext_id_required`, `ext_id_too_long`).
`reason` is optional, defaults to `user_request`, and is at most 200
characters (`reason_too_long`). Card numbers in `reason` are removed
and are not returned. A body that is not JSON, or is larger than
8 KiB, is `400 invalid_json`. Another tenant's card and an unknown
card return the same `404 not_found`. IMBA freezes already in place
return `409 card_frozen_by_platform`. Bank or issuer freezes already
in place return `409 card_frozen_by_issuer`.




## OpenAPI

````yaml /openapi/partner.openapi.yaml post /api/partner/card_unfreeze
openapi: 3.1.0
info:
  title: IMBA Partner API
  version: 1.2.0
  summary: B2B Partner API for USDT settlement, cards, eSIM, gift cards, and KYT
  description: |
    B2B Partner API. Production host `https://imbawallet.com` (no sandbox).

    - Human docs: `https://api-docs.imbawallet.com` (guides + FAQ)
    - Authenticate with `POST /auth/v1/partner/token` (assertion JWT), then call
      `POST /api/partner/<function>` with `Authorization: Bearer <access_token>`
      and a JSON body. Resource ids are body fields, not URL segments.
    - Amounts are decimal strings.
    - Response timestamps are UTC RFC 3339 with `Z`.
    - Request time fields accept RFC 3339 or unix seconds (not milliseconds).
    - Catalog calls (`/api/partner/gift_offers`, `/api/partner/esim_offers`,
      `/api/partner/card_products`) are live availability and the live USDT price.
      There is no `/quote` or `/availability` path.
    - Order lookup: `POST /api/partner/document_get`. Secrets via product calls
      after fulfillment (card JWE, gift `epin`, eSIM LPA) — not in webhooks
      except `card.otp`.
    - Card authorizations: `POST /api/partner/card_transactions`.
      Unfreeze: `POST /api/partner/card_unfreeze` (only a freeze by you or the cardholder).
    - Not in v1: purchase refund/cancel, card unload, card replacement.
  contact:
    name: IMBA Partner Support
    email: support@imbawallet.com
  license:
    name: Proprietary
    url: https://imbawallet.com
servers:
  - url: https://imbawallet.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Auth
    description: Assertion JWT → access token
  - name: Balance
    description: Partner settlement balance
  - name: Deposit
    description: Sticky USDT TRC-20 deposit address
  - name: Withdrawals
    description: USDT withdrawals from partner balance
  - name: Cards
    description: Card catalog, issue, list, secrets, topup, freeze
  - name: eSIM
    description: eSIM offers, purchase, topup
  - name: Gift cards
    description: Gift offers and purchases
  - name: Batch
    description: Mixed create cart (best-effort per item)
  - name: Documents
    description: Poll async documents by ext_id
  - name: Reconciliation
    description: Ledger lines for partner books
  - name: KYT
    description: Crypto-address screening, quotes and owned check history
paths:
  /api/partner/card_unfreeze:
    post:
      tags:
        - Cards
      summary: Unfreeze a self-frozen card
      description: |
        Scope `cards:freeze`. Same body as freeze. `card_id` hex is
        case-insensitive. Accepted only when the partner or cardholder froze
        the card (`202`, then `card_unfreeze.status_changed`). Replaying the
        same `ext_id` and body returns HTTP `202`; read `status` in the body
        (`processing`, then `active` or `failed`). The document
        is done when the card is active, including when the issuer already
        reported it active. A reported success does not unfreeze the card
        while it is still frozen. If IMBA or the issuer freezes the card
        again before the issuer answers, the card stays frozen and the
        document fails with `unfreeze_not_confirmed` (not a second 409).
        `ext_id` is 1..128 characters (`ext_id_required`, `ext_id_too_long`).
        `reason` is optional, defaults to `user_request`, and is at most 200
        characters (`reason_too_long`). Card numbers in `reason` are removed
        and are not returned. A body that is not JSON, or is larger than
        8 KiB, is `400 invalid_json`. Another tenant's card and an unknown
        card return the same `404 not_found`. IMBA freezes already in place
        return `409 card_frozen_by_platform`. Bank or issuer freezes already
        in place return `409 card_frozen_by_issuer`.
      operationId: unfreezePartnerCard
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - card_id
                - ext_id
              properties:
                card_id:
                  type: string
                  example: 00112233445566778899aabb
                ext_id:
                  $ref: '#/components/schemas/ExtId'
                  example: unfreeze-20261014-001
                reason:
                  type: string
                  maxLength: 200
                  example: user_request
            example:
              card_id: 00112233445566778899aabb
              ext_id: unfreeze-20261014-001
              reason: user_request
      responses:
        '202':
          description: Unfreeze accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardUnfreezeResponse'
              example:
                ext_id: unfreeze-20261014-001
                card_id: 00112233445566778899aabb
                status: processing
                reason: user_request
        '400':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '409':
          $ref: '#/components/responses/Error'
components:
  schemas:
    ExtId:
      type: string
      minLength: 1
      maxLength: 128
      description: Partner-side idempotency key (unique per partner)
      example: card-issue-20260710-003
    CardUnfreezeResponse:
      type: object
      properties:
        ext_id:
          $ref: '#/components/schemas/ExtId'
        card_id:
          type: string
          example: 00112233445566778899aabb
        status:
          type: string
          example: processing
        reason:
          type: string
          example: user_request
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          example: insufficient_balance
        message:
          type: string
          description: Optional human-readable explanation; handle the stable error code
  responses:
    Error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Access token from POST /auth/v1/partner/token

````

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