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

# CTF wallet

> The same funding config without the market fields — your Safe (the deposit destination), its owner, and any outstanding setup. For a wallet page that is not tied to a market.



## OpenAPI

````yaml /api-reference/openapi/calibri.yaml get /api/v2/atlas/account/wallet
openapi: 3.1.0
info:
  title: Calibri API
  version: 1.0.0
  description: >-
    The Calibri API. Discover markets, read live books, place signed orders, and
    manage positions and account data.

    Routed by path prefix to the service that answers it — which is an
    implementation detail, not something a caller has to reason about.
servers:
  - description: Production
    url: https://calibri.io
security: []
tags:
  - name: Health
    description: Service liveness.
    x-displayName: Health
  - name: Events
    description: Discover events and their metadata.
    x-displayName: Events
  - name: Markets
    description: List markets and load market detail for trading.
    x-displayName: Markets
  - name: Series
    description: Recurring event series.
    x-displayName: Series
  - name: Tags
    description: Editorial shelves used to browse the catalogue.
    x-displayName: Tags
  - name: Market Data
    description: Order book, depth, trade tape, tickers, and candles.
    x-displayName: Market Data
  - name: Assets
    description: Underlying asset price history for price-feed markets.
    x-displayName: Assets
  - name: Community
    description: Leaderboard and platform activity.
    x-displayName: Community
  - name: Currencies
    description: Currency registry.
    x-displayName: Currencies
  - name: Trade
    description: Place, list, and cancel orders.
    x-displayName: Trade
  - name: Positions
    description: Your matched contracts.
    x-displayName: Positions
  - name: Wallet
    description: Self-custody Safe, passkey, session keys, and relay.
    x-displayName: Wallet
  - name: Rewards
    description: Maker rebates and referral earnings.
    x-displayName: Rewards
  - name: Account
    description: Balances, ledger, PnL, limits, preferences, and profile.
    x-displayName: Account
  - name: Categories
    description: Categories
    x-displayName: Categories
  - name: Other
    description: Other
    x-displayName: Other
externalDocs:
  description: ''
  url: ''
paths:
  /api/v2/atlas/account/wallet:
    get:
      tags:
        - Wallet
      summary: CTF wallet
      description: >-
        The same funding config without the market fields — your Safe (the
        deposit destination), its owner, and any outstanding setup. For a wallet
        page that is not tied to a market.
      parameters:
        - description: >-
            Comma-separated sub-resources to carry inline, each under a key of
            the same name holding exactly what its own route returns: `owners`
            (GET /account/wallet/owners), `session_key` (GET
            /account/wallet/session-key), `auto_redeem` (GET
            /account/wallet/auto-redeem), `redeemable` (GET
            /account/wallet/redeemable). They are resolved in parallel from one
            wallet lookup, so one round-trip replaces five. Unknown names are
            ignored. Every requested key is always present: an include that is
            not applicable to the account (e.g. `owners` without a passkey
            wallet, a 400 on its own route) is `null` here rather than a failed
            request.
          example: owners,session_key,auto_redeem,redeemable
          in: query
          name: include
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CtfWalletBundleEntity'
          description: ''
      security:
        - apiKey: []
