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

# Create a test account

> **Scope:** `create:test_accounts`, opt-in, granted on request. **Changes data.**

Makes a separate CatchBack login, already confirmed and phone-verified, with a $10,000 test balance that lasts 30 days. Each key can have 5 active at a time. There's no body, and the key doesn't have to be linked to an account. **The password is shown once.**

**A test account is a login, not a key.** Sign in with it to use it: your API calls keep acting on your key's account and spending its real balance. It can open packs up to the Diamond tier, other than the Starter, the sealed mystery packs and the Steph Curry pack, and sell back. It can't use the marketplace, gifts, drops, battles, shipping, chat or DMs, or withdraw. Pulls come from the live pool, and anything it still holds returns there daily at 10:00 UTC. See [Testing](/partner-api/testing).



## OpenAPI

````yaml /partner-api/openapi.yaml post /api/partner/v1/test-accounts
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/partner/v1/test-accounts:
    post:
      tags:
        - Testing
      summary: Create a test account
      description: >-
        **Scope:** `create:test_accounts`, opt-in, granted on request. **Changes
        data.**


        Makes a separate CatchBack login, already confirmed and phone-verified,
        with a $10,000 test balance that lasts 30 days. Each key can have 5
        active at a time. There's no body, and the key doesn't have to be linked
        to an account. **The password is shown once.**


        **A test account is a login, not a key.** Sign in with it to use it:
        your API calls keep acting on your key's account and spending its real
        balance. It can open packs up to the Diamond tier, other than the
        Starter, the sealed mystery packs and the Steph Curry pack, and sell
        back. It can't use the marketplace, gifts, drops, battles, shipping,
        chat or DMs, or withdraw. Pulls come from the live pool, and anything it
        still holds returns there daily at 10:00 UTC. See
        [Testing](/partner-api/testing).
      operationId: createTestAccount
      responses:
        '201':
          description: The new test account.
          content:
            application/json:
              schema:
                type: object
                required:
                  - account
                  - sign_in
                properties:
                  account:
                    allOf:
                      - $ref: '#/components/schemas/TestAccount'
                      - type: object
                        required:
                          - password
                        properties:
                          password:
                            type: string
                            description: >-
                              Shown only in this response. We can't show it
                              again or reset it.
                  sign_in:
                    type: object
                    required:
                      - web
                      - note
                    properties:
                      web:
                        type: string
                        description: The page to sign in on.
                      note:
                        type: string
              example:
                account:
                  user_id: 3b0e0000-…
                  email: acme-9f2c41ab@test.catchbackcards.com
                  password: x7Qe…
                  username: swiftFalcon4821
                  balance: 10000
                  created_at: '2026-10-21T18:00:00Z'
                  expires_at: '2026-11-20T18:00:00Z'
                  active: true
                sign_in:
                  web: https://catchbackcards.com/auth
                  note: >-
                    Sign in with email and password. The account is confirmed
                    and phone-verified already.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: >-
            The key lacks `create:test_accounts`, or it was turned off just then
            (`This key is disabled`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: >-
            The key already has 5 active test accounts. Reuse one, or ask us to
            end one.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: >-
            We couldn't set the account up, and removed the login we'd started.
            Try again.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: We couldn't create the login. Try again.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: >-
            Test accounts are unavailable right now, and nothing was created.
            Try again later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth:
            - create:test_accounts
components:
  schemas:
    TestAccount:
      type: object
      required:
        - user_id
        - email
        - username
        - balance
        - created_at
        - expires_at
        - active
      properties:
        user_id:
          type: string
          description: The account's id.
        email:
          type: string
          description: The login, a made-up address nobody reads.
        username:
          type:
            - string
            - 'null'
        balance:
          type:
            - number
            - 'null'
          description: The test balance in dollars. It isn't money and can't be withdrawn.
        created_at:
          type: string
        expires_at:
          type: string
          description: 30 days after it was created.
        active:
          type: boolean
          description: '`false` from its `expires_at`, or once it has been turned off.'
    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:
    Unauthorized:
      description: A missing, malformed, disabled or unknown API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Missing or malformed API key
  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.