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

# Verify a pull

> **No key.** No scope.

Replays a pull's draw from the proof every pull carries. This is the `verify_path` on a pull's `proof`. Read `verified`, and `verification_type` for what was checked. How to read the steps: [Verify a pull](/partner-api/verify-a-pull).



## OpenAPI

````yaml /partner-api/openapi.yaml get /api/verify-pull
openapi: 3.1.0
info:
  title: CatchBack Partner API
  version: 1.0.0
  summary: Open packs, trade cards, read card data and ship vaulted cards.
  description: >-
    The Partner API acts on one CatchBack account with its real CatchCoins
    balance. Several

    operations here move money or data, so read
    [Idempotency](/partner-api/idempotency) before

    you call them.


    Error bodies are JSON with a human-readable `error` and, where you might
    branch on it, a

    machine-readable `code`. Branch on the status and the `code`, because the
    `error` text can

    change. New fields can be added to any response.
  contact:
    name: CatchBack support
    email: catchbackcards@gmail.com
servers:
  - url: https://catchbackcards.com
    description: Production. Every call acts on real money and real inventory.
security:
  - bearerAuth: []
tags:
  - name: Gacha
    description: Open packs, see what they can pull, check a pull, and sell cards back.
  - name: Marketplace
    description: Search and buy cards, and manage your own listings.
  - name: Metadata
    description: Look cards up by id or cert, with price history and recent activity.
  - name: Shipping
    description: Estimate, create and track shipments of cards you hold.
  - name: Account
    description: Your key, balance, limits, vault and order history, across every rail.
  - name: Funding
    description: Deposit and withdraw your balance in USDC.
  - name: Testing
    description: Test logins for trying CatchBack without real money.
  - name: Webhooks
    description: Signed POSTs we send to your URL when something happens on your account.
paths:
  /api/verify-pull:
    get:
      tags:
        - Gacha
      summary: Verify a pull
      description: >-
        **No key.** No scope.


        Replays a pull's draw from the proof every pull carries. This is the
        `verify_path` on a pull's `proof`. Read `verified`, and
        `verification_type` for what was checked. How to read the steps: [Verify
        a pull](/partner-api/verify-a-pull).
      operationId: verifyPull
      parameters:
        - name: transaction_id
          in: query
          required: true
          description: The `pull_id`.
          schema:
            type: string
            format: uuid
          example: fe04349b-0000-4000-8000-000000000001
        - name: card_source
          in: query
          description: >-
            The pull's catalog, or `sealed` for a sealed pack. Without it, every
            catalog is searched.
          schema:
            type: string
            enum:
              - pokemon
              - onepiece
              - sports
              - riftbound
              - watches
              - goods
              - singles
              - sealed
        - name: pack_type
          in: query
          description: >-
            A hint for the lookup. `verify_path` doesn't send it, and you don't
            need it.
          schema:
            type: string
            maxLength: 64
      responses:
        '200':
          description: The verdict, with `verified` `true` or `false`.
          content:
            application/json:
              schema:
                type: object
                required:
                  - verified
                additionalProperties: true
                properties:
                  transaction_id:
                    type: string
                  card_id:
                    type: string
                  pulled_card_name:
                    type: string
                  verified:
                    type: boolean
                  verification_type:
                    type: string
                    enum:
                      - provably_fair
                      - hash_only
                      - legacy_hash
                      - none
                    description: >-
                      - `provably_fair`: the draw is replayed from the seed, and
                      `verified` is `true` only when every step matches.

                      - `hash_only`: the Starter or a sealed mystery pack, whose
                      seed is random. The result hash is recomputed.

                      - `legacy_hash`: an older pull, or a pull from a custom
                      pack. Nothing is recomputed: `verified: true` only means a
                      record exists, so don't treat it as a check.

                      - `none`: a pull with no record.


                      Read `verification_type` before `verified`.
                  algorithm:
                    type: string
                    description: The draw's version, e.g. `shuffle-scaled-v3`.
                  summary:
                    type: object
                    properties:
                      all_steps_passed:
                        type: boolean
                      message:
                        type: string
              example:
                transaction_id: fe04349b-…
                card_id: 2b814ce0-…
                pulled_card_name: Tyrunt
                verified: true
                verification_type: provably_fair
                algorithm: shuffle-scaled-v3
                summary:
                  all_steps_passed: true
                  message: >-
                    All verification steps passed: the seed reproduces this
                    pull's draws, and the result hash binds the card delivered.
        '400':
          description: A missing or malformed parameter, or one the check doesn't take.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: '`Access denied`: requests from your location are refused.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: 'No pull with this id. The body has `verified: false`.'
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - type: object
                    properties:
                      verified:
                        type: boolean
              example:
                verified: false
                error: Transaction not found
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          description: We couldn't load the pull just then. Retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - {}
components:
  schemas:
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: >-
            For people. The text can change, so branch on the status and the
            `code`.
        code:
          type: string
          description: Machine-readable, where you might branch on it.
  responses:
    ServerError:
      description: An error on our side. Retry with backoff.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: cb_live_<48 hex>
      description: >-
        Your API key, sent as a bearer token. Keep it on your server. See
        [Authentication](/partner-api/authentication). A request from a location
        we refuse gets a `403` with `Access denied`, whether or not it has a
        valid key: [where you can call
        from](/partner-api/errors-and-limits#where-you-can-call-from).

````

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