components:
  schemas:
    CtfWalletBundleEntity:
      properties:
        auto_redeem:
          $ref: '#/components/schemas/CtfAutoRedeemEntity'
          description: >-
            Present with `include=auto_redeem`: the body of GET
            /account/wallet/auto-redeem.
        blockchain_key:
          example: polygon-mainnet
          type: string
        chain_id:
          example: 137
          type: number
        conditional_tokens_address:
          description: Gnosis' Conditional Tokens — where your collateral actually sits.
          example: '0x4D97DCd97eC945f40cF65F87097ACe5EA0476045'
          type: string
        domain_name:
          description: >-
            The EIP-712 domain name this exchange was DEPLOYED with. Hashed into
            every order signature, and different per network — sign with the
            served value, never a hard-coded one, or the signature will not
            recover.
          example: Calibri CTF Prediction Markets
          type: string
        exchange_address:
          description: This deployment's CTF Exchange.
          example: '0xB6Ac44d5A6388b8C7511F2fb20C0c03fD0CeDC83'
          type: string
        onramp_customer:
          description: >-
            Whether the member is a customer at the fiat on-ramp provider
            already (their first checkout launched). The deposit sheet starts a
            cash checkout on opening only then.
          type: boolean
        owner_address:
          description: >-
            What owns the Safe: your wallet EOA, or for a passkey member the
            secp256r1 signer contract. Served so a client can spot that a
            different wallet is connected — only the owner can sign for the
            Safe.
          example: '0xE1188438C85C98aADFf1a88f97764E607B4978C3'
          type:
            - string
            - 'null'
        owners:
          $ref: '#/components/schemas/SafeOwnersEntity'
          description: >-
            Present with `include=owners`: the body of GET
            /account/wallet/owners, or null on an account without a passkey
            wallet.
        proxy_address:
          description: Your Safe — the deposit destination and the maker on your orders.
          example: '0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD'
          type:
            - string
            - 'null'
        redeemable:
          $ref: '#/components/schemas/CtfRedeemableEntity'
          description: >-
            Present with `include=redeemable`: the body of GET
            /account/wallet/redeemable.
        safe_setup:
          $ref: '#/components/schemas/SafeSetupEntity'
        safe_status:
          description: >-
            The single field that answers "can this member trade?".
            `setup_required` means an order would REST AND THEN FAIL TO SETTLE —
            worse than being rejected, so do not trade on it.
          enum:
            - ready
            - setup_required
            - error
            - unavailable
            - unlinked
          example: ready
          type: string
        session_key:
          $ref: '#/components/schemas/SessionKeyStatusEntity'
          description: >-
            Present with `include=session_key`: the body of GET
            /account/wallet/session-key.
        session_keys_enabled:
          description: Whether this deployment has session trading keys switched on.
          example: true
          type: boolean
        signature_type:
          description: >-
            How this account signs orders: `2` = POLY_GNOSIS_SAFE (Safe owned by
            your wallet), `3` = POLY_1271 (Safe owned by a passkey). Sign the
            way your type requires. Whether the Safe is usable yet is
            `safe_status`, not this field.
          enum:
            - 2
            - 3
          example: 2
          type: number
        usdc_address:
          description: The collateral token.
          example: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
          type: string
      required:
        - exchange_address
        - conditional_tokens_address
        - usdc_address
        - chain_id
        - blockchain_key
        - domain_name
        - proxy_address
        - owner_address
        - signature_type
        - session_keys_enabled
        - safe_status
        - onramp_customer
      type: object
    CtfAutoRedeemEntity:
      properties:
        auto_redeemer_address:
          description: >-
            The contract to approve with `setApprovalForAll` on the Conditional
            Tokens. It can only redeem your resolved positions and return the
            whole payout to your Safe. Null when auto-redeem is not offered.
          example: 0x4Fd2…
          type:
            - string
            - 'null'
        available:
          description: Whether this account can use auto-redeem.
          example: true
          type: boolean
        blockchain_key:
          example: polygon-mainnet
          type: string
        chain_id:
          example: 137
          type: number
        conditional_tokens_address:
          description: Gnosis' Conditional Tokens — where your collateral actually sits.
          example: '0x4D97DCd97eC945f40cF65F87097ACe5EA0476045'
          type: string
        domain_name:
          description: >-
            The EIP-712 domain name this exchange was DEPLOYED with. Hashed into
            every order signature, and different per network — sign with the
            served value, never a hard-coded one, or the signature will not
            recover.
          example: Calibri CTF Prediction Markets
          type: string
        enabled:
          description: Whether resolved winnings are redeemed into your Safe automatically.
          example: false
          type: boolean
        exchange_address:
          description: This deployment's CTF Exchange.
          example: '0xB6Ac44d5A6388b8C7511F2fb20C0c03fD0CeDC83'
          type: string
        owner_address:
          description: >-
            What owns the Safe: your wallet EOA, or for a passkey member the
            secp256r1 signer contract. Served so a client can spot that a
            different wallet is connected — only the owner can sign for the
            Safe.
          example: '0xE1188438C85C98aADFf1a88f97764E607B4978C3'
          type:
            - string
            - 'null'
        proxy_address:
          description: Your Safe — the deposit destination and the maker on your orders.
          example: '0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD'
          type:
            - string
            - 'null'
        safe_setup:
          $ref: '#/components/schemas/SafeSetupEntity'
        safe_status:
          description: >-
            The single field that answers "can this member trade?".
            `setup_required` means an order would REST AND THEN FAIL TO SETTLE —
            worse than being rejected, so do not trade on it.
          enum:
            - ready
            - setup_required
            - error
            - unavailable
            - unlinked
          example: ready
          type: string
        session_keys_enabled:
          description: Whether this deployment has session trading keys switched on.
          example: true
          type: boolean
        signature_type:
          description: >-
            How this account signs orders: `2` = POLY_GNOSIS_SAFE (Safe owned by
            your wallet), `3` = POLY_1271 (Safe owned by a passkey). Sign the
            way your type requires. Whether the Safe is usable yet is
            `safe_status`, not this field.
          enum:
            - 2
            - 3
          example: 2
          type: number
        usdc_address:
          description: The collateral token.
          example: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
          type: string
      required:
        - exchange_address
        - conditional_tokens_address
        - usdc_address
        - chain_id
        - blockchain_key
        - domain_name
        - proxy_address
        - owner_address
        - signature_type
        - session_keys_enabled
        - safe_status
        - auto_redeemer_address
        - available
        - enabled
      type: object
    SafeOwnersEntity:
      properties:
        owners:
          description: >-
            Every address that can sign for this wallet. Empty until the Safe is
            deployed, which happens on your first deposit.
          example:
            - 0x7790…e855
          items:
            type: string
          type: array
        passkey_active:
          description: >-
            False if your passkey is NO LONGER an owner of this wallet — which
            can only happen if a key you added removed it on-chain. Treat it as
            urgent: that key is then the only thing that can sign. True when the
            wallet is not deployed yet, and true if the check could not be made.
          example: true
          type: boolean
        passkey_signer:
          description: >-
            Which of the owners is your passkey — the signer contract derived
            from your credential. Everything else in `owners` is a key you
            added.
          example: 0x7790…e855
          type:
            - string
            - 'null'
        safe:
          description: Your wallet (Safe) address.
          example: 0x2b01…E22a
          type: string
      required:
        - safe
        - owners
        - passkey_signer
        - passkey_active
      type: object
    CtfRedeemableEntity:
      properties:
        blockchain_key:
          example: polygon-mainnet
          type: string
        chain_id:
          example: 137
          type: number
        conditional_tokens_address:
          description: Gnosis' Conditional Tokens — where your collateral actually sits.
          example: '0x4D97DCd97eC945f40cF65F87097ACe5EA0476045'
          type: string
        domain_name:
          description: >-
            The EIP-712 domain name this exchange was DEPLOYED with. Hashed into
            every order signature, and different per network — sign with the
            served value, never a hard-coded one, or the signature will not
            recover.
          example: Calibri CTF Prediction Markets
          type: string
        exchange_address:
          description: This deployment's CTF Exchange.
          example: '0xB6Ac44d5A6388b8C7511F2fb20C0c03fD0CeDC83'
          type: string
        markets:
          description: >-
            Settled markets whose payout you have not yet redeemed, newest
            first. Only positive amounts: losing tokens alone are worth nothing.
          items:
            $ref: '#/components/schemas/CtfRedeemableMarketEntity'
          type: array
        owner_address:
          description: >-
            What owns the Safe: your wallet EOA, or for a passkey member the
            secp256r1 signer contract. Served so a client can spot that a
            different wallet is connected — only the owner can sign for the
            Safe.
          example: '0xE1188438C85C98aADFf1a88f97764E607B4978C3'
          type:
            - string
            - 'null'
        proxy_address:
          description: Your Safe — the deposit destination and the maker on your orders.
          example: '0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD'
          type:
            - string
            - 'null'
        safe_setup:
          $ref: '#/components/schemas/SafeSetupEntity'
        safe_status:
          description: >-
            The single field that answers "can this member trade?".
            `setup_required` means an order would REST AND THEN FAIL TO SETTLE —
            worse than being rejected, so do not trade on it.
          enum:
            - ready
            - setup_required
            - error
            - unavailable
            - unlinked
          example: ready
          type: string
        session_keys_enabled:
          description: Whether this deployment has session trading keys switched on.
          example: true
          type: boolean
        signature_type:
          description: >-
            How this account signs orders: `2` = POLY_GNOSIS_SAFE (Safe owned by
            your wallet), `3` = POLY_1271 (Safe owned by a passkey). Sign the
            way your type requires. Whether the Safe is usable yet is
            `safe_status`, not this field.
          enum:
            - 2
            - 3
          example: 2
          type: number
        usdc_address:
          description: The collateral token.
          example: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
          type: string
      required:
        - exchange_address
        - conditional_tokens_address
        - usdc_address
        - chain_id
        - blockchain_key
        - domain_name
        - proxy_address
        - owner_address
        - signature_type
        - session_keys_enabled
        - safe_status
        - markets
      type: object
    SafeSetupEntity:
      properties:
        calls:
          description: Calls to sign and relay. Empty when ready.
          items:
            $ref: '#/components/schemas/SafeSetupCallEntity'
          type: array
        ready:
          description: True when no approvals are outstanding.
          example: true
          type: boolean
      required:
        - ready
        - calls
      type: object
    SessionKeyStatusEntity:
      properties:
        default_ttl:
          description: The grant length this deployment actually hands out.
          example: 2592000
          type: number
        enabled:
          description: >-
            False when the deployment has no session contracts, the service is
            unreachable, or the member has no passkey wallet. Not an error — the
            caller falls back to prompting the passkey per order.
          example: true
          type: boolean
        handler_installed:
          description: Whether the Safe's session-aware fallback handler is installed.
          example: true
          type: boolean
        idle_lock_seconds:
          description: >-
            How long a device may hold an unlocked key without placing an order.
            Served rather than compiled into the client — a missing value must
            never be read as "no lock".
          example: 900
          type: number
        last_key_id:
          description: >-
            Highest grant id issued. Every order signature carries it, so read
            this after relaying an authorisation.
          example: '7'
          type: string
        max_ttl:
          description: The registry's immutable on-chain ceiling, in seconds.
          example: 15552000
          type: number
        safe:
          example: '0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD'
          type: string
      required:
        - enabled
      type: object
    CtfRedeemableMarketEntity:
      properties:
        auto_redeem_failed:
          description: >-
            An auto-redeem attempt skipped this claim (for example, the approval
            is missing), so redeem it yourself. Auto-redeem keeps retrying every
            5 minutes.
          example: false
          type: boolean
        condition_id:
          description: The condition to pass to `redeemPositions`.
          example: 0x8f3a…
          type: string
        event_slug:
          example: btc-updown-5m-1730
          type:
            - string
            - 'null'
        market_id:
          example: '120'
          type: string
        redeemable:
          description: USDC your Safe receives on redeeming this market.
          example: '10'
          type: string
        result:
          description: yes, no or void. A void redeems at half per token.
          example: 'no'
          type: string
        settled_at:
          description: When the market settled and this claim arose. ISO-8601.
          example: '2026-09-16T17:35:10Z'
          type:
            - string
            - 'null'
        title:
          example: Bitcoin Up or Down 5m — 17:30–17:35 UTC
          type:
            - string
            - 'null'
      required:
        - market_id
        - title
        - event_slug
        - result
        - condition_id
        - redeemable
        - settled_at
        - auto_redeem_failed
      type: object
    SafeSetupCallEntity:
      properties:
        data:
          description: ABI-encoded calldata.
          example: 0x095ea7b3…
          type: string
        hash:
          description: The SafeTx hash to sign.
          example: 0x9ab1…
          type: string
        nonce:
          description: The Safe's nonce for this call. Relay in order.
          example: 4
          type: number
        operation:
          description: '`0` = CALL, `1` = DELEGATECALL (a MultiSend batch).'
          example: 0
          type: number
        to:
          description: Target contract.
          example: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
          type: string
      required:
        - to
        - data
        - operation
        - nonce
        - hash
      type: object
  securitySchemes:
    apiKey:
      description: >-
        HMAC-signed API key. Send X-Auth-Apikey, X-Auth-Nonce and
        X-Auth-Signature.
      in: header
      name: X-Auth-Apikey
      type: apiKey

````

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