Chia Cloud Wallet API Documentation

Chia Cloud Wallet is a self-custody platform for interacting with the Chia blockchain. Assets are held in vaults that stay synced with the blockchain. The GraphQL API lets applications manage those vaults, assets, signers, offers, and transactions.

The guide sections below cover authentication, the conventions every operation shares, and end-to-end workflows. The reference that follows documents each operation and type. Are you an agent? Read the same guide as Markdown, with the public GraphQL schema.

API Endpoints
# Production (testnet11):
                https://api.vault.chiatest.net/graphql
                
                # Production (mainnet):
                https://api.vault.chia.net/graphql
                

Getting started

The Cloud Wallet API is a single GraphQL endpoint for each network. Build and test against testnet, then switch the host to mainnet. Both are production services, and accounts, vaults, and API keys do not carry over between them.

Network GraphQL over HTTP Subscriptions (WebSocket)
Testnet11 https://api.vault.chiatest.net/graphql wss://api.vault.chiatest.net/graphql
Mainnet https://api.vault.chia.net/graphql wss://api.vault.chia.net/graphql

Submit a request

Send a POST request with a JSON body containing query and, when the operation declares them, variables and operationName:

curl https://api.vault.chiatest.net/graphql \
  -H 'Content-Type: application/json' \
  --data '{"query":"query Ping { ping }"}'

ping requires no authentication and returns true while the service is running:

query Ping {
  ping
}
  • Queries can also be sent with GET and URL parameters. Mutations must use POST.
  • Send one operation per request. Batched request arrays are rejected with HTTP 400.
  • Request bodies are limited to 3 MB. The limits on query size and shape are in the conventions section.
  • Subscriptions use the graphql-ws protocol on the same path. Only API-key authentication supports them; the authentication section shows how to sign the connection.
  • Introspection is disabled in production. Download the public schema for code generation and editor tooling instead.

Make an authenticated request

ping, viewer, oAuthScopes, and publicAnnouncements work without authentication. Treat every other operation as requiring an API key or an OAuth access token. The authentication section explains how to sign requests with an API key and how to obtain a token through OAuth. Once authenticated, confirm the identity the API sees:

query CurrentUser {
  viewer {
    id
    email
  }
}

A successful response has HTTP status 200 and a data object:

{
  "data": {
    "viewer": {
      "id": "User_<cuid>",
      "email": "[email protected]"
    }
  }
}

If viewer is null, the API did not accept your credentials. viewer does not return an error in that case, because it is public: an invalid OAuth token is treated as no authentication. A bad API-key signature does return an UNAUTHENTICATED error.

Errors are also returned with HTTP status 200, in an errors array next to data. Check errors on every response, not only the status code. The conventions section lists the error codes.

Where to go next

  • Conventions covers IDs, pagination, amounts, errors, and rate limits. They apply to every operation.
  • Vaults and transactions lists vaults and sends XCH or a CAT.
  • Signature requests explains how a transaction is signed and submitted.
  • Offers creates, shares, takes, and cancels offers.
  • NFTs mints and transfers NFTs.

The API reference documents each operation and type, grouped by topic, after these guide sections. The public schema contains the same definitions in SDL.

Authentication

Cloud Wallet supports API keys for direct user integrations and OAuth 2.0 for applications that act with a user's consent. Neither method bypasses GraphQL authorization, plan entitlements, or resource ownership.

Capability API key OAuth
Intended client A user-controlled service or script A third-party web, desktop, or mobile application
Identity The user who owns the key The consenting user, narrowed to granted scopes and resources
Credential lifetime Until the selected expiration or deletion Short-lived access token; optional rotating refresh token
GraphQL over HTTP Supported Supported
GraphQL subscriptions Supported with signed WebSocket authentication Not supported

Do not send more than one authentication method on a request. A request that contains a session cookie, bearer token, and signature header in any combination is rejected.

API keys

Create and manage a key

Sign in to Cloud Wallet and open Settings > API Keys.

  1. Select Create API Key.
  2. Enter a unique name.
  3. Select an expiration of 30 days, 1 year, or never.
  4. Create the key and save both the key ID and PEM private key.

Cloud Wallet stores the public key and displays the private key only once. Store the private key in a secret manager. If you lose or expose it, delete the API key and create another one. Deleting a key immediately prevents it from authenticating new requests.

When the key is created, you can copy the PEM private key, copy its base64 encoding for storage in an environment variable, or download it as a .pem file. The number of API keys you can create depends on your Cloud Wallet plan.

Security model

An API key is an asymmetric RSA key pair. Your client keeps the private key, and Cloud Wallet stores only the public key used to verify signatures. The private key is never sent with a request.

The signature covers the exact request body, nonce, and timestamp. Changing any of those values invalidates the signature. The timestamp limits the replay window, and each nonce can be used only once with a key.

Sign a request

API keys use RSA-SHA256 request signatures. For every request:

  1. Serialize the GraphQL request body once.
  2. Generate a unique nonce containing exactly 10 ASCII letters or digits.
  3. Set the timestamp to the Unix epoch time in milliseconds.
  4. Concatenate requestBody + nonce + timestamp without separators.
  5. Sign that exact string with RSA-SHA256 and encode the signature as base64.
  6. Send the exact serialized body that you signed.
Header Value
content-type application/json; charset=utf-8
chia-user-key-id The key ID shown when you created the API key
chia-signature Base64-encoded RSA-SHA256 signature
chia-nonce Unique 10-character alphanumeric nonce
chia-timestamp Unix epoch time in milliseconds

This Node.js example expects CHIA_API_PRIVATE_KEY to contain the raw PEM value from Copy or Download Key. If your secret store contains the base64 copy, decode it before passing it to signer.sign. The example always generates a valid nonce and makes an authenticated GraphQL request to testnet:

import { createSign, randomInt } from 'node:crypto';
            
            const keyId = process.env.CHIA_API_KEY_ID;
            const privateKey = process.env.CHIA_API_PRIVATE_KEY;
            const nonceCharacters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
            
            function generateNonce() {
              let nonce = '';
              while (nonce.length < 10) {
                nonce += nonceCharacters.charAt(randomInt(nonceCharacters.length));
              }
              return nonce;
            }
            
            const body = JSON.stringify({
              query: 'query CurrentUser { viewer { id } }',
            });
            const nonce = generateNonce();
            const timestamp = Date.now().toString();
            const signer = createSign('RSA-SHA256');
            signer.update(body + nonce + timestamp);
            signer.end();
            
            const response = await fetch('https://api.vault.chiatest.net/graphql', {
              method: 'POST',
              headers: {
                'content-type': 'application/json; charset=utf-8',
                'chia-user-key-id': keyId,
                'chia-signature': signer.sign(privateKey, 'base64'),
                'chia-nonce': nonce,
                'chia-timestamp': timestamp,
              },
              body,
            });
            
            console.log(await response.json());
            

This Python example uses the base64 copy of the private key:

import base64
            import json
            import os
            import secrets
            import string
            import time
            
            import requests
            from cryptography.hazmat.primitives import hashes, serialization
            from cryptography.hazmat.primitives.asymmetric import padding
            
            key_id = os.environ["CHIA_API_KEY_ID"]
            private_key_pem = base64.b64decode(
                os.environ["CHIA_API_PRIVATE_KEY_BASE64"]
            )
            private_key = serialization.load_pem_private_key(
                private_key_pem,
                password=None,
            )
            
            body = json.dumps(
                {"query": "query CurrentUser { viewer { id } }"},
                separators=(",", ":"),
            )
            nonce_characters = string.ascii_letters + string.digits
            nonce = "".join(secrets.choice(nonce_characters) for _ in range(10))
            timestamp = str(int(time.time() * 1000))
            canonical_string = body + nonce + timestamp
            signature = private_key.sign(
                canonical_string.encode(),
                padding.PKCS1v15(),
                hashes.SHA256(),
            )
            
            response = requests.post(
                "https://api.vault.chiatest.net/graphql",
                headers={
                    "content-type": "application/json; charset=utf-8",
                    "chia-user-key-id": key_id,
                    "chia-signature": base64.b64encode(signature).decode(),
                    "chia-nonce": nonce,
                    "chia-timestamp": timestamp,
                },
                data=body,
                timeout=30,
            )
            
            print(response.json())
            

The timestamp must be within five minutes of the server time. Cloud Wallet rejects a nonce that has already been used with the same key.

Authenticate a subscription

A WebSocket connection has no request body, so sign the empty string followed by the nonce and timestamp, and send the four chia- headers as connectionParams. Sign each connection attempt afresh, because a nonce cannot be reused. This example uses the graphql-ws client and the generateNonce function from the previous example:

import { createSign } from 'node:crypto';
            import { createClient } from 'graphql-ws';
            
            const client = createClient({
              url: 'wss://api.vault.chiatest.net/graphql',
              connectionParams: () => {
                const nonce = generateNonce();
                const timestamp = Date.now().toString();
                const signer = createSign('RSA-SHA256');
                signer.update(nonce + timestamp);
                signer.end();
                return {
                  'chia-user-key-id': keyId,
                  'chia-signature': signer.sign(privateKey, 'base64'),
                  'chia-nonce': nonce,
                  'chia-timestamp': timestamp,
                };
              },
            });
            
            client.subscribe(
              { query: 'subscription WalletUpdated { walletUpdated { id name } }' },
              {
                next: (result) => {
                  if (result.errors) console.error(result.errors);
                  else console.log(result.data);
                },
                error: console.error,
                complete: () => {},
              },
            );
            

A failed authentication appears in one of two ways, so handle both:

  • An invalid signature, nonce, or timestamp closes the connection with close code 4500 and no GraphQL error. The server acknowledges the connection first, so a connected event does not mean authentication succeeded. The client reports the close through error and does not reconnect, so fix the signing code instead of retrying.
  • A connection without credentials is accepted. Each subscription then receives a result with an errors array and an UNAUTHENTICATED code through next, followed by complete, so check errors on every result.

walletUpdated reports changes to every vault the key's user owns. Filter by id in your handler. graphql-ws parses messages with JSON.parse, which rounds BigInt values, so do not select amounts in a subscription: read them again over HTTP when an event arrives.

Troubleshoot API-key authentication

Authentication failures use the GraphQL UNAUTHENTICATED error code.

Error Cause Resolution
Begins Invalid signature The signature, key ID, or exact body does not match Build the signature from the exact body string sent, followed by the nonce and timestamp. Sign the body after serializing it, and send those bytes unchanged
Nonce must be exactly 10 alphanumeric characters long The nonce has the wrong length or contains punctuation Generate exactly 10 characters from A-Z, a-z, and 0-9
Nonce has already been used. The key already authenticated a request with this nonce Generate a new nonce for every request
Timestamp is too far away from the current time The timestamp differs from server time by more than five minutes Synchronize the client clock and send milliseconds since the Unix epoch
Auth Key has expired The selected key expiration has passed Delete the expired key and create another one
Multiple tokens provided The request contains more than one authentication method Send only the API-key headers

An unknown key ID returns the same response as an invalid signature. This prevents key enumeration.

OAuth authorization code with PKCE

OAuth uses the authorization-code flow with PKCE (S256). It is appropriate when your application needs access to another user's Cloud Wallet resources.

Register a client

When the developer-registration rollout is enabled, organization administrators can submit an application from Settings > OAuth Apps. New submissions remain pending and cannot authorize users until Cloud Wallet approves them. Environments without the rollout continue to use manual registration.

These instructions assume you received a client ID and registered one or more redirect URIs. One registered URI must exactly match the redirect_uri supplied during authorization and token exchange.

Public clients use PKCE and do not use a client secret. Never embed a confidential client secret in browser, desktop, or mobile code. The registration portal displays a generated secret once for future confidential client support, but the OAuth server does not accept it for authentication.

The endpoints are on the same host as GraphQL. The examples below use testnet; replace api.vault.chiatest.net with api.vault.chia.net for mainnet.

Purpose Method and path
Authorization GET /authorize
Token exchange and refresh POST /token
Token revocation POST /revoke
GraphQL POST /graphql

OAuth libraries that read server metadata can use /api/auth/.well-known/oauth-authorization-server on the same host. It advertises equivalent endpoints under /api/auth/oauth2/, and the issuer https://<host>/api/auth, which the callback's iss parameter carries.

Choose scopes and resources

Request only the permission scopes your application needs, separated by spaces. Permission scopes use names such as wallet.read, wallet.write, and transfer.create. Query the public scope catalog for the available scopes, descriptions, and resource types:

query AvailableOAuthScopes {
  oAuthScopes(first: 100) {
    edges {
      node {
        scope
        description
        resourceType
        resourceGrantNotRequired
      }
    }
  }
}

The workflows in this guide need these scopes:

Operation Scope
Read vaults, balances, transactions, and signature requests wallet.read
Read a vault's NFTs nft.read
Read a vault's offers, including walletOffer offer.read
deriveVaultAddress, resendSignatureRequest wallet.write
createTransaction, clawBackTransaction, finalizeTransaction, transferNfts transfer.create
deleteTransaction transfer.delete
signSignatureRequest wallet.sign
submitSignatureRequest signatureRequest.submit
createOffer offer.create
addOffer, takeOffer offer.accept
cancelOffer offer.cancel
bulkMintNfts nft.create

When a scope applies to wallets or another resource type, the consent screen asks the user which resources to grant. A token can use a permission only when the user has that permission and consented to the required resource. Consent narrows the user's existing access; it does not create new access.

Include offline_access when your application needs a refresh token. The legacy read_vault and write_vault scopes are deprecated; use granular permission scopes for new integrations.

Authorize the user

Generate a cryptographically random state value and PKCE verifier. Store both until the callback. Derive the S256 challenge as base64url(sha256(code_verifier)), without base64 padding.

An RFC 7636 verifier is 43–128 characters from the unreserved URI character set. This Node.js example generates a 64-character verifier with 384 bits of randomness, derives its challenge, and constructs the authorization URL:

import { createHash, randomBytes, randomUUID } from 'node:crypto';
            
            const clientId = process.env.CHIA_OAUTH_CLIENT_ID;
            const redirectUri = process.env.CHIA_OAUTH_REDIRECT_URI;
            const state = randomUUID();
            const codeVerifier = randomBytes(48).toString('base64url');
            const codeChallenge = createHash('sha256').update(codeVerifier).digest('base64url');
            
            const authorizeUrl = new URL('https://api.vault.chiatest.net/authorize');
            authorizeUrl.searchParams.set('client_id', clientId);
            authorizeUrl.searchParams.set('redirect_uri', redirectUri);
            authorizeUrl.searchParams.set('response_type', 'code');
            authorizeUrl.searchParams.set('scope', 'wallet.read offline_access');
            authorizeUrl.searchParams.set('state', state);
            authorizeUrl.searchParams.set('code_challenge', codeChallenge);
            authorizeUrl.searchParams.set('code_challenge_method', 'S256');
            
            // Store state and codeVerifier in the user's server-side session before redirecting.
            console.log(authorizeUrl.toString());
            

Redirect the user's browser to /authorize with these query parameters:

https://api.vault.chiatest.net/authorize
  ?client_id=<client_id>
  &redirect_uri=<registered_redirect_uri>
  &response_type=code
  &scope=wallet.read%20offline_access
  &state=<random_state>
  &code_challenge=<pkce_s256_challenge>
  &code_challenge_method=S256

After Cloud Wallet redirects to your callback:

  1. Reject the response if its state does not exactly match the stored value.
  2. Handle an OAuth error response instead of assuming a code is present.
  3. Exchange the authorization code immediately. A code is single-use.
curl https://api.vault.chiatest.net/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=authorization_code' \
  --data-urlencode 'client_id=<client_id>' \
  --data-urlencode 'code=<authorization_code>' \
  --data-urlencode 'redirect_uri=<registered_redirect_uri>' \
  --data-urlencode 'code_verifier=<pkce_verifier>'

The JSON response contains access_token and token_type. Use expires_in to schedule renewal when it is present. A grant that includes offline_access also returns refresh_token; replace it after every successful refresh. The scope value, when present, records the scopes granted to the token.

Send the resulting access token as a bearer token to make the first authenticated GraphQL request:

curl https://api.vault.chiatest.net/graphql \
  -H 'Authorization: Bearer <access_token>' \
  -H 'Content-Type: application/json' \
  --data '{"query":"query CurrentUser { viewer { id } }"}'

Authorization failures redirect to the registered callback with error and may include error_description. Token endpoint failures return a non-2xx JSON response with the same fields. Handle errors such as invalid_request, invalid_client, invalid_grant, invalid_scope, and invalid_target without exposing their descriptions to untrusted users. An invalid_grant during code exchange or refresh requires a new authorization flow.

Refresh and revoke tokens

If authorization included offline_access, exchange the refresh token at the token endpoint:

curl https://api.vault.chiatest.net/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=refresh_token' \
  --data-urlencode 'client_id=<client_id>' \
  --data-urlencode 'refresh_token=<refresh_token>'

A successful refresh rotates the refresh token. Store the new access token and refresh token atomically, and discard the previous refresh token.

Revoke an access token or refresh token when the user disconnects the application:

curl https://api.vault.chiatest.net/revoke \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'client_id=<client_id>' \
  --data-urlencode 'token=<access_or_refresh_token>'

Revoking a refresh token also prevents future access-token refreshes. Your application must treat a rejected refresh as a disconnected authorization and send the user through authorization again.

OAuth restrictions

  • OAuth access tokens authenticate GraphQL requests over HTTP.
  • OAuth sessions are rejected during the GraphQL WebSocket handshake. OAuth applications cannot use GraphQL subscriptions.
  • The token can access only operations supported for OAuth and only the scopes and resources recorded during consent.
  • Account-security and connected-application management operations can require a direct user session and reject delegated OAuth access.

Conventions

These conventions apply to every operation. The reference documents individual fields; this section documents the rules they share.

Global IDs

Every object ID is a global ID in TypeName_cuid format, such as Wallet_<cuid>, SignatureRequest_<cuid>, or WalletTransaction_<cuid>. The part before the first underscore names the type. Global IDs are plain strings, not base64-encoded Relay IDs.

Treat IDs as opaque. Pass back the exact value the API returned, and do not construct an ID from its parts. An ID argument accepts only the type it documents:

Input Error code Message
No underscore BAD_USER_INPUT Invalid globalId format
Another type, such as a Signer_ ID BAD_USER_INPUT ID: <value> is not of type: <Expected>

A few identifiers are not CUIDs. For example, an offer has two IDs: WalletOffer.id is a WalletOffer_<cuid> ID for your vault's copy of the offer, which walletOffer accepts, and WalletOffer.offerId is an Offer_<hex> ID containing the offer's on-chain hash, which takeOffer and cancelOffer accept. The reference states the format wherever an argument expects one.

Cursor pagination

List fields are Relay-style connections. Page forward with first and after, or backward with last and before:

query ListVaultsPage($after: String) {
  viewer {
    wallets(first: 50, after: $after) {
      totalCount
      pageInfo {
        hasNextPage
        endCursor
      }
      edges {
        cursor
        node {
          id
          name
        }
      }
    }
  }
}
  • A page holds at most 100 items. Most connections return 10 items when you omit first and last, and reject a larger value with BAD_USER_INPUT and the message Limit 101 is greater than max 100. A few connections over small, fixed lists, such as oAuthScopes, return 20 items by default and return 100 items when you ask for more. Always pass first and follow hasNextPage rather than relying on either behavior.
  • Pass pageInfo.endCursor as after to fetch the next page. Stop when hasNextPage is false.
  • Cursors are opaque and are valid only for the connection and sort order that produced them. A cursor you did not receive from the API fails with BAD_USER_INPUT; the message depends on the connection.
  • Every connection exposes totalCount. Counting has a cost, so request it only when you need it.

Amounts and units

Amounts are integers in mojos, the smallest unit of each asset. Never send decimal XCH or CAT amounts.

Asset Mojos per unit Example: 1.5 units
XCH 1,000,000,000,000 1500000000000
CAT 1,000 1500

Fees are always XCH mojos, including on CAT transfers and offers. A CAT is identified by its assetHash, the 64-character hexadecimal tail hash; omit assetHash for XCH. Convert with the fixed ratios in this table rather than with an asset's decimals field.

Scalars

Scalar Input Output
BigInt An integer, or a decimal string such as "1000000000000" A JSON number, which can exceed 2^53
DateTime An ISO 8601 date and time, such as 2026-01-31T12:00:00Z An ISO 8601 string in UTC
Bytea Hexadecimal, with or without a 0x prefix Hexadecimal without a prefix
JSON Any JSON value Any JSON value

BigInt output needs a precision-safe JSON parser. Mojo amounts routinely exceed Number.MAX_SAFE_INTEGER, and the API writes them as bare JSON numbers. A standard JSON.parse in JavaScript silently rounds them, producing a wrong balance rather than an error. In JavaScript, parse responses with a library such as json-bigint, or call JSON.parse with a reviver that reads the source text, where the runtime supports it. Python's json module keeps integers exact. For input, a value above 2^53 − 1 must be a decimal string, because a JSON number that large cannot be represented exactly. Sending every amount as a decimal string is the simplest way to satisfy this.

Many timestamp fields, such as createdAt and updatedAt on Wallet, are typed String rather than DateTime. They use the format 2026-01-31 12:00:00.123456, with a space instead of T and no time zone offset, and the values are UTC. Append Z after replacing the space if your parser requires ISO 8601.

Defaults

An optional argument you omit takes the default shown in the reference, such as autoSubmit: Boolean = true. When an input field has no default:

  • An omitted fee is zero. A transaction with a zero fee can take longer to confirm when the network is busy. The API does not estimate fees, so choose the fee in your application.
  • An omitted first and last returns a page of 10 items on most connections.

autoSubmit defaults differ between mutations, because some flows expect a review step before anything reaches the network:

Pass autoSubmit explicitly whenever the difference matters to your integration.

Errors

The API follows the GraphQL response format. An operation that fails returns HTTP status 200 with an errors array. Each error has a message and, almost always, an extensions.code. Fields that resolved successfully still appear in data, so a response can contain both.

{
  "data": { "wallet": null },
  "errors": [
    {
      "message": "ID: Signer_<cuid> is not of type: Wallet",
      "extensions": { "code": "BAD_USER_INPUT" }
    }
  ]
}

Branch on extensions.code, not on message. Messages are for people and can change.

  • Do not rely on path. Most errors omit it, so send one root field per request when you need to know which field failed.
  • Some errors have no extensions at all: the alias and directive limits described under query limits, and a variable that is missing or has the wrong type. Treat an error without a code as a problem with the request document or its variables.
Code Meaning
UNAUTHENTICATED The operation requires authentication and the request has none, or its API-key signature is invalid
UNAUTHORIZED The caller lacks the permission, or the resource does not exist or is not visible to the caller
BAD_USER_INPUT An argument is invalid; the message explains which
BAD_REQUEST The HTTP request is malformed, such as a batched array or a mutation sent with GET
OPERATION_RESOLUTION_FAILURE operationName does not name an operation in the document
GRAPHQL_PARSE_FAILED The document is not valid GraphQL, or exceeds the token limit
GRAPHQL_VALIDATION_FAILED The document does not match the schema
RATE_LIMIT_EXCEEDED The operation's rate limit is exhausted
COMPLEXITY_EXCEEDED The query is too deep, too broad, or too expensive
PLAN_LIMIT_MET The account's plan does not allow more of this resource
DUPLICATE_KEY A resource with the same unique value already exists
AUTO_SUBMIT_FAILED The request was fully signed, but automatic submission failed; see the signature requests section
CIRCUIT_BREAKER_ACTIVE Cloud Wallet temporarily paused this operation
UNSUPPORTED_OFFER The offer uses an outdated format that can no longer be accepted
RPC_ERROR The Chia network rejected the request
INTERNAL_SERVER_ERROR An unexpected failure. The message is always Unexpected error.

There is no NOT_FOUND code. An ID for a resource that does not exist, or that you cannot access, returns null with UNAUTHORIZED; the API does not reveal which.

An invalid, expired, or revoked OAuth access token does not produce an error. The request runs unauthenticated: public fields such as viewer return null, and other fields fail with UNAUTHENTICATED. A null viewer therefore means the API did not accept your credentials.

An INTERNAL_SERVER_ERROR hides its cause deliberately. Retry a query once. Do not retry a mutation blindly, because the error does not say whether the change took effect: read the affected resource first, for example the vault's transactions, and retry only if the change is absent. If the error persists, contact support with the time of the request.

Requests rejected before GraphQL runs use HTTP status codes instead:

HTTP status Cause Message
400 A batched request array Batching is not supported.
400 Variables exceed the size limits below Input validation failed
400 A variable is missing or has the wrong type Names the variable, as in Variable "$input" …
400 operationName matches no operation Could not determine what operation to execute.
405 A mutation sent with GET Can only perform a mutation operation from a POST request.
413 A request body over 3 MB None

Rate limits

Each root field has its own budget per user, or per IP address for unauthenticated requests. Every call costs 10 points. A budget's 60-second window starts with the first call and resets when it ends.

Operation type Points per 60 seconds Calls per 60 seconds
Queries 1,000 100
Mutations 500 50

Because the budget is per root field, calling wallet 100 times does not reduce what remains for viewer. Authentication and verification operations have stricter limits. Some accounts have a higher allowance by agreement.

An exhausted budget returns RATE_LIMIT_EXCEEDED with HTTP status 200. No Retry-After header is sent; the message states the time until the window resets, as in Rate limit exceeded, please try again in 42 seconds. Back off until then instead of retrying immediately. The limit is checked before the field runs, so a rate-limited mutation made no change and is safe to retry after the wait.

Query limits

These limits protect the service and apply to every request:

Limit Value Error
Query document length 100,000 characters HTTP 400, Input validation failed
Keys in one variables object 100 HTTP 400, Input validation failed
Nesting depth of variables 15 HTTP 400, Input validation failed
Items in one variables array 10,000 HTTP 400, Input validation failed
Items in one list argument 250, unless the reference states otherwise BAD_USER_INPUT
Aliases 15 No code; the message begins Syntax Error:
Directives 50 No code; the message begins Syntax Error:
Tokens 1,000 GRAPHQL_PARSE_FAILED
Selection depth 25 COMPLEXITY_EXCEEDED
Selection breadth 400 COMPLEXITY_EXCEEDED
Complexity 5,000 COMPLEXITY_EXCEEDED

Each field costs 1 complexity point, and a list or connection multiplies the cost of its selection by 10. The edges of WalletTransaction.assetChanges multiply by 3, because most transactions change few assets. Request only the fields you use, and paginate instead of nesting several connections.

Vaults and transactions

Cloud Wallet calls wallets "vaults" in the user interface. The GraphQL schema uses Wallet and wallets.

List vaults

query ListVaults {
  viewer {
    wallets(first: 20) {
      edges {
        node {
          id
          name
          state
          xch: asset(assetHash: null) {
            totalAmount
            spendableAmount
          }
        }
      }
    }
  }
}

asset(assetHash: null) selects the vault's XCH balance. Pass assetHash: null explicitly: an asset field with no assetHash argument returns null. Pass a CAT's assetHash to read that CAT instead. A vault in the READY state can send and receive. VAULT_PENDING_CREATE means the vault's creation has not confirmed on chain yet, and the two VAULT_RECOVERY_ states mean a recovery is in progress.

To read one vault, pass its ID to wallet. Its assets connection lists each XCH and CAT balance in mojos, and its transactions connection lists its history. totalAmount is the full balance. spendableAmount excludes lockedAmount, the coins reserved by transactions and offers that have not settled.

query VaultActivity($walletId: ID!) {
  wallet(id: $walletId) {
    assets(first: 20) {
      edges {
        node {
          assetHash
          symbol
          totalAmount
          spendableAmount
        }
      }
    }
    transactions(first: 20) {
      edges {
        node {
          id
          type
          state
          walletFee
          assetChanges(first: 10) {
            edges {
              node {
                assetHash
                direction
                amount
              }
            }
          }
          signatureRequest {
            id
            status
          }
        }
      }
    }
  }
}

assetChanges lists each asset a transaction changed for the vault, one node per asset, so an offer shows both what the vault gave and what it received. amount is in mojos and never negative, and direction says whether the vault gained or lost the asset. assetHash is null for XCH. NFT changes, and an NFT launcher id passed to changedAssetHash, also need nft.read or wallet.sign on the vault; without either, the change is left out and the filter matches nothing. walletFee is the network fee the vault paid, in XCH mojos.

Receive funds

A vault receives XCH, CATs, and NFTs at its vault addresses. vaultAddresses lists them, and index 0 is the primary receive address:

query VaultAddresses($walletId: ID!) {
  wallet(id: $walletId) {
    vaultAddresses {
      index
      address
      label
    }
  }
}

deriveVaultAddress adds a new address at the next index, for example to give each payer a separate address. Do not use Wallet.address as a receive address: it returns one of the wallet's puzzle hashes, which is not necessarily the primary receive address.

Addresses begin with txch1 on testnet and xch1 on mainnet. The examples in this guide use xch1...; substitute a testnet address when you test.

Create a transaction

createTransaction sends XCH or a CAT from a vault to an address:

mutation CreateTransaction($input: CreateTransactionInput!) {
  createTransaction(input: $input) {
    signatureRequest {
      id
      status
      transaction {
        id
        state
      }
    }
  }
}

This input sends 1 XCH. Omit assetHash for XCH:

{
  "input": {
    "walletId": "Wallet_<cuid>",
    "address": "xch1...",
    "amount": "1000000000000",
    "fee": "0",
    "autoSubmit": true
  }
}

This input sends 2.5 units of a CAT. The amount uses CAT mojos, and the fee is still XCH mojos:

{
  "input": {
    "walletId": "Wallet_<cuid>",
    "address": "xch1...",
    "assetHash": "<64-character-cat-tail-hash>",
    "amount": "2500",
    "fee": "1000000"
  }
}

Omit type: only TRANSFER is supported, and it is the default. xchHandle is optional; if you resolved the address from an XCHandle, pass the handle and the mutation fails if it no longer resolves to address.

createTransaction does not sign or send anything. It creates two linked objects immediately:

  • A WalletTransaction in the UNSIGNED state, which appears in the vault's transactions connection.
  • A SignatureRequest in the UNSIGNED status, which collects the signatures the vault's signers must supply.

The signature requests section explains how signing and submission work, and how autoSubmit controls the last step.

Transaction states

WalletTransaction.state moves forward as the transaction is signed, submitted, and confirmed:

UNSIGNED → SIGNED → MEMPOOL → SETTLED
                         ↘ INVALID
State Meaning
UNSIGNED Waiting for signatures
SIGNED Every required signature is collected, and the transaction has not been submitted
MEMPOOL Submitted to the network and waiting to be included in a block
PENDING In progress and not yet confirmed; treat it like MEMPOOL
SETTLED Confirmed on chain. This is final for most transactions
RE_ORG A chain reorganization removed the confirming block; the transaction is waiting to confirm again
INVALID The network rejected the transaction, or one of its coins was spent elsewhere. It will not confirm
FINALIZED A clawback transaction was released to the recipient
CLAWED_BACK A clawback transaction was returned to the sender

Poll walletTransaction to follow a transaction. Chia adds a transaction block about every 52 seconds on average, so polling every 10 to 30 seconds is enough and stays well within the rate limits. API-key clients can also subscribe to walletUpdated and read the transaction again when the vault changes; the authentication section shows how to connect.

Remove an unsent transaction

deleteTransaction removes a transaction in the UNSIGNED, SIGNED, or INVALID state from the vault's history and cancels its signature request. A transaction that has been submitted cannot be deleted, and the mutation fails with Transaction has been submitted, it can not be deleted. A deleted transaction reappears if it later confirms on chain.

Clawback transactions

Set clawback.timestamp on CreateTransactionInput to send a clawback transaction. Until that time, the sender can reclaim the funds. Read WalletTransaction.clawbackState to see which action the sender can take:

  • clawBackTransaction returns the funds to the sender while canClawback is true, which ends when the timer expires.
  • finalizeTransaction pushes the funds to the recipient. Before the timer expires this requires canFinalize; afterward it requires canPushThrough.

Both create a new signature request and default to autoSubmit: false.

Signature requests

Every operation that spends from a vault, including transfers, offers, NFT mints, and clawback actions, returns a SignatureRequest instead of sending anything. Cloud Wallet never signs on a vault's behalf. The vault's signers produce the signatures, and Cloud Wallet verifies them, aggregates them, and submits the spend.

Signature request statuses

UNSIGNED → SIGNED → SUBMITTED
    ↘          ↘
     CANCELLED ← (transaction deleted or invalidated)

SignatureRequest.status is a string with one of these values:

Status Meaning
AWAITING_REVIEW Waiting for a recovery provider to review it. It cannot be signed yet
UNSIGNED Collecting signatures. Partial signatures accumulate while the request stays in this status
SIGNED Every required signature is collected, and the spend has not been submitted
SUBMITTED Submitted to the network. Follow the linked transaction for confirmation
CANCELLED The transaction was deleted or became invalid. The request can no longer be signed or submitted
PROCESSING Reserved; no current flow sets it. Do not submit a request in this status; read it again later

SUBMITTED means the network accepted the spend into its mempool, not that it confirmed. Confirmation is reported on SignatureRequest.transaction.state, as described in the vaults and transactions section.

A vault spend needs signatures from as many signers as the vault's custody policy requires, which can be fewer than all of them. Cloud Wallet moves the request to SIGNED as soon as the policy is satisfied.

Find requests to sign

Every mutation that creates a request returns its ID. To find requests created elsewhere, list the vault's pinnedTransactions, which holds unsigned transactions and rejected ones you can retry, and read each transaction's signatureRequest:

query PendingSignatureRequests($walletId: ID!) {
  wallet(id: $walletId) {
    pinnedTransactions(first: 20) {
      edges {
        node {
          id
          type
          signatureRequest {
            id
            status
          }
        }
      }
    }
  }
}

API-key clients can also subscribe to signatureRequestCreated, as described under signing.

Sign a request

Read the messages the request needs signed:

query SignatureRequestMessages($id: ID!) {
  signatureRequest(id: $id) {
    id
    status
    autoSubmit
    messages {
      curve
      publicKey
      message
    }
  }
}

Each entry names a public key and the message that key must sign. Sign each message with the matching private key outside Cloud Wallet, for example in the Chia Signer app or your own key management system. Then send each signature with signSignatureRequest:

mutation SignSignatureRequest($input: SignSignatureRequestInput!) {
  signSignatureRequest(input: $input) {
    signatureRequest {
      id
      status
    }
  }
}
{
  "input": {
    "signatureRequestId": "SignatureRequest_<cuid>",
    "publicKey": "<hex public key from messages>",
    "message": "<hex message from messages>",
    "signature": "<hex signature>"
  }
}
  • publicKey and message must match an entry in messages exactly. Send one call per entry you sign.
  • The caller needs sign permission on the vault. Signing does not require the same identity that created the request.

Produce a signature

The entry's curve names the signature scheme. Every value is hexadecimal: decode message to bytes before signing, and hex-encode the signature you send.

curve Sign signature value
BLS12_381 The message bytes, with the augmented scheme (AugSchemeMPL) The 96-byte G2 signature
SECP256R1 The message bytes, with ECDSA over P-256 and SHA-256 The 64-byte r and s values, or a DER signature
WEBAUTHN A WebAuthn assertion whose challenge is derived from the message A JSON document, UTF-8 encoded and then hex-encoded

For BLS12_381, sign exactly the bytes of message. It already contains the coin and network data that Chia's AGG_SIG conditions require, so do not hash it or append anything. AugSchemeMPL.sign in the chia_rs or blspy libraries produces the expected signature.

For SECP256R1, the key is a 33-byte compressed public key. Sign the message with the SHA-256 digest, as standard ECDSA libraries do by default; do not hash it yourself first.

For WEBAUTHN, request an assertion from the authenticator with the challenge set to the SHA-256 digest of the message bytes. If the message is already 32 bytes, treat it as a digest and use it as the challenge unchanged. Pass the challenge as bytes, for example to navigator.credentials.get; the browser writes it into clientDataJSON as base64url, which Cloud Wallet checks. Then send this JSON document, UTF-8 encoded and hex-encoded, as signature:

{
  "authenticatorData": "<hex authenticatorData from the assertion>",
  "clientDataJSON": "<hex clientDataJSON from the assertion>",
  "signature": "<hex signature from the assertion>"
}

The Curve enum also lists SECP256K1, but vaults cannot spend with secp256k1 keys.

A signature that does not verify fails with BAD_USER_INPUT and a message such as bls12-381 signature does not verify.

API-key clients can subscribe to signatureRequestCreated and signatureRequestUpdated to learn when a request needs a signature or changes status. resendSignatureRequest notifies the signers again while the request is UNSIGNED.

Submission and autoSubmit

autoSubmit decides what happens when the last required signature arrives:

autoSubmit After the last signature
true Cloud Wallet submits the spend in the same signSignatureRequest call. The request moves to SUBMITTED
false The request stays SIGNED until you call submitSignatureRequest

Each mutation that creates a request documents its autoSubmit default, and the defaults differ; see the conventions section. The request's autoSubmit field records the value in effect.

With autoSubmit: false, submit the fully signed request yourself:

mutation SubmitSignatureRequest($input: SubmitSignatureRequestInput!) {
  submitSignatureRequest(input: $input) {
    signatureRequest {
      id
      status
      transaction {
        id
        state
      }
    }
  }
}
{
  "input": {
    "signatureRequestId": "SignatureRequest_<cuid>"
  }
}

Submitting a request in any status other than SIGNED fails with Signature request is not in the correct state to be submitted. A request whose time lock has passed fails with This transaction has expired and is no longer valid.

When automatic submission fails

If the final signature is accepted but automatic submission fails, the signSignatureRequest call returns an AUTO_SUBMIT_FAILED error. The signature is still stored and the request is SIGNED. Check extensions.retryable on the error:

  • true: the failure may be temporary. Retry with submitSignatureRequest.
  • false: the network rejected the spend. Cloud Wallet cancels the request, and the transaction moves to INVALID. Create a new transaction.

Offers

An offer is a partially signed trade that anyone holding it can accept on chain. It trades XCH, CATs, and NFTs without a counterparty or exchange in between. Offers travel as bech32m strings beginning with offer1.

Create an offer

createOffer describes what the vault gives and what it wants in return. Amounts are in mojos, and an omitted assetHash means XCH. This input offers 1 XCH for 100 units of a CAT:

mutation CreateOffer($input: CreateOfferInput!) {
  createOffer(input: $input) {
    signatureRequest {
      id
      status
    }
  }
}
{
  "input": {
    "walletId": "Wallet_<cuid>",
    "offered": [{ "amount": "1000000000000" }],
    "requested": [{ "assetHash": "<64-character-cat-tail-hash>", "amount": "100000" }],
    "fee": "0",
    "expiresAt": "2026-12-31T00:00:00Z"
  }
}

To trade NFTs, list their 64-character hexadecimal launcher IDs in offeredNftIds or requestedNftIds. offered and requested are still required; pass [] for a side that has no XCH or CATs.

The mutation returns a signature request, not the offer string. Sign it as described in the signature requests section. When the last signature arrives, Cloud Wallet records the offer and moves the request to SUBMITTED. Nothing is sent to the network: a created offer stays off chain until someone takes it or you cancel it on chain.

fee is included in the offer's own spend, so it is paid when the offer settles, not when you create it. splitInputCoinsFee pays for the coin split described next.

With splitInputCoins: true, Cloud Wallet splits the vault's coins first when that is needed for the offer to reserve only the offered amount. The signature request then covers that coin split, which is sent to the network, and autoSubmit works as it does for a transfer: with false, the request stays SIGNED until you call submitSignatureRequest. The offer is recorded when the request is signed in both cases.

Read the offer string from the request's transaction once it is signed:

query CreatedOffer($id: ID!) {
  signatureRequest(id: $id) {
    status
    transaction {
      offer {
        id
        offerId
        bech32
        state
        settlementType
      }
    }
  }
}

Share bech32 with the counterparty. Keep offerId, which cancelOffer needs, and id, which reads the offer again with walletOffer. The vault's offered coins stay reserved, and are excluded from its spendable balance, until the offer settles, expires, or is cancelled.

Take an offer

Taking an offer string you received has two steps. First import it into the vault that will take it with addOffer, which returns the offer's details without committing to anything:

mutation ImportOffer($input: AddOfferInput!) {
  addOffer(input: $input) {
    offer {
      id
      offerId
      state
      expiresAt
      assets(first: 10) {
        totalCount
      }
    }
  }
}
{
  "input": {
    "walletId": "Wallet_<cuid>",
    "offer": "offer1..."
  }
}

Inspect the imported offer before accepting it. Then pass its offerId, in Offer_<hex> format, to takeOffer:

mutation TakeOffer($input: TakeOfferInput!) {
  takeOffer(input: $input) {
    signatureRequest {
      id
      status
    }
  }
}
{
  "input": {
    "walletId": "Wallet_<cuid>",
    "offerId": "Offer_<hex>",
    "fee": "0",
    "autoSubmit": true
  }
}

takeOffer defaults to autoSubmit: false, so without the explicit true above the request waits in SIGNED for submitSignatureRequest. An offer in an outdated format fails with UNSUPPORTED_OFFER.

Cancel an offer

cancelOffer cancels an offer the vault created, in one of two ways:

Option Effect Returns
On chain (default) Spends the offered coins so the offer can never be taken. Costs a transaction and the fee you set A signature request
cancelOffChain: true Marks the offer cancelled in Cloud Wallet. Anyone who already has the offer string can still take it null signature request

An off-chain cancellation also releases the reservation, so the offered coins count as spendable again. Until those coins are spent, the offer can still be taken. When a later transaction spends them, the offer can no longer settle.

Cancel on chain whenever the offer string has left your system. An on-chain cancellation defaults to autoSubmit: false.

mutation CancelOffer($input: CancelOfferInput!) {
  cancelOffer(input: $input) {
    signatureRequest {
      id
      status
    }
  }
}
{
  "input": {
    "walletId": "Wallet_<cuid>",
    "offerId": "Offer_<hex>",
    "fee": "0",
    "autoSubmit": true
  }
}

Offer states

An offer has two status fields. Both are strings with the values below.

state describes the offer on chain, and is the same for every vault that holds it:

State Meaning
PENDING The offer's input coins are still being prepared
OPEN The offer can be taken
MEMPOOL A take or cancellation is waiting to be included in a block
SETTLED The offer's coins were spent on chain; settlementType says how
RE_ORG A chain reorganization removed the settling block
EXPIRED expiresAt passed before the offer was taken
INVALID The offer can no longer be taken, for example because its coins were spent

settlementType describes the outcome for your vault:

Settlement type Meaning
UNSIGNED Your vault's take is not fully signed
PENDING_CONFIRMATION Your vault's take was submitted and is waiting to confirm
PENDING_CANCELLATION Your vault's on-chain cancellation is waiting to confirm
CONFIRMED The trade completed: your vault's offer was taken, or your vault's take settled it
CANCELLED The creator cancelled the offer on chain, or your vault cancelled it in Cloud Wallet
TAKEN_BY_OTHERS Your vault imported or tried to take the offer, and another party took it first

settlementType is null while your vault's own offer is open, and on an imported offer your vault has not acted on. List a vault's offers with the offers connection on Wallet, filtered by states or settlementTypes, and read one with walletOffer. API-key clients can subscribe to offerUpdated.

NFTs

Mint NFTs

bulkMintNfts requires nft.create permission for the source vault. The vault needs one XCH mojo per NFT plus the fee. Hashes are SHA-256 values encoded as 64 hexadecimal characters. URI arrays must contain a valid first URL.

mutation MintNfts($input: BulkMintNftsInput!) {
  bulkMintNfts(input: $input) {
    nftIds
    airdropId
    signatureRequest {
      id
      status
    }
  }
}
{
  "input": {
    "walletId": "Wallet_<cuid>",
    "fee": "0",
    "autoSubmit": true,
    "mints": [
      {
        "dataHash": "<64-character-sha256>",
        "dataUris": ["https://example.com/nft.png"],
        "metadataHash": "<64-character-sha256>",
        "metadataUris": ["https://example.com/metadata.json"],
        "royaltyBasisPoints": 0
      }
    ]
  }
}

Omit ownerAddress to mint to the source vault. Omit edition fields for a one-of-one NFT. The mutation returns deterministic NFT launcher IDs and a signature request; it does not bypass the vault's signer policy. The signature request then follows the lifecycle in the signature requests section.

Transfer NFTs

transferNfts sends one or more NFTs from a vault, each to its own address. It requires transfer.create permission for the vault and defaults to autoSubmit: false. Identify each NFT by its launcher ID, the 64-character hexadecimal launcherId on the vault's nfts connection.

mutation TransferNfts($input: TransferNftsInput!) {
  transferNfts(input: $input) {
    signatureRequest {
      id
      status
    }
  }
}
{
  "input": {
    "walletId": "Wallet_<cuid>",
    "transfers": [{ "launcherId": "<64-character-launcher-id>", "address": "xch1..." }],
    "fee": "0",
    "autoSubmit": true
  }
}

Account & Access

Queries

oauthConsentedWallets

Use oAuthConsentedWallets instead.
Description

Wallets the current OAuth client has been granted access to for the authenticated user. Only wallets with a usable receive address are returned. Intended for OAuth clients that cannot enumerate viewer.wallets.

Response

Returns [Wallet!]!

Example

Query
query oauthConsentedWallets {
  oauthConsentedWallets {
    address {
      ...PuzzleHashFragment
    }
    addresses {
      ...WalletAddressesConnectionFragment
    }
    airdrops {
      ...WalletAirdropsConnectionFragment
    }
    asset {
      ...WalletAssetFragment
    }
    assets {
      ...WalletAssetsConnectionFragment
    }
    balance
    canViewerAcceptOffer
    canViewerCreateAirdrop
    canViewerCreateAsset
    canViewerCreateBroadcastMessage
    canViewerCreateNft
    canViewerCreateOffer
    canViewerCreateTransfer
    canViewerDelete
    canViewerRecover
    canViewerUpdate
    createdAt
    custodyConfig {
      ...WalletCustodyConfigFragment
    }
    grantableOAuthScopes
    hasMintedAssets
    hasReceiveAddress
    id
    messages {
      ...WalletMessagesConnectionFragment
    }
    name
    needsConfigDownload
    nfts {
      ...WalletNftsConnectionFragment
    }
    offers {
      ...WalletOffersConnectionFragment
    }
    pinnedTransactions {
      ...WalletPinnedTransactionsConnectionFragment
    }
    platformSubscriptions {
      ...WalletPlatformSubscriptionsConnectionFragment
    }
    recoveryEligibility {
      ...RecoveryEligibilityFragment
    }
    recoveryState
    settings {
      ...WalletSettingsFragment
    }
    signerType
    signers {
      ...WalletSignersConnectionFragment
    }
    state
    transactions {
      ...WalletTransactionsConnectionFragment
    }
    updatedAt
    user {
      ...UserFragment
    }
    vaultAddresses {
      ...VaultAddressFragment
    }
    vaultRecoveries {
      ...WalletVaultRecoveriesConnectionFragment
    }
    vaultRecovery {
      ...VaultRecoveryFragment
    }
    vaultRecoveryProvider {
      ...RecoveryProviderPublicFragment
    }
    vaultRecoverySigners {
      ...WalletVaultRecoverySignersConnectionFragment
    }
    walletSubscriptions {
      ...WalletWalletSubscriptionsConnectionFragment
    }
  }
}
Response
{
  "data": {
    "oauthConsentedWallets": [
      {
        "address": PuzzleHash,
        "addresses": WalletAddressesConnection,
        "airdrops": WalletAirdropsConnection,
        "asset": WalletAsset,
        "assets": WalletAssetsConnection,
        "balance": {},
        "canViewerAcceptOffer": false,
        "canViewerCreateAirdrop": true,
        "canViewerCreateAsset": true,
        "canViewerCreateBroadcastMessage": false,
        "canViewerCreateNft": false,
        "canViewerCreateOffer": false,
        "canViewerCreateTransfer": true,
        "canViewerDelete": false,
        "canViewerRecover": true,
        "canViewerUpdate": false,
        "createdAt": "xyz789",
        "custodyConfig": WalletCustodyConfig,
        "grantableOAuthScopes": ["abc123"],
        "hasMintedAssets": false,
        "hasReceiveAddress": false,
        "id": "4",
        "messages": WalletMessagesConnection,
        "name": "abc123",
        "needsConfigDownload": false,
        "nfts": WalletNftsConnection,
        "offers": WalletOffersConnection,
        "pinnedTransactions": WalletPinnedTransactionsConnection,
        "platformSubscriptions": WalletPlatformSubscriptionsConnection,
        "recoveryEligibility": RecoveryEligibility,
        "recoveryState": "AWAITING_REVIEW",
        "settings": WalletSettings,
        "signerType": "MIXED_MULTISIG",
        "signers": WalletSignersConnection,
        "state": "READY",
        "transactions": WalletTransactionsConnection,
        "updatedAt": "xyz789",
        "user": User,
        "vaultAddresses": [VaultAddress],
        "vaultRecoveries": WalletVaultRecoveriesConnection,
        "vaultRecovery": VaultRecovery,
        "vaultRecoveryProvider": RecoveryProviderPublic,
        "vaultRecoverySigners": WalletVaultRecoverySignersConnection,
        "walletSubscriptions": WalletWalletSubscriptionsConnection
      }
    ]
  }
}

oAuthConsentedWallets

Description

Wallets the current OAuth client has been granted access to for the authenticated user. Only wallets with a usable receive address are returned. Intended for OAuth clients that cannot enumerate viewer.wallets.

Response

Returns [Wallet!]!

Example

Query
query oAuthConsentedWallets {
  oAuthConsentedWallets {
    address {
      ...PuzzleHashFragment
    }
    addresses {
      ...WalletAddressesConnectionFragment
    }
    airdrops {
      ...WalletAirdropsConnectionFragment
    }
    asset {
      ...WalletAssetFragment
    }
    assets {
      ...WalletAssetsConnectionFragment
    }
    balance
    canViewerAcceptOffer
    canViewerCreateAirdrop
    canViewerCreateAsset
    canViewerCreateBroadcastMessage
    canViewerCreateNft
    canViewerCreateOffer
    canViewerCreateTransfer
    canViewerDelete
    canViewerRecover
    canViewerUpdate
    createdAt
    custodyConfig {
      ...WalletCustodyConfigFragment
    }
    grantableOAuthScopes
    hasMintedAssets
    hasReceiveAddress
    id
    messages {
      ...WalletMessagesConnectionFragment
    }
    name
    needsConfigDownload
    nfts {
      ...WalletNftsConnectionFragment
    }
    offers {
      ...WalletOffersConnectionFragment
    }
    pinnedTransactions {
      ...WalletPinnedTransactionsConnectionFragment
    }
    platformSubscriptions {
      ...WalletPlatformSubscriptionsConnectionFragment
    }
    recoveryEligibility {
      ...RecoveryEligibilityFragment
    }
    recoveryState
    settings {
      ...WalletSettingsFragment
    }
    signerType
    signers {
      ...WalletSignersConnectionFragment
    }
    state
    transactions {
      ...WalletTransactionsConnectionFragment
    }
    updatedAt
    user {
      ...UserFragment
    }
    vaultAddresses {
      ...VaultAddressFragment
    }
    vaultRecoveries {
      ...WalletVaultRecoveriesConnectionFragment
    }
    vaultRecovery {
      ...VaultRecoveryFragment
    }
    vaultRecoveryProvider {
      ...RecoveryProviderPublicFragment
    }
    vaultRecoverySigners {
      ...WalletVaultRecoverySignersConnectionFragment
    }
    walletSubscriptions {
      ...WalletWalletSubscriptionsConnectionFragment
    }
  }
}
Response
{
  "data": {
    "oAuthConsentedWallets": [
      {
        "address": PuzzleHash,
        "addresses": WalletAddressesConnection,
        "airdrops": WalletAirdropsConnection,
        "asset": WalletAsset,
        "assets": WalletAssetsConnection,
        "balance": {},
        "canViewerAcceptOffer": true,
        "canViewerCreateAirdrop": false,
        "canViewerCreateAsset": true,
        "canViewerCreateBroadcastMessage": false,
        "canViewerCreateNft": true,
        "canViewerCreateOffer": false,
        "canViewerCreateTransfer": true,
        "canViewerDelete": false,
        "canViewerRecover": false,
        "canViewerUpdate": false,
        "createdAt": "abc123",
        "custodyConfig": WalletCustodyConfig,
        "grantableOAuthScopes": ["abc123"],
        "hasMintedAssets": true,
        "hasReceiveAddress": true,
        "id": 4,
        "messages": WalletMessagesConnection,
        "name": "xyz789",
        "needsConfigDownload": true,
        "nfts": WalletNftsConnection,
        "offers": WalletOffersConnection,
        "pinnedTransactions": WalletPinnedTransactionsConnection,
        "platformSubscriptions": WalletPlatformSubscriptionsConnection,
        "recoveryEligibility": RecoveryEligibility,
        "recoveryState": "AWAITING_REVIEW",
        "settings": WalletSettings,
        "signerType": "MIXED_MULTISIG",
        "signers": WalletSignersConnection,
        "state": "READY",
        "transactions": WalletTransactionsConnection,
        "updatedAt": "abc123",
        "user": User,
        "vaultAddresses": [VaultAddress],
        "vaultRecoveries": WalletVaultRecoveriesConnection,
        "vaultRecovery": VaultRecovery,
        "vaultRecoveryProvider": RecoveryProviderPublic,
        "vaultRecoverySigners": WalletVaultRecoverySignersConnection,
        "walletSubscriptions": WalletWalletSubscriptionsConnection
      }
    ]
  }
}

oauthScopes

Use oAuthScopes instead.
Description

Returns the resource permissions available for third-party OAuth consent.

Response

Returns a QueryOauthScopesConnection!

Arguments
Name Description
after - String
before - String
first - Int
last - Int

Example

Query
query oauthScopes(
  $after: String,
  $before: String,
  $first: Int,
  $last: Int
) {
  oauthScopes(
    after: $after,
    before: $before,
    first: $first,
    last: $last
  ) {
    edges {
      ...QueryOauthScopesConnectionEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
    totalCount
  }
}
Variables
{
  "after": "xyz789",
  "before": "xyz789",
  "first": 123,
  "last": 123
}
Response
{
  "data": {
    "oauthScopes": {
      "edges": [QueryOauthScopesConnectionEdge],
      "pageInfo": PageInfo,
      "totalCount": 123
    }
  }
}

oAuthScopes

Description

Returns the resource permissions available for third-party OAuth consent.

Response

Returns a QueryOAuthScopesConnection!

Arguments
Name Description
after - String
before - String
first - Int
last - Int

Example

Query
query oAuthScopes(
  $after: String,
  $before: String,
  $first: Int,
  $last: Int
) {
  oAuthScopes(
    after: $after,
    before: $before,
    first: $first,
    last: $last
  ) {
    edges {
      ...QueryOAuthScopesConnectionEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
    totalCount
  }
}
Variables
{
  "after": "xyz789",
  "before": "xyz789",
  "first": 123,
  "last": 987
}
Response
{
  "data": {
    "oAuthScopes": {
      "edges": [QueryOAuthScopesConnectionEdge],
      "pageInfo": PageInfo,
      "totalCount": 987
    }
  }
}

organization

Description

Returns an organization.

Response

Returns an Organization

Arguments
Name Description
id - ID! Organization global ID (Organization_<cuid>).

Example

Query
query organization($id: ID!) {
  organization(id: $id) {
    canViewerCreateApiKeys
    canViewerCreateUsers
    canViewerDelete
    canViewerReadOAuthClients
    canViewerReadRecoveryReviews
    canViewerReadUsers
    canViewerUpdate
    canViewerWriteOAuthClients
    contacts {
      ...OrganizationContactsConnectionFragment
    }
    createdAt
    featureFlags {
      ...FeatureFlagFragment
    }
    grantableOAuthScopes
    id
    name
    plan {
      ...PlanFragment
    }
    recoveryProviders {
      ...RecoveryProviderPublicFragment
    }
    sessionDuration
    updatedAt
    userAuthKeys {
      ...OrganizationUserAuthKeysConnectionFragment
    }
    users {
      ...OrganizationUsersConnectionFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "organization": {
      "canViewerCreateApiKeys": true,
      "canViewerCreateUsers": true,
      "canViewerDelete": false,
      "canViewerReadOAuthClients": false,
      "canViewerReadRecoveryReviews": true,
      "canViewerReadUsers": false,
      "canViewerUpdate": false,
      "canViewerWriteOAuthClients": false,
      "contacts": OrganizationContactsConnection,
      "createdAt": "xyz789",
      "featureFlags": [FeatureFlag],
      "grantableOAuthScopes": ["abc123"],
      "id": 4,
      "name": "abc123",
      "plan": Plan,
      "recoveryProviders": [RecoveryProviderPublic],
      "sessionDuration": 123,
      "updatedAt": "xyz789",
      "userAuthKeys": OrganizationUserAuthKeysConnection,
      "users": OrganizationUsersConnection
    }
  }
}

user

Description

Returns a user matching the supplied ID or signer public key.

Response

Returns a User

Arguments
Name Description
id - ID User global ID (User_<cuid>).
publicKey - Bytea Signer public key as bytes. Used when id is omitted.

Example

Query
query user(
  $id: ID,
  $publicKey: Bytea
) {
  user(
    id: $id,
    publicKey: $publicKey
  ) {
    buyLimitOverride
    canViewerCreateBuyOrder
    canViewerCreatePlatformOAuthClients
    canViewerDelete
    canViewerReadOAuthReviews
    canViewerSubmitSupportTicket
    canViewerUpdate
    contacts {
      ...UserContactsConnectionFragment
    }
    createdAt
    deactivatedAt
    deactivatedBy {
      ...UserFragment
    }
    deactivationNotes
    deactivationReason
    email
    emailChangeInProgress {
      ...UserEmailChangeTokenFragment
    }
    emailUpdatedAt
    grantableOAuthScopes
    hasDisputedPaymentMethod
    hasExceededMaxVerificationAttempts
    hasVaultNeedingConfigDownload
    id
    identityVerificationFailedAttempts
    identityVerificationStatus
    identityVerifiedAt
    isViewer
    issuedAssets {
      ...UserIssuedAssetsConnectionFragment
    }
    messages {
      ...UserMessagesConnectionFragment
    }
    name
    nfts {
      ...UserNftsConnectionFragment
    }
    offers {
      ...UserOffersConnectionFragment
    }
    organization {
      ...OrganizationFragment
    }
    passkeyCounts {
      ...PasskeyCountsFragment
    }
    passkeys {
      ...UserPasskeysConnectionFragment
    }
    passwordExpiresAt
    paymentMethodUserLimits {
      ...PaymentMethodUserLimitFragment
    }
    platformPermissions
    purchaseProgramState
    role
    signerAppKeys {
      ...UserSignerAppKeysConnectionFragment
    }
    signers {
      ...UserSignersConnectionFragment
    }
    status
    supportTickets {
      ...SupportTicketConnectionFragment
    }
    temporaryFeatureFlags {
      ...FeatureFlagFragment
    }
    unsignedOfferSignatureRequests {
      ...UserUnsignedOfferSignatureRequestsConnectionFragment
    }
    updatedAt
    userAdditionalEmails {
      ...UserAdditionalEmailFragment
    }
    userAuthKeys {
      ...UserUserAuthKeysConnectionFragment
    }
    userTokens {
      ...UserUserTokensConnectionFragment
    }
    vaultConfigTemplates {
      ...UserVaultConfigTemplatesConnectionFragment
    }
    wallets {
      ...UserWalletsConnectionFragment
    }
  }
}
Variables
{"id": 4, "publicKey": Bytea}
Response
{
  "data": {
    "user": {
      "buyLimitOverride": 987,
      "canViewerCreateBuyOrder": false,
      "canViewerCreatePlatformOAuthClients": false,
      "canViewerDelete": true,
      "canViewerReadOAuthReviews": true,
      "canViewerSubmitSupportTicket": false,
      "canViewerUpdate": true,
      "contacts": UserContactsConnection,
      "createdAt": "xyz789",
      "deactivatedAt": "abc123",
      "deactivatedBy": User,
      "deactivationNotes": "xyz789",
      "deactivationReason": "FRAUD_SUSPICIOUS_ACTIVITY",
      "email": "xyz789",
      "emailChangeInProgress": UserEmailChangeToken,
      "emailUpdatedAt": "xyz789",
      "grantableOAuthScopes": ["abc123"],
      "hasDisputedPaymentMethod": false,
      "hasExceededMaxVerificationAttempts": false,
      "hasVaultNeedingConfigDownload": false,
      "id": 4,
      "identityVerificationFailedAttempts": 987,
      "identityVerificationStatus": "FAILED",
      "identityVerifiedAt": "abc123",
      "isViewer": true,
      "issuedAssets": UserIssuedAssetsConnection,
      "messages": UserMessagesConnection,
      "name": "xyz789",
      "nfts": UserNftsConnection,
      "offers": UserOffersConnection,
      "organization": Organization,
      "passkeyCounts": PasskeyCounts,
      "passkeys": UserPasskeysConnection,
      "passwordExpiresAt": "abc123",
      "paymentMethodUserLimits": [PaymentMethodUserLimit],
      "platformPermissions": ["PLATFORM_ANNOUNCEMENT_DELETE"],
      "purchaseProgramState": "HALTED",
      "role": "FINANCE_ADMIN",
      "signerAppKeys": UserSignerAppKeysConnection,
      "signers": UserSignersConnection,
      "status": "ACTIVE",
      "supportTickets": SupportTicketConnection,
      "temporaryFeatureFlags": [FeatureFlag],
      "unsignedOfferSignatureRequests": UserUnsignedOfferSignatureRequestsConnection,
      "updatedAt": "abc123",
      "userAdditionalEmails": [UserAdditionalEmail],
      "userAuthKeys": UserUserAuthKeysConnection,
      "userTokens": UserUserTokensConnection,
      "vaultConfigTemplates": UserVaultConfigTemplatesConnection,
      "wallets": UserWalletsConnection
    }
  }
}

userAuthKey

Description

Returns a user authentication key.

Response

Returns a UserAuthKey

Arguments
Name Description
id - ID! User authentication key global ID (UserAuthKey_<cuid>).

Example

Query
query userAuthKey($id: ID!) {
  userAuthKey(id: $id) {
    canViewerDelete
    canViewerUpdate
    createdAt
    createdBy {
      ...UserFragment
    }
    expiresAt
    id
    lastUsedAt
    name
    privateKey
    publicKey
    user {
      ...UserFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "userAuthKey": {
      "canViewerDelete": false,
      "canViewerUpdate": true,
      "createdAt": "xyz789",
      "createdBy": User,
      "expiresAt": "xyz789",
      "id": "4",
      "lastUsedAt": "xyz789",
      "name": "abc123",
      "privateKey": "abc123",
      "publicKey": "abc123",
      "user": User
    }
  }
}

viewer

Description

Returns the authenticated user, or null for an unauthenticated request.

Response

Returns a User

Example

Query
query viewer {
  viewer {
    buyLimitOverride
    canViewerCreateBuyOrder
    canViewerCreatePlatformOAuthClients
    canViewerDelete
    canViewerReadOAuthReviews
    canViewerSubmitSupportTicket
    canViewerUpdate
    contacts {
      ...UserContactsConnectionFragment
    }
    createdAt
    deactivatedAt
    deactivatedBy {
      ...UserFragment
    }
    deactivationNotes
    deactivationReason
    email
    emailChangeInProgress {
      ...UserEmailChangeTokenFragment
    }
    emailUpdatedAt
    grantableOAuthScopes
    hasDisputedPaymentMethod
    hasExceededMaxVerificationAttempts
    hasVaultNeedingConfigDownload
    id
    identityVerificationFailedAttempts
    identityVerificationStatus
    identityVerifiedAt
    isViewer
    issuedAssets {
      ...UserIssuedAssetsConnectionFragment
    }
    messages {
      ...UserMessagesConnectionFragment
    }
    name
    nfts {
      ...UserNftsConnectionFragment
    }
    offers {
      ...UserOffersConnectionFragment
    }
    organization {
      ...OrganizationFragment
    }
    passkeyCounts {
      ...PasskeyCountsFragment
    }
    passkeys {
      ...UserPasskeysConnectionFragment
    }
    passwordExpiresAt
    paymentMethodUserLimits {
      ...PaymentMethodUserLimitFragment
    }
    platformPermissions
    purchaseProgramState
    role
    signerAppKeys {
      ...UserSignerAppKeysConnectionFragment
    }
    signers {
      ...UserSignersConnectionFragment
    }
    status
    supportTickets {
      ...SupportTicketConnectionFragment
    }
    temporaryFeatureFlags {
      ...FeatureFlagFragment
    }
    unsignedOfferSignatureRequests {
      ...UserUnsignedOfferSignatureRequestsConnectionFragment
    }
    updatedAt
    userAdditionalEmails {
      ...UserAdditionalEmailFragment
    }
    userAuthKeys {
      ...UserUserAuthKeysConnectionFragment
    }
    userTokens {
      ...UserUserTokensConnectionFragment
    }
    vaultConfigTemplates {
      ...UserVaultConfigTemplatesConnectionFragment
    }
    wallets {
      ...UserWalletsConnectionFragment
    }
  }
}
Response
{
  "data": {
    "viewer": {
      "buyLimitOverride": 123,
      "canViewerCreateBuyOrder": true,
      "canViewerCreatePlatformOAuthClients": false,
      "canViewerDelete": true,
      "canViewerReadOAuthReviews": false,
      "canViewerSubmitSupportTicket": true,
      "canViewerUpdate": false,
      "contacts": UserContactsConnection,
      "createdAt": "abc123",
      "deactivatedAt": "abc123",
      "deactivatedBy": User,
      "deactivationNotes": "abc123",
      "deactivationReason": "FRAUD_SUSPICIOUS_ACTIVITY",
      "email": "xyz789",
      "emailChangeInProgress": UserEmailChangeToken,
      "emailUpdatedAt": "xyz789",
      "grantableOAuthScopes": ["abc123"],
      "hasDisputedPaymentMethod": false,
      "hasExceededMaxVerificationAttempts": false,
      "hasVaultNeedingConfigDownload": true,
      "id": 4,
      "identityVerificationFailedAttempts": 123,
      "identityVerificationStatus": "FAILED",
      "identityVerifiedAt": "xyz789",
      "isViewer": true,
      "issuedAssets": UserIssuedAssetsConnection,
      "messages": UserMessagesConnection,
      "name": "xyz789",
      "nfts": UserNftsConnection,
      "offers": UserOffersConnection,
      "organization": Organization,
      "passkeyCounts": PasskeyCounts,
      "passkeys": UserPasskeysConnection,
      "passwordExpiresAt": "xyz789",
      "paymentMethodUserLimits": [PaymentMethodUserLimit],
      "platformPermissions": ["PLATFORM_ANNOUNCEMENT_DELETE"],
      "purchaseProgramState": "HALTED",
      "role": "FINANCE_ADMIN",
      "signerAppKeys": UserSignerAppKeysConnection,
      "signers": UserSignersConnection,
      "status": "ACTIVE",
      "supportTickets": SupportTicketConnection,
      "temporaryFeatureFlags": [FeatureFlag],
      "unsignedOfferSignatureRequests": UserUnsignedOfferSignatureRequestsConnection,
      "updatedAt": "abc123",
      "userAdditionalEmails": [UserAdditionalEmail],
      "userAuthKeys": UserUserAuthKeysConnection,
      "userTokens": UserUserTokensConnection,
      "vaultConfigTemplates": UserVaultConfigTemplatesConnection,
      "wallets": UserWalletsConnection
    }
  }
}

Wallets & Vaults

Queries

vaultConfigDownload

Description

Returns a wallet vault configuration as a base64-encoded JSON file.

Response

Returns a VaultConfigDownloadPayload!

Arguments
Name Description
id - ID! Wallet global ID (Wallet_<cuid>).

Example

Query
query vaultConfigDownload($id: ID!) {
  vaultConfigDownload(id: $id) {
    content
    filename
    mimeType
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "vaultConfigDownload": {
      "content": "abc123",
      "filename": "xyz789",
      "mimeType": "xyz789"
    }
  }
}

vaultConfigTemplate

Description

Returns a vault configuration template.

Response

Returns a VaultConfigTemplate

Arguments
Name Description
id - ID! Vault configuration template global ID (VaultConfigTemplate_<cuid>).

Example

Query
query vaultConfigTemplate($id: ID!) {
  vaultConfigTemplate(id: $id) {
    createdAt
    creator {
      ...UserFragment
    }
    custodyKeysAddedCount
    grantableOAuthScopes
    id
    isViewerCreator
    otherSigners {
      ...VaultConfigTemplateOtherSignerFragment
    }
    recoveryKeysAddedCount
    recoveryProvider {
      ...RecoveryProviderPublicFragment
    }
    recoveryTimelock
    requiredCustodySigners
    requiredRecoverySigners
    totalCustodySigners
    totalRecoverySigners
    updatedAt
    vaultName
    viewerSigners {
      ...VaultConfigTemplateSignerFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "vaultConfigTemplate": {
      "createdAt": "xyz789",
      "creator": User,
      "custodyKeysAddedCount": 123,
      "grantableOAuthScopes": ["xyz789"],
      "id": "4",
      "isViewerCreator": true,
      "otherSigners": [VaultConfigTemplateOtherSigner],
      "recoveryKeysAddedCount": 987,
      "recoveryProvider": RecoveryProviderPublic,
      "recoveryTimelock": 987,
      "requiredCustodySigners": 123,
      "requiredRecoverySigners": 123,
      "totalCustodySigners": 987,
      "totalRecoverySigners": 123,
      "updatedAt": "abc123",
      "vaultName": "abc123",
      "viewerSigners": [VaultConfigTemplateSigner]
    }
  }
}

vaultLauncherIdForAddress

Description

Find the launcher ID of the on-chain vault that owns a receive address, to restore it with restoreVaultFromChain. Works once the vault has sent funds from that address.

Response

Returns a String!

Arguments
Name Description
address - String! A receive address of the vault on this network

Example

Query
query vaultLauncherIdForAddress($address: String!) {
  vaultLauncherIdForAddress(address: $address)
}
Variables
{"address": "abc123"}
Response
{
  "data": {
    "vaultLauncherIdForAddress": "abc123"
  }
}

vaultRecoveryReview

Description

Returns a vault recovery review.

Response

Returns a VaultRecoveryReview

Arguments
Name Description
id - ID! Vault recovery review global ID (VaultRecoveryReview_<cuid>).

Example

Query
query vaultRecoveryReview($id: ID!) {
  vaultRecoveryReview(id: $id) {
    approvalReason
    beforeAfterData {
      ...BeforeAfterDataFragment
    }
    createdAt
    id
    initiator {
      ...VaultRecoveryReviewInitiatorFragment
    }
    reason
    recoveryHistory {
      ...VaultRecoveryReviewFragment
    }
    recoveryProvider {
      ...RecoveryProviderFragment
    }
    rejectionReason
    reviewedAt
    reviewedByUser {
      ...VaultRecoveryReviewReviewerFragment
    }
    state
    updatedAt
    vaultRecovery {
      ...VaultRecoveryFragment
    }
    wallet {
      ...VaultRecoveryReviewWalletFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "vaultRecoveryReview": {
      "approvalReason": "abc123",
      "beforeAfterData": BeforeAfterData,
      "createdAt": "xyz789",
      "id": "4",
      "initiator": VaultRecoveryReviewInitiator,
      "reason": "abc123",
      "recoveryHistory": [VaultRecoveryReview],
      "recoveryProvider": RecoveryProvider,
      "rejectionReason": "abc123",
      "reviewedAt": "abc123",
      "reviewedByUser": VaultRecoveryReviewReviewer,
      "state": "APPROVED",
      "updatedAt": "xyz789",
      "vaultRecovery": VaultRecovery,
      "wallet": VaultRecoveryReviewWallet
    }
  }
}

vaultRecoveryReviews

Description

Get vault recovery reviews that are associated to user's recovery providers

Arguments
Name Description
after - String
before - String
first - Int
last - Int
query - String
signatureRequestStatuses - [SignatureRequestStatus!] Filter by signature request statuses (e.g., UNSIGNED for awaiting signature)
sortKey - VaultRecoveryReviewsSortKey Default = CREATED_AT
states - [VaultRecoveryReviewState!] Filter by multiple states

Example

Query
query vaultRecoveryReviews(
  $after: String,
  $before: String,
  $first: Int,
  $last: Int,
  $query: String,
  $signatureRequestStatuses: [SignatureRequestStatus!],
  $sortKey: VaultRecoveryReviewsSortKey,
  $states: [VaultRecoveryReviewState!]
) {
  vaultRecoveryReviews(
    after: $after,
    before: $before,
    first: $first,
    last: $last,
    query: $query,
    signatureRequestStatuses: $signatureRequestStatuses,
    sortKey: $sortKey,
    states: $states
  ) {
    edges {
      ...QueryVaultRecoveryReviewsConnectionEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
    totalCount
  }
}
Variables
{
  "after": "xyz789",
  "before": "abc123",
  "first": 987,
  "last": 987,
  "query": "abc123",
  "signatureRequestStatuses": ["AWAITING_REVIEW"],
  "sortKey": "CREATED_AT",
  "states": ["APPROVED"]
}
Response
{
  "data": {
    "vaultRecoveryReviews": {
      "edges": [QueryVaultRecoveryReviewsConnectionEdge],
      "pageInfo": PageInfo,
      "totalCount": 123
    }
  }
}

wallet

Description

Returns a wallet.

Response

Returns a Wallet

Arguments
Name Description
id - ID! Wallet global ID (Wallet_<cuid>).

Example

Query
query wallet($id: ID!) {
  wallet(id: $id) {
    address {
      ...PuzzleHashFragment
    }
    addresses {
      ...WalletAddressesConnectionFragment
    }
    airdrops {
      ...WalletAirdropsConnectionFragment
    }
    asset {
      ...WalletAssetFragment
    }
    assets {
      ...WalletAssetsConnectionFragment
    }
    balance
    canViewerAcceptOffer
    canViewerCreateAirdrop
    canViewerCreateAsset
    canViewerCreateBroadcastMessage
    canViewerCreateNft
    canViewerCreateOffer
    canViewerCreateTransfer
    canViewerDelete
    canViewerRecover
    canViewerUpdate
    createdAt
    custodyConfig {
      ...WalletCustodyConfigFragment
    }
    grantableOAuthScopes
    hasMintedAssets
    hasReceiveAddress
    id
    messages {
      ...WalletMessagesConnectionFragment
    }
    name
    needsConfigDownload
    nfts {
      ...WalletNftsConnectionFragment
    }
    offers {
      ...WalletOffersConnectionFragment
    }
    pinnedTransactions {
      ...WalletPinnedTransactionsConnectionFragment
    }
    platformSubscriptions {
      ...WalletPlatformSubscriptionsConnectionFragment
    }
    recoveryEligibility {
      ...RecoveryEligibilityFragment
    }
    recoveryState
    settings {
      ...WalletSettingsFragment
    }
    signerType
    signers {
      ...WalletSignersConnectionFragment
    }
    state
    transactions {
      ...WalletTransactionsConnectionFragment
    }
    updatedAt
    user {
      ...UserFragment
    }
    vaultAddresses {
      ...VaultAddressFragment
    }
    vaultRecoveries {
      ...WalletVaultRecoveriesConnectionFragment
    }
    vaultRecovery {
      ...VaultRecoveryFragment
    }
    vaultRecoveryProvider {
      ...RecoveryProviderPublicFragment
    }
    vaultRecoverySigners {
      ...WalletVaultRecoverySignersConnectionFragment
    }
    walletSubscriptions {
      ...WalletWalletSubscriptionsConnectionFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "wallet": {
      "address": PuzzleHash,
      "addresses": WalletAddressesConnection,
      "airdrops": WalletAirdropsConnection,
      "asset": WalletAsset,
      "assets": WalletAssetsConnection,
      "balance": {},
      "canViewerAcceptOffer": true,
      "canViewerCreateAirdrop": false,
      "canViewerCreateAsset": false,
      "canViewerCreateBroadcastMessage": false,
      "canViewerCreateNft": true,
      "canViewerCreateOffer": false,
      "canViewerCreateTransfer": false,
      "canViewerDelete": true,
      "canViewerRecover": true,
      "canViewerUpdate": true,
      "createdAt": "xyz789",
      "custodyConfig": WalletCustodyConfig,
      "grantableOAuthScopes": ["xyz789"],
      "hasMintedAssets": false,
      "hasReceiveAddress": false,
      "id": "4",
      "messages": WalletMessagesConnection,
      "name": "xyz789",
      "needsConfigDownload": true,
      "nfts": WalletNftsConnection,
      "offers": WalletOffersConnection,
      "pinnedTransactions": WalletPinnedTransactionsConnection,
      "platformSubscriptions": WalletPlatformSubscriptionsConnection,
      "recoveryEligibility": RecoveryEligibility,
      "recoveryState": "AWAITING_REVIEW",
      "settings": WalletSettings,
      "signerType": "MIXED_MULTISIG",
      "signers": WalletSignersConnection,
      "state": "READY",
      "transactions": WalletTransactionsConnection,
      "updatedAt": "xyz789",
      "user": User,
      "vaultAddresses": [VaultAddress],
      "vaultRecoveries": WalletVaultRecoveriesConnection,
      "vaultRecovery": VaultRecovery,
      "vaultRecoveryProvider": RecoveryProviderPublic,
      "vaultRecoverySigners": WalletVaultRecoverySignersConnection,
      "walletSubscriptions": WalletWalletSubscriptionsConnection
    }
  }
}

Mutations

addSignersToWallet

Description

Add signers to a wallet.

Response

Returns an AddSignersToWalletPayload!

Arguments
Name Description
input - AddSignersToWalletInput!

Example

Query
mutation addSignersToWallet($input: AddSignersToWalletInput!) {
  addSignersToWallet(input: $input) {
    walletSigners {
      ...WalletSignerFragment
    }
  }
}
Variables
{"input": AddSignersToWalletInput}
Response
{
  "data": {
    "addSignersToWallet": {
      "walletSigners": [WalletSigner]
    }
  }
}

approveVaultRecoveryReview

Description

Approve a vault recovery review request. Only reviews in PENDING state can be approved.

Arguments
Name Description
input - ApproveVaultRecoveryReviewInput!

Example

Query
mutation approveVaultRecoveryReview($input: ApproveVaultRecoveryReviewInput!) {
  approveVaultRecoveryReview(input: $input) {
    vaultRecoveryReview {
      ...VaultRecoveryReviewFragment
    }
  }
}
Variables
{"input": ApproveVaultRecoveryReviewInput}
Response
{
  "data": {
    "approveVaultRecoveryReview": {
      "vaultRecoveryReview": VaultRecoveryReview
    }
  }
}

createVaultConfigTemplate

Description

Create a new vault configuration template

Arguments
Name Description
input - CreateVaultConfigTemplateInput!

Example

Query
mutation createVaultConfigTemplate($input: CreateVaultConfigTemplateInput!) {
  createVaultConfigTemplate(input: $input) {
    vaultConfigTemplate {
      ...VaultConfigTemplateFragment
    }
  }
}
Variables
{"input": CreateVaultConfigTemplateInput}
Response
{
  "data": {
    "createVaultConfigTemplate": {
      "vaultConfigTemplate": VaultConfigTemplate
    }
  }
}

createVaultFromConfigTemplate

Description

Create a new vault based on an existing vault configuration template

Arguments
Name Description
input - CreateVaultFromConfigTemplateInput!

Example

Query
mutation createVaultFromConfigTemplate($input: CreateVaultFromConfigTemplateInput!) {
  createVaultFromConfigTemplate(input: $input) {
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{"input": CreateVaultFromConfigTemplateInput}
Response
{
  "data": {
    "createVaultFromConfigTemplate": {"wallet": Wallet}
  }
}

createWallet

Description

Create a wallet. Provide exactly one custody configuration. Vault wallets remain pending until their singleton is created on chain.

Response

Returns a CreateWalletPayload!

Arguments
Name Description
input - CreateWalletInput!

Example

Query
mutation createWallet($input: CreateWalletInput!) {
  createWallet(input: $input) {
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{"input": CreateWalletInput}
Response
{"data": {"createWallet": {"wallet": Wallet}}}

deleteVaultConfigTemplate

Description

Delete a vault configuration template

Arguments
Name Description
input - DeleteVaultConfigTemplateInput!

Example

Query
mutation deleteVaultConfigTemplate($input: DeleteVaultConfigTemplateInput!) {
  deleteVaultConfigTemplate(input: $input) {
    success
  }
}
Variables
{"input": DeleteVaultConfigTemplateInput}
Response
{"data": {"deleteVaultConfigTemplate": {"success": false}}}

deleteWallet

Description

Delete a wallet

Response

Returns a DeleteWalletPayload!

Arguments
Name Description
input - DeleteWalletInput!

Example

Query
mutation deleteWallet($input: DeleteWalletInput!) {
  deleteWallet(input: $input) {
    success
  }
}
Variables
{"input": DeleteWalletInput}
Response
{"data": {"deleteWallet": {"success": false}}}

deriveVaultAddress

Description

Derive a new receive address for a vault wallet

Response

Returns a DeriveVaultAddressPayload!

Arguments
Name Description
input - DeriveVaultAddressInput!

Example

Query
mutation deriveVaultAddress($input: DeriveVaultAddressInput!) {
  deriveVaultAddress(input: $input) {
    address
    index
  }
}
Variables
{"input": DeriveVaultAddressInput}
Response
{
  "data": {
    "deriveVaultAddress": {
      "address": "xyz789",
      "index": 987
    }
  }
}

notifyVaultConfigTemplateSigner

Description

Notify a vault configuration template signer to set up their signer

Arguments
Name Description
input - NotifyVaultConfigTemplateSignerInput!

Example

Query
mutation notifyVaultConfigTemplateSigner($input: NotifyVaultConfigTemplateSignerInput!) {
  notifyVaultConfigTemplateSigner(input: $input) {
    vaultConfigTemplateSigner {
      ...VaultConfigTemplateOtherSignerFragment
    }
  }
}
Variables
{"input": NotifyVaultConfigTemplateSignerInput}
Response
{
  "data": {
    "notifyVaultConfigTemplateSigner": {
      "vaultConfigTemplateSigner": VaultConfigTemplateOtherSigner
    }
  }
}

rejectVaultRecoveryReview

Description

Reject a vault recovery review request. Only reviews in PENDING state can be rejected.

Arguments
Name Description
input - RejectVaultRecoveryReviewInput!

Example

Query
mutation rejectVaultRecoveryReview($input: RejectVaultRecoveryReviewInput!) {
  rejectVaultRecoveryReview(input: $input) {
    vaultRecoveryReview {
      ...VaultRecoveryReviewFragment
    }
  }
}
Variables
{"input": RejectVaultRecoveryReviewInput}
Response
{
  "data": {
    "rejectVaultRecoveryReview": {
      "vaultRecoveryReview": VaultRecoveryReview
    }
  }
}

removeSignersFromWallet

Description

Remove signers from a wallet.

Response

Returns a RemoveSignersFromWalletPayload!

Arguments
Name Description
input - RemoveSignersFromWalletInput!

Example

Query
mutation removeSignersFromWallet($input: RemoveSignersFromWalletInput!) {
  removeSignersFromWallet(input: $input) {
    success
  }
}
Variables
{"input": RemoveSignersFromWalletInput}
Response
{"data": {"removeSignersFromWallet": {"success": false}}}

requestVaultRestoreChallenge

Description

Find an on-chain vault and issue a single-use challenge to sign with one of its member keys before restoring it with restoreVaultFromChain or restoreVaultFromConfig. Expires after 10 minutes.

Response

Returns a VaultRestoreChallenge!

Arguments
Name Description
configJson - String The configuration file being restored with restoreVaultFromConfig. Without it, the vault is read from the memos in its on-chain lineage.
launcherId - String! The launcher ID of the vault singleton

Example

Query
mutation requestVaultRestoreChallenge(
  $configJson: String,
  $launcherId: String!
) {
  requestVaultRestoreChallenge(
    configJson: $configJson,
    launcherId: $launcherId
  ) {
    challengeId
    expiresAt
    linkableSignerAppKeys {
      ...VaultRestoreLinkableKeyFragment
    }
    message
    proofMethods
  }
}
Variables
{
  "configJson": "xyz789",
  "launcherId": "abc123"
}
Response
{
  "data": {
    "requestVaultRestoreChallenge": {
      "challengeId": "xyz789",
      "expiresAt": "xyz789",
      "linkableSignerAppKeys": [VaultRestoreLinkableKey],
      "message": "xyz789",
      "proofMethods": ["PASSKEY"]
    }
  }
}

restoreVaultFromChain

Description

Restore a vault from the CHIP-0043 configuration memos in its on-chain singleton lineage. Creates a wallet entry for an existing on-chain vault, including a recovery in progress. Requires proof of control of a member key; public keys held by other users are stored on the vault but not linked to their accounts.

Response

Returns a RestoreVaultFromChainPayload!

Arguments
Name Description
input - RestoreVaultFromChainInput!

Example

Query
mutation restoreVaultFromChain($input: RestoreVaultFromChainInput!) {
  restoreVaultFromChain(input: $input) {
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{"input": RestoreVaultFromChainInput}
Response
{"data": {"restoreVaultFromChain": {"wallet": Wallet}}}

restoreVaultFromConfig

Description

Restore a vault from a configuration file. Creates a wallet entry for an existing on-chain vault. Requires proof of control of a member key, from a challenge issued by requestVaultRestoreChallenge.

Response

Returns a RestoreVaultFromConfigPayload!

Arguments
Name Description
input - RestoreVaultFromConfigInput!

Example

Query
mutation restoreVaultFromConfig($input: RestoreVaultFromConfigInput!) {
  restoreVaultFromConfig(input: $input) {
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{"input": RestoreVaultFromConfigInput}
Response
{"data": {"restoreVaultFromConfig": {"wallet": Wallet}}}

setVaultAddressLabel

Description

Set or clear a label for a vault address

Response

Returns a SetVaultAddressLabelPayload!

Arguments
Name Description
input - SetVaultAddressLabelInput!

Example

Query
mutation setVaultAddressLabel($input: SetVaultAddressLabelInput!) {
  setVaultAddressLabel(input: $input) {
    vaultAddress {
      ...VaultAddressFragment
    }
  }
}
Variables
{"input": SetVaultAddressLabelInput}
Response
{
  "data": {
    "setVaultAddressLabel": {"vaultAddress": VaultAddress}
  }
}

updateVaultConfigTemplate

Description

Update an existing vault configuration template

Response

Returns an UpdateVaultConfigTemplatePayload!

Arguments
Name Description
input - UpdateVaultConfigTemplateInput!

Example

Query
mutation updateVaultConfigTemplate($input: UpdateVaultConfigTemplateInput!) {
  updateVaultConfigTemplate(input: $input) {
    vaultConfigTemplate {
      ...VaultConfigTemplateFragment
    }
  }
}
Variables
{"input": UpdateVaultConfigTemplateInput}
Response
{
  "data": {
    "updateVaultConfigTemplate": {
      "vaultConfigTemplate": VaultConfigTemplate
    }
  }
}

updateVaultConfigTemplateKey

Description

Update a vault configuration template signer with key configuration

Arguments
Name Description
input - UpdateVaultConfigTemplateKeyInput!

Example

Query
mutation updateVaultConfigTemplateKey($input: UpdateVaultConfigTemplateKeyInput!) {
  updateVaultConfigTemplateKey(input: $input) {
    vaultConfigTemplateSigner {
      ...VaultConfigTemplateSignerFragment
    }
  }
}
Variables
{"input": UpdateVaultConfigTemplateKeyInput}
Response
{
  "data": {
    "updateVaultConfigTemplateKey": {
      "vaultConfigTemplateSigner": VaultConfigTemplateSigner
    }
  }
}

updateWallet

Description

Update a wallet details

Response

Returns an UpdateWalletPayload!

Arguments
Name Description
input - UpdateWalletInput!

Example

Query
mutation updateWallet($input: UpdateWalletInput!) {
  updateWallet(input: $input) {
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{"input": UpdateWalletInput}
Response
{"data": {"updateWallet": {"wallet": Wallet}}}

walletAction

Description

Perform action against a new wallet

Response

Returns a WalletActionPayload!

Arguments
Name Description
input - WalletActionInput!

Example

Query
mutation walletAction($input: WalletActionInput!) {
  walletAction(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": WalletActionInput}
Response
{
  "data": {
    "walletAction": {"signatureRequest": SignatureRequest}
  }
}

Subscriptions

walletAdded

Description

Subscribe to wallet creation

Response

Returns a Wallet!

Example

Query
subscription walletAdded {
  walletAdded {
    address {
      ...PuzzleHashFragment
    }
    addresses {
      ...WalletAddressesConnectionFragment
    }
    airdrops {
      ...WalletAirdropsConnectionFragment
    }
    asset {
      ...WalletAssetFragment
    }
    assets {
      ...WalletAssetsConnectionFragment
    }
    balance
    canViewerAcceptOffer
    canViewerCreateAirdrop
    canViewerCreateAsset
    canViewerCreateBroadcastMessage
    canViewerCreateNft
    canViewerCreateOffer
    canViewerCreateTransfer
    canViewerDelete
    canViewerRecover
    canViewerUpdate
    createdAt
    custodyConfig {
      ...WalletCustodyConfigFragment
    }
    grantableOAuthScopes
    hasMintedAssets
    hasReceiveAddress
    id
    messages {
      ...WalletMessagesConnectionFragment
    }
    name
    needsConfigDownload
    nfts {
      ...WalletNftsConnectionFragment
    }
    offers {
      ...WalletOffersConnectionFragment
    }
    pinnedTransactions {
      ...WalletPinnedTransactionsConnectionFragment
    }
    platformSubscriptions {
      ...WalletPlatformSubscriptionsConnectionFragment
    }
    recoveryEligibility {
      ...RecoveryEligibilityFragment
    }
    recoveryState
    settings {
      ...WalletSettingsFragment
    }
    signerType
    signers {
      ...WalletSignersConnectionFragment
    }
    state
    transactions {
      ...WalletTransactionsConnectionFragment
    }
    updatedAt
    user {
      ...UserFragment
    }
    vaultAddresses {
      ...VaultAddressFragment
    }
    vaultRecoveries {
      ...WalletVaultRecoveriesConnectionFragment
    }
    vaultRecovery {
      ...VaultRecoveryFragment
    }
    vaultRecoveryProvider {
      ...RecoveryProviderPublicFragment
    }
    vaultRecoverySigners {
      ...WalletVaultRecoverySignersConnectionFragment
    }
    walletSubscriptions {
      ...WalletWalletSubscriptionsConnectionFragment
    }
  }
}
Response
{
  "data": {
    "walletAdded": {
      "address": PuzzleHash,
      "addresses": WalletAddressesConnection,
      "airdrops": WalletAirdropsConnection,
      "asset": WalletAsset,
      "assets": WalletAssetsConnection,
      "balance": {},
      "canViewerAcceptOffer": true,
      "canViewerCreateAirdrop": false,
      "canViewerCreateAsset": true,
      "canViewerCreateBroadcastMessage": false,
      "canViewerCreateNft": false,
      "canViewerCreateOffer": false,
      "canViewerCreateTransfer": false,
      "canViewerDelete": true,
      "canViewerRecover": true,
      "canViewerUpdate": true,
      "createdAt": "abc123",
      "custodyConfig": WalletCustodyConfig,
      "grantableOAuthScopes": ["xyz789"],
      "hasMintedAssets": true,
      "hasReceiveAddress": true,
      "id": 4,
      "messages": WalletMessagesConnection,
      "name": "xyz789",
      "needsConfigDownload": true,
      "nfts": WalletNftsConnection,
      "offers": WalletOffersConnection,
      "pinnedTransactions": WalletPinnedTransactionsConnection,
      "platformSubscriptions": WalletPlatformSubscriptionsConnection,
      "recoveryEligibility": RecoveryEligibility,
      "recoveryState": "AWAITING_REVIEW",
      "settings": WalletSettings,
      "signerType": "MIXED_MULTISIG",
      "signers": WalletSignersConnection,
      "state": "READY",
      "transactions": WalletTransactionsConnection,
      "updatedAt": "abc123",
      "user": User,
      "vaultAddresses": [VaultAddress],
      "vaultRecoveries": WalletVaultRecoveriesConnection,
      "vaultRecovery": VaultRecovery,
      "vaultRecoveryProvider": RecoveryProviderPublic,
      "vaultRecoverySigners": WalletVaultRecoverySignersConnection,
      "walletSubscriptions": WalletWalletSubscriptionsConnection
    }
  }
}

walletUpdated

Description

Subscribe to wallet updates

Response

Returns a Wallet!

Example

Query
subscription walletUpdated {
  walletUpdated {
    address {
      ...PuzzleHashFragment
    }
    addresses {
      ...WalletAddressesConnectionFragment
    }
    airdrops {
      ...WalletAirdropsConnectionFragment
    }
    asset {
      ...WalletAssetFragment
    }
    assets {
      ...WalletAssetsConnectionFragment
    }
    balance
    canViewerAcceptOffer
    canViewerCreateAirdrop
    canViewerCreateAsset
    canViewerCreateBroadcastMessage
    canViewerCreateNft
    canViewerCreateOffer
    canViewerCreateTransfer
    canViewerDelete
    canViewerRecover
    canViewerUpdate
    createdAt
    custodyConfig {
      ...WalletCustodyConfigFragment
    }
    grantableOAuthScopes
    hasMintedAssets
    hasReceiveAddress
    id
    messages {
      ...WalletMessagesConnectionFragment
    }
    name
    needsConfigDownload
    nfts {
      ...WalletNftsConnectionFragment
    }
    offers {
      ...WalletOffersConnectionFragment
    }
    pinnedTransactions {
      ...WalletPinnedTransactionsConnectionFragment
    }
    platformSubscriptions {
      ...WalletPlatformSubscriptionsConnectionFragment
    }
    recoveryEligibility {
      ...RecoveryEligibilityFragment
    }
    recoveryState
    settings {
      ...WalletSettingsFragment
    }
    signerType
    signers {
      ...WalletSignersConnectionFragment
    }
    state
    transactions {
      ...WalletTransactionsConnectionFragment
    }
    updatedAt
    user {
      ...UserFragment
    }
    vaultAddresses {
      ...VaultAddressFragment
    }
    vaultRecoveries {
      ...WalletVaultRecoveriesConnectionFragment
    }
    vaultRecovery {
      ...VaultRecoveryFragment
    }
    vaultRecoveryProvider {
      ...RecoveryProviderPublicFragment
    }
    vaultRecoverySigners {
      ...WalletVaultRecoverySignersConnectionFragment
    }
    walletSubscriptions {
      ...WalletWalletSubscriptionsConnectionFragment
    }
  }
}
Response
{
  "data": {
    "walletUpdated": {
      "address": PuzzleHash,
      "addresses": WalletAddressesConnection,
      "airdrops": WalletAirdropsConnection,
      "asset": WalletAsset,
      "assets": WalletAssetsConnection,
      "balance": {},
      "canViewerAcceptOffer": true,
      "canViewerCreateAirdrop": false,
      "canViewerCreateAsset": false,
      "canViewerCreateBroadcastMessage": false,
      "canViewerCreateNft": true,
      "canViewerCreateOffer": false,
      "canViewerCreateTransfer": true,
      "canViewerDelete": true,
      "canViewerRecover": true,
      "canViewerUpdate": true,
      "createdAt": "xyz789",
      "custodyConfig": WalletCustodyConfig,
      "grantableOAuthScopes": ["xyz789"],
      "hasMintedAssets": false,
      "hasReceiveAddress": false,
      "id": "4",
      "messages": WalletMessagesConnection,
      "name": "abc123",
      "needsConfigDownload": true,
      "nfts": WalletNftsConnection,
      "offers": WalletOffersConnection,
      "pinnedTransactions": WalletPinnedTransactionsConnection,
      "platformSubscriptions": WalletPlatformSubscriptionsConnection,
      "recoveryEligibility": RecoveryEligibility,
      "recoveryState": "AWAITING_REVIEW",
      "settings": WalletSettings,
      "signerType": "MIXED_MULTISIG",
      "signers": WalletSignersConnection,
      "state": "READY",
      "transactions": WalletTransactionsConnection,
      "updatedAt": "xyz789",
      "user": User,
      "vaultAddresses": [VaultAddress],
      "vaultRecoveries": WalletVaultRecoveriesConnection,
      "vaultRecovery": VaultRecovery,
      "vaultRecoveryProvider": RecoveryProviderPublic,
      "vaultRecoverySigners": WalletVaultRecoverySignersConnection,
      "walletSubscriptions": WalletWalletSubscriptionsConnection
    }
  }
}

Assets & NFTs

Queries

airdrop

Description

Returns an airdrop.

Response

Returns an Airdrop

Arguments
Name Description
id - ID Airdrop global ID (Airdrop_<cuid>).

Example

Query
query airdrop($id: ID) {
  airdrop(id: $id) {
    coins {
      ...AirdropCoinsConnectionFragment
    }
    createdAt
    csvData
    id
    name
    progress {
      ...AirdropProgressFragment
    }
    type
    updatedAt
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "airdrop": {
      "coins": AirdropCoinsConnection,
      "createdAt": "xyz789",
      "csvData": "xyz789",
      "id": "4",
      "name": "xyz789",
      "progress": AirdropProgress,
      "type": "xyz789",
      "updatedAt": "xyz789",
      "wallet": Wallet
    }
  }
}

airdropAtTime

Description

Returns the airdrop for a wallet with the exact creation timestamp.

Response

Returns an Airdrop

Arguments
Name Description
createdAt - String! Exact airdrop creation timestamp as an ISO 8601 string.
walletId - ID! Wallet global ID (Wallet_<cuid>).

Example

Query
query airdropAtTime(
  $createdAt: String!,
  $walletId: ID!
) {
  airdropAtTime(
    createdAt: $createdAt,
    walletId: $walletId
  ) {
    coins {
      ...AirdropCoinsConnectionFragment
    }
    createdAt
    csvData
    id
    name
    progress {
      ...AirdropProgressFragment
    }
    type
    updatedAt
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{
  "createdAt": "xyz789",
  "walletId": "4"
}
Response
{
  "data": {
    "airdropAtTime": {
      "coins": AirdropCoinsConnection,
      "createdAt": "abc123",
      "csvData": "abc123",
      "id": 4,
      "name": "xyz789",
      "progress": AirdropProgress,
      "type": "abc123",
      "updatedAt": "xyz789",
      "wallet": Wallet
    }
  }
}

asset

Description

Returns the Asset by hash.

Response

Returns an Asset

Arguments
Name Description
assetHash - String

Example

Query
query asset($assetHash: String) {
  asset(assetHash: $assetHash) {
    assetHash
    canViewerUpdate
    decimals
    displayName
    displaySymbol
    id
    identifier
    issuerWallet {
      ...WalletFragment
    }
    mintState
    multiIssuance
    name
    revocable
    symbol
    totalMelted
    totalMinted
    totalSupply
    type
  }
}
Variables
{"assetHash": "abc123"}
Response
{
  "data": {
    "asset": {
      "assetHash": "abc123",
      "canViewerUpdate": true,
      "decimals": 123,
      "displayName": "abc123",
      "displaySymbol": "abc123",
      "id": 4,
      "identifier": "xyz789",
      "issuerWallet": Wallet,
      "mintState": "CLAWED_BACK",
      "multiIssuance": true,
      "name": "xyz789",
      "revocable": false,
      "symbol": "abc123",
      "totalMelted": {},
      "totalMinted": {},
      "totalSupply": {},
      "type": "CAT1"
    }
  }
}

nft

Description

Returns an NFT by its 64-character hexadecimal launcher ID.

Response

Returns a Nft

Arguments
Name Description
launcherId - String! NFT launcher ID as a 64-character hexadecimal string.

Example

Query
query nft($launcherId: String!) {
  nft(launcherId: $launcherId) {
    coinId
    id
    launcherId
    metadata {
      ...NftMetadataFragment
    }
    ownerAddress
    royaltyAddress
    royaltyPercentage
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{"launcherId": "xyz789"}
Response
{
  "data": {
    "nft": {
      "coinId": "abc123",
      "id": "4",
      "launcherId": "xyz789",
      "metadata": NftMetadata,
      "ownerAddress": "xyz789",
      "royaltyAddress": "xyz789",
      "royaltyPercentage": 123,
      "wallet": Wallet
    }
  }
}

userToken

Description

Returns a token tracked by the authenticated user.

Response

Returns a UserToken

Arguments
Name Description
id - ID! User token global ID (UserToken_<cuid>).

Example

Query
query userToken($id: ID!) {
  userToken(id: $id) {
    asset {
      ...AssetFragment
    }
    assetHash
    createdAt
    displayName
    id
    image
    imageMimeType
    symbol
    updatedAt
    user {
      ...UserFragment
    }
    userId
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "userToken": {
      "asset": Asset,
      "assetHash": "xyz789",
      "createdAt": "2007-12-03T10:15:30Z",
      "displayName": "xyz789",
      "id": 4,
      "image": "xyz789",
      "imageMimeType": "xyz789",
      "symbol": "abc123",
      "updatedAt": "2007-12-03T10:15:30Z",
      "user": User,
      "userId": "abc123"
    }
  }
}

userTokenByAssetHash

Description

Returns a token tracked by the authenticated user for a CAT tail hash.

Response

Returns a UserToken

Arguments
Name Description
assetHash - String! 64-character lowercase hex CAT tail hash.

Example

Query
query userTokenByAssetHash($assetHash: String!) {
  userTokenByAssetHash(assetHash: $assetHash) {
    asset {
      ...AssetFragment
    }
    assetHash
    createdAt
    displayName
    id
    image
    imageMimeType
    symbol
    updatedAt
    user {
      ...UserFragment
    }
    userId
  }
}
Variables
{"assetHash": "xyz789"}
Response
{
  "data": {
    "userTokenByAssetHash": {
      "asset": Asset,
      "assetHash": "abc123",
      "createdAt": "2007-12-03T10:15:30Z",
      "displayName": "xyz789",
      "id": 4,
      "image": "xyz789",
      "imageMimeType": "abc123",
      "symbol": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z",
      "user": User,
      "userId": "abc123"
    }
  }
}

Mutations

bulkMintNfts

Description

Mint up to 5,000 NFTs from a wallet. The wallet must contain one XCH mojo per NFT plus the transaction fee.

Response

Returns a BulkMintNftsPayload!

Arguments
Name Description
input - BulkMintNftsInput!

Example

Query
mutation bulkMintNfts($input: BulkMintNftsInput!) {
  bulkMintNfts(input: $input) {
    airdropId
    nftIds
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": BulkMintNftsInput}
Response
{
  "data": {
    "bulkMintNfts": {
      "airdropId": "4",
      "nftIds": ["xyz789"],
      "signatureRequest": SignatureRequest
    }
  }
}

createAirdrop

Description

Create a new airdrop

Response

Returns a CreateAirdropPayload!

Arguments
Name Description
input - CreateAirdropInput!

Example

Query
mutation createAirdrop($input: CreateAirdropInput!) {
  createAirdrop(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": CreateAirdropInput}
Response
{
  "data": {
    "createAirdrop": {
      "signatureRequest": SignatureRequest
    }
  }
}

createAsset

Description

Create a CAT2 asset and the signature request for its initial issuance.

Response

Returns a CreateAssetPayload!

Arguments
Name Description
input - CreateAssetInput!

Example

Query
mutation createAsset($input: CreateAssetInput!) {
  createAsset(input: $input) {
    asset {
      ...AssetFragment
    }
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": CreateAssetInput}
Response
{
  "data": {
    "createAsset": {
      "asset": Asset,
      "signatureRequest": SignatureRequest
    }
  }
}

createAssetAndAirdrop

Description

Create a multi-issuance CAT2 asset and distribute its supply. CSV amounts must sum to the configured issuance amount.

Response

Returns a CreateAssetAndAirdropPayload!

Arguments
Name Description
input - CreateAssetAndAirdropInput!

Example

Query
mutation createAssetAndAirdrop($input: CreateAssetAndAirdropInput!) {
  createAssetAndAirdrop(input: $input) {
    asset {
      ...AssetFragment
    }
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": CreateAssetAndAirdropInput}
Response
{
  "data": {
    "createAssetAndAirdrop": {
      "asset": Asset,
      "signatureRequest": SignatureRequest
    }
  }
}

deleteAsset

Description

Delete an unminted asset

Response

Returns a DeleteAssetPayload!

Arguments
Name Description
input - DeleteAssetInput!

Example

Query
mutation deleteAsset($input: DeleteAssetInput!) {
  deleteAsset(input: $input) {
    success
  }
}
Variables
{"input": DeleteAssetInput}
Response
{"data": {"deleteAsset": {"success": false}}}

revokeAsset

Description

Revoke a revocable CAT2 from one holder address or a set of coins. Repeat while outstandingBatches is greater than zero.

Response

Returns a RevokeAssetPayload!

Arguments
Name Description
input - RevokeAssetInput!

Example

Query
mutation revokeAsset($input: RevokeAssetInput!) {
  revokeAsset(input: $input) {
    asset {
      ...AssetFragment
    }
    outstandingBatches
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": RevokeAssetInput}
Response
{
  "data": {
    "revokeAsset": {
      "asset": Asset,
      "outstandingBatches": 123,
      "signatureRequest": SignatureRequest
    }
  }
}

transferNfts

Description

Transfer a set of NFTs

Response

Returns a TransferNftsPayload!

Arguments
Name Description
input - TransferNftsInput!

Example

Query
mutation transferNfts($input: TransferNftsInput!) {
  transferNfts(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": TransferNftsInput}
Response
{
  "data": {
    "transferNfts": {"signatureRequest": SignatureRequest}
  }
}

validateAirdropCSV

Description

Validate CSV content for an airdrop and summarize its recipients and total amount. Each row is address,amount[,clawbackExpiration], with the amount in token units (up to 3 decimals) and the optional clawback expiration as a Unix timestamp in milliseconds. A header row whose first cell is Address is ignored.

Response

Returns an AirdropValidationResult!

Arguments
Name Description
fileContent - String!

Example

Query
mutation validateAirdropCSV($fileContent: String!) {
  validateAirdropCSV(fileContent: $fileContent) {
    error
    errors {
      ...AirdropValidationErrorFragment
    }
    isValid
    totalAmount
    totalRecipients
  }
}
Variables
{"fileContent": "xyz789"}
Response
{
  "data": {
    "validateAirdropCSV": {
      "error": "xyz789",
      "errors": [AirdropValidationError],
      "isValid": true,
      "totalAmount": "abc123",
      "totalRecipients": 123
    }
  }
}

Transactions & Coins

Queries

coins

Description

Returns coins for a wallet. By default, excludes pending and spent coins and sorts by creation height.

Response

Returns a QueryCoinsConnection!

Arguments
Name Description
after - String
assetHash - String 64-character lowercase hex CAT tail hash. Omit or pass null for XCH.
before - String
excludeAmounts - [BigInt!] Coin amounts in mojos to omit from the results.
excludeCoins - [ID!] Coin global IDs to omit from the results.
first - Int
includePending - Boolean Whether to include pending coins. Default = false
includeSpent - Boolean Whether to include spent coins. Default = false
last - Int
maxAmount - BigInt Maximum coin amount in mojos, inclusive.
minAmount - BigInt Minimum coin amount in mojos, inclusive.
sortKey - CoinRecordsSortKey Sort order. Default = CREATED_HEIGHT
walletId - ID! Wallet global ID (Wallet_<cuid>).

Example

Query
query coins(
  $after: String,
  $assetHash: String,
  $before: String,
  $excludeAmounts: [BigInt!],
  $excludeCoins: [ID!],
  $first: Int,
  $includePending: Boolean,
  $includeSpent: Boolean,
  $last: Int,
  $maxAmount: BigInt,
  $minAmount: BigInt,
  $sortKey: CoinRecordsSortKey,
  $walletId: ID!
) {
  coins(
    after: $after,
    assetHash: $assetHash,
    before: $before,
    excludeAmounts: $excludeAmounts,
    excludeCoins: $excludeCoins,
    first: $first,
    includePending: $includePending,
    includeSpent: $includeSpent,
    last: $last,
    maxAmount: $maxAmount,
    minAmount: $minAmount,
    sortKey: $sortKey,
    walletId: $walletId
  ) {
    edges {
      ...QueryCoinsConnectionEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
    totalCount
  }
}
Variables
{
  "after": "abc123",
  "assetHash": "abc123",
  "before": "xyz789",
  "excludeAmounts": [{}],
  "excludeCoins": [4],
  "first": 123,
  "includePending": false,
  "includeSpent": false,
  "last": 987,
  "maxAmount": {},
  "minAmount": {},
  "sortKey": "CREATED_HEIGHT",
  "walletId": 4
}
Response
{
  "data": {
    "coins": {
      "edges": [QueryCoinsConnectionEdge],
      "pageInfo": PageInfo,
      "totalCount": 987
    }
  }
}

recipientHistory

Description

Returns settled outbound payment history for an address in a wallet.

Response

Returns a RecipientHistory!

Arguments
Name Description
address - String! Chia address using the network prefix, such as xch1... or txch1....
walletId - ID! Wallet global ID (Wallet_<cuid>).

Example

Query
query recipientHistory(
  $address: String!,
  $walletId: ID!
) {
  recipientHistory(
    address: $address,
    walletId: $walletId
  ) {
    addressActivityStatus
    hasSentBefore
    lastSentAt
  }
}
Variables
{
  "address": "abc123",
  "walletId": "4"
}
Response
{
  "data": {
    "recipientHistory": {
      "addressActivityStatus": "UNAVAILABLE",
      "hasSentBefore": true,
      "lastSentAt": "2007-12-03T10:15:30Z"
    }
  }
}

walletTransaction

Description

Returns a wallet transaction.

Response

Returns a WalletTransaction

Arguments
Name Description
id - ID! Wallet transaction global ID (WalletTransaction_<cuid>).

Example

Query
query walletTransaction($id: ID!) {
  walletTransaction(id: $id) {
    airdropPayoutRecipientCount
    airdropSummary {
      ...AirdropTransactionSummaryFragment
    }
    amount
    asset {
      ...AssetFragment
    }
    assetChanges {
      ...WalletTransactionAssetChangesConnectionFragment
    }
    associatedClawbackTransaction {
      ...WalletTransactionFragment
    }
    buyOrder {
      ...BuyOrderFragment
    }
    clawbackExpirationTime
    clawbackState {
      ...ClawbackStateFragment
    }
    coinReservationTransaction {
      ...WalletTransactionFragment
    }
    confirmationHeight
    confirmations
    confirmedAt
    createdAt
    direction
    fee
    from
    hasUnspentClawbackCoins
    id
    initiatingApplicationName
    inputs {
      ...WalletTransactionInputsConnectionFragment
    }
    isCoinReservationForOffer
    memos
    message {
      ...MessageFragment
    }
    nfts {
      ...WalletTransactionNftsConnectionFragment
    }
    offer {
      ...WalletOfferFragment
    }
    outputs {
      ...WalletTransactionOutputsConnectionFragment
    }
    resubmission {
      ...TransactionResubmissionDetailsFragment
    }
    signatureRequest {
      ...SignatureRequestFragment
    }
    state
    timestamp
    to
    type
    unspentClawbackCoins {
      ...UnspentClawbackCoinsFragment
    }
    vaultRecoveryReview {
      ...VaultRecoveryReviewFragment
    }
    wallet {
      ...WalletFragment
    }
    walletFee
    xchHandle
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "walletTransaction": {
      "airdropPayoutRecipientCount": 123,
      "airdropSummary": AirdropTransactionSummary,
      "amount": {},
      "asset": Asset,
      "assetChanges": WalletTransactionAssetChangesConnection,
      "associatedClawbackTransaction": WalletTransaction,
      "buyOrder": BuyOrder,
      "clawbackExpirationTime": "2007-12-03T10:15:30Z",
      "clawbackState": ClawbackState,
      "coinReservationTransaction": WalletTransaction,
      "confirmationHeight": 987,
      "confirmations": 123,
      "confirmedAt": "abc123",
      "createdAt": "xyz789",
      "direction": "abc123",
      "fee": {},
      "from": "abc123",
      "hasUnspentClawbackCoins": false,
      "id": 4,
      "initiatingApplicationName": "abc123",
      "inputs": WalletTransactionInputsConnection,
      "isCoinReservationForOffer": false,
      "memos": ["abc123"],
      "message": Message,
      "nfts": WalletTransactionNftsConnection,
      "offer": WalletOffer,
      "outputs": WalletTransactionOutputsConnection,
      "resubmission": TransactionResubmissionDetails,
      "signatureRequest": SignatureRequest,
      "state": "CLAWED_BACK",
      "timestamp": "abc123",
      "to": "xyz789",
      "type": "AIRDROP",
      "unspentClawbackCoins": UnspentClawbackCoins,
      "vaultRecoveryReview": VaultRecoveryReview,
      "wallet": Wallet,
      "walletFee": {},
      "xchHandle": "xyz789"
    }
  }
}

Mutations

clawBackTransaction

Description

Return an outbound CLAWBACK_V2 transfer to the sending wallet before its clawback deadline. Check clawbackState.canClawback first.

Response

Returns a ClawBackTransactionPayload!

Arguments
Name Description
input - ClawBackTransactionInput!

Example

Query
mutation clawBackTransaction($input: ClawBackTransactionInput!) {
  clawBackTransaction(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": ClawBackTransactionInput}
Response
{
  "data": {
    "clawBackTransaction": {
      "signatureRequest": SignatureRequest
    }
  }
}

combineCoins

Description

Combine coins into one coin and automatically submit the spend after signing. Supply inputCoinIds for explicit selection, or use the automatic-selection options. Automatic selection starts with the smallest coins unless largestFirst is true. Asset omission means XCH. Limits are XCH 500, CAT 100, and revocable CAT 50 coins.

Response

Returns a CombineCoinsPayload!

Arguments
Name Description
input - CombineCoinsInput!

Example

Query
mutation combineCoins($input: CombineCoinsInput!) {
  combineCoins(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": CombineCoinsInput}
Response
{
  "data": {
    "combineCoins": {"signatureRequest": SignatureRequest}
  }
}

createTransaction

Description

Create a transaction and its signature request. The transaction remains unsigned until the request has all required signatures.

Response

Returns a CreateTransactionPayload!

Arguments
Name Description
input - CreateTransactionInput!

Example

Query
mutation createTransaction($input: CreateTransactionInput!) {
  createTransaction(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": CreateTransactionInput}
Response
{
  "data": {
    "createTransaction": {
      "signatureRequest": SignatureRequest
    }
  }
}

deleteTransaction

Description

Remove a pending WalletTransaction from wallet history. It may reappear if it is later confirmed on chain.

Response

Returns a DeleteTransactionPayload!

Arguments
Name Description
input - DeleteTransactionInput!

Example

Query
mutation deleteTransaction($input: DeleteTransactionInput!) {
  deleteTransaction(input: $input) {
    success
  }
}
Variables
{"input": DeleteTransactionInput}
Response
{"data": {"deleteTransaction": {"success": true}}}

finalizeTransaction

Description

Finalize an outbound CLAWBACK_V2 transaction. Before expiry this releases funds to the receiver; after expiry it pushes the transfer through. Check clawbackState.canFinalize or clawbackState.canPushThrough first.

Response

Returns a FinalizeTransactionPayload!

Arguments
Name Description
input - FinalizeTransactionInput!

Example

Query
mutation finalizeTransaction($input: FinalizeTransactionInput!) {
  finalizeTransaction(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": FinalizeTransactionInput}
Response
{
  "data": {
    "finalizeTransaction": {
      "signatureRequest": SignatureRequest
    }
  }
}

splitCoins

Description

Split selected coins into equal-value outputs plus any remainder, then automatically submit the spend after signing.

Response

Returns a SplitCoinsPayload!

Arguments
Name Description
input - SplitCoinsInput!

Example

Query
mutation splitCoins($input: SplitCoinsInput!) {
  splitCoins(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": SplitCoinsInput}
Response
{
  "data": {
    "splitCoins": {"signatureRequest": SignatureRequest}
  }
}

Offers

Queries

walletOffer

Description

Returns a wallet offer.

Response

Returns a WalletOffer

Arguments
Name Description
id - ID! Wallet offer global ID (WalletOffer_<cuid>).

Example

Query
query walletOffer($id: ID!) {
  walletOffer(id: $id) {
    assets {
      ...WalletOfferAssetsConnectionFragment
    }
    bech32
    createdAt
    creatorIncludedFee
    expiresAt
    id
    isCreator
    nfts {
      ...WalletOfferNftsConnectionFragment
    }
    offerId
    settlementType
    spendBundle
    state
    transactions {
      ...TransactionFragment
    }
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "walletOffer": {
      "assets": WalletOfferAssetsConnection,
      "bech32": "xyz789",
      "createdAt": "xyz789",
      "creatorIncludedFee": {},
      "expiresAt": "2007-12-03T10:15:30Z",
      "id": 4,
      "isCreator": true,
      "nfts": WalletOfferNftsConnection,
      "offerId": 4,
      "settlementType": "abc123",
      "spendBundle": "xyz789",
      "state": "abc123",
      "transactions": [Transaction],
      "wallet": Wallet
    }
  }
}

Mutations

addOffer

Description

Add an offer

Response

Returns an AddOfferPayload!

Arguments
Name Description
input - AddOfferInput!

Example

Query
mutation addOffer($input: AddOfferInput!) {
  addOffer(input: $input) {
    offer {
      ...WalletOfferFragment
    }
  }
}
Variables
{"input": AddOfferInput}
Response
{"data": {"addOffer": {"offer": WalletOffer}}}

cancelOffer

Description

Cancel an offer off chain or create a signature request that cancels it on chain.

Response

Returns a CancelOfferPayload!

Arguments
Name Description
input - CancelOfferInput!

Example

Query
mutation cancelOffer($input: CancelOfferInput!) {
  cancelOffer(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": CancelOfferInput}
Response
{
  "data": {
    "cancelOffer": {"signatureRequest": SignatureRequest}
  }
}

createOffer

Description

Create an offer and its signature request. Provide at least one offered or requested asset or NFT; each side may contain fungible assets, NFTs, or both.

Response

Returns a CreateOfferPayload!

Arguments
Name Description
input - CreateOfferInput!

Example

Query
mutation createOffer($input: CreateOfferInput!) {
  createOffer(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": CreateOfferInput}
Response
{
  "data": {
    "createOffer": {"signatureRequest": SignatureRequest}
  }
}

takeOffer

Description

Accept an offer and create the signature request needed to settle it.

Response

Returns a TakeOfferPayload!

Arguments
Name Description
input - TakeOfferInput!

Example

Query
mutation takeOffer($input: TakeOfferInput!) {
  takeOffer(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": TakeOfferInput}
Response
{
  "data": {
    "takeOffer": {"signatureRequest": SignatureRequest}
  }
}

Subscriptions

offerUpdated

Description

Subscribe to offer updates

Response

Returns a WalletOffer!

Example

Query
subscription offerUpdated {
  offerUpdated {
    assets {
      ...WalletOfferAssetsConnectionFragment
    }
    bech32
    createdAt
    creatorIncludedFee
    expiresAt
    id
    isCreator
    nfts {
      ...WalletOfferNftsConnectionFragment
    }
    offerId
    settlementType
    spendBundle
    state
    transactions {
      ...TransactionFragment
    }
    wallet {
      ...WalletFragment
    }
  }
}
Response
{
  "data": {
    "offerUpdated": {
      "assets": WalletOfferAssetsConnection,
      "bech32": "xyz789",
      "createdAt": "abc123",
      "creatorIncludedFee": {},
      "expiresAt": "2007-12-03T10:15:30Z",
      "id": "4",
      "isCreator": true,
      "nfts": WalletOfferNftsConnection,
      "offerId": "4",
      "settlementType": "abc123",
      "spendBundle": "abc123",
      "state": "xyz789",
      "transactions": [Transaction],
      "wallet": Wallet
    }
  }
}

Signers & Signatures

Queries

signatureRequest

Description

Returns a signature request.

Response

Returns a SignatureRequest

Arguments
Name Description
id - ID! Signature request global ID (SignatureRequest_<cuid>).

Example

Query
query signatureRequest($id: ID!) {
  signatureRequest(id: $id) {
    autoSubmit
    broadcastMessageDetails {
      ...BroadcastMessageDetailsFragment
    }
    clearSigningDetails {
      ...ClearSigningDetailsFragment
    }
    coinSpends {
      ...CoinSpendFragment
    }
    combineDetails {
      ...CombineDetailsFragment
    }
    createdAt
    details
    displayCloudWalletSigningPrompt
    id
    melt
    messages {
      ...SignaturePayloadFragment
    }
    offerDetails {
      ...OfferDetailsFragment
    }
    recoveryDetails {
      ...RecoveryDetailsFragment
    }
    requestId
    splitDetails {
      ...SplitDetailsFragment
    }
    status
    transaction {
      ...WalletTransactionFragment
    }
    updatedAt
    vault {
      ...VaultFragment
    }
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "signatureRequest": {
      "autoSubmit": false,
      "broadcastMessageDetails": BroadcastMessageDetails,
      "clearSigningDetails": ClearSigningDetails,
      "coinSpends": [CoinSpend],
      "combineDetails": CombineDetails,
      "createdAt": "xyz789",
      "details": {},
      "displayCloudWalletSigningPrompt": true,
      "id": 4,
      "melt": true,
      "messages": [SignaturePayload],
      "offerDetails": OfferDetails,
      "recoveryDetails": RecoveryDetails,
      "requestId": "abc123",
      "splitDetails": SplitDetails,
      "status": "abc123",
      "transaction": WalletTransaction,
      "updatedAt": "abc123",
      "vault": Vault,
      "wallet": Wallet
    }
  }
}

signer

Description

Returns a signer.

Response

Returns a Signer

Arguments
Name Description
id - ID! Signer global ID (Signer_<cuid>).

Example

Query
query signer($id: ID!) {
  signer(id: $id) {
    canViewerDelete
    canViewerUpdate
    createdAt
    grantableOAuthScopes
    id
    name
    network {
      ...NetworkFragment
    }
    publicKeys {
      ...SignerPublicKeysConnectionFragment
    }
    signerPublicKeys {
      ...SignerSignerPublicKeysConnectionFragment
    }
    updatedAt
    user {
      ...UserFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "signer": {
      "canViewerDelete": false,
      "canViewerUpdate": true,
      "createdAt": "abc123",
      "grantableOAuthScopes": ["abc123"],
      "id": 4,
      "name": "xyz789",
      "network": Network,
      "publicKeys": SignerPublicKeysConnection,
      "signerPublicKeys": SignerSignerPublicKeysConnection,
      "updatedAt": "abc123",
      "user": User
    }
  }
}

Mutations

addPublicKeysToSigner

Description

Add public keys to a signer

Response

Returns an AddPublicKeysToSignerPayload!

Arguments
Name Description
input - AddPublicKeysToSignerInput!

Example

Query
mutation addPublicKeysToSigner($input: AddPublicKeysToSignerInput!) {
  addPublicKeysToSigner(input: $input) {
    signerPublicKeys {
      ...SignerPublicKeyFragment
    }
  }
}
Variables
{"input": AddPublicKeysToSignerInput}
Response
{
  "data": {
    "addPublicKeysToSigner": {
      "signerPublicKeys": [SignerPublicKey]
    }
  }
}

addSignerAppKey

Description

Adds the Chia Signer App key to the cloud wallet

Response

Returns an AddSignerAppKeyPayload!

Arguments
Name Description
input - AddSignerAppKeyInput!

Example

Query
mutation addSignerAppKey($input: AddSignerAppKeyInput!) {
  addSignerAppKey(input: $input) {
    token
    user {
      ...UserFragment
    }
  }
}
Variables
{"input": AddSignerAppKeyInput}
Response
{
  "data": {
    "addSignerAppKey": {
      "token": "xyz789",
      "user": User
    }
  }
}

createSigner

Description

Create a new signer

Response

Returns a CreateSignerPayload!

Arguments
Name Description
input - CreateSignerInput!

Example

Query
mutation createSigner($input: CreateSignerInput!) {
  createSigner(input: $input) {
    signer {
      ...SignerFragment
    }
  }
}
Variables
{"input": CreateSignerInput}
Response
{"data": {"createSigner": {"signer": Signer}}}

createSignerAppAuthKeyByPublicKey

Description

Create a new signerAppAuthKey using public key verification (no authentication required)

Arguments
Name Description
input - CreateSignerAppAuthKeyByPublicKeyInput!

Example

Query
mutation createSignerAppAuthKeyByPublicKey($input: CreateSignerAppAuthKeyByPublicKeyInput!) {
  createSignerAppAuthKeyByPublicKey(input: $input) {
    signerAppAuthKey {
      ...SignerAppAuthKeyFragment
    }
  }
}
Variables
{"input": CreateSignerAppAuthKeyByPublicKeyInput}
Response
{
  "data": {
    "createSignerAppAuthKeyByPublicKey": {
      "signerAppAuthKey": SignerAppAuthKey
    }
  }
}

createSigners

Description

Create multiple signers at once

Response

Returns a CreateSignersPayload!

Arguments
Name Description
input - CreateSignersInput!

Example

Query
mutation createSigners($input: CreateSignersInput!) {
  createSigners(input: $input) {
    signers {
      ...SignerFragment
    }
  }
}
Variables
{"input": CreateSignersInput}
Response
{"data": {"createSigners": {"signers": [Signer]}}}

deleteSigner

Description

Delete a signer

Response

Returns a DeleteSignerPayload!

Arguments
Name Description
input - DeleteSignerInput!

Example

Query
mutation deleteSigner($input: DeleteSignerInput!) {
  deleteSigner(input: $input) {
    success
  }
}
Variables
{"input": DeleteSignerInput}
Response
{"data": {"deleteSigner": {"success": true}}}

removePublicKeysFromSigner

Description

Remove public keys from a signer

Arguments
Name Description
input - RemovePublicKeysFromSignerInput!

Example

Query
mutation removePublicKeysFromSigner($input: RemovePublicKeysFromSignerInput!) {
  removePublicKeysFromSigner(input: $input) {
    success
  }
}
Variables
{"input": RemovePublicKeysFromSignerInput}
Response
{"data": {"removePublicKeysFromSigner": {"success": true}}}

requestSignerAppVerificationToken

Description

Request token to link the Chia Signer App to the current user

Example

Query
mutation requestSignerAppVerificationToken {
  requestSignerAppVerificationToken {
    token
  }
}
Response
{
  "data": {
    "requestSignerAppVerificationToken": {
      "token": "xyz789"
    }
  }
}

resendSignatureRequest

Description

Resend a signature request

Response

Returns a ResendSignatureRequestPayload!

Arguments
Name Description
input - ResendSignatureRequestInput!

Example

Query
mutation resendSignatureRequest($input: ResendSignatureRequestInput!) {
  resendSignatureRequest(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": ResendSignatureRequestInput}
Response
{
  "data": {
    "resendSignatureRequest": {
      "signatureRequest": SignatureRequest
    }
  }
}

signSignatureRequest

Description

Attach one signature to a pending signature request. This submits the transaction only when auto-submit is enabled and the signature completes the request.

Response

Returns a SignSignatureRequestPayload!

Arguments
Name Description
input - SignSignatureRequestInput!

Example

Query
mutation signSignatureRequest($input: SignSignatureRequestInput!) {
  signSignatureRequest(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": SignSignatureRequestInput}
Response
{
  "data": {
    "signSignatureRequest": {
      "signatureRequest": SignatureRequest
    }
  }
}

submitSignatureRequest

Description

Submit the completed spend bundle for a fully signed signature request to the Chia network.

Response

Returns a SubmitSignatureRequestPayload!

Arguments
Name Description
input - SubmitSignatureRequestInput!

Example

Query
mutation submitSignatureRequest($input: SubmitSignatureRequestInput!) {
  submitSignatureRequest(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": SubmitSignatureRequestInput}
Response
{
  "data": {
    "submitSignatureRequest": {
      "signatureRequest": SignatureRequest
    }
  }
}

updateSigner

Description

Update a signer details

Response

Returns an UpdateSignerPayload!

Arguments
Name Description
input - UpdateSignerInput!

Example

Query
mutation updateSigner($input: UpdateSignerInput!) {
  updateSigner(input: $input) {
    signer {
      ...SignerFragment
    }
  }
}
Variables
{"input": UpdateSignerInput}
Response
{"data": {"updateSigner": {"signer": Signer}}}

Subscriptions

signatureRequestCreated

Description

Subscribe to signature requests created

Response

Returns a SignatureRequestCreatedPayload!

Example

Query
subscription signatureRequestCreated {
  signatureRequestCreated {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Response
{
  "data": {
    "signatureRequestCreated": {
      "signatureRequest": SignatureRequest
    }
  }
}

signatureRequestUpdated

Description

Subscribe to signature requests updated

Response

Returns a SignatureRequestUpdatedPayload!

Example

Query
subscription signatureRequestUpdated {
  signatureRequestUpdated {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Response
{
  "data": {
    "signatureRequestUpdated": {
      "signatureRequest": SignatureRequest
    }
  }
}

signerAppKeyLinked

Description

Subscribe to Chia Signer App key getting linked

Response

Returns a SignerAppKeyLinkedPayload!

Example

Query
subscription signerAppKeyLinked {
  signerAppKeyLinked {
    signerAppKey {
      ...SignerAppKeyFragment
    }
    token
  }
}
Response
{
  "data": {
    "signerAppKeyLinked": {
      "signerAppKey": SignerAppKey,
      "token": "xyz789"
    }
  }
}

Contacts

Queries

contact

Description

Returns a contact.

Response

Returns a Contact

Arguments
Name Description
id - ID! Contact global ID (Contact_<cuid>).

Example

Query
query contact($id: ID!) {
  contact(id: $id) {
    addresses {
      ...ContactAddressesConnectionFragment
    }
    createdAt
    emails {
      ...ContactEmailsConnectionFragment
    }
    grantableOAuthScopes
    id
    image
    name
    updatedAt
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "contact": {
      "addresses": ContactAddressesConnection,
      "createdAt": "abc123",
      "emails": ContactEmailsConnection,
      "grantableOAuthScopes": ["xyz789"],
      "id": 4,
      "image": "xyz789",
      "name": "abc123",
      "updatedAt": "abc123"
    }
  }
}

Mutations

addContactAddress

Description

Add a blockchain address to a contact

Response

Returns an AddContactAddressPayload!

Arguments
Name Description
input - AddContactAddressInput!

Example

Query
mutation addContactAddress($input: AddContactAddressInput!) {
  addContactAddress(input: $input) {
    address {
      ...ContactAddressFragment
    }
  }
}
Variables
{"input": AddContactAddressInput}
Response
{
  "data": {
    "addContactAddress": {"address": ContactAddress}
  }
}

addContactEmail

Description

Add an email to a contact

Response

Returns an AddContactEmailPayload!

Arguments
Name Description
input - AddContactEmailInput!

Example

Query
mutation addContactEmail($input: AddContactEmailInput!) {
  addContactEmail(input: $input) {
    email {
      ...ContactEmailFragment
    }
  }
}
Variables
{"input": AddContactEmailInput}
Response
{"data": {"addContactEmail": {"email": ContactEmail}}}

createContact

Description

Create a new contact. If organizationId is provided, the contact will be associated with the organization. If not, the contact will be associated with the authenticated user.

Response

Returns a CreateContactPayload!

Arguments
Name Description
input - CreateContactInput!

Example

Query
mutation createContact($input: CreateContactInput!) {
  createContact(input: $input) {
    contact {
      ...ContactFragment
    }
  }
}
Variables
{"input": CreateContactInput}
Response
{"data": {"createContact": {"contact": Contact}}}

deleteContact

Description

Delete a contact.

Response

Returns a DeleteContactPayload!

Arguments
Name Description
input - DeleteContactInput!

Example

Query
mutation deleteContact($input: DeleteContactInput!) {
  deleteContact(input: $input) {
    success
  }
}
Variables
{"input": DeleteContactInput}
Response
{"data": {"deleteContact": {"success": false}}}

removeContactAddress

Description

Remove a blockchain address from a contact

Response

Returns a RemoveContactAddressPayload!

Arguments
Name Description
input - RemoveContactAddressInput!

Example

Query
mutation removeContactAddress($input: RemoveContactAddressInput!) {
  removeContactAddress(input: $input) {
    success
  }
}
Variables
{"input": RemoveContactAddressInput}
Response
{"data": {"removeContactAddress": {"success": true}}}

removeContactEmail

Description

Remove an email from a contact. The contact must retain at least one email address.

Response

Returns a RemoveContactEmailPayload!

Arguments
Name Description
input - RemoveContactEmailInput!

Example

Query
mutation removeContactEmail($input: RemoveContactEmailInput!) {
  removeContactEmail(input: $input) {
    success
  }
}
Variables
{"input": RemoveContactEmailInput}
Response
{"data": {"removeContactEmail": {"success": false}}}

updateContact

Description

Update core fields of a contact

Response

Returns an UpdateContactPayload!

Arguments
Name Description
input - UpdateContactInput!

Example

Query
mutation updateContact($input: UpdateContactInput!) {
  updateContact(input: $input) {
    contact {
      ...ContactFragment
    }
  }
}
Variables
{"input": UpdateContactInput}
Response
{"data": {"updateContact": {"contact": Contact}}}

updateContactAddress

Description

Update an address from a contact

Response

Returns an UpdateContactAddressPayload!

Arguments
Name Description
input - UpdateContactAddressInput!

Example

Query
mutation updateContactAddress($input: UpdateContactAddressInput!) {
  updateContactAddress(input: $input) {
    address {
      ...ContactAddressFragment
    }
  }
}
Variables
{"input": UpdateContactAddressInput}
Response
{
  "data": {
    "updateContactAddress": {"address": ContactAddress}
  }
}

updateContactEmail

Description

Update an email from a contact

Response

Returns an UpdateContactEmailPayload!

Arguments
Name Description
input - UpdateContactEmailInput!

Example

Query
mutation updateContactEmail($input: UpdateContactEmailInput!) {
  updateContactEmail(input: $input) {
    email {
      ...ContactEmailFragment
    }
  }
}
Variables
{"input": UpdateContactEmailInput}
Response
{"data": {"updateContactEmail": {"email": ContactEmail}}}

Messaging & Subscriptions

Queries

availablePlatformSubscriptions

Description

Returns platform subscriptions and whether the specified wallet subscribes to each one.

Arguments
Name Description
after - String
before - String
first - Int
last - Int
query - String Optional text search.
sortKey - SubscriptionsSortKey Sort order. Default = CREATED_AT
walletId - ID! Wallet global ID (Wallet_<cuid>).

Example

Query
query availablePlatformSubscriptions(
  $after: String,
  $before: String,
  $first: Int,
  $last: Int,
  $query: String,
  $sortKey: SubscriptionsSortKey,
  $walletId: ID!
) {
  availablePlatformSubscriptions(
    after: $after,
    before: $before,
    first: $first,
    last: $last,
    query: $query,
    sortKey: $sortKey,
    walletId: $walletId
  ) {
    edges {
      ...QueryAvailablePlatformSubscriptionsConnectionEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
    totalCount
  }
}
Variables
{
  "after": "xyz789",
  "before": "abc123",
  "first": 123,
  "last": 123,
  "query": "xyz789",
  "sortKey": "CREATED_AT",
  "walletId": 4
}
Response
{
  "data": {
    "availablePlatformSubscriptions": {
      "edges": [
        QueryAvailablePlatformSubscriptionsConnectionEdge
      ],
      "pageInfo": PageInfo,
      "totalCount": 123
    }
  }
}

walletMessage

Description

Returns a wallet message.

Response

Returns a WalletMessage

Arguments
Name Description
id - ID! Wallet message global ID (WalletMessage_<cuid>).

Example

Query
query walletMessage($id: ID!) {
  walletMessage(id: $id) {
    bulletinCoinName
    createdAt
    direction
    id
    isRead
    message
    state
    topic
    vaultLauncherId
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "walletMessage": {
      "bulletinCoinName": "xyz789",
      "createdAt": "abc123",
      "direction": "INBOUND",
      "id": "4",
      "isRead": true,
      "message": "xyz789",
      "state": "abc123",
      "topic": "abc123",
      "vaultLauncherId": "abc123",
      "wallet": Wallet
    }
  }
}

walletSubscription

Description

Returns a wallet subscription.

Response

Returns a WalletSubscription

Arguments
Name Description
id - ID! Wallet subscription global ID (WalletSubscription_<cuid>).

Example

Query
query walletSubscription($id: ID!) {
  walletSubscription(id: $id) {
    allAvailableTopics {
      ...WalletSubscriptionAllAvailableTopicsConnectionFragment
    }
    autoSubscribe
    avatarFileName
    id
    isPlatform
    name
    topics {
      ...WalletSubscriptionTopicsConnectionFragment
    }
    vaultAddress
    vaultLauncherId
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "walletSubscription": {
      "allAvailableTopics": WalletSubscriptionAllAvailableTopicsConnection,
      "autoSubscribe": true,
      "avatarFileName": "abc123",
      "id": 4,
      "isPlatform": true,
      "name": "abc123",
      "topics": WalletSubscriptionTopicsConnection,
      "vaultAddress": "xyz789",
      "vaultLauncherId": "xyz789"
    }
  }
}

Mutations

addSubscriptionToWallet

Description

Link an existing platform subscription by subscriptionId, or create a custom subscription with name and either vaultLauncherId or vaultAddress.

Response

Returns an AddSubscriptionToWalletPayload!

Arguments
Name Description
input - AddSubscriptionToWalletInput!

Example

Query
mutation addSubscriptionToWallet($input: AddSubscriptionToWalletInput!) {
  addSubscriptionToWallet(input: $input) {
    walletSubscription {
      ...WalletSubscriptionFragment
    }
  }
}
Variables
{"input": AddSubscriptionToWalletInput}
Response
{
  "data": {
    "addSubscriptionToWallet": {
      "walletSubscription": WalletSubscription
    }
  }
}

addTopicsToSubscription

Description

Add topics to a wallet subscription. At least one topic or existing topic ID is required.

Response

Returns an AddTopicsToSubscriptionPayload!

Arguments
Name Description
input - AddTopicsToSubscriptionInput!

Example

Query
mutation addTopicsToSubscription($input: AddTopicsToSubscriptionInput!) {
  addTopicsToSubscription(input: $input) {
    walletSubscription {
      ...WalletSubscriptionFragment
    }
  }
}
Variables
{"input": AddTopicsToSubscriptionInput}
Response
{
  "data": {
    "addTopicsToSubscription": {
      "walletSubscription": WalletSubscription
    }
  }
}

createMessage

Description

Create a new message

Response

Returns a CreateMessagePayload!

Arguments
Name Description
input - CreateMessageInput!

Example

Query
mutation createMessage($input: CreateMessageInput!) {
  createMessage(input: $input) {
    signatureRequest {
      ...SignatureRequestFragment
    }
  }
}
Variables
{"input": CreateMessageInput}
Response
{
  "data": {
    "createMessage": {
      "signatureRequest": SignatureRequest
    }
  }
}

markMessageAsRead

Description

Mark a wallet message as read.

Response

Returns a WalletMessage!

Arguments
Name Description
id - ID! Wallet message global ID.

Example

Query
mutation markMessageAsRead($id: ID!) {
  markMessageAsRead(id: $id) {
    bulletinCoinName
    createdAt
    direction
    id
    isRead
    message
    state
    topic
    vaultLauncherId
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "markMessageAsRead": {
      "bulletinCoinName": "abc123",
      "createdAt": "xyz789",
      "direction": "INBOUND",
      "id": "4",
      "isRead": true,
      "message": "abc123",
      "state": "abc123",
      "topic": "abc123",
      "vaultLauncherId": "abc123",
      "wallet": Wallet
    }
  }
}

removeSubscriptionFromWallet

Description

Remove subscription from a wallet

Arguments
Name Description
input - RemoveSubscriptionFromWalletInput!

Example

Query
mutation removeSubscriptionFromWallet($input: RemoveSubscriptionFromWalletInput!) {
  removeSubscriptionFromWallet(input: $input) {
    wallet {
      ...WalletFragment
    }
  }
}
Variables
{"input": RemoveSubscriptionFromWalletInput}
Response
{
  "data": {
    "removeSubscriptionFromWallet": {"wallet": Wallet}
  }
}

removeTopicFromSubscription

Description

Remove topic from a subscription

Arguments
Name Description
input - RemoveTopicFromSubscriptionInput!

Example

Query
mutation removeTopicFromSubscription($input: RemoveTopicFromSubscriptionInput!) {
  removeTopicFromSubscription(input: $input) {
    walletSubscription {
      ...WalletSubscriptionFragment
    }
  }
}
Variables
{"input": RemoveTopicFromSubscriptionInput}
Response
{
  "data": {
    "removeTopicFromSubscription": {
      "walletSubscription": WalletSubscription
    }
  }
}

updateAutoSubscribe

Description

Update the autoSubscribe setting for a wallet subscription

Response

Returns an UpdateAutoSubscribePayload!

Arguments
Name Description
input - UpdateAutoSubscribeInput!

Example

Query
mutation updateAutoSubscribe($input: UpdateAutoSubscribeInput!) {
  updateAutoSubscribe(input: $input) {
    walletSubscription {
      ...WalletSubscriptionFragment
    }
  }
}
Variables
{"input": UpdateAutoSubscribeInput}
Response
{
  "data": {
    "updateAutoSubscribe": {
      "walletSubscription": WalletSubscription
    }
  }
}

updateSubscriptionTopic

Description

Update a subscription topic (name and/or path)

Response

Returns an UpdateSubscriptionTopicPayload!

Arguments
Name Description
input - UpdateSubscriptionTopicInput!

Example

Query
mutation updateSubscriptionTopic($input: UpdateSubscriptionTopicInput!) {
  updateSubscriptionTopic(input: $input) {
    subscriptionTopic {
      ...SubscriptionTopicFragment
    }
  }
}
Variables
{"input": UpdateSubscriptionTopicInput}
Response
{
  "data": {
    "updateSubscriptionTopic": {
      "subscriptionTopic": SubscriptionTopic
    }
  }
}

updateWalletSubscription

Description

Update a user-created subscription

Response

Returns an UpdateWalletSubscriptionPayload!

Arguments
Name Description
input - UpdateWalletSubscriptionInput!

Example

Query
mutation updateWalletSubscription($input: UpdateWalletSubscriptionInput!) {
  updateWalletSubscription(input: $input) {
    walletSubscription {
      ...WalletSubscriptionFragment
    }
  }
}
Variables
{"input": UpdateWalletSubscriptionInput}
Response
{
  "data": {
    "updateWalletSubscription": {
      "walletSubscription": WalletSubscription
    }
  }
}

Snapshots

Queries

savedSnapshots

Description

Returns saved snapshots for a CAT asset.

Response

Returns [SavedSnapshot!]

Arguments
Name Description
input - SavedSnapshotsInput!

Example

Query
query savedSnapshots($input: SavedSnapshotsInput!) {
  savedSnapshots(input: $input) {
    asset {
      ...AssetFragment
    }
    createdAt
    id
    name
    snapshot {
      ...SnapshotFragment
    }
  }
}
Variables
{"input": SavedSnapshotsInput}
Response
{
  "data": {
    "savedSnapshots": [
      {
        "asset": Asset,
        "createdAt": "abc123",
        "id": "4",
        "name": "xyz789",
        "snapshot": Snapshot
      }
    ]
  }
}

snapshot

Description

Creates and persists an ownership snapshot, then returns it with its asset.

Response

Returns a Snapshot!

Arguments
Name Description
input - SnapshotInput!

Example

Query
query snapshot($input: SnapshotInput!) {
  snapshot(input: $input) {
    asset {
      ...AssetFragment
    }
    createdAt
    headerHash
    id
    result
    snapshotTime
  }
}
Variables
{"input": SnapshotInput}
Response
{
  "data": {
    "snapshot": {
      "asset": Asset,
      "createdAt": "xyz789",
      "headerHash": "abc123",
      "id": 4,
      "result": "abc123",
      "snapshotTime": "xyz789"
    }
  }
}

snapshotConnection

Description

Computes an ownership snapshot without persisting it and returns paginated owner totals.

Response

Returns a SnapshotConnectionWrapper!

Arguments
Name Description
after - String
before - String
first - Int
input - SnapshotInput!
last - Int

Example

Query
query snapshotConnection(
  $after: String,
  $before: String,
  $first: Int,
  $input: SnapshotInput!,
  $last: Int
) {
  snapshotConnection(
    after: $after,
    before: $before,
    first: $first,
    input: $input,
    last: $last
  ) {
    asset {
      ...AssetFragment
    }
    blockRecord {
      ...BlockRecordFragment
    }
    connection {
      ...SnapshotConnectionWrapperConnectionFragment
    }
  }
}
Variables
{
  "after": "xyz789",
  "before": "abc123",
  "first": 123,
  "input": SnapshotInput,
  "last": 123
}
Response
{
  "data": {
    "snapshotConnection": {
      "asset": Asset,
      "blockRecord": BlockRecord,
      "connection": SnapshotConnectionWrapperConnection
    }
  }
}

snapshotDownload

Description

Creates and persists an ownership snapshot, then returns it as a base64-encoded CSV file.

Response

Returns a FileDownloadPayload!

Arguments
Name Description
input - SnapshotInput!

Example

Query
query snapshotDownload($input: SnapshotInput!) {
  snapshotDownload(input: $input) {
    content
    filename
    mimeType
  }
}
Variables
{"input": SnapshotInput}
Response
{
  "data": {
    "snapshotDownload": {
      "content": "xyz789",
      "filename": "abc123",
      "mimeType": "abc123"
    }
  }
}

snapshots

Description

Returns persisted snapshots for a CAT asset.

Response

Returns [SavedSnapshot!]!

Arguments
Name Description
input - SnapshotsInput!

Example

Query
query snapshots($input: SnapshotsInput!) {
  snapshots(input: $input) {
    asset {
      ...AssetFragment
    }
    createdAt
    id
    name
    snapshot {
      ...SnapshotFragment
    }
  }
}
Variables
{"input": SnapshotsInput}
Response
{
  "data": {
    "snapshots": [
      {
        "asset": Asset,
        "createdAt": "abc123",
        "id": "4",
        "name": "xyz789",
        "snapshot": Snapshot
      }
    ]
  }
}

Mutations

saveSnapshot

Description

Create a new snapshot

Response

Returns a SaveSnapshotPayload!

Arguments
Name Description
input - SaveSnapshotInput!

Example

Query
mutation saveSnapshot($input: SaveSnapshotInput!) {
  saveSnapshot(input: $input) {
    savedSnapshot {
      ...SavedSnapshotFragment
    }
  }
}
Variables
{"input": SaveSnapshotInput}
Response
{
  "data": {
    "saveSnapshot": {"savedSnapshot": SavedSnapshot}
  }
}

Network & Service

Queries

ping

Description

Returns true if the server is running.

Response

Returns a Boolean!

Example

Query
query ping {
  ping
}
Response
{"data": {"ping": false}}

publicAnnouncements

Description

Returns active public announcements. Authentication is not required.

Response

Returns [AnnouncementPublic!]!

Example

Query
query publicAnnouncements {
  publicAnnouncements {
    body
    ctaLabel
    ctaUrl
    dismissible
    id
    severity
    title
  }
}
Response
{
  "data": {
    "publicAnnouncements": [
      {
        "body": "abc123",
        "ctaLabel": "xyz789",
        "ctaUrl": "xyz789",
        "dismissible": true,
        "id": 4,
        "severity": "CRITICAL",
        "title": "abc123"
      }
    ]
  }
}

resolveXchHandle

Description

Resolve an XCHandle to its current payment address

Response

Returns a XchHandleResolution!

Arguments
Name Description
handle - String!

Example

Query
query resolveXchHandle($handle: String!) {
  resolveXchHandle(handle: $handle) {
    address
    expiration
    handle
    indexedPeakHeight
    status
  }
}
Variables
{"handle": "xyz789"}
Response
{
  "data": {
    "resolveXchHandle": {
      "address": "xyz789",
      "expiration": "xyz789",
      "handle": "abc123",
      "indexedPeakHeight": 987,
      "status": "EXPIRED"
    }
  }
}

Mutations

coinset

Description

Forward a request to a documented public Coinset Full Node endpoint.

Response

Returns a CoinsetPayload!

Arguments
Name Description
input - CoinsetInput!

Example

Query
mutation coinset($input: CoinsetInput!) {
  coinset(input: $input) {
    response
  }
}
Variables
{"input": CoinsetInput}
Response
{"data": {"coinset": {"response": {}}}}

Types

AddContactAddressInput

Fields
Input Field Description
address - String! The blockchain address to add
contactId - ID! ID of the contact
label - String Human-readable label for the address
Example
{
  "address": "abc123",
  "contactId": 4,
  "label": "xyz789"
}

AddContactAddressPayload

Fields
Field Name Description
address - ContactAddress! The newly added blockchain address
Example
{"address": ContactAddress}

AddContactEmailInput

Fields
Input Field Description
contactId - ID! ID of the contact
email - String! Email to add
Example
{
  "contactId": "4",
  "email": "xyz789"
}

AddContactEmailPayload

Fields
Field Name Description
email - ContactEmail! The newly added email
Example
{"email": ContactEmail}

AdditionalEmailChangeAction

Description

The type of action for additional email changes

Values
Enum Value Description

ADD

CHANGE

DELETE

Example
"ADD"

AddOfferInput

Fields
Input Field Description
offer - String! An offer, encoded using bech32m
walletId - ID!
Example
{"offer": "xyz789", "walletId": 4}

AddOfferPayload

Fields
Field Name Description
offer - WalletOffer!
Example
{"offer": WalletOffer}

AddPublicKeysToSignerInput

Fields
Input Field Description
keys - [Key!]! Public keys to assign to signer
signerId - ID! ID of signer to assign public keys to
Example
{"keys": [Key], "signerId": 4}

AddPublicKeysToSignerPayload

Fields
Field Name Description
signerPublicKeys - [SignerPublicKey!]! Public keys assigned to signer
Example
{"signerPublicKeys": [SignerPublicKey]}

AddressInput

Fields
Input Field Description
address - String! The blockchain address
label - String Human-readable label for the address
Example
{
  "address": "xyz789",
  "label": "xyz789"
}

AddSignerAppKeyInput

Fields
Input Field Description
appId - String!
curve - Curve The cryptographic curve used for the public key. If not provided, it will be auto-detected from the public key.
oneTimeVerificationToken - String!
publicKey - String!
signature - String!
Example
{
  "appId": "xyz789",
  "curve": "BLS12_381",
  "oneTimeVerificationToken": "abc123",
  "publicKey": "abc123",
  "signature": "xyz789"
}

AddSignerAppKeyPayload

Fields
Field Name Description
token - String! The session token for the Chia Signer App Session tokens are no longer used to authenticate with the Signer App, this will be removed in a future release
user - User!
Example
{
  "token": "xyz789",
  "user": User
}

AddSignersToWalletInput

Fields
Input Field Description
signerIds - [ID!]! Signer global IDs in Signer_<cuid> format.
walletId - ID! Wallet global ID in Wallet_<cuid> format.
Example
{
  "signerIds": ["4"],
  "walletId": "4"
}

AddSignersToWalletPayload

Fields
Field Name Description
walletSigners - [WalletSigner!]!
Example
{"walletSigners": [WalletSigner]}

AddSubscriptionToWalletInput

Fields
Input Field Description
autoSubscribe - Boolean Automatically subscribe the wallet to new topics. Default = false
avatar - String Base64-encoded subscription avatar, up to 10 MB. Supported formats: JPEG, PNG, and GIF.
name - String Custom subscription name. Required when subscriptionId is omitted.
subscriptionId - ID Existing platform subscription to link. Omit when creating a custom subscription.
vaultAddress - String Vault receive address (xch/txch). Resolved to a launcher ID on the server.
vaultLauncherId - Bytea Vault launcher ID for a custom subscription. Required unless vaultAddress is provided.
walletId - ID! Wallet receiving the subscription.
Example
{
  "autoSubscribe": true,
  "avatar": "xyz789",
  "name": "xyz789",
  "subscriptionId": "4",
  "vaultAddress": "abc123",
  "vaultLauncherId": Bytea,
  "walletId": 4
}

AddSubscriptionToWalletPayload

Fields
Field Name Description
walletSubscription - WalletSubscription!
Example
{"walletSubscription": WalletSubscription}

AddTopicInput

Fields
Input Field Description
name - String! Topic display name, up to 100 characters.
topic - String! Topic identifier validated by the server.
Example
{
  "name": "xyz789",
  "topic": "xyz789"
}

AddTopicsToSubscriptionInput

Fields
Input Field Description
subscriptionTopicIds - [ID!] Existing platform topic IDs to add. Default = []
topics - [AddTopicInput!] Custom topics to create and add. Default = []
walletSubscriptionId - ID! Wallet subscription global ID.
Example
{
  "subscriptionTopicIds": ["4"],
  "topics": [AddTopicInput],
  "walletSubscriptionId": 4
}

AddTopicsToSubscriptionPayload

Fields
Field Name Description
walletSubscription - WalletSubscription
Example
{"walletSubscription": WalletSubscription}

AdvancedMultiIssuanceCAT2Config

Fields
Input Field Description
tailNonce - String The tail nonce to use for creating a new multi issuance CAT. If not provided, the origin coin will be used as the tail nonce.
Example
{"tailNonce": "xyz789"}

Airdrop

Fields
Field Name Description
coins - AirdropCoinsConnection! Coins included in the airdrop.
Arguments
after - String
before - String
first - Int
last - Int
createdAt - String!
csvData - String The csv data of the airdrop
id - ID!
name - String! The name of the airdrop
progress - AirdropProgress! Progress information for this airdrop
type - String! The type of the airdrop
updatedAt - String!
wallet - Wallet! The wallet this airdrop belongs to
Example
{
  "coins": AirdropCoinsConnection,
  "createdAt": "xyz789",
  "csvData": "abc123",
  "id": 4,
  "name": "xyz789",
  "progress": AirdropProgress,
  "type": "abc123",
  "updatedAt": "xyz789",
  "wallet": Wallet
}

AirdropClawbackPayment

Description

A payment an airdrop made with a clawback, and the payout that made it.

Fields
Field Name Description
address - String! The address of the recipient.
amount - BigInt! The amount paid, in mojos.
expirationTime - DateTime! When the clawback window of the payment ends.
payoutId - ID! The global ID of the payout wallet transaction, such as WalletTransaction_<id>, matching one of AirdropTransactionSummary.payouts. Each payout pays one batch of the airdrop.
receiverPuzzleHash - String! The puzzle hash of the recipient, in hex.
Example
{
  "address": "abc123",
  "amount": {},
  "expirationTime": "2007-12-03T10:15:30Z",
  "payoutId": "4",
  "receiverPuzzleHash": "xyz789"
}

AirdropCoinRecord

Fields
Field Name Description
coinRecord - CoinRecord! The state of the coin
id - ID!
state - String! The state of the coin
Example
{
  "coinRecord": CoinRecord,
  "id": "4",
  "state": "xyz789"
}

AirdropCoinsConnection

Fields
Field Name Description
edges - [AirdropCoinsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [AirdropCoinsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

AirdropCoinsConnectionEdge

Fields
Field Name Description
cursor - String!
node - AirdropCoinRecord!
Example
{
  "cursor": "abc123",
  "node": AirdropCoinRecord
}

AirdropCoinStateCount

Description

Count of coins in each state for a specific coin type

Fields
Field Name Description
calculated - Int Number of coins in CALCULATED state
created - Int Number of coins in CREATED state
spent - Int Number of coins in SPENT state
submitted - Int Number of coins in SUBMITTED state
Example
{"calculated": 123, "created": 123, "spent": 123, "submitted": 987}

AirdropCoinStatuses

Description

Breakdown of coins by type and their states

Fields
Field Name Description
mint - AirdropCoinStateCount Mint coin states
node - AirdropCoinStateCount Intermediate node coin states
root - AirdropCoinStateCount Root coin states
target - AirdropCoinStateCount Target coin states
Example
{
  "mint": AirdropCoinStateCount,
  "node": AirdropCoinStateCount,
  "root": AirdropCoinStateCount,
  "target": AirdropCoinStateCount
}

AirdropConfig

Fields
Input Field Description
secureTheBagAirdropConfig - SecureTheBagAirdropConfigInput
Example
{
  "secureTheBagAirdropConfig": SecureTheBagAirdropConfigInput
}

AirdropInterface

Fields
Field Name Description
createdAt - String!
id - ID!
name - String!
type - String
updatedAt - String!
Possible Types
AirdropInterface Types

Airdrop

Example
{
  "createdAt": "abc123",
  "id": 4,
  "name": "xyz789",
  "type": "xyz789",
  "updatedAt": "xyz789"
}

AirdropPendingPayment

Description

A payment of an airdrop whose coin is not on chain yet.

Fields
Field Name Description
amount - BigInt! The amount to pay, in mojos.
receiverPuzzleHash - String! The puzzle hash of the recipient, in hex.
Example
{
  "amount": {},
  "receiverPuzzleHash": "xyz789"
}

AirdropProgress

Fields
Field Name Description
coinStatuses - AirdropCoinStatuses! Breakdown of coins by type and state
totalCoins - Int! The total number of coins in the airdrop
unrolledCoins - Int! The number of coins that have been unrolled (CREATED targets or SPENT nodes/mints)
Example
{
  "coinStatuses": AirdropCoinStatuses,
  "totalCoins": 987,
  "unrolledCoins": 123
}

AirdropsSortKey

Description

The set of valid sort keys for the Airdrops query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

AirdropTransactionSummary

Fields
Field Name Description
clawbackExpirationTime - DateTime The latest expiration time among those clawback coins.
clawbackPayments - [AirdropClawbackPayment!]! Every clawback payment of the airdrop that exists on chain, including ones already clawed back, finalized, or pushed through. Payments without a clawback are not listed.
clawbackRecipientCount - Int! The number of recipients whose clawback coins are not yet finalized, pushed through, or clawed back.
deliveredRecipientCount - Int! The number of recipients whose coins exist on chain. After the funding transaction settles, the airdrop creates the recipient coins over the following blocks, so this can trail recipientCount. A clawback coin can be clawed back only once it exists.
isClawbackPending - Boolean! Whether any of those clawback coins can still be clawed back.
payouts - [WalletTransaction!]! The transactions that paid recipients with a clawback. They are left out of the wallet transaction list and are listed here instead.
pendingPayments - [AirdropPendingPayment!]! The airdrop's payments whose coins are not on chain yet. The airdrop creates them batch by batch after the funding transaction settles, so this shrinks as batches arrive and is empty once deliveredRecipientCount reaches recipientCount.
recipientCount - Int! The number of recipients in the airdrop.
Example
{
  "clawbackExpirationTime": "2007-12-03T10:15:30Z",
  "clawbackPayments": [AirdropClawbackPayment],
  "clawbackRecipientCount": 123,
  "deliveredRecipientCount": 987,
  "isClawbackPending": true,
  "payouts": [WalletTransaction],
  "pendingPayments": [AirdropPendingPayment],
  "recipientCount": 123
}

AirdropType

Description

The set of valid airdrop types.

Values
Enum Value Description

SECURE_THE_BAG

SECURE_THE_MINT

Example
"SECURE_THE_BAG"

AirdropValidationError

Fields
Field Name Description
message - String!
row - Int 1-based line number in the uploaded file. Null when the error applies to the whole file.
Example
{"message": "abc123", "row": 123}

AirdropValidationResult

Fields
Field Name Description
error - String The first error, prefixed with its row number.
errors - [AirdropValidationError!]! Every validation error, in file order.
isValid - Boolean!
totalAmount - String! Sum of the amounts in rows that passed validation, in token units.
totalRecipients - Int! Number of rows that passed validation.
Example
{
  "error": "abc123",
  "errors": [AirdropValidationError],
  "isValid": true,
  "totalAmount": "abc123",
  "totalRecipients": 987
}

AnnouncementPublic

Description

Active announcement fields safe for client banner surfaces

Fields
Field Name Description
body - String!
ctaLabel - String
ctaUrl - String
dismissible - Boolean!
id - ID!
severity - AnnouncementSeverity!
title - String!
Example
{
  "body": "xyz789",
  "ctaLabel": "xyz789",
  "ctaUrl": "abc123",
  "dismissible": false,
  "id": "4",
  "severity": "CRITICAL",
  "title": "abc123"
}

AnnouncementSeverity

Values
Enum Value Description

CRITICAL

INFO

WARNING

Example
"CRITICAL"

ApproveVaultRecoveryReviewInput

Fields
Input Field Description
approvalReason - String Optional reason for approving the recovery request
reviewId - ID! ID of the recovery review to approve
Example
{"approvalReason": "xyz789", "reviewId": 4}

ApproveVaultRecoveryReviewPayload

Fields
Field Name Description
vaultRecoveryReview - VaultRecoveryReview! The approved recovery review
Example
{"vaultRecoveryReview": VaultRecoveryReview}

Asset

Fields
Field Name Description
assetHash - String The CAT asset hash. Null for XCH.
canViewerUpdate - Boolean! Whether viewer can update asset or not
decimals - Int!
displayName - String! The user's custom display name for the asset (falls back to the asset's actual name if not customized) Use name instead.
displaySymbol - String The user's custom display symbol for the asset (falls back to the asset's actual symbol if not customized) Use symbol instead.
id - ID!
identifier - String! The CAT asset hash, or the network genesis challenge for XCH. Use assetHash for CAT assets and network.genesisChallenge for XCH.
issuerWallet - Wallet
mintState - TransactionStateString
multiIssuance - Boolean! Whether this asset supports multiple issuances
name - String!
revocable - Boolean! Whether this asset is revocable
symbol - String
totalMelted - BigInt! The total amount of this asset that has been melted (cumulative)
totalMinted - BigInt! The total amount of this asset that has been minted (cumulative)
totalSupply - BigInt! The current circulating supply of this asset (totalMinted - totalMelted)
type - AssetType! Use assetHash to distinguish CAT2 assets from XCH.
Example
{
  "assetHash": "xyz789",
  "canViewerUpdate": false,
  "decimals": 987,
  "displayName": "abc123",
  "displaySymbol": "abc123",
  "id": "4",
  "identifier": "xyz789",
  "issuerWallet": Wallet,
  "mintState": "CLAWED_BACK",
  "multiIssuance": false,
  "name": "xyz789",
  "revocable": true,
  "symbol": "abc123",
  "totalMelted": {},
  "totalMinted": {},
  "totalSupply": {},
  "type": "CAT1"
}

AssetConfig

Fields
Input Field Description
cat2Config - CAT2Config
Example
{"cat2Config": CAT2Config}

AssetInterface

Fields
Field Name Description
assetHash - String The CAT asset hash. Null for XCH.
canViewerUpdate - Boolean! Whether viewer can update asset or not
decimals - Int!
displayName - String! The user's custom display name for the asset (falls back to the asset's actual name if not customized) Use name instead.
displaySymbol - String The user's custom display symbol for the asset (falls back to the asset's actual symbol if not customized) Use symbol instead.
id - ID!
identifier - String! The CAT asset hash, or the network genesis challenge for XCH. Use assetHash for CAT assets and network.genesisChallenge for XCH.
issuerWallet - Wallet
mintState - TransactionStateString
multiIssuance - Boolean! Whether this asset supports multiple issuances
name - String!
revocable - Boolean! Whether this asset is revocable
symbol - String
totalMelted - BigInt! The total amount of this asset that has been melted (cumulative)
totalMinted - BigInt! The total amount of this asset that has been minted (cumulative)
totalSupply - BigInt! The current circulating supply of this asset (totalMinted - totalMelted)
type - AssetType! Use assetHash to distinguish CAT2 assets from XCH.
Possible Types
AssetInterface Types

Asset

WalletAsset

Example
{
  "assetHash": "abc123",
  "canViewerUpdate": true,
  "decimals": 987,
  "displayName": "abc123",
  "displaySymbol": "abc123",
  "id": "4",
  "identifier": "abc123",
  "issuerWallet": Wallet,
  "mintState": "CLAWED_BACK",
  "multiIssuance": false,
  "name": "xyz789",
  "revocable": false,
  "symbol": "xyz789",
  "totalMelted": {},
  "totalMinted": {},
  "totalSupply": {},
  "type": "CAT1"
}

AssetType

Description

The set of valid asset types.

Values
Enum Value Description

CAT1

CAT2

CRYPTOCURRENCY

FIAT

NFT

Example
"CAT1"

AuthorizationResourceType

Description

The resource families supported by scoped authorization.

Values
Enum Value Description

CONTACT

ORGANIZATION

PLATFORM

SIGNER

USER_ACCOUNT

VAULT_CONFIG_TEMPLATE

WALLET

Example
"CONTACT"

AvailablePlatformSubscription

Description

A platform subscription with subscription status for the requested wallet.

Fields
Field Name Description
avatarFileName - String Avatar file name of the subscription
id - ID! The unique identifier of the subscription
isSubscribed - Boolean! Whether the requested wallet subscribes to this platform subscription.
name - String Name of the subscription
topics - AvailablePlatformSubscriptionTopicsConnection! Topics associated with the subscription
Arguments
after - String
before - String
first - Int
last - Int
vaultLauncherId - String! Vault launcher ID as a 64-character hexadecimal string.
walletSubscriptionId - ID Wallet subscription global ID (WalletSubscription_<cuid>) when subscribed.
Example
{
  "avatarFileName": "abc123",
  "id": 4,
  "isSubscribed": false,
  "name": "xyz789",
  "topics": AvailablePlatformSubscriptionTopicsConnection,
  "vaultLauncherId": "abc123",
  "walletSubscriptionId": 4
}

AvailablePlatformSubscriptionTopicsConnection

Fields
Field Name Description
edges - [AvailablePlatformSubscriptionTopicsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [
    AvailablePlatformSubscriptionTopicsConnectionEdge
  ],
  "pageInfo": PageInfo,
  "totalCount": 987
}

AvailablePlatformSubscriptionTopicsConnectionEdge

Fields
Field Name Description
cursor - String!
node - SubscriptionTopic!
Example
{
  "cursor": "abc123",
  "node": SubscriptionTopic
}

BeforeAfterData

Fields
Field Name Description
after - [KeyChangeItem!]! The key configuration after the recovery
before - [KeyChangeItem!]! The key configuration before the recovery
Example
{
  "after": [KeyChangeItem],
  "before": [KeyChangeItem]
}

BigInt

Description

A signed whole integer whose magnitude fits in 64 bits. JSON clients should send values outside the safe JavaScript integer range as decimal strings.

Example
{}

BlockRecord

Fields
Field Name Description
headerHash - String The header hash of the block
height - Int! The height of the block
id - ID!
timestamp - String
Example
{
  "headerHash": "xyz789",
  "height": 987,
  "id": "4",
  "timestamp": "xyz789"
}

Boolean

Description

The Boolean scalar type represents true or false.

Example
true

BroadcastMessageDetails

Fields
Field Name Description
message - String! The content of the broadcast message
topic - String! The topic of the broadcast message
Example
{
  "message": "xyz789",
  "topic": "xyz789"
}

BulkMintNftsInput

Fields
Input Field Description
autoSubmit - Boolean Submit automatically after all required signatures are collected. Default = false
fee - BigInt! Blockchain fee in XCH mojos. Default = 0
mints - [MintNftItemInput!]! NFTs to mint. A request can contain at most 5,000 items.
walletId - ID! Source wallet global ID in Wallet_<cuid> format.
Example
{
  "autoSubmit": true,
  "fee": {},
  "mints": [MintNftItemInput],
  "walletId": "4"
}

BulkMintNftsPayload

Fields
Field Name Description
airdropId - ID! The Secure The Mint airdrop ID
nftIds - [String!]!
signatureRequest - SignatureRequest!
Example
{
  "airdropId": "4",
  "nftIds": ["xyz789"],
  "signatureRequest": SignatureRequest
}

BuyOrder

Fields
Field Name Description
address - String! The address to send the XCH to
autoFinalizeEnabled - Boolean! Effective auto-finalize status for this order, based on global setting, buy order override, and tier threshold policy.
autoFinalizeOverrideEnabled - Boolean Per-buy-order override for automatic finalization. Null means the default system behavior is applied.
createdAt - String!
estimatedCompletionDate - DateTime The estimated completion date for this buy order
estimatedSettlementDate - String The estimated settlement date from Stripe (when funds become available)
fiatAmount - String! The amount in fiat currency that the user wants to spend
fiatCurrency - String! The fiat currency code (e.g., USD, EUR, GBP)
id - ID!
paymentStatus - BuyOrderPaymentStatus! Derived payment status for display and filtering
payoutErrorMessage - String Error message from the latest failed payout attempt (if any)
stripePaymentSession - StripePaymentSession! The Stripe payment session used for payment
stripePaymentStatus - StripePaymentStatus! Current state of the Stripe payment
tierContribution - TierContribution Whether this purchase contributes to tier progression. Null if no payment method purchase record exists.
timeline - [BuyOrderTimelineEvent!]! Timeline of events for this buy order
updatedAt - String!
wallet - Wallet The wallet/vault where XCH will be deposited
walletTransaction - WalletTransaction The wallet transaction associated with this buy order
xchAmount - BigInt! The amount of XCH to be purchased
xchPricePerUnit - String! The price of XCH in the specified fiat currency at the time of order
xchStatus - XCHStatus! Current state of the XCH purchase
Example
{
  "address": "xyz789",
  "autoFinalizeEnabled": true,
  "autoFinalizeOverrideEnabled": false,
  "createdAt": "xyz789",
  "estimatedCompletionDate": "2007-12-03T10:15:30Z",
  "estimatedSettlementDate": "xyz789",
  "fiatAmount": "xyz789",
  "fiatCurrency": "abc123",
  "id": "4",
  "paymentStatus": "CANCELED",
  "payoutErrorMessage": "xyz789",
  "stripePaymentSession": StripePaymentSession,
  "stripePaymentStatus": "CANCELED",
  "tierContribution": "EXCLUDED",
  "timeline": [BuyOrderTimelineEvent],
  "updatedAt": "xyz789",
  "wallet": Wallet,
  "walletTransaction": WalletTransaction,
  "xchAmount": {},
  "xchPricePerUnit": "xyz789",
  "xchStatus": "CLAWBACK_EXPIRED"
}

BuyOrderEventType

Description

Types of events in a buy order timeline

Values
Enum Value Description

CLAWBACK_CREATED

CLAWBACK_FINALIZED

ORDER_COMPLETED

ORDER_CREATED

ORDER_FAILED

PAYMENT_CANCELED

PAYMENT_FAILED

PAYMENT_INITIATED

PAYMENT_METHOD_ATTACHED

PAYMENT_PROCESSING

PAYMENT_REQUIRES_ACTION

PAYMENT_SUBMITTED

PAYMENT_SUCCEEDED

XCH_CLAWED_BACK

Example
"CLAWBACK_CREATED"

BuyOrderPaymentStatus

Description

Derived payment status for buy orders

Values
Enum Value Description

CANCELED

DISPUTED

ERROR

FAILED

PROCESSING

REQUIRES_ACTION

REQUIRES_CONFIRMATION

REQUIRES_PAYMENT_METHOD

SUCCEEDED

Example
"CANCELED"

BuyOrderTimelineErrorDetails

Description

Error details for a timeline event

Fields
Field Name Description
code - String Error code
message - String Error message
Example
{
  "code": "xyz789",
  "message": "abc123"
}

BuyOrderTimelineEvent

Description

An event in a buy order timeline

Fields
Field Name Description
errorDetails - BuyOrderTimelineErrorDetails Error details if this is a failure event
status - TimelineEventStatus! Status of the event (completed, failed, or pending)
timestamp - DateTime! When the event occurred
type - BuyOrderEventType! Type of the event
Example
{
  "errorDetails": BuyOrderTimelineErrorDetails,
  "status": "COMPLETED",
  "timestamp": "2007-12-03T10:15:30Z",
  "type": "CLAWBACK_CREATED"
}

Bytea

Description

A byte array. Send a hexadecimal string, with or without a 0x prefix; responses omit the prefix.

Example
Bytea

CancelOfferInput

Fields
Input Field Description
autoSubmit - Boolean Submit the cancellation automatically after all required signatures are collected. Used only on chain. Default = false
cancelOffChain - Boolean Cancel only in Cloud Wallet without an on-chain spend. Off-chain cancellation cannot prevent another holder from taking the offer. Default = false
fee - BigInt Blockchain fee in XCH mojos. Used only for on-chain cancellation.
offerId - ID! Offer global ID in Offer_<hex> format.
walletId - ID! Wallet global ID in Wallet_<cuid> format.
Example
{
  "autoSubmit": true,
  "cancelOffChain": true,
  "fee": {},
  "offerId": 4,
  "walletId": 4
}

CancelOfferPayload

Fields
Field Name Description
signatureRequest - SignatureRequest The signature request to cancel the offer (only when cancelling on chain)
Example
{"signatureRequest": SignatureRequest}

CAT2Config

Fields
Input Field Description
multiIssuance - MultiIssuanceCAT2Config
singleIssuance - SingleIssuanceCAT2Config
Example
{
  "multiIssuance": MultiIssuanceCAT2Config,
  "singleIssuance": SingleIssuanceCAT2Config
}

ClawbackInput

Fields
Input Field Description
timestamp - DateTime The date and time when this transaction finalizes. Until then, the transaction can be clawed back
Example
{"timestamp": "2007-12-03T10:15:30Z"}

ClawbackState

Fields
Field Name Description
canClawback - Boolean! Whether the sender can claw back the transaction (before timer expires)
canFinalize - Boolean! Whether the sender can finalize the transaction (push funds to receiver)
canPushThrough - Boolean! Whether the sender can push through the transaction after timer expired on-chain
isClawbackClawedBack - Boolean! Whether the clawback transaction has been clawed back
isClawbackExpired - Boolean! Whether the clawback timer has expired
isClawbackFinalized - Boolean! Whether the clawback transaction has been finalized
isClawbackPending - Boolean! Whether the clawback timer has not yet expired
Example
{
  "canClawback": false,
  "canFinalize": true,
  "canPushThrough": true,
  "isClawbackClawedBack": false,
  "isClawbackExpired": true,
  "isClawbackFinalized": true,
  "isClawbackPending": true
}

ClawBackTransactionInput

Fields
Input Field Description
autoSubmit - Boolean Submit automatically after all required signatures are collected. Default = false
fee - BigInt Blockchain fee in XCH mojos.
walletTransactionId - ID! Global ID of the original outbound CLAWBACK_V2 transaction in WalletTransaction_<cuid> format.
Example
{
  "autoSubmit": true,
  "fee": {},
  "walletTransactionId": "4"
}

ClawBackTransactionPayload

Fields
Field Name Description
signatureRequest - SignatureRequest! Signature request for transaction
Example
{"signatureRequest": SignatureRequest}

ClearSigningDetails

Description

Additional clear-signing data that allows a signer to securely verify a signature request

Fields
Field Name Description
p2Clawbacks - [P2ClawbackDetails!]! Clawback puzzle metadata for the input coins being spent
p2ConditionsOrSingletons - [P2ConditionsOrSingletonDetails!]! P2 conditions-or-singleton puzzle metadata for the input and output coins referenced by this signature request
reservedOfferCoinSpends - [CoinSpend!] Future offer coin spends for coin-reservation offer flows, including requested-payment reveal spends
vaultNonces - [Int!]! All known nonces (address indices) for this signature request's wallet vault
Example
{
  "p2Clawbacks": [P2ClawbackDetails],
  "p2ConditionsOrSingletons": [
    P2ConditionsOrSingletonDetails
  ],
  "reservedOfferCoinSpends": [CoinSpend],
  "vaultNonces": [987]
}

Coin

Fields
Field Name Description
amount - BigInt!
parentCoinInfo - Bytea!
puzzleHash - Bytea!
Example
{
  "amount": {},
  "parentCoinInfo": Bytea,
  "puzzleHash": Bytea
}

CoinRecord

Fields
Field Name Description
address - String! The address of the coin record
amount - BigInt! Coin amount in mojos.
asset - Asset! CAT asset for this coin, or the XCH asset when the coin is XCH.
createdBlockHeight - Int The block height at which the coin record was created
id - ID!
isLinkedToOpenOffer - Boolean! Whether the coin is linked to an open offer
isLocked - Boolean! Whether the coin is locked in an active offer
name - Bytea! The name of the coin record
parentCoinName - Bytea! The parent coin name of the coin record
puzzleHash - Bytea! The puzzle hash of the coin record
spentBlockHeight - Int The block height at which the coin record was spent
state - CoinRecordState! The state of the coin record
Example
{
  "address": "xyz789",
  "amount": {},
  "asset": Asset,
  "createdBlockHeight": 987,
  "id": "4",
  "isLinkedToOpenOffer": false,
  "isLocked": false,
  "name": Bytea,
  "parentCoinName": Bytea,
  "puzzleHash": Bytea,
  "spentBlockHeight": 987,
  "state": "LOCKED"
}

CoinRecordsSortKey

Description

The set of valid sort keys for the CoinRecords query.

Values
Enum Value Description

AMOUNT

CREATED_HEIGHT

NAME

SPENT_HEIGHT

Example
"AMOUNT"

CoinRecordState

Description

The state of the coin record

Values
Enum Value Description

LOCKED

MEMPOOL

PENDING

RE_ORG

SETTLED

Example
"LOCKED"

CoinsetInput

Fields
Input Field Description
endpoint - String! Public Coinset Full Node endpoint name
request - JSON! JSON request body forwarded to Coinset
walletId - ID! Consented wallet used to authorize the Coinset request
Example
{
  "endpoint": "xyz789",
  "request": {},
  "walletId": 4
}

CoinsetPayload

Fields
Field Name Description
response - JSON! JSON response returned by Coinset
Example
{"response": {}}

CoinSpend

Fields
Field Name Description
coin - Coin!
puzzleReveal - Bytea!
solution - Bytea!
Example
{
  "coin": Coin,
  "puzzleReveal": Bytea,
  "solution": Bytea
}

CombineCoinsInput

Fields
Input Field Description
assetHash - String Optional CAT asset hash to combine. If omitted, XCH is assumed.
fee - BigInt An optional blockchain fee, in mojos
fromAddressIndex - Int Optional vault address derivation index to combine from. Automatic selection and the combined coin both use that address. Defaults to 0 (primary address).
inputCoinIds - [ID!] Coin global IDs in CoinRecord_<hex> format. When provided, only these coins are combined.
largestFirst - Boolean Whether to select the largest-value coins first. Default = false
maxCoinAmount - BigInt Maximum value in mojos for each selected coin. Coins above this value are excluded.
maxNumberOfCoins - Int The maximum number of coins to combine. This option takes precedence over the others. The server additionally enforces a per-asset-variant hard cap to keep spend bundle cost under the block cost limit.
numberOfCoins - Int The number of coins to auto-select for combining. Minimum 2; the upper bound depends on asset type (see mutation description).
targetAmount - BigInt Select coins until their total reaches this value in mojos. One XCH is 1,000,000,000,000 mojos; one CAT is 1,000 mojos.
walletId - ID! The wallet ID for the origin of the transaction
Example
{
  "assetHash": "abc123",
  "fee": {},
  "fromAddressIndex": 123,
  "inputCoinIds": ["4"],
  "largestFirst": false,
  "maxCoinAmount": {},
  "maxNumberOfCoins": 987,
  "numberOfCoins": 123,
  "targetAmount": {},
  "walletId": 4
}

CombineCoinsPayload

Fields
Field Name Description
signatureRequest - SignatureRequest! The signature request for the transaction
Example
{"signatureRequest": SignatureRequest}

CombineDetails

Fields
Field Name Description
inputCoinsCount - Int! Number of input coins to combine
outputAmount - BigInt! Amount of the output coin after fees
totalAmount - BigInt! Total amount of input coins
vaultId - String! ID of the vault
vaultName - String Name of the vault
Example
{
  "inputCoinsCount": 123,
  "outputAmount": {},
  "totalAmount": {},
  "vaultId": "abc123",
  "vaultName": "xyz789"
}

Contact

Fields
Field Name Description
addresses - ContactAddressesConnection! Contact blockchain addresses
Arguments
after - String
before - String
first - Int
last - Int
createdAt - String! The date and time when the contact was created
emails - ContactEmailsConnection! Contact email addresses
Arguments
after - String
before - String
first - Int
last - Int
grantableOAuthScopes - [String!]!
Arguments
requestedScopes - [String!]!
id - ID!
image - String Base64 encoded image of the contact, currently disabled
name - String The name of the contact
updatedAt - String! The date and time when the contact was last updated
Example
{
  "addresses": ContactAddressesConnection,
  "createdAt": "xyz789",
  "emails": ContactEmailsConnection,
  "grantableOAuthScopes": ["xyz789"],
  "id": "4",
  "image": "xyz789",
  "name": "xyz789",
  "updatedAt": "xyz789"
}

ContactAddress

Fields
Field Name Description
address - String!
contact - Contact!
createdAt - String! The date and time when the address was created
id - ID!
label - String
updatedAt - String! The date and time when the address was last updated
Example
{
  "address": "xyz789",
  "contact": Contact,
  "createdAt": "abc123",
  "id": "4",
  "label": "xyz789",
  "updatedAt": "abc123"
}

ContactAddressesConnection

Fields
Field Name Description
edges - [ContactAddressesConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [ContactAddressesConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

ContactAddressesConnectionEdge

Fields
Field Name Description
cursor - String!
node - ContactAddress!
Example
{
  "cursor": "xyz789",
  "node": ContactAddress
}

ContactAddressesSortKey

Description

The set of valid sort keys for the ContactAddresses query.

Values
Enum Value Description

ADDRESS

CREATED_AT

Example
"ADDRESS"

ContactEmail

Fields
Field Name Description
contact - Contact!
createdAt - String! The date and time when the email was created
email - String!
id - ID!
updatedAt - String! The date and time when the email was last updated
Example
{
  "contact": Contact,
  "createdAt": "xyz789",
  "email": "xyz789",
  "id": 4,
  "updatedAt": "xyz789"
}

ContactEmailsConnection

Fields
Field Name Description
edges - [ContactEmailsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [ContactEmailsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

ContactEmailsConnectionEdge

Fields
Field Name Description
cursor - String!
node - ContactEmail!
Example
{
  "cursor": "abc123",
  "node": ContactEmail
}

ContactEmailsSortKey

Description

The set of valid sort keys for the ContactEmails query.

Values
Enum Value Description

CREATED_AT

EMAIL

Example
"CREATED_AT"

ContactsSortKey

Description

The set of valid sort keys for the Contacts query.

Values
Enum Value Description

CREATED_AT

NAME

Example
"CREATED_AT"

CreateAirdropInput

Fields
Input Field Description
airdropConfig - AirdropConfig!
assetHash - String 64-character lowercase hex CAT tail hash. Required by the current implementation; XCH airdrops are not supported.
autoSubmit - Boolean Submit automatically after all required signatures are collected. Default = true
csv - String CSV content containing the airdrop recipients and amounts, not a file path.
fee - BigInt Blockchain fee in XCH mojos.
name - String
requestId - String Caller-generated idempotency key for safe retries.
walletId - ID!
Example
{
  "airdropConfig": AirdropConfig,
  "assetHash": "abc123",
  "autoSubmit": true,
  "csv": "abc123",
  "fee": {},
  "name": "abc123",
  "requestId": "abc123",
  "walletId": "4"
}

CreateAirdropPayload

Fields
Field Name Description
signatureRequest - SignatureRequest!
Example
{"signatureRequest": SignatureRequest}

CreateAssetAndAirdropInput

Fields
Input Field Description
assetConfig - AssetConfig! Multi-issuance CAT2 configuration. Single-issuance assets are not supported by this mutation.
autoSubmit - Boolean! Submit automatically after all required signatures are collected. Default = true
csv - String! CSV content containing recipient addresses and CAT mojo amounts, not a file path.
fee - BigInt! Blockchain fee in XCH mojos. Default = 0
name - String! Asset display name.
requestId - String Caller-generated idempotency key for safe retries.
symbol - String Optional asset ticker symbol.
walletId - ID! Wallet global ID in Wallet_<cuid> format.
Example
{
  "assetConfig": AssetConfig,
  "autoSubmit": false,
  "csv": "xyz789",
  "fee": {},
  "name": "abc123",
  "requestId": "abc123",
  "symbol": "abc123",
  "walletId": "4"
}

CreateAssetAndAirdropPayload

Fields
Field Name Description
asset - Asset
signatureRequest - SignatureRequest!
Example
{
  "asset": Asset,
  "signatureRequest": SignatureRequest
}

CreateAssetInput

Fields
Input Field Description
address - String! Bech32m address that receives the initial issuance.
assetConfig - AssetConfig! CAT2 issuance configuration.
autoSubmit - Boolean! Submit automatically after all required signatures are collected. Default = true
fee - BigInt! Blockchain fee in XCH mojos. Default = 0
name - String! Asset display name.
requestId - String Caller-generated idempotency key for safe retries.
symbol - String Optional asset ticker symbol.
walletId - ID! Wallet global ID in Wallet_<cuid> format.
Example
{
  "address": "xyz789",
  "assetConfig": AssetConfig,
  "autoSubmit": true,
  "fee": {},
  "name": "abc123",
  "requestId": "xyz789",
  "symbol": "xyz789",
  "walletId": "4"
}

CreateAssetPayload

Fields
Field Name Description
asset - Asset
signatureRequest - SignatureRequest!
Example
{
  "asset": Asset,
  "signatureRequest": SignatureRequest
}

CreateContactInput

Fields
Input Field Description
addresses - [AddressInput!] List of blockchain addresses with optional labels
emails - [String!]! Non-empty list of email addresses associated with the contact.
name - String! Name of the contact
organizationId - ID Organization ID the contact belongs to
Example
{
  "addresses": [AddressInput],
  "emails": ["abc123"],
  "name": "abc123",
  "organizationId": "4"
}

CreateContactPayload

Fields
Field Name Description
contact - Contact! New contact that has been created
Example
{"contact": Contact}

CreateMessageInput

Fields
Input Field Description
autoSubmit - Boolean Whether to automatically submit the transaction when all signatures are provided. Default = true
fee - BigInt The fee to pay
message - String! The message to publish
topic - String! The topic of the message to publish
walletId - ID! ID of wallet publishing the message
Example
{
  "autoSubmit": true,
  "fee": {},
  "message": "xyz789",
  "topic": "xyz789",
  "walletId": "4"
}

CreateMessagePayload

Fields
Field Name Description
signatureRequest - SignatureRequest! Signature request for transaction
Example
{"signatureRequest": SignatureRequest}

CreateOfferAssetInput

Fields
Input Field Description
amount - BigInt! Amount in mojos. One XCH is 1,000,000,000,000 mojos; one CAT is 1,000 mojos.
assetHash - String 64-character lowercase hex CAT tail hash. Omit for XCH; do not use an internal Asset ID. Unregistered CATs are registered automatically.
Example
{"amount": {}, "assetHash": "abc123"}

CreateOfferInput

Fields
Input Field Description
autoSubmit - Boolean Submit the preliminary coin split automatically after all required signatures are collected. Applies only when splitInputCoins requires a split; the offer is recorded when the request is signed either way. Default = true
expiresAt - DateTime The date and time when the offer expires
extraConditions - [String!] Hex-encoded serialized CLVM conditions to include in one maker spend
fee - BigInt Blockchain fee in XCH mojos.
fromAddressIndex - Int Optional vault address derivation index to offer from. Defaults to 0 (primary address). The offered coins and NFTs, fee, change, and requested payments all use that address, so offered NFTs must be held there.
offered - [CreateOfferAssetInput!]!
offeredNftIds - [String!] NFT launcher IDs as 64-character hex strings.
receiverAddress - String Optional receiver address that is allowed to accept a one-sided offer
requested - [CreateOfferAssetInput!]!
requestedNftIds - [String!] NFT launcher IDs as 64-character hex strings.
splitInputCoins - Boolean Split input coins before creating the offer to avoid locking more balance than needed. Defaults to false.
splitInputCoinsFee - BigInt Fee for the preliminary coin split, in XCH mojos. Used only when splitInputCoins is true.
walletId - ID!
Example
{
  "autoSubmit": true,
  "expiresAt": "2007-12-03T10:15:30Z",
  "extraConditions": ["abc123"],
  "fee": {},
  "fromAddressIndex": 987,
  "offered": [CreateOfferAssetInput],
  "offeredNftIds": ["xyz789"],
  "receiverAddress": "xyz789",
  "requested": [CreateOfferAssetInput],
  "requestedNftIds": ["xyz789"],
  "splitInputCoins": true,
  "splitInputCoinsFee": {},
  "walletId": "4"
}

CreateOfferPayload

Fields
Field Name Description
signatureRequest - SignatureRequest!
Example
{"signatureRequest": SignatureRequest}

CreateSignerAppAuthKeyByPublicKeyInput

Fields
Input Field Description
curve - Curve The cryptographic curve used for the public key. If not provided, it will be auto-detected from the public key.
expiresAt - String! When should the signerAppAuthKey expire. Can be any date in the future. Provide in ISO 8601 format.
publicKey - String! The public key that proves ownership of the signer app
signature - String! A signature of the message (signerAppId + timestamp) using the public key
signerAppId - String! The signerAppId to which the signerAppAuthKey will be bound
timestamp - String! The current time in seconds since epoch
Example
{
  "curve": "BLS12_381",
  "expiresAt": "xyz789",
  "publicKey": "xyz789",
  "signature": "xyz789",
  "signerAppId": "abc123",
  "timestamp": "xyz789"
}

CreateSignerAppAuthKeyByPublicKeyPayload

Fields
Field Name Description
signerAppAuthKey - SignerAppAuthKey
Example
{"signerAppAuthKey": SignerAppAuthKey}

CreateSignerInput

Fields
Input Field Description
deduplicateName - Boolean When the owner already has a signer with this name, append the next free counter, such as (2), instead of failing. Meant for generated names.
keys - [Key!]! Public keys to associate with new signer
name - String Name of new signer
networkId - ID ID of network to create new signer for
userId - ID New signer owner userId (if different than the authenticated user)
Example
{
  "deduplicateName": true,
  "keys": [Key],
  "name": "abc123",
  "networkId": "4",
  "userId": "4"
}

CreateSignerPayload

Fields
Field Name Description
signer - Signer New signer that has been created
Example
{"signer": Signer}

CreateSignersInput

Fields
Input Field Description
networkId - ID
signers - [SignerInput!]! Array of signers to create
userId - ID New signer owner userId (if different than the authenticated user)
Example
{"networkId": 4, "signers": [SignerInput], "userId": 4}

CreateSignersPayload

Fields
Field Name Description
signers - [Signer!]
Example
{"signers": [Signer]}

CreateTransactionInput

Fields
Input Field Description
address - String! Destination bech32m address, beginning with xch or txch.
amount - BigInt! Amount in mojos. One XCH is 1,000,000,000,000 mojos; one CAT is 1,000 mojos.
assetHash - String 64-character lowercase hex CAT tail hash. Omit for XCH; do not use an internal Asset ID.
autoSubmit - Boolean Submit to the network automatically after all required signatures are collected. Default = true
clawback - ClawbackInput Optional clawback configuration for the transaction
fee - BigInt Blockchain fee in XCH mojos.
fromAddressIndex - Int Optional vault address derivation index to send from. Defaults to 0 (primary address).
memos - [String!] Memos provided with transaction
type - String Transaction type. Only TRANSFER is supported, and it is the default.
walletId - ID! Wallet global ID in Wallet_<cuid> format.
xchHandle - String Optional XCHandle that resolved to address. Fails if the handle no longer resolves to address.
Example
{
  "address": "abc123",
  "amount": {},
  "assetHash": "abc123",
  "autoSubmit": true,
  "clawback": ClawbackInput,
  "fee": {},
  "fromAddressIndex": 123,
  "memos": ["abc123"],
  "type": "abc123",
  "walletId": "4",
  "xchHandle": "xyz789"
}

CreateTransactionPayload

Fields
Field Name Description
signatureRequest - SignatureRequest! Signature request for transaction
Example
{"signatureRequest": SignatureRequest}

CreateVaultConfigTemplateInput

Fields
Input Field Description
recoveryProviderId - ID
recoveryTimelock - Int!
requiredCustodySigners - Int!
requiredRecoverySigners - Int!
signers - [VaultConfigTemplateSignerInput!]!
vaultName - String!
Example
{
  "recoveryProviderId": 4,
  "recoveryTimelock": 987,
  "requiredCustodySigners": 987,
  "requiredRecoverySigners": 123,
  "signers": [VaultConfigTemplateSignerInput],
  "vaultName": "abc123"
}

CreateVaultConfigTemplatePayload

Fields
Field Name Description
vaultConfigTemplate - VaultConfigTemplate!
Example
{"vaultConfigTemplate": VaultConfigTemplate}

CreateVaultFromConfigTemplateInput

Fields
Input Field Description
templateId - ID! ID of the vault configuration template to use
Example
{"templateId": "4"}

CreateVaultFromConfigTemplatePayload

Fields
Field Name Description
wallet - Wallet
Example
{"wallet": Wallet}

CreateWalletInput

Fields
Input Field Description
custodyConfig - CustodyConfig! Custody configuration which defines the type and behavior of new wallet
keys - [Key!] Public keys to associate with the new wallet.
name - String Wallet display name, up to 50 characters.
networkId - ID Network global ID. Required when keys is not empty; otherwise the request network is used.
userId - ID New wallet owner userId (if different than the authenticated user)
watchtower - Boolean Whether the new wallet receives activity alerts. Recovery alerts are sent either way. Default = true
watchtowerAlertSettings - [CreateWalletWatchtowerAlertSettingInput!] Per-type watchtower alert settings for the new wallet. They have no effect while watchtower is false. A type not listed keeps its default. The recovery alerts are always sent and cannot be listed. Listing the same type twice is rejected.
Example
{
  "custodyConfig": CustodyConfig,
  "keys": [Key],
  "name": "abc123",
  "networkId": "4",
  "userId": "4",
  "watchtower": false,
  "watchtowerAlertSettings": [
    CreateWalletWatchtowerAlertSettingInput
  ]
}

CreateWalletPayload

Fields
Field Name Description
wallet - Wallet
Example
{"wallet": Wallet}

CreateWalletWatchtowerAlertSettingInput

Fields
Input Field Description
alertType - WatchtowerAlertType! The alert type to configure
enabled - Boolean! Whether the alert is sent at all
frequency - WatchtowerAlertFrequency How often the alert is emailed. Defaults to IMMEDIATE. Only IMMEDIATE is accepted for alert types that are not digestable.
Example
{"alertType": "CLAWBACK_FINALIZED", "enabled": true, "frequency": "DAILY"}

Curve

Description

The set of valid curve types.

Values
Enum Value Description

BLS12_381

SECP256K1

SECP256R1

WEBAUTHN

Example
"BLS12_381"

CustodyConfig

Fields
Input Field Description
standardCustodyConfig - StandardCustodyConfigInput Standard wallet custody settings. Provide this or vaultCustodyConfig, but not both.
vaultCustodyConfig - VaultCustodyConfigInput Vault custody and recovery settings. Provide this or standardCustodyConfig, but not both.
Example
{
  "standardCustodyConfig": StandardCustodyConfigInput,
  "vaultCustodyConfig": VaultCustodyConfigInput
}

DateTime

Description

A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the date-time format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.

Example
"2007-12-03T10:15:30Z"

DeleteAssetInput

Fields
Input Field Description
assetHash - String!
Example
{"assetHash": "abc123"}

DeleteAssetPayload

Fields
Field Name Description
success - Boolean!
Example
{"success": false}

DeleteContactInput

Fields
Input Field Description
id - ID! ID of the contact to delete
Example
{"id": "4"}

DeleteContactPayload

Fields
Field Name Description
success - Boolean! Whether the contact was deleted.
Example
{"success": false}

DeleteSignerInput

Fields
Input Field Description
id - ID! ID of signer to delete
Example
{"id": 4}

DeleteSignerPayload

Fields
Field Name Description
success - Boolean! Whether the signer was successfully deleted or not
Example
{"success": false}

DeleteTransactionInput

Fields
Input Field Description
id - ID! ID of wallet transaction to remove
Example
{"id": 4}

DeleteTransactionPayload

Fields
Field Name Description
success - Boolean! Whether the wallet transaction was successfully removed from history
Example
{"success": false}

DeleteVaultConfigTemplateInput

Fields
Input Field Description
id - ID! ID of vault configuration template to delete
Example
{"id": 4}

DeleteVaultConfigTemplatePayload

Fields
Field Name Description
success - Boolean! Whether the delete vault configuration template operation was successful or not
Example
{"success": false}

DeleteWalletInput

Fields
Input Field Description
id - ID! ID of wallet to delete
Example
{"id": 4}

DeleteWalletPayload

Fields
Field Name Description
success - Boolean! Whether the delete wallet operation was successful or not
Example
{"success": true}

DeriveVaultAddressInput

Fields
Input Field Description
walletId - ID! Minted vault wallet global ID in Wallet_<cuid> format.
Example
{"walletId": 4}

DeriveVaultAddressPayload

Fields
Field Name Description
address - String! The newly derived bech32m address
index - Int! Vault address derivation nonce. Index 0 is the primary receive address.
Example
{"address": "abc123", "index": 987}

FeatureFlag

Fields
Field Name Description
id - ID!
name - String!
Example
{
  "id": "4",
  "name": "xyz789"
}

FileDownloadPayload

Fields
Field Name Description
content - String! Base64-encoded CSV file content.
filename - String! Name of the file to be downloaded
mimeType - String! MIME type of the file
Example
{
  "content": "abc123",
  "filename": "abc123",
  "mimeType": "abc123"
}

FinalizeTransactionInput

Fields
Input Field Description
autoSubmit - Boolean Submit automatically after all required signatures are collected. Default = false
fee - BigInt Blockchain fee in XCH mojos.
walletTransactionId - ID! Global ID of the original outbound CLAWBACK_V2 transaction in WalletTransaction_<cuid> format.
Example
{"autoSubmit": true, "fee": {}, "walletTransactionId": 4}

FinalizeTransactionPayload

Fields
Field Name Description
signatureRequest - SignatureRequest! Signature request for transaction
Example
{"signatureRequest": SignatureRequest}

GroupedCoinMetadataResult

Fields
Field Name Description
address - String! Chia address using the current network prefix.
totalAmount - String! Total CAT amount in mojos.
Example
{
  "address": "abc123",
  "totalAmount": "abc123"
}

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
4

IdentityVerificationStatus

Description

The status of user identity verification

Values
Enum Value Description

FAILED

PENDING

UNVERIFIED

VERIFIED

Example
"FAILED"

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
123

JSON

Description

The JSON scalar type represents JSON values as specified by ECMA-404.

Example
{}

Key

Fields
Input Field Description
curve - Curve! Signature curve used by the public key.
key - Bytea! Raw public key bytes encoded as hexadecimal.
Example
{"curve": "BLS12_381", "key": Bytea}

KeyChangeItem

Fields
Field Name Description
fingerprint - String The fingerprint of the app key (only for APP and APP_SOFTWARE key types)
keyType - KeyType! The type of key
passkeyName - String The name of the passkey (only for PASSKEY key type)
role - KeyRole! The role of the key
walletName - String The name of the wallet (only for VAULT key type)
Example
{
  "fingerprint": "abc123",
  "keyType": "APP",
  "passkeyName": "abc123",
  "role": "CUSTODY",
  "walletName": "abc123"
}

KeyRole

Description

The set of key roles.

Values
Enum Value Description

CUSTODY

RECOVERY

Example
"CUSTODY"

KeyType

Description

The set of valid key types.

Values
Enum Value Description

APP

APP_SOFTWARE

PASSKEY

RECOVERY_PHRASE

VAULT

Example
"APP"

Message

Fields
Field Name Description
bulletinCoinName - String! The coin ID of the bulletin coin that contains this message
createdAt - String! Creation date of message
id - ID!
message - String The message
state - MessageState The state of the message
topic - String Topic message was published to
vaultLauncherId - String! Launcher ID of the vault that sent the message
Example
{
  "bulletinCoinName": "xyz789",
  "createdAt": "xyz789",
  "id": "4",
  "message": "abc123",
  "state": "PENDING",
  "topic": "xyz789",
  "vaultLauncherId": "xyz789"
}

MessageInterface

Fields
Field Name Description
createdAt - String!
id - ID!
message - String!
state - String!
topic - String!
Possible Types
MessageInterface Types

WalletMessage

Example
{
  "createdAt": "xyz789",
  "id": 4,
  "message": "abc123",
  "state": "xyz789",
  "topic": "xyz789"
}

MessageState

Description

The set of valid MessageState types.

Values
Enum Value Description

PENDING

SENT

Example
"PENDING"

MintNftItemInput

Fields
Input Field Description
dataHash - String! 32-byte NFT data hash as 64 hexadecimal characters.
dataUris - [String!]! NFT data locations. The first item must be a valid URL.
editionNumber - BigInt Edition number. Omit for a one-of-one NFT.
editionTotal - BigInt Edition size. Omit for a one-of-one NFT.
licenseHash - String 32-byte license hash as 64 hexadecimal characters.
licenseUris - [String!] NFT license locations. The first item must be a valid URL.
metadataHash - String! 32-byte metadata hash as 64 hexadecimal characters.
metadataUris - [String!]! NFT metadata locations. The first item must be a valid URL.
ownerAddress - String Owner bech32m address. Omit to mint to the wallet.
royaltyAddress - String Royalty bech32m address.
royaltyBasisPoints - Int! Royalty in basis points. 100 basis points equals 1%.
Example
{
  "dataHash": "xyz789",
  "dataUris": ["abc123"],
  "editionNumber": {},
  "editionTotal": {},
  "licenseHash": "abc123",
  "licenseUris": ["xyz789"],
  "metadataHash": "xyz789",
  "metadataUris": ["abc123"],
  "ownerAddress": "abc123",
  "royaltyAddress": "xyz789",
  "royaltyBasisPoints": 987
}

MultiIssuanceCAT2Config

Fields
Input Field Description
advanced - AdvancedMultiIssuanceCAT2Config Advanced asset configuration. Only use if you know what you are doing
amount - BigInt! Amount of the multi issuance CAT2 to issue
assetHash - String The asset hash of an existing multi issuance CAT, to issue more of the same asset.
revocable - Boolean! Whether the multi issuance CAT2 is revocable
Example
{
  "advanced": AdvancedMultiIssuanceCAT2Config,
  "amount": {},
  "assetHash": "xyz789",
  "revocable": false
}

Network

Fields
Field Name Description
blockchainTime - String The timestamp of the latest transaction block on the blockchain
createdAt - String!
genesisChallenge - String!
height - Int!
id - ID!
name - String!
prefix - String!
synced - Boolean!
updatedAt - String!
Example
{
  "blockchainTime": "xyz789",
  "createdAt": "abc123",
  "genesisChallenge": "xyz789",
  "height": 987,
  "id": 4,
  "name": "xyz789",
  "prefix": "abc123",
  "synced": true,
  "updatedAt": "abc123"
}

Nft

Fields
Field Name Description
coinId - String! Our primary key, the hex-encoded coin ID of the NFT
id - ID!
launcherId - String! The hex-encoded launcher ID of the NFT
metadata - NftMetadata The parsed blockchain metadata of the NFT
ownerAddress - String The Bech32m address of the NFT owner
royaltyAddress - String! The Bech32m address of the NFT royalty receiver
royaltyPercentage - Int! The royalty percentage of the NFT expressed as basis points
wallet - Wallet! The wallet containing this NFT
Example
{
  "coinId": "abc123",
  "id": 4,
  "launcherId": "xyz789",
  "metadata": NftMetadata,
  "ownerAddress": "abc123",
  "royaltyAddress": "abc123",
  "royaltyPercentage": 123,
  "wallet": Wallet
}

NftMetadata

Fields
Field Name Description
dataHash - String
dataUris - [String!]!
editionNumber - Int!
editionTotal - Int!
licenseHash - String
licenseUris - [String!]!
metadataHash - String
metadataUris - [String!]!
Example
{
  "dataHash": "xyz789",
  "dataUris": ["xyz789"],
  "editionNumber": 123,
  "editionTotal": 123,
  "licenseHash": "abc123",
  "licenseUris": ["xyz789"],
  "metadataHash": "xyz789",
  "metadataUris": ["xyz789"]
}

NftOnChain

Fields
Field Name Description
coinId - String! Our primary key, the hex-encoded coin ID of the NFT
id - ID!
launcherId - String! The hex-encoded launcher ID of the NFT
metadata - NftMetadata The parsed blockchain metadata of the NFT
ownerAddress - String The Bech32m address of the NFT owner
royaltyAddress - String! The Bech32m address of the NFT royalty receiver
royaltyPercentage - Int! The royalty percentage of the NFT expressed as basis points
Example
{
  "coinId": "xyz789",
  "id": "4",
  "launcherId": "xyz789",
  "metadata": NftMetadata,
  "ownerAddress": "abc123",
  "royaltyAddress": "abc123",
  "royaltyPercentage": 987
}

NftsSortKey

Description

The set of valid sort keys for the nfts query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

Node

NotifyVaultConfigTemplateSignerInput

Fields
Input Field Description
vaultConfigTemplateSignerId - ID! ID of the vault config template signer to send a notification for
Example
{"vaultConfigTemplateSignerId": 4}

NotifyVaultConfigTemplateSignerPayload

Fields
Field Name Description
vaultConfigTemplateSigner - VaultConfigTemplateOtherSigner
Example
{
  "vaultConfigTemplateSigner": VaultConfigTemplateOtherSigner
}

OAuthScope

Fields
Field Name Description
category - String! Category used to group related permissions.
creationResourceTypes - [AuthorizationResourceType!]! Resource types this permission may create.
description - String! User-facing description of the permission.
id - ID! Stable permission identifier.
resourceGrantNotRequired - Boolean! Whether consent can grant this permission without selecting a resource.
resourceType - AuthorizationResourceType! Resource type to which the permission applies.
scope - String! Permission name requested during OAuth consent.
Example
{
  "category": "xyz789",
  "creationResourceTypes": ["CONTACT"],
  "description": "abc123",
  "id": 4,
  "resourceGrantNotRequired": true,
  "resourceType": "CONTACT",
  "scope": "xyz789"
}

OfferAsset

Fields
Field Name Description
amount - BigInt! The amount of the offer asset, excluding the royalty
asset - Asset!
id - ID!
royalty - BigInt! The royalty to be paid in addition to the amount
type - String!
Example
{
  "amount": {},
  "asset": Asset,
  "id": "4",
  "royalty": {},
  "type": "xyz789"
}

OfferAssetsSortKey

Description

The set of valid sort keys for the OfferAssetsSortKey query.

Values
Enum Value Description

CREATED_AT

ID

Example
"CREATED_AT"

OfferDetails

Fields
Field Name Description
assets - [SignatureRequestOfferAsset!]! The assets that are associated with this offer.
expiresAt - DateTime The date and time when the offer expires
fee - BigInt! The fee that is associated with this offer
nfts - [OfferNft!]! The NFTs that are associated with this offer.
Example
{
  "assets": [SignatureRequestOfferAsset],
  "expiresAt": "2007-12-03T10:15:30Z",
  "fee": {},
  "nfts": [OfferNft]
}

OfferInterface

Fields
Field Name Description
bech32 - String!
createdAt - String! The date and time when the offer was created
creatorIncludedFee - BigInt The fee included by the offer creator
expiresAt - DateTime
spendBundle - String!
state - String
Possible Types
OfferInterface Types

WalletOffer

Example
{
  "bech32": "xyz789",
  "createdAt": "abc123",
  "creatorIncludedFee": {},
  "expiresAt": "2007-12-03T10:15:30Z",
  "spendBundle": "xyz789",
  "state": "xyz789"
}

OfferNft

Fields
Field Name Description
id - ID!
nft - NftOnChain The NFT
nftId - Bytea! The launcher id of the NFT
type - String!
Example
{
  "id": 4,
  "nft": NftOnChain,
  "nftId": Bytea,
  "type": "abc123"
}

OfferNftsSortKey

Description

The set of valid sort keys for the OfferNftsSortKey query.

Values
Enum Value Description

ID

Example
"ID"

OfferSettlementType

Description

The set of valid settlement types for the Offer.

Values
Enum Value Description

CANCELLED

CONFIRMED

PENDING_CANCELLATION

PENDING_CONFIRMATION

TAKEN_BY_OTHERS

UNSIGNED

Example
"CANCELLED"

OfferState

Description

The set of valid states for an Offer.

Values
Enum Value Description

EXPIRED

INVALID

MEMPOOL

OPEN

PENDING

RE_ORG

SETTLED

Example
"EXPIRED"

Organization

Fields
Field Name Description
canViewerCreateApiKeys - Boolean! Whether the viewer can create API keys for members of this organization.
canViewerCreateUsers - Boolean! Whether the viewer can add users to this organization. Requires the user management feature on the organization.
canViewerDelete - Boolean!
canViewerReadOAuthClients - Boolean! Whether the viewer can list this organization's OAuth app registrations.
canViewerReadRecoveryReviews - Boolean! Whether the viewer can review vault recoveries assigned to this organization as a recovery provider.
canViewerReadUsers - Boolean! Whether the viewer can review this organization's users. True for platform user readers, and for organization admins when the organization has the user management feature.
canViewerUpdate - Boolean!
canViewerWriteOAuthClients - Boolean! Whether the viewer can create and update this organization's OAuth app registrations.
contacts - OrganizationContactsConnection! The contacts that are associated with this organization
Arguments
after - String
before - String
first - Int
last - Int
sortKey - ContactsSortKey
createdAt - String!
featureFlags - [FeatureFlag!]! Which feature flags and their limits are enabled for this organization
grantableOAuthScopes - [String!]!
Arguments
requestedScopes - [String!]!
id - ID!
name - String The name of the organization
plan - Plan! The plan that this organization is subscribed to
recoveryProviders - [RecoveryProviderPublic!]! The recovery providers that are enabled for this organization
sessionDuration - Int The duration in milliseconds after which the user's sessions will expire due to inactivity
updatedAt - String!
userAuthKeys - OrganizationUserAuthKeysConnection! The user auth keys (API keys) from all users in this organization
Arguments
after - String
before - String
first - Int
last - Int
query - String
users - OrganizationUsersConnection!
Arguments
after - String
before - String
first - Int
last - Int
sortKey - UsersSortKey
Example
{
  "canViewerCreateApiKeys": false,
  "canViewerCreateUsers": false,
  "canViewerDelete": false,
  "canViewerReadOAuthClients": true,
  "canViewerReadRecoveryReviews": true,
  "canViewerReadUsers": false,
  "canViewerUpdate": true,
  "canViewerWriteOAuthClients": true,
  "contacts": OrganizationContactsConnection,
  "createdAt": "abc123",
  "featureFlags": [FeatureFlag],
  "grantableOAuthScopes": ["abc123"],
  "id": 4,
  "name": "abc123",
  "plan": Plan,
  "recoveryProviders": [RecoveryProviderPublic],
  "sessionDuration": 987,
  "updatedAt": "xyz789",
  "userAuthKeys": OrganizationUserAuthKeysConnection,
  "users": OrganizationUsersConnection
}

OrganizationContactsConnection

Fields
Field Name Description
edges - [OrganizationContactsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [OrganizationContactsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

OrganizationContactsConnectionEdge

Fields
Field Name Description
cursor - String!
node - Contact!
Example
{
  "cursor": "abc123",
  "node": Contact
}

OrganizationUserAuthKeysConnection

Fields
Field Name Description
edges - [OrganizationUserAuthKeysConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [OrganizationUserAuthKeysConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

OrganizationUserAuthKeysConnectionEdge

Fields
Field Name Description
cursor - String!
node - UserAuthKey!
Example
{
  "cursor": "abc123",
  "node": UserAuthKey
}

OrganizationUsersConnection

Fields
Field Name Description
edges - [OrganizationUsersConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [OrganizationUsersConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

OrganizationUsersConnectionEdge

Fields
Field Name Description
cursor - String!
node - User!
Example
{
  "cursor": "xyz789",
  "node": User
}

P2ClawbackDetails

Description

Metadata for a p2 clawback puzzle used by an input coin, exposed for clear signing

Fields
Field Name Description
amount - BigInt! The amount the clawback puzzle is committed to
hinted - Boolean! Whether the clawback puzzle is hinted (true for CAT/NFT clawbacks, false for plain XCH clawbacks)
receiverPuzzleHash - Bytea! The puzzle hash of the clawback receiver
seconds - BigInt! The unix timestamp (in seconds) at which the clawback expires
senderPuzzleHash - Bytea! The puzzle hash of the clawback sender
Example
{
  "amount": {},
  "hinted": false,
  "receiverPuzzleHash": Bytea,
  "seconds": {},
  "senderPuzzleHash": Bytea
}

P2ConditionsOrSingletonDetails

Description

Metadata for a p2 conditions-or-singleton puzzle referenced by this signature request, exposed for clear signing

Fields
Field Name Description
fixedConditionsHash - Bytea! The tree hash of the puzzle's fixed path, which commits to the fixed conditions in the format of its version
launcherId - Bytea! The launcher ID of the singleton authorized to spend this puzzle
nonce - Int! The nonce (address index) of the derived address
version - P2ConditionsOrSingletonVersion! The version of this puzzle. The launcher ID, nonce and fixed conditions hash give its puzzle hash in either version, so the version is informational for clear signing.
Example
{
  "fixedConditionsHash": Bytea,
  "launcherId": Bytea,
  "nonce": 987,
  "version": "FIXED_PUZZLE_MEMBER"
}

P2ConditionsOrSingletonVersion

Description

The version of a p2 conditions-or-singleton puzzle, which determines the format of its fixed path's member.

Values
Enum Value Description

FIXED_PUZZLE_MEMBER

LEGACY

Example
"FIXED_PUZZLE_MEMBER"

P2PuzzleType

Description

The set of valid p2 puzzle types.

Values
Enum Value Description

CLAWBACK_V2

P2_CONDITIONS_OR_SINGLETON

P2_DELEGATED

P2_DELEGATED_OR_HIDDEN

P2_SINGLETON

UNKNOWN

Example
"CLAWBACK_V2"

PageInfo

Fields
Field Name Description
endCursor - String
hasNextPage - Boolean!
hasPreviousPage - Boolean!
startCursor - String
Example
{
  "endCursor": "xyz789",
  "hasNextPage": true,
  "hasPreviousPage": false,
  "startCursor": "abc123"
}

Passkey

Fields
Field Name Description
aaguid - String AAGUID used for provider display/labeling. Set from the authenticator at registration (self-asserted) and editable via updatePasskey. For display only — not verified.
archivedAt - String The date and time when the login key was archived (soft-deleted), if applicable
createdAt - String! The date and time when the passkey was created
id - ID!
name - String The name of the passkey
provider - PasskeyProvider! The authenticator provider (name + icon) resolved from aaguid. Resolves to "Unknown" when aaguid is unset or unrecognized. For display only.
publicKey - Bytea! The public key of the passkey
purposes - [PasskeyPurpose!]! The purposes the passkey can be used for
user - User The user that owns the passkey
webAuthnUserId - String! The WebAuthn user handle for this passkey
Example
{
  "aaguid": "abc123",
  "archivedAt": "xyz789",
  "createdAt": "abc123",
  "id": "4",
  "name": "xyz789",
  "provider": PasskeyProvider,
  "publicKey": Bytea,
  "purposes": ["LOGIN"],
  "user": User,
  "webAuthnUserId": "xyz789"
}

PasskeyCounts

Description

Passkey counts grouped by login archive state and active vault usage

Fields
Field Name Description
fullyArchived - Int! Passkeys without active login or vault access
inactive - Int! Unarchived passkeys without effective login access because the user is inactive
loginAndVault - Int! Passkeys with active login access and an active vault role
loginOnly - Int! Passkeys with active login access and no active vault role
vaultOnly - Int! Passkeys without login access that remain active on a vault
Example
{
  "fullyArchived": 987,
  "inactive": 987,
  "loginAndVault": 987,
  "loginOnly": 123,
  "vaultOnly": 123
}

PasskeyProvider

Description

The authenticator provider a passkey was created with, resolved from its self-asserted AAGUID. For display only.

Fields
Field Name Description
icon - String Public path to the provider icon (served from the web app public folder), or null if unavailable. Icons with distinct light/dark variants contain a "{theme}" placeholder in the path (e.g. "/passkey-providers/-{theme}.svg") which the client replaces with "light" or "dark"; theme-agnostic icons have no placeholder and are used as-is.
name - String! The human-readable provider name, or "Unknown" when the AAGUID is missing or unrecognised
Example
{
  "icon": "abc123",
  "name": "abc123"
}

PasskeyPurpose

Description

The intended use for a passkey credential.

Values
Enum Value Description

LOGIN

RECOVERY

SPEND

Example
"LOGIN"

PasskeysSortKey

Description

The set of valid sort keys for the Passkeys query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

PaymentMethodUserLimit

Fields
Field Name Description
currentTier - PurchaseLimitTier The current purchase limit tier assigned to this payment method
fingerprint - String! Stripe fingerprint string for the payment method
hasDispute - Boolean! Whether this payment method fingerprint has been flagged due to a dispute
id - ID!
paymentMethodType - String! Payment method type (e.g., "us_bank_account", "card")
qualifyingTransactionsInTier - Int! Number of transactions in the current tier that meet all progression criteria
remainingTransactionsToProgress - Int! Number of additional qualifying transactions needed to progress to the next tier
Example
{
  "currentTier": PurchaseLimitTier,
  "fingerprint": "xyz789",
  "hasDispute": true,
  "id": 4,
  "paymentMethodType": "abc123",
  "qualifyingTransactionsInTier": 987,
  "remainingTransactionsToProgress": 123
}

Plan

Fields
Field Name Description
featureFlags - [FeatureFlag!]! Feature flags included in this plan
id - ID!
maxAssetCount - Int Maximum number of assets allowed
maxVaultCount - Int Maximum number of vaults allowed
name - String!
Example
{
  "featureFlags": [FeatureFlag],
  "id": "4",
  "maxAssetCount": 987,
  "maxVaultCount": 987,
  "name": "xyz789"
}

Platform

Description

Mobile platform for signer app push notifications

Values
Enum Value Description

ANDROID

IOS

Example
"ANDROID"

PlatformPermission

Description

A permission granted on the platform as a whole, such as reading every buy order

Values
Enum Value Description

PLATFORM_ANNOUNCEMENT_DELETE

PLATFORM_ANNOUNCEMENT_READ

PLATFORM_ANNOUNCEMENT_WRITE

PLATFORM_ASSET_WRITE

PLATFORM_BROADCAST_MESSAGE_READ

PLATFORM_BROADCAST_MESSAGE_WRITE

PLATFORM_BUY_ORDER_ACTION

PLATFORM_BUY_ORDER_EXPORT

PLATFORM_BUY_ORDER_READ

PLATFORM_FEATURE_FLAG_READ

PLATFORM_FEATURE_FLAG_WRITE

PLATFORM_HOT_WALLET_READ

PLATFORM_HOT_WALLET_WRITE

PLATFORM_OAUTH_CLIENT_CREATE

PLATFORM_OAUTH_CLIENT_DELETE

PLATFORM_OAUTH_CLIENT_READ

PLATFORM_OAUTH_CLIENT_REVIEW_READ

PLATFORM_OAUTH_CLIENT_REVIEW_WRITE

PLATFORM_OAUTH_CLIENT_WRITE

PLATFORM_ORGANIZATION_DELETE

PLATFORM_ORGANIZATION_READ

PLATFORM_ORGANIZATION_WRITE

PLATFORM_PLAN_READ

PLATFORM_PLAN_WRITE

PLATFORM_PURCHASE_LIMIT_DELETE

PLATFORM_PURCHASE_LIMIT_READ

PLATFORM_PURCHASE_LIMIT_WRITE

PLATFORM_RECOVERY_PROVIDER_DELETE

PLATFORM_RECOVERY_PROVIDER_READ

PLATFORM_RECOVERY_PROVIDER_WRITE

PLATFORM_SUBSCRIPTION_DELETE

PLATFORM_SUBSCRIPTION_READ

PLATFORM_SUBSCRIPTION_WRITE

PLATFORM_SUPPORT_READ

PLATFORM_SUPPORT_WRITE

PLATFORM_USER_DEACTIVATE

PLATFORM_USER_DELETE

PLATFORM_USER_PAYMENT_METHOD_READ

PLATFORM_USER_PAYMENT_METHOD_UPDATE

PLATFORM_USER_READ

PLATFORM_USER_WRITE

Example
"PLATFORM_ANNOUNCEMENT_DELETE"

PublicKey

Fields
Field Name Description
createdAt - String!
curve - Curve!
id - ID!
publicKey - Bytea!
updatedAt - String!
Example
{
  "createdAt": "xyz789",
  "curve": "BLS12_381",
  "id": 4,
  "publicKey": Bytea,
  "updatedAt": "xyz789"
}

PublicKeysSortKey

Description

The set of valid sort keys for the PublicKeys query.

Values
Enum Value Description

CREATED_AT

PUBLIC_KEY

Example
"CREATED_AT"

PublicKeyWithType

Fields
Input Field Description
keyType - KeyType!
publicKeyId - ID!
Example
{"keyType": "APP", "publicKeyId": 4}

PurchaseLimitTier

Fields
Field Name Description
autoFinalizeEnabled - Boolean! Whether transactions in this tier should auto-finalize
autoFinalizeThresholdAmountUsd - Int Threshold amount in USD below which transactions auto-finalize
clawbackDays - Int! Number of days for the clawback period in this tier
createdAt - String! The date and time when the tier was created
id - ID!
isActive - Boolean! Whether this tier is currently active and available
limitAmountUsd - Int! Maximum purchase amount in USD for this tier
minTransactionValuePercent - Int Minimum % of tier limit that a transaction must be to count towards progression
name - String! The name of the tier (e.g., "Starter", "Bronze")
order - Int! The order of the tier for display and progression (1 = first tier)
postCompletionDelayDays - Int Number of days to wait after completion before counting a transaction towards progression
requiredCompletedCount - Int! Number of completed purchases required to progress to next tier
requiredTimeInPreviousTierDays - Int Number of days required in the previous tier before progression
updatedAt - String! The date and time when the tier was last updated
Example
{
  "autoFinalizeEnabled": false,
  "autoFinalizeThresholdAmountUsd": 987,
  "clawbackDays": 987,
  "createdAt": "abc123",
  "id": "4",
  "isActive": true,
  "limitAmountUsd": 123,
  "minTransactionValuePercent": 123,
  "name": "abc123",
  "order": 123,
  "postCompletionDelayDays": 987,
  "requiredCompletedCount": 987,
  "requiredTimeInPreviousTierDays": 123,
  "updatedAt": "abc123"
}

PurchaseProgramState

Description

The state of the XCH purchase program

Values
Enum Value Description

HALTED

OPERATIONAL

Example
"HALTED"

PuzzleHash

Fields
Field Name Description
address - String! Address associated with the puzzleHash
publicKey - PublicKey!
puzzleHash - Bytea! The puzzleHash
type - P2PuzzleType! The p2 puzzle type for this puzzle hash.
Example
{
  "address": "abc123",
  "publicKey": PublicKey,
  "puzzleHash": Bytea,
  "type": "CLAWBACK_V2"
}

PuzzleHashesSortKey

Description

The set of valid sort keys for the PuzzleHashes query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

QueryAvailablePlatformSubscriptionsConnection

Fields
Field Name Description
edges - [QueryAvailablePlatformSubscriptionsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [
    QueryAvailablePlatformSubscriptionsConnectionEdge
  ],
  "pageInfo": PageInfo,
  "totalCount": 123
}

QueryAvailablePlatformSubscriptionsConnectionEdge

Fields
Field Name Description
cursor - String!
node - AvailablePlatformSubscription!
Example
{
  "cursor": "xyz789",
  "node": AvailablePlatformSubscription
}

QueryCoinsConnection

Fields
Field Name Description
edges - [QueryCoinsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [QueryCoinsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

QueryCoinsConnectionEdge

Fields
Field Name Description
cursor - String!
node - CoinRecord!
Example
{
  "cursor": "xyz789",
  "node": CoinRecord
}

QueryOauthScopesConnection

Fields
Field Name Description
edges - [QueryOauthScopesConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [QueryOauthScopesConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

QueryOAuthScopesConnection

Fields
Field Name Description
edges - [QueryOAuthScopesConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [QueryOAuthScopesConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

QueryOauthScopesConnectionEdge

Fields
Field Name Description
cursor - String!
node - OAuthScope!
Example
{
  "cursor": "abc123",
  "node": OAuthScope
}

QueryOAuthScopesConnectionEdge

Fields
Field Name Description
cursor - String!
node - OAuthScope!
Example
{
  "cursor": "xyz789",
  "node": OAuthScope
}

QueryVaultRecoveryReviewsConnection

Fields
Field Name Description
edges - [QueryVaultRecoveryReviewsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [QueryVaultRecoveryReviewsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

QueryVaultRecoveryReviewsConnectionEdge

Fields
Field Name Description
cursor - String!
node - VaultRecoveryReview!
Example
{
  "cursor": "xyz789",
  "node": VaultRecoveryReview
}

RecipientAddressActivityStatus

Description

Whether an address has prior on-chain activity

Values
Enum Value Description

UNAVAILABLE

UNUSED

USED

Example
"UNAVAILABLE"

RecipientHistory

Fields
Field Name Description
addressActivityStatus - RecipientAddressActivityStatus! Whether the address has prior on-chain activity, or the lookup was unavailable.
hasSentBefore - Boolean! Whether this wallet has a settled outbound payment to the address.
lastSentAt - DateTime Creation time of the latest settled outbound payment to the address.
Example
{
  "addressActivityStatus": "UNAVAILABLE",
  "hasSentBefore": true,
  "lastSentAt": "2007-12-03T10:15:30Z"
}

RecoveryDetails

Fields
Field Name Description
reason - String The reason provided for the recovery
recoveryKeyType - String The type of the new recovery key
recoveryMethod - String! The recovery method used (INSTANT or DELAYED)
spendKeyType - String! The type of the new spend key
timelockSeconds - Int! The recovery clawback timelock in seconds
vaultId - String! ID of the vault being recovered
vaultName - String Name of the vault being recovered
Example
{
  "reason": "abc123",
  "recoveryKeyType": "xyz789",
  "recoveryMethod": "xyz789",
  "spendKeyType": "abc123",
  "timelockSeconds": 123,
  "vaultId": "xyz789",
  "vaultName": "abc123"
}

RecoveryEligibility

Description

Whether a vault recovery can currently be initiated.

Fields
Field Name Description
eligible - Boolean! Whether a vault recovery can currently be initiated
message - String Human-readable explanation of why recovery cannot currently be initiated
title - String User-facing title explaining why recovery cannot currently be initiated
Example
{
  "eligible": false,
  "message": "abc123",
  "title": "xyz789"
}

RecoveryMethod

Values
Enum Value Description

DELAYED

Uses recovery keys, with timelock

INSTANT

Uses custody keys, no timelock
Example
"DELAYED"

RecoveryProvider

Fields
Field Name Description
createdAt - String! The date and time when the recovery provider was created
emails - [String!]!
enabled - Boolean! Whether the recovery provider is enabled and available for selection
id - ID!
isInUse - Boolean! Whether the recovery provider is in use
name - String!
thumbnail - String! Thumbnail image, currently disabled
thumbnailMimeType - String MIME type of the thumbnail, currently disabled
updatedAt - String! The date and time when the recovery provider was last updated
vaultAddress - PuzzleHash The address of the recovery provider
Example
{
  "createdAt": "abc123",
  "emails": ["abc123"],
  "enabled": true,
  "id": 4,
  "isInUse": false,
  "name": "xyz789",
  "thumbnail": "abc123",
  "thumbnailMimeType": "abc123",
  "updatedAt": "abc123",
  "vaultAddress": PuzzleHash
}

RecoveryProviderCommon

Description

Common interface for recovery provider types

Fields
Field Name Description
id - ID! The unique identifier of the recovery provider
name - String! The name of the recovery provider
thumbnail - String! The thumbnail image of the recovery provider, currently disabled
Possible Types
RecoveryProviderCommon Types

RecoveryProvider

RecoveryProviderPublic

Example
{
  "id": 4,
  "name": "abc123",
  "thumbnail": "abc123"
}

RecoveryProviderPublic

Description

Public recovery provider information for selection during vault creation

Fields
Field Name Description
id - ID!
name - String! The name of the recovery provider
thumbnail - String! The thumbnail image of the recovery provider, currently disabled
Example
{
  "id": "4",
  "name": "xyz789",
  "thumbnail": "xyz789"
}

RejectVaultRecoveryReviewInput

Fields
Input Field Description
rejectionReason - String! Non-empty reason for rejecting the recovery request.
reviewId - ID! ID of the recovery review to reject
Example
{"rejectionReason": "abc123", "reviewId": 4}

RejectVaultRecoveryReviewPayload

Fields
Field Name Description
vaultRecoveryReview - VaultRecoveryReview! The rejected recovery review
Example
{"vaultRecoveryReview": VaultRecoveryReview}

RemoveContactAddressInput

Fields
Input Field Description
contactAddressId - ID! The blockchain address ID to remove from the contact
contactId - ID! ID of the contact
Example
{"contactAddressId": 4, "contactId": "4"}

RemoveContactAddressPayload

Fields
Field Name Description
success - Boolean! Indicates whether the removal was successful
Example
{"success": true}

RemoveContactEmailInput

Fields
Input Field Description
contactEmailId - ID! ID of the email associated to the contact
contactId - ID! ID of the contact
Example
{"contactEmailId": "4", "contactId": 4}

RemoveContactEmailPayload

Fields
Field Name Description
success - Boolean! Indicates whether the removal was successful
Example
{"success": true}

RemovePublicKeysFromSignerInput

Fields
Input Field Description
keys - [Key!]! Public keys to remove from signer
signerId - ID! ID of signer to remove public keys from
Example
{"keys": [Key], "signerId": 4}

RemovePublicKeysFromSignerPayload

Fields
Field Name Description
success - Boolean! Whether public keys where successfully removed from signer or not
Example
{"success": false}

RemoveSignersFromWalletInput

Fields
Input Field Description
signerIds - [ID!]! Signer global IDs in Signer_<cuid> format.
walletId - ID! Wallet global ID in Wallet_<cuid> format.
Example
{"signerIds": [4], "walletId": 4}

RemoveSignersFromWalletPayload

Fields
Field Name Description
success - Boolean!
Example
{"success": false}

RemoveSubscriptionFromWalletInput

Fields
Input Field Description
walletSubscriptionId - ID!
Example
{"walletSubscriptionId": 4}

RemoveSubscriptionFromWalletPayload

Fields
Field Name Description
wallet - Wallet!
Example
{"wallet": Wallet}

RemoveTopicFromSubscriptionInput

Fields
Input Field Description
deleteTopic - Boolean When true, also deletes the subscription topic definition (not just the user link). Default = false
walletId - ID!
walletSubscriptionTopicId - ID!
Example
{"deleteTopic": false, "walletId": 4, "walletSubscriptionTopicId": 4}

RemoveTopicFromSubscriptionPayload

Fields
Field Name Description
walletSubscription - WalletSubscription!
Example
{"walletSubscription": WalletSubscription}

RequestSignerAppVerificationTokenPayload

Fields
Field Name Description
token - String! The token to be used to link the Chia Signer App.
Example
{"token": "abc123"}

ResendSignatureRequestInput

Fields
Input Field Description
signatureRequestId - ID!
Example
{"signatureRequestId": 4}

ResendSignatureRequestPayload

Fields
Field Name Description
signatureRequest - SignatureRequest!
Example
{"signatureRequest": SignatureRequest}

RestoreVaultFromChainInput

Fields
Input Field Description
launcherId - String! The launcher ID of the vault singleton, as 32 bytes of hex with an optional 0x prefix
name - String! The name for the restored wallet (2-50 characters)
proof - VaultKeyProofInput! Proof that the viewer controls a custody or recovery key of the vault
Example
{
  "launcherId": "xyz789",
  "name": "abc123",
  "proof": VaultKeyProofInput
}

RestoreVaultFromChainPayload

Fields
Field Name Description
wallet - Wallet The restored wallet, or null if restoration failed
Example
{"wallet": Wallet}

RestoreVaultFromConfigInput

Fields
Input Field Description
configJson - String! The vault configuration JSON string exported from vaultConfigDownload
name - String! The name for the restored wallet (2-50 characters)
proof - VaultKeyProofInput! Proof that the viewer controls a custody or recovery key of the vault in the configuration
Example
{
  "configJson": "xyz789",
  "name": "xyz789",
  "proof": VaultKeyProofInput
}

RestoreVaultFromConfigPayload

Fields
Field Name Description
wallet - Wallet The restored wallet, or null if restoration failed
Example
{"wallet": Wallet}

RevokeAssetInput

Fields
Input Field Description
addressToRevoke - String Holder bech32m address to revoke from. Do not combine with coinIdsToRevoke.
amount - BigInt Amount in CAT mojos. Supported only with addressToRevoke; any change returns to the original holder.
assetHash - String! 64-character lowercase hex CAT tail hash. Do not use an internal Asset ID.
autoSubmit - Boolean! Submit automatically after all required signatures are collected. Default = true
coinIdsToRevoke - [ID!] Coin global IDs in CoinRecord_<hex> format. Do not combine with addressToRevoke.
fee - BigInt! Blockchain fee in XCH mojos. Default = 0
melt - Boolean Destroy the revoked tokens instead of sending them to targetAddress.
memos - [String!] Memos provided with transaction
targetAddress - String Bech32m destination for revoked tokens. Required unless melt is true.
walletId - ID! Vault wallet global ID in Wallet_<cuid> format.
Example
{
  "addressToRevoke": "xyz789",
  "amount": {},
  "assetHash": "abc123",
  "autoSubmit": true,
  "coinIdsToRevoke": ["4"],
  "fee": {},
  "melt": false,
  "memos": ["abc123"],
  "targetAddress": "xyz789",
  "walletId": "4"
}

RevokeAssetPayload

Fields
Field Name Description
asset - Asset
outstandingBatches - Int! The number of batches that need to be revoked to fully revoke the asset. If 0, the asset has been fully revoked.
signatureRequest - SignatureRequest!
Example
{
  "asset": Asset,
  "outstandingBatches": 987,
  "signatureRequest": SignatureRequest
}

SavedSnapshot

Fields
Field Name Description
asset - Asset! CAT asset captured by the saved snapshot.
createdAt - String! ISO 8601 timestamp when the saved snapshot was created.
id - ID!
name - String Optional name assigned to the saved snapshot.
snapshot - Snapshot! The snapshot that was saved
Example
{
  "asset": Asset,
  "createdAt": "xyz789",
  "id": "4",
  "name": "abc123",
  "snapshot": Snapshot
}

SavedSnapshotsInput

Fields
Input Field Description
assetHash - String! 64-character lowercase hex CAT tail hash.
Example
{"assetHash": "abc123"}

SaveSnapshotInput

Fields
Input Field Description
assetHash - String!
headerHash - String!
name - String!
Example
{
  "assetHash": "xyz789",
  "headerHash": "abc123",
  "name": "xyz789"
}

SaveSnapshotPayload

Fields
Field Name Description
savedSnapshot - SavedSnapshot!
Example
{"savedSnapshot": SavedSnapshot}

SecureTheBagAirdropConfigInput

Fields
Input Field Description
leafWidth - Int
Example
{"leafWidth": 123}

SetVaultAddressLabelInput

Fields
Input Field Description
addressIndex - Int! Vault address derivation index to label
label - String Label to set. Pass null to clear it; omitting this field is an error.
walletId - ID! Vault wallet global ID in Wallet_<cuid> format.
Example
{
  "addressIndex": 123,
  "label": "abc123",
  "walletId": 4
}

SetVaultAddressLabelPayload

Fields
Field Name Description
vaultAddress - VaultAddress! Vault address with updated label
Example
{"vaultAddress": VaultAddress}

SignaturePayload

Fields
Field Name Description
curve - Curve!
message - Bytea!
publicKey - Bytea!
Example
{
  "curve": "BLS12_381",
  "message": Bytea,
  "publicKey": Bytea
}

SignatureRequest

Fields
Field Name Description
autoSubmit - Boolean! Whether the request should automatically submit after signing
broadcastMessageDetails - BroadcastMessageDetails Detailed information about broadcast message operation
clearSigningDetails - ClearSigningDetails! Additional clear-signing data that allows a signer to securely verify a signature request
coinSpends - [CoinSpend!] The coin spends associated with the transaction
combineDetails - CombineDetails Detailed information about coin combine operation
createdAt - String! The date and time when the wallet transaction was created
details - JSON!
displayCloudWalletSigningPrompt - Boolean! Whether Cloud Wallet web should automatically show the signing prompt
id - ID!
melt - Boolean Whether this is a melt operation
messages - [SignaturePayload!]!
offerDetails - OfferDetails
recoveryDetails - RecoveryDetails Detailed information about vault recovery operation
requestId - String
splitDetails - SplitDetails Detailed information about coin split operation
status - String!
transaction - WalletTransaction! The wallet transaction associated with the signature request
updatedAt - String! The date and time when the wallet transaction was last updated
vault - Vault The vault information to securely parse a transaction
wallet - Wallet! The wallet associated with the wallet transaction
Example
{
  "autoSubmit": false,
  "broadcastMessageDetails": BroadcastMessageDetails,
  "clearSigningDetails": ClearSigningDetails,
  "coinSpends": [CoinSpend],
  "combineDetails": CombineDetails,
  "createdAt": "abc123",
  "details": {},
  "displayCloudWalletSigningPrompt": false,
  "id": "4",
  "melt": false,
  "messages": [SignaturePayload],
  "offerDetails": OfferDetails,
  "recoveryDetails": RecoveryDetails,
  "requestId": "xyz789",
  "splitDetails": SplitDetails,
  "status": "abc123",
  "transaction": WalletTransaction,
  "updatedAt": "abc123",
  "vault": Vault,
  "wallet": Wallet
}

SignatureRequestCreatedPayload

Fields
Field Name Description
signatureRequest - SignatureRequest!
Example
{"signatureRequest": SignatureRequest}

SignatureRequestOfferAsset

Fields
Field Name Description
amount - BigInt! The amount of the offer asset, excluding the royalty
asset - Asset!
id - ID! Use asset.assetHash to identify the asset.
royalty - BigInt! The royalty to be paid in addition to the amount
type - String!
Example
{
  "amount": {},
  "asset": Asset,
  "id": "4",
  "royalty": {},
  "type": "abc123"
}

SignatureRequestStatus

Description

The set of valid signature request status keys.

Values
Enum Value Description

AWAITING_REVIEW

CANCELLED

PROCESSING

SIGNED

SUBMITTED

UNSIGNED

Example
"AWAITING_REVIEW"

SignatureRequestUpdatedPayload

Fields
Field Name Description
signatureRequest - SignatureRequest!
Example
{"signatureRequest": SignatureRequest}

Signer

Description

A Signer represents an entity that can authenticate and authorize transactions in the system. It is associated with a group of public keys, which are used to verify the signatures on transactions.

Fields
Field Name Description
canViewerDelete - Boolean! Whether viewer can delete signer or not
canViewerUpdate - Boolean! Whether viewer can update signer or not
createdAt - String!
grantableOAuthScopes - [String!]!
Arguments
requestedScopes - [String!]!
id - ID!
name - String Name of signer
network - Network! Network associated with signer
publicKeys - SignerPublicKeysConnection! Public keys associated with signer
Arguments
after - String
before - String
first - Int
keys - [Key!]
last - Int
sortKey - PublicKeysSortKey
signerPublicKeys - SignerSignerPublicKeysConnection! Public keys associated with signer
Arguments
after - String
before - String
first - Int
last - Int
updatedAt - String!
user - User! User associated with signer
Example
{
  "canViewerDelete": false,
  "canViewerUpdate": false,
  "createdAt": "abc123",
  "grantableOAuthScopes": ["abc123"],
  "id": 4,
  "name": "abc123",
  "network": Network,
  "publicKeys": SignerPublicKeysConnection,
  "signerPublicKeys": SignerSignerPublicKeysConnection,
  "updatedAt": "abc123",
  "user": User
}

SignerAppAuthKey

Fields
Field Name Description
createdAt - String! The date and time when the key was created
expiresAt - String! The date and time when the key will expire
id - ID!
privateKey - String The private key (will only be returned when creating a new key). It's not stored in the database.
publicKey - String! The public key
signerAppId - String! The signerAppId that bound this signerAppAuthKey
updatedAt - String! The date and time when the key was last updated
Example
{
  "createdAt": "abc123",
  "expiresAt": "abc123",
  "id": 4,
  "privateKey": "abc123",
  "publicKey": "xyz789",
  "signerAppId": "xyz789",
  "updatedAt": "abc123"
}

SignerAppKey

Fields
Field Name Description
createdAt - String! The date and time when the Chia Signer App key was created
id - ID!
keyType - KeyType Inferred hardware (APP) or software (APP_SOFTWARE) type from any vault custody/recovery signer (active or replaced) that uses this public key. Independent of the active roles reported by purposes.
name - String The name of the Chia Signer App key
platform - Platform Mobile platform for the signer app associated with this key
publicKey - Bytea! Public key associated with Chia Signer App
purposes - [PasskeyPurpose!]! The vault-signer roles (Spend/Recovery) this key currently fills, derived from active vault custody/recovery signers
signerAppId - String! The Chia Signer App identifier used to link this key
Example
{
  "createdAt": "abc123",
  "id": 4,
  "keyType": "APP",
  "name": "xyz789",
  "platform": "ANDROID",
  "publicKey": Bytea,
  "purposes": ["LOGIN"],
  "signerAppId": "xyz789"
}

SignerAppKeyLinkedPayload

Fields
Field Name Description
signerAppKey - SignerAppKey!
token - String!
Example
{
  "signerAppKey": SignerAppKey,
  "token": "abc123"
}

SignerAppKeyTypeFilter

Description

Filters SignerAppKeys by inferred hardware (APP) or software (APP_SOFTWARE) type, or keys with no vault link (UNLINKED).

Values
Enum Value Description

APP

APP_SOFTWARE

UNLINKED

Example
"APP"

SignerAppsSortKey

Description

The set of valid sort keys for the SignerApps query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

SignerInput

Fields
Input Field Description
deduplicateName - Boolean When the owner already has a signer with this name, append the next free counter, such as (2), instead of failing. Meant for generated names.
keys - [Key!]! Public keys to associate with new signer
name - String Name of new signer
Example
{
  "deduplicateName": true,
  "keys": [Key],
  "name": "xyz789"
}

SignerPublicKey

Fields
Field Name Description
createdAt - String!
id - ID!
publicKey - PublicKey! Public keys associated with signer
signer - Signer! Signer which has public keys associated with it
updatedAt - String!
Example
{
  "createdAt": "xyz789",
  "id": 4,
  "publicKey": PublicKey,
  "signer": Signer,
  "updatedAt": "xyz789"
}

SignerPublicKeysConnection

Fields
Field Name Description
edges - [SignerPublicKeysConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [SignerPublicKeysConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

SignerPublicKeysConnectionEdge

Fields
Field Name Description
cursor - String!
node - PublicKey!
Example
{
  "cursor": "xyz789",
  "node": PublicKey
}

SignerPublicKeysSortKey

Description

The set of valid sort keys for the SignerPublicKeys query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

SignerSignerPublicKeysConnection

Fields
Field Name Description
edges - [SignerSignerPublicKeysConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [SignerSignerPublicKeysConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

SignerSignerPublicKeysConnectionEdge

Fields
Field Name Description
cursor - String!
node - SignerPublicKey!
Example
{
  "cursor": "abc123",
  "node": SignerPublicKey
}

SignersSortKey

Description

The set of valid sort keys for the Signers query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

SignerType

Description

The set of valid sort keys for the SignerType query.

Values
Enum Value Description

MIXED_MULTISIG

MULTISIG

SIGNER_APP

VAULT_OF_VAULT

VAULT_OF_VAULTS_MULTISIG

WEBAUTHN

Example
"MIXED_MULTISIG"

SignSignatureRequestInput

Fields
Input Field Description
message - Bytea! Hex-encoded message from the signature request. It must exactly match the requested message.
publicKey - Bytea! Hex-encoded public key from the signature request. It must exactly match the requested public key.
signature - Bytea! Hex-encoded signature over message by publicKey, in the format for the request's curve.
signatureRequestId - ID! Signature request global ID in SignatureRequest_<cuid> format.
Example
{
  "message": Bytea,
  "publicKey": Bytea,
  "signature": Bytea,
  "signatureRequestId": "4"
}

SignSignatureRequestPayload

Fields
Field Name Description
signatureRequest - SignatureRequest!
Example
{"signatureRequest": SignatureRequest}

SingleIssuanceCAT2Config

Fields
Input Field Description
supply - BigInt! Initial and total supply of the single issuance CAT2
Example
{"supply": {}}

Snapshot

Fields
Field Name Description
asset - Asset! CAT asset captured by the snapshot.
createdAt - String! ISO 8601 timestamp when the snapshot row was created.
headerHash - String! Snapshot block header hash as a 64-character hexadecimal string.
id - ID!
result - String Snapshot result encoded as a JSON string.
snapshotTime - String Requested snapshot time as an ISO 8601 string.
Example
{
  "asset": Asset,
  "createdAt": "abc123",
  "headerHash": "abc123",
  "id": 4,
  "result": "xyz789",
  "snapshotTime": "abc123"
}

SnapshotConnectionWrapper

Fields
Field Name Description
asset - Asset!
blockRecord - BlockRecord!
connection - SnapshotConnectionWrapperConnection!
Arguments
after - String
before - String
first - Int
last - Int
Example
{
  "asset": Asset,
  "blockRecord": BlockRecord,
  "connection": SnapshotConnectionWrapperConnection
}

SnapshotConnectionWrapperConnection

Fields
Field Name Description
edges - [SnapshotConnectionWrapperConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [SnapshotConnectionWrapperConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

SnapshotConnectionWrapperConnectionEdge

Fields
Field Name Description
cursor - String!
node - GroupedCoinMetadataResult!
Example
{
  "cursor": "abc123",
  "node": GroupedCoinMetadataResult
}

SnapshotInput

Fields
Input Field Description
assetHash - String! 64-character lowercase hex CAT tail hash.
headerHash - String Optional block header hash as a 64-character hexadecimal string.
snapshotTime - String! ISO 8601 timestamp. The latest block at or before this time is used when headerHash is omitted.
Example
{
  "assetHash": "xyz789",
  "headerHash": "abc123",
  "snapshotTime": "xyz789"
}

SnapshotsInput

Fields
Input Field Description
assetHash - String! 64-character lowercase hex CAT tail hash.
Example
{"assetHash": "abc123"}

Spend

Fields
Field Name Description
puzzle - Bytea!
solution - Bytea!
Example
{"puzzle": Bytea, "solution": Bytea}

SplitCoinsInput

Fields
Input Field Description
amountPerCoin - BigInt! The amount of each newly created coin, in mojos
coinIds - [ID!]! Coin global IDs in CoinRecord_<hex> format. All coins must belong to the wallet and same asset.
fee - BigInt An optional blockchain fee, in mojos
fromAddressIndex - Int Optional vault address derivation index the selected coins belong to. The new coins and any remainder land at that address. Defaults to 0 (primary address).
numberOfCoins - Int! The number of new coins to create, excluding the remainder coin. Minimum 1; maximum 300 for XCH, 100 for CAT, and 80 for revocable CAT.
walletId - ID! The wallet ID for the origin of the transaction
Example
{
  "amountPerCoin": {},
  "coinIds": [4],
  "fee": {},
  "fromAddressIndex": 123,
  "numberOfCoins": 123,
  "walletId": 4
}

SplitCoinsPayload

Fields
Field Name Description
signatureRequest - SignatureRequest! The signature request for the transaction
Example
{"signatureRequest": SignatureRequest}

SplitDetails

Fields
Field Name Description
amountPerCoin - BigInt! Amount for each output coin
inputCoinsCount - Int! Number of input coins
outputCoinsCount - Int! Number of output coins to create
remainderAmount - BigInt! Remainder amount after splitting
totalAmount - BigInt! Total amount of input coins
vaultId - String! ID of the vault
vaultName - String Name of the vault
Example
{
  "amountPerCoin": {},
  "inputCoinsCount": 123,
  "outputCoinsCount": 987,
  "remainderAmount": {},
  "totalAmount": {},
  "vaultId": "abc123",
  "vaultName": "xyz789"
}

StandardCustodyConfig

Fields
Field Name Description
cat2 - Boolean! Whether CAT2 is enabled against this wallet or not
id - ID!
Example
{"cat2": true, "id": 4}

StandardCustodyConfigInput

Fields
Input Field Description
cat2 - Boolean
Example
{"cat2": false}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"xyz789"

StripePaymentMethodType

Description

Type of payment method used (card, us_bank_account)

Values
Enum Value Description

CARD

US_BANK_ACCOUNT

Example
"CARD"

StripePaymentSession

Fields
Field Name Description
bankName - String Name of the linked bank
createdAt - String!
errorCode - String Error code if the session failed
errorMessage - String Error message if the session failed
id - ID!
last4 - String Last 4 digits of the bank account
paymentMethodType - StripePaymentMethodType Type of payment method from Stripe (e.g., card, us_bank_account)
status - StripePaymentSessionStatus! Current state of the payment session
stripePaymentIntentId - String Stripe payment intent ID
updatedAt - String!
user - User!
Example
{
  "bankName": "xyz789",
  "createdAt": "abc123",
  "errorCode": "abc123",
  "errorMessage": "xyz789",
  "id": "4",
  "last4": "xyz789",
  "paymentMethodType": "CARD",
  "status": "CANCELLED",
  "stripePaymentIntentId": "xyz789",
  "updatedAt": "xyz789",
  "user": User
}

StripePaymentSessionStatus

Description

Possible states for a Stripe payment session

Values
Enum Value Description

CANCELLED

COMPLETE

FAILED

PENDING

Example
"CANCELLED"

StripePaymentStatus

Description

Possible states for Stripe payment in buy order

Values
Enum Value Description

CANCELED

ERROR

FAILED

PROCESSING

REQUIRES_ACTION

REQUIRES_CONFIRMATION

REQUIRES_PAYMENT_METHOD

SUCCEEDED

Example
"CANCELED"

SubmitSignatureRequestInput

Fields
Input Field Description
signatureRequestId - ID! Fully signed signature request global ID in SignatureRequest_<cuid> format.
Example
{"signatureRequestId": "4"}

SubmitSignatureRequestPayload

Fields
Field Name Description
signatureRequest - SignatureRequest!
Example
{"signatureRequest": SignatureRequest}

SubscriptionEntity

Fields
Field Name Description
avatarFileName - String Avatar file name of the subscription
canDelete - Boolean! Whether this subscription can be deleted (no active subscribers)
enabled - Boolean! Whether the subscription is enabled and visible to users
id - ID!
name - String Name of the subscription
subscriberCount - Int! Number of wallets subscribed to this subscription
topics - SubscriptionEntityTopicsConnection! Topics associated with the subscription
Arguments
after - String
before - String
first - Int
last - Int
vaultAddress - String Vault receive address derived from the launcher id
vaultLauncherId - String Vault launcher id of the subscription
Example
{
  "avatarFileName": "abc123",
  "canDelete": true,
  "enabled": true,
  "id": 4,
  "name": "abc123",
  "subscriberCount": 987,
  "topics": SubscriptionEntityTopicsConnection,
  "vaultAddress": "abc123",
  "vaultLauncherId": "xyz789"
}

SubscriptionEntityTopicsConnection

Fields
Field Name Description
edges - [SubscriptionEntityTopicsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [SubscriptionEntityTopicsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

SubscriptionEntityTopicsConnectionEdge

Fields
Field Name Description
cursor - String!
node - SubscriptionTopic!
Example
{
  "cursor": "xyz789",
  "node": SubscriptionTopic
}

SubscriptionsSortKey

Description

The set of valid sort keys for the Subscriptions query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

SubscriptionTopic

Fields
Field Name Description
id - ID!
name - String Name of the topic
topic - String Topic path
Example
{
  "id": 4,
  "name": "abc123",
  "topic": "xyz789"
}

SubscriptionTopicsSortKey

Description

The set of valid sort keys for the SubscriptionTopics query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

SupportTicket

Fields
Field Name Description
id - String!
status - SupportTicketStatus!
subject - String!
updatedAt - String!
Example
{
  "id": "xyz789",
  "status": "CLOSED",
  "subject": "xyz789",
  "updatedAt": "xyz789"
}

SupportTicketConnection

Fields
Field Name Description
edges - [SupportTicketEdge!]!
pageInfo - SupportTicketPageInfo!
Example
{
  "edges": [SupportTicketEdge],
  "pageInfo": SupportTicketPageInfo
}

SupportTicketEdge

Fields
Field Name Description
cursor - String!
node - SupportTicket!
Example
{
  "cursor": "xyz789",
  "node": SupportTicket
}

SupportTicketFilterStatus

Values
Enum Value Description

ALL

OPEN

Example
"ALL"

SupportTicketPageInfo

Fields
Field Name Description
endCursor - String
hasNextPage - Boolean!
hasPreviousPage - Boolean!
startCursor - String
Example
{
  "endCursor": "abc123",
  "hasNextPage": false,
  "hasPreviousPage": true,
  "startCursor": "xyz789"
}

SupportTicketStatus

Values
Enum Value Description

CLOSED

HOLD

NEW

OPEN

PENDING

SOLVED

Example
"CLOSED"

TakeOfferInput

Fields
Input Field Description
autoSubmit - Boolean Submit automatically after all required signatures are collected. Default = false
fee - BigInt Blockchain fee in XCH mojos.
fromAddressIndex - Int Optional vault address derivation index to take the offer from. Defaults to 0 (primary address). The coins given, the fee, change, and what the offer pays out all use that address, so an NFT the offer requests must be held there.
offerId - ID! Offer global ID in Offer_<hex> format.
walletId - ID! Wallet global ID in Wallet_<cuid> format.
Example
{
  "autoSubmit": true,
  "fee": {},
  "fromAddressIndex": 123,
  "offerId": "4",
  "walletId": "4"
}

TakeOfferPayload

Fields
Field Name Description
signatureRequest - SignatureRequest!
Example
{"signatureRequest": SignatureRequest}

TierContribution

Description

Whether a purchase contributes to tier progression

Values
Enum Value Description

EXCLUDED

Purchase is excluded from tier progression

INCLUDED

Purchase counts toward tier progression
Example
"EXCLUDED"

TimelineEventStatus

Description

Status of a timeline event (completed, failed, or pending)

Values
Enum Value Description

COMPLETED

FAILED

PENDING

Example
"COMPLETED"

Transaction

Fields
Field Name Description
createdAt - String! Creation date of transaction
fee - BigInt Fee provided as part of transaction
id - ID!
inputs - TransactionInputsConnection! Input coins to the transaction.
Arguments
after - String
before - String
first - Int
last - Int
sortKey - CoinRecordsSortKey
outputs - TransactionOutputsConnection! Output coins from the transaction.
Arguments
after - String
before - String
first - Int
last - Int
sortKey - CoinRecordsSortKey
state - TransactionStateString!
timestamp - String Timestamp of transaction
type - TransactionType Type of transaction
Example
{
  "createdAt": "abc123",
  "fee": {},
  "id": 4,
  "inputs": TransactionInputsConnection,
  "outputs": TransactionOutputsConnection,
  "state": "CLAWED_BACK",
  "timestamp": "abc123",
  "type": "AIRDROP"
}

TransactionCoinRecord

Fields
Field Name Description
amount - BigInt
coinRecord - CoinRecord Coin record associated with transaction
createdAt - String!
id - ID!
type - String
Example
{
  "amount": {},
  "coinRecord": CoinRecord,
  "createdAt": "xyz789",
  "id": "4",
  "type": "xyz789"
}

TransactionDirection

Description

The set of valid directions for a transaction

Values
Enum Value Description

INBOUND

OUTBOUND

Example
"INBOUND"

TransactionInput

Fields
Field Name Description
address - String! The address of the coin record
amount - BigInt! The amount of the coin record
asset - Asset!
id - ID!
name - Bytea! The name of the coin record
parentCoinName - Bytea! The parent coin name of the coin record
puzzleHash - Bytea! The puzzle hash of the coin record
Example
{
  "address": "abc123",
  "amount": {},
  "asset": Asset,
  "id": 4,
  "name": Bytea,
  "parentCoinName": Bytea,
  "puzzleHash": Bytea
}

TransactionInputsConnection

Fields
Field Name Description
edges - [TransactionInputsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [TransactionInputsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

TransactionInputsConnectionEdge

Fields
Field Name Description
cursor - String!
node - CoinRecord!
Example
{
  "cursor": "xyz789",
  "node": CoinRecord
}

TransactionInterface

Fields
Field Name Description
asset - Asset
createdAt - String!
fee - BigInt The fee of the transaction
id - ID!
timestamp - String
type - TransactionType
Possible Types
TransactionInterface Types

WalletTransaction

Example
{
  "asset": Asset,
  "createdAt": "abc123",
  "fee": {},
  "id": 4,
  "timestamp": "xyz789",
  "type": "AIRDROP"
}

TransactionNftsSortKey

Description

The set of valid sort keys for the transaction nfts query.

Values
Enum Value Description

LAUNCHER_ID

Example
"LAUNCHER_ID"

TransactionOutput

Fields
Field Name Description
address - String! The address of the coin record
amount - BigInt! The amount of the coin record
asset - Asset!
clawbackExpirationTime - DateTime The expiration time of this clawback output
id - ID!
name - Bytea! The name of the coin record
parentCoinName - Bytea! The parent coin name of the coin record
puzzleHash - Bytea! The puzzle hash of the coin record
Example
{
  "address": "xyz789",
  "amount": {},
  "asset": Asset,
  "clawbackExpirationTime": "2007-12-03T10:15:30Z",
  "id": 4,
  "name": Bytea,
  "parentCoinName": Bytea,
  "puzzleHash": Bytea
}

TransactionOutputsConnection

Fields
Field Name Description
edges - [TransactionOutputsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [TransactionOutputsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

TransactionOutputsConnectionEdge

Fields
Field Name Description
cursor - String!
node - CoinRecord!
Example
{
  "cursor": "abc123",
  "node": CoinRecord
}

TransactionResubmissionDetails

Fields
Field Name Description
eligible - Boolean! Whether the existing signed transaction can be submitted again.
errorMessage - String A normalized explanation of the submission rejection.
isFinal - Boolean! Whether the latest submission rejection made the transaction invalid.
message - String A user-facing explanation of the available action.
signatureRequest - SignatureRequest The existing signed request used to resubmit the transaction.
Example
{
  "eligible": false,
  "errorMessage": "abc123",
  "isFinal": false,
  "message": "abc123",
  "signatureRequest": SignatureRequest
}

TransactionsSortKey

Description

The set of valid sort keys for the TransactionsSortKey query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

TransactionStateString

Description

The set of valid sort keys for the TransactionStateString query.

Values
Enum Value Description

CLAWED_BACK

FINALIZED

INVALID

MEMPOOL

PENDING

RE_ORG

SETTLED

SIGNED

UNSIGNED

Example
"CLAWED_BACK"

TransactionTransferInterface

Fields
Field Name Description
address - String! The address of the coin record
amount - BigInt! The amount of the coin record
asset - Asset!
name - Bytea! The name of the coin record
parentCoinName - Bytea! The parent coin name of the coin record
puzzleHash - Bytea! The puzzle hash of the coin record
Possible Types
TransactionTransferInterface Types

TransactionInput

TransactionOutput

Example
{
  "address": "abc123",
  "amount": {},
  "asset": Asset,
  "name": Bytea,
  "parentCoinName": Bytea,
  "puzzleHash": Bytea
}

TransactionType

Description

The set of valid types for a transaction

Values
Enum Value Description

AIRDROP

BLOCK_REWARD

BULLETIN

CANCEL_OFFER

CLAWBACK_V2

CLAWBACK_V2_CLAW_BACK

CLAWBACK_V2_FINALIZE

COIN_COMBINE

COIN_SPLIT

CREATE_OFFER

INSTANT_RECOVERY

MINT_CAT2

MINT_NFT1

RECOVERY

RECOVERY_CLAWBACK

RECOVERY_FINISH

REVOKE_CAT2

ROYALTY

TAKE_OFFER

TRANSFER

Example
"AIRDROP"

TransferNftItemInput

Fields
Input Field Description
address - String! Destination bech32m address, beginning with xch or txch.
launcherId - String! NFT launcher ID as a 64-character hex string.
Example
{
  "address": "abc123",
  "launcherId": "abc123"
}

TransferNftsInput

Fields
Input Field Description
autoSubmit - Boolean Submit automatically after all required signatures are collected. Default = false
fee - BigInt! Blockchain fee in XCH mojos. Default = 0
fromAddressIndex - Int Optional vault address derivation index to send from. Defaults to 0 (primary address). The NFTs must be held at that address, which also pays the fee and receives the change.
memos - [String!] Memos provided with transaction
transfers - [TransferNftItemInput!]! The NFTs to transfer
walletId - ID! The wallet to transfer the NFTs from
xchHandle - String Optional XCHandle that resolved to the transfer address. Fails if the handle no longer resolves to it.
Example
{
  "autoSubmit": true,
  "fee": {},
  "fromAddressIndex": 987,
  "memos": ["abc123"],
  "transfers": [TransferNftItemInput],
  "walletId": "4",
  "xchHandle": "xyz789"
}

TransferNftsPayload

Fields
Field Name Description
signatureRequest - SignatureRequest!
Example
{"signatureRequest": SignatureRequest}

UnspentClawbackCoins

Fields
Field Name Description
amount - BigInt! Total amount of the unspent clawback coins, in mojos.
receiverAddress - String The receiver address, set only when every clawback coin pays the same receiver.
recipientCount - Int! The number of distinct receivers the clawback coins pay.
Example
{
  "amount": {},
  "receiverAddress": "xyz789",
  "recipientCount": 987
}

UpdateAutoSubscribeInput

Fields
Input Field Description
autoSubscribe - Boolean!
walletSubscriptionId - ID!
Example
{
  "autoSubscribe": true,
  "walletSubscriptionId": "4"
}

UpdateAutoSubscribePayload

Fields
Field Name Description
walletSubscription - WalletSubscription!
Example
{"walletSubscription": WalletSubscription}

UpdateContactAddressInput

Fields
Input Field Description
address - String The blockchain address to update
contactAddressId - ID! Global ID of the contact address to update.
contactId - ID! ID of the contact
label - String Human-readable label for the address to update
Example
{
  "address": "xyz789",
  "contactAddressId": "4",
  "contactId": 4,
  "label": "abc123"
}

UpdateContactAddressPayload

Fields
Field Name Description
address - ContactAddress! The updated blockchain address
Example
{"address": ContactAddress}

UpdateContactEmailInput

Fields
Input Field Description
contactEmailId - ID! ID of the email associated to the contact
contactId - ID! ID of the contact
email - String! Updated email
Example
{
  "contactEmailId": 4,
  "contactId": "4",
  "email": "xyz789"
}

UpdateContactEmailPayload

Fields
Field Name Description
email - ContactEmail! The updated email
Example
{"email": ContactEmail}

UpdateContactInput

Fields
Input Field Description
id - ID! ID of the contact to update
name - String Name of the contact
Example
{"id": 4, "name": "abc123"}

UpdateContactPayload

Fields
Field Name Description
contact - Contact! The updated contact
Example
{"contact": Contact}

UpdateSignerInput

Fields
Input Field Description
id - ID! ID of signer to update
name - String Name to set for signer
Example
{"id": 4, "name": "abc123"}

UpdateSignerPayload

Fields
Field Name Description
signer - Signer Signer that has been updated
Example
{"signer": Signer}

UpdateSubscriptionTopicInput

Fields
Input Field Description
name - String
subscriptionTopicId - ID!
topic - String
Example
{
  "name": "abc123",
  "subscriptionTopicId": 4,
  "topic": "xyz789"
}

UpdateSubscriptionTopicPayload

Fields
Field Name Description
subscriptionTopic - SubscriptionTopic!
Example
{"subscriptionTopic": SubscriptionTopic}

UpdateVaultConfigTemplateInput

Fields
Input Field Description
id - ID! ID of the vault configuration template to update
recoveryProviderId - ID
recoveryTimelock - Int!
requiredCustodySigners - Int!
requiredRecoverySigners - Int!
signers - [UpdateVaultConfigTemplateSignerInput!]!
vaultName - String!
Example
{
  "id": "4",
  "recoveryProviderId": 4,
  "recoveryTimelock": 987,
  "requiredCustodySigners": 987,
  "requiredRecoverySigners": 123,
  "signers": [UpdateVaultConfigTemplateSignerInput],
  "vaultName": "abc123"
}

UpdateVaultConfigTemplateKeyInput

Fields
Input Field Description
selectedKeyType - KeyType The selected key type that was used
signerId - ID ID of the signer to associate with the vault config template signer (mutually exclusive with walletId)
vaultConfigTemplateSignerId - ID! ID of the vault config template signer to update
walletId - ID ID of the wallet to associate with the vault config template signer (mutually exclusive with signerId)
Example
{
  "selectedKeyType": "APP",
  "signerId": 4,
  "vaultConfigTemplateSignerId": 4,
  "walletId": 4
}

UpdateVaultConfigTemplateKeyPayload

Fields
Field Name Description
vaultConfigTemplateSigner - VaultConfigTemplateSigner
Example
{"vaultConfigTemplateSigner": VaultConfigTemplateSigner}

UpdateVaultConfigTemplatePayload

Fields
Field Name Description
vaultConfigTemplate - VaultConfigTemplate!
Example
{"vaultConfigTemplate": VaultConfigTemplate}

UpdateVaultConfigTemplateSignerInput

Fields
Input Field Description
allowedKeyTypes - [KeyType!]!
email - String!
id - ID ID of the signer to update
keyName - String!
keyRole - KeyRole!
Example
{
  "allowedKeyTypes": ["APP"],
  "email": "xyz789",
  "id": "4",
  "keyName": "xyz789",
  "keyRole": "CUSTODY"
}

UpdateWalletInput

Fields
Input Field Description
id - ID! ID of wallet to update
name - String New name to assign to wallet
Example
{"id": 4, "name": "abc123"}

UpdateWalletPayload

Fields
Field Name Description
wallet - Wallet Wallet which has been updated
Example
{"wallet": Wallet}

UpdateWalletSubscriptionInput

Fields
Input Field Description
name - String
vaultAddress - String Vault receive address (xch/txch). Resolved to a launcher ID on the server.
vaultLauncherId - Bytea
walletSubscriptionId - ID!
Example
{
  "name": "xyz789",
  "vaultAddress": "xyz789",
  "vaultLauncherId": Bytea,
  "walletSubscriptionId": "4"
}

UpdateWalletSubscriptionPayload

Fields
Field Name Description
walletSubscription - WalletSubscription!
Example
{"walletSubscription": WalletSubscription}

User

Fields
Field Name Description
buyLimitOverride - Int Buy limit override in USD
canViewerCreateBuyOrder - Boolean! Whether this user is the current viewer and can buy XCH. Always false for other users.
canViewerCreatePlatformOAuthClients - Boolean! Whether this user is the current viewer and can create approved platform OAuth clients. Always false for other users.
canViewerDelete - Boolean! Whether the current viewer can delete this user
canViewerReadOAuthReviews - Boolean! Whether this user is the current viewer and can read the platform OAuth client review queue. Always false for other users.
canViewerSubmitSupportTicket - Boolean! Whether this user is the current viewer and can open support tickets. Always false for other users.
canViewerUpdate - Boolean! Whether the current viewer can edit this user
contacts - UserContactsConnection! The contacts that are associated with this user
Arguments
after - String
before - String
emails - [String!]
first - Int
last - Int
query - String
sortKey - ContactsSortKey
createdAt - String! The date and time when the user was created
deactivatedAt - String The date and time when the user was deactivated
deactivatedBy - User The user who deactivated this account
deactivationNotes - String Notes about why the user account was deactivated
deactivationReason - UserDeactivationReason The reason the user account was deactivated
email - String! The email of the user
emailChangeInProgress - UserEmailChangeToken The email change update data if the user is in the process of changing their email
emailUpdatedAt - String The date and time when the user last updated their email
grantableOAuthScopes - [String!]!
Arguments
requestedScopes - [String!]!
hasDisputedPaymentMethod - Boolean! Whether the user has any payment method with a dispute flag
hasExceededMaxVerificationAttempts - Boolean! Whether the user has exceeded the maximum identity verification attempts
hasVaultNeedingConfigDownload - Boolean! Whether any of the user's vaults need a config download (never downloaded or recovered since last download)
id - ID!
identityVerificationFailedAttempts - Int! The number of failed identity verification attempts
identityVerificationStatus - IdentityVerificationStatus! The current identity verification status of the user
identityVerifiedAt - String The date and time when the user completed identity verification
isViewer - Boolean! Whether the user is the current viewer (authentificated user)
issuedAssets - UserIssuedAssetsConnection! The assets that are associated with this users wallets
Arguments
after - String
before - String
first - Int
last - Int
query - String
messages - UserMessagesConnection! The messages that are associated with this user across all their wallets.
Arguments
after - String
before - String
direction - WalletMessageDirection

Filter messages by direction

first - Int
last - Int
query - String
name - String The name of the user
nfts - UserNftsConnection! The NFTs that are associated with this user.
Arguments
after - String
before - String
first - Int
last - Int
query - String
sortKey - NftsSortKey
offers - UserOffersConnection! The offers that are associated with this user.
Arguments
after - String
before - String
first - Int
isCreator - Boolean
last - Int
query - String
settlementTypes - [OfferSettlementType!]
states - [OfferState!]
organization - Organization! The organization that this user belongs to
passkeyCounts - PasskeyCounts! Passkey counts grouped by login archive state and active vault usage
passkeys - UserPasskeysConnection! The passkeys that are associated with this user
Arguments
after - String
before - String
first - Int
includeArchived - Boolean

Include archived (soft-deleted) login keys. Excluded by default.

last - Int
sortKey - PasskeysSortKey
passwordExpiresAt - String If the user is required to change their password, this will be a date, otherwise null
paymentMethodUserLimits - [PaymentMethodUserLimit!] Payment method user limits with tier information
platformPermissions - [PlatformPermission!]! The platform permissions the viewer holds, such as PLATFORM_BUY_ORDER_READ. Only readable on the viewer. Empty when the request comes from an API key or an OAuth client, even if that credential acts with the owner's permissions.
purchaseProgramState - PurchaseProgramState! The current state of the XCH purchase program
role - UserRole The role of the user
signerAppKeys - UserSignerAppKeysConnection! The Chia Signer App keys that are associated with this user
Arguments
after - String
before - String
first - Int
keyTypeFilter - SignerAppKeyTypeFilter

When set, only return keys whose inferred type matches (APP / APP_SOFTWARE), or keys with no vault link (UNLINKED). Matches SignerAppKey.keyType.

last - Int
sortKey - SignerAppsSortKey
signers - UserSignersConnection! The signers that are associated with this user
Arguments
after - String
before - String
first - Int
last - Int
sortKey - SignersSortKey
status - UserStatus! The status of the user account
supportTickets - SupportTicketConnection! The support tickets associated with this user
Arguments
temporaryFeatureFlags - [FeatureFlag!]! Global temporary feature flags that are currently enabled
unsignedOfferSignatureRequests - UserUnsignedOfferSignatureRequestsConnection! Unsigned signature requests for offer-related transactions across all user wallets.
Arguments
after - String
before - String
first - Int
isCreator - Boolean

Filter by creator (true) or acceptor (false) offer transactions.

last - Int
updatedAt - String! The date and time when the user was last updated
userAdditionalEmails - [UserAdditionalEmail!]! The additional email addresses associated with this user
userAuthKeys - UserUserAuthKeysConnection! The user auth keys (API keys with long expiration dates) that are associated with this user
Arguments
after - String
before - String
first - Int
last - Int
query - String
userTokens - UserUserTokensConnection! The tokens that are associated with this user
Arguments
after - String
before - String
first - Int
last - Int
sortKey - UserTokensSortKey
vaultConfigTemplates - UserVaultConfigTemplatesConnection! The vault configuration templates associated with this user (pending vaults to be created)
Arguments
after - String
before - String
first - Int
last - Int
wallets - UserWalletsConnection! The wallets that are associated with this user
Arguments
after - String
before - String
first - Int
last - Int
query - String
sortKey - WalletsSortKey
Example
{
  "buyLimitOverride": 987,
  "canViewerCreateBuyOrder": false,
  "canViewerCreatePlatformOAuthClients": true,
  "canViewerDelete": true,
  "canViewerReadOAuthReviews": true,
  "canViewerSubmitSupportTicket": true,
  "canViewerUpdate": true,
  "contacts": UserContactsConnection,
  "createdAt": "xyz789",
  "deactivatedAt": "abc123",
  "deactivatedBy": User,
  "deactivationNotes": "abc123",
  "deactivationReason": "FRAUD_SUSPICIOUS_ACTIVITY",
  "email": "xyz789",
  "emailChangeInProgress": UserEmailChangeToken,
  "emailUpdatedAt": "abc123",
  "grantableOAuthScopes": ["abc123"],
  "hasDisputedPaymentMethod": true,
  "hasExceededMaxVerificationAttempts": false,
  "hasVaultNeedingConfigDownload": false,
  "id": "4",
  "identityVerificationFailedAttempts": 987,
  "identityVerificationStatus": "FAILED",
  "identityVerifiedAt": "abc123",
  "isViewer": true,
  "issuedAssets": UserIssuedAssetsConnection,
  "messages": UserMessagesConnection,
  "name": "xyz789",
  "nfts": UserNftsConnection,
  "offers": UserOffersConnection,
  "organization": Organization,
  "passkeyCounts": PasskeyCounts,
  "passkeys": UserPasskeysConnection,
  "passwordExpiresAt": "abc123",
  "paymentMethodUserLimits": [PaymentMethodUserLimit],
  "platformPermissions": ["PLATFORM_ANNOUNCEMENT_DELETE"],
  "purchaseProgramState": "HALTED",
  "role": "FINANCE_ADMIN",
  "signerAppKeys": UserSignerAppKeysConnection,
  "signers": UserSignersConnection,
  "status": "ACTIVE",
  "supportTickets": SupportTicketConnection,
  "temporaryFeatureFlags": [FeatureFlag],
  "unsignedOfferSignatureRequests": UserUnsignedOfferSignatureRequestsConnection,
  "updatedAt": "abc123",
  "userAdditionalEmails": [UserAdditionalEmail],
  "userAuthKeys": UserUserAuthKeysConnection,
  "userTokens": UserUserTokensConnection,
  "vaultConfigTemplates": UserVaultConfigTemplatesConnection,
  "wallets": UserWalletsConnection
}

UserAdditionalEmail

Fields
Field Name Description
action - AdditionalEmailChangeAction The pending action type (add, change, delete)
additionalEmailId - ID ID of the email being changed or deleted
createdAt - String!
email - String!
expiresAt - String When the pending action expires
finalizeAt - String When the pending action will be finalized
id - ID!
pendingTokenId - ID ID of the pending token (for cancellation)
previousEmail - String Previous email address (for change actions)
updatedAt - String!
verified - Boolean!
verifiedAt - String
Example
{
  "action": "ADD",
  "additionalEmailId": 4,
  "createdAt": "abc123",
  "email": "abc123",
  "expiresAt": "abc123",
  "finalizeAt": "abc123",
  "id": "4",
  "pendingTokenId": "4",
  "previousEmail": "abc123",
  "updatedAt": "xyz789",
  "verified": true,
  "verifiedAt": "abc123"
}

UserAuthKey

Fields
Field Name Description
canViewerDelete - Boolean! Whether the current viewer can delete this userAuthKey
canViewerUpdate - Boolean! Whether the current viewer can edit this userAuthKey
createdAt - String! The date and time when the key was created
createdBy - User The user that created this userAuthKey, or null when the viewer cannot read them
expiresAt - String! The date and time when the key will expire
id - ID!
lastUsedAt - String The date and time when the key was last used. It's null if the key has never been used. It's throttled to once per 5 seconds.
name - String! The name of the public key
privateKey - String Private key returned only when the key is created. It is not stored.
publicKey - String! The public key
user - User! The user that owns this userAuthKey
Example
{
  "canViewerDelete": false,
  "canViewerUpdate": false,
  "createdAt": "abc123",
  "createdBy": User,
  "expiresAt": "xyz789",
  "id": 4,
  "lastUsedAt": "abc123",
  "name": "abc123",
  "privateKey": "abc123",
  "publicKey": "xyz789",
  "user": User
}

UserAuthKeysSortKey

Description

The set of valid sort keys for the UserAuthKeys query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

UserContactsConnection

Fields
Field Name Description
edges - [UserContactsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [UserContactsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

UserContactsConnectionEdge

Fields
Field Name Description
cursor - String!
node - Contact!
Example
{
  "cursor": "abc123",
  "node": Contact
}

UserDeactivationReason

Description

The reason a user account was deactivated

Values
Enum Value Description

FRAUD_SUSPICIOUS_ACTIVITY

OTHER

TERMS_OF_SERVICE_VIOLATION

Example
"FRAUD_SUSPICIOUS_ACTIVITY"

UserEmailChangeToken

Fields
Field Name Description
expiresAt - String! The date and time when the email change token expires
finalizeAt - String The date and time when the email change token will be effective after its verified
newEmail - String! The new email address
verifiedAt - String The date and time when the email change token was verified
Example
{
  "expiresAt": "abc123",
  "finalizeAt": "xyz789",
  "newEmail": "abc123",
  "verifiedAt": "xyz789"
}

UserInterface

Fields
Field Name Description
email - String! The email of the user
name - String The name of the user
Example
{
  "email": "xyz789",
  "name": "xyz789"
}

UserIssuedAssetsConnection

Fields
Field Name Description
edges - [UserIssuedAssetsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [UserIssuedAssetsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

UserIssuedAssetsConnectionEdge

Fields
Field Name Description
cursor - String!
node - WalletAsset!
Example
{
  "cursor": "xyz789",
  "node": WalletAsset
}

UserMessagesConnection

Fields
Field Name Description
edges - [UserMessagesConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [UserMessagesConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

UserMessagesConnectionEdge

Fields
Field Name Description
cursor - String!
node - WalletMessage!
Example
{
  "cursor": "abc123",
  "node": WalletMessage
}

UserNftsConnection

Fields
Field Name Description
edges - [UserNftsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [UserNftsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

UserNftsConnectionEdge

Fields
Field Name Description
cursor - String!
node - Nft!
Example
{
  "cursor": "xyz789",
  "node": Nft
}

UserOffersConnection

Fields
Field Name Description
edges - [UserOffersConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [UserOffersConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

UserOffersConnectionEdge

Fields
Field Name Description
cursor - String!
node - WalletOffer!
Example
{
  "cursor": "xyz789",
  "node": WalletOffer
}

UserPasskeysConnection

Fields
Field Name Description
edges - [UserPasskeysConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [UserPasskeysConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

UserPasskeysConnectionEdge

Fields
Field Name Description
cursor - String!
node - Passkey!
Example
{
  "cursor": "abc123",
  "node": Passkey
}

UserRole

Description

The set of valid roles for the User.

Values
Enum Value Description

FINANCE_ADMIN

ORGANIZATION_ADMIN

SUPPORT_ADMIN

SYSTEM_ADMIN

USER

Example
"FINANCE_ADMIN"

UserSignerAppKeysConnection

Fields
Field Name Description
edges - [UserSignerAppKeysConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [UserSignerAppKeysConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

UserSignerAppKeysConnectionEdge

Fields
Field Name Description
cursor - String!
node - SignerAppKey!
Example
{
  "cursor": "abc123",
  "node": SignerAppKey
}

UserSignersConnection

Fields
Field Name Description
edges - [UserSignersConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [UserSignersConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

UserSignersConnectionEdge

Fields
Field Name Description
cursor - String!
node - Signer!
Example
{
  "cursor": "xyz789",
  "node": Signer
}

UsersSortKey

Description

The set of valid sort keys for the Users query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

UserStatus

Description

The status of a user account

Values
Enum Value Description

ACTIVE

DEACTIVATED

Example
"ACTIVE"

UserToken

Fields
Field Name Description
asset - Asset
assetHash - String! The CAT asset hash for this user token
createdAt - DateTime!
displayName - String! The display name of the token
id - ID!
image - String Optional base64 encoded image data for the token
imageMimeType - String MIME type of the token image (image/jpeg or image/png), currently disabled
symbol - String! The symbol of the token (up to 5 characters)
updatedAt - DateTime!
user - User!
userId - String! Use asset instead
Example
{
  "asset": Asset,
  "assetHash": "xyz789",
  "createdAt": "2007-12-03T10:15:30Z",
  "displayName": "abc123",
  "id": 4,
  "image": "abc123",
  "imageMimeType": "abc123",
  "symbol": "abc123",
  "updatedAt": "2007-12-03T10:15:30Z",
  "user": User,
  "userId": "abc123"
}

UserTokensSortKey

Description

The set of valid sort keys for the UserTokens query.

Values
Enum Value Description

CREATED_AT

DISPLAY_NAME

SYMBOL

Example
"CREATED_AT"

UserUnsignedOfferSignatureRequestsConnection

Fields
Field Name Description
edges - [UserUnsignedOfferSignatureRequestsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [
    UserUnsignedOfferSignatureRequestsConnectionEdge
  ],
  "pageInfo": PageInfo,
  "totalCount": 987
}

UserUnsignedOfferSignatureRequestsConnectionEdge

Fields
Field Name Description
cursor - String!
node - SignatureRequest!
Example
{
  "cursor": "xyz789",
  "node": SignatureRequest
}

UserUserAuthKeysConnection

Fields
Field Name Description
edges - [UserUserAuthKeysConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [UserUserAuthKeysConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

UserUserAuthKeysConnectionEdge

Fields
Field Name Description
cursor - String!
node - UserAuthKey!
Example
{
  "cursor": "abc123",
  "node": UserAuthKey
}

UserUserTokensConnection

Fields
Field Name Description
edges - [UserUserTokensConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [UserUserTokensConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

UserUserTokensConnectionEdge

Fields
Field Name Description
cursor - String!
node - UserToken!
Example
{
  "cursor": "xyz789",
  "node": UserToken
}

UserVaultConfigTemplatesConnection

Fields
Field Name Description
edges - [UserVaultConfigTemplatesConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [UserVaultConfigTemplatesConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

UserVaultConfigTemplatesConnectionEdge

Fields
Field Name Description
cursor - String!
node - VaultConfigTemplate!
Example
{
  "cursor": "abc123",
  "node": VaultConfigTemplate
}

UserWalletsConnection

Fields
Field Name Description
edges - [UserWalletsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [UserWalletsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

UserWalletsConnectionEdge

Fields
Field Name Description
cursor - String!
node - Wallet!
Example
{
  "cursor": "abc123",
  "node": Wallet
}

Vault

Fields
Field Name Description
coinId - Bytea!
custodyHash - Bytea!
delegatedSpend - Spend!
launcherId - Bytea!
leftSideSubtreeHash - Bytea
Example
{
  "coinId": Bytea,
  "custodyHash": Bytea,
  "delegatedSpend": Spend,
  "launcherId": Bytea,
  "leftSideSubtreeHash": Bytea
}

VaultAction

Fields
Input Field Description
vaultRecovery - VaultRecoveryAction
vaultRecoveryClawback - VaultRecoveryClawbackAction
vaultRecoveryFinish - Boolean
Example
{
  "vaultRecovery": VaultRecoveryAction,
  "vaultRecoveryClawback": VaultRecoveryClawbackAction,
  "vaultRecoveryFinish": true
}

VaultAddress

Fields
Field Name Description
address - String! The bech32m address
index - Int! The derivation index for this address
label - String User-managed label for this vault address
puzzleHash - String! The puzzle hash in hex
Example
{
  "address": "xyz789",
  "index": 123,
  "label": "xyz789",
  "puzzleHash": "abc123"
}

VaultConfigDownloadPayload

Fields
Field Name Description
content - String! Base64-encoded UTF-8 JSON vault configuration.
filename - String! Suggested filename for the download
mimeType - String! MIME type of the file (application/json)
Example
{
  "content": "abc123",
  "filename": "xyz789",
  "mimeType": "xyz789"
}

VaultConfigTemplate

Fields
Field Name Description
createdAt - String! The date and time when the template was created
creator - User The user who created this vault configuration template
custodyKeysAddedCount - Int! The number of custody keys added to this vault configuration template
grantableOAuthScopes - [String!]!
Arguments
requestedScopes - [String!]!
id - ID!
isViewerCreator - Boolean! Whether the current user is the creator of the vault configuration template
otherSigners - [VaultConfigTemplateOtherSigner!]! Other users' signers in this vault configuration template (only available to template creator)
recoveryKeysAddedCount - Int! The number of recovery keys added to this vault configuration template
recoveryProvider - RecoveryProviderPublic The recovery provider associated with this vault configuration template (only visible to creator)
recoveryTimelock - Int! The timelock period in seconds for recovery operations
requiredCustodySigners - Int! The number of spend keys required for this vault configuration
requiredRecoverySigners - Int! The number of recovery keys required for this vault configuration
totalCustodySigners - Int! The total number of spend keys in this vault configuration
totalRecoverySigners - Int! The total number of recovery keys in this vault configuration
updatedAt - String! The date and time when the template was last updated
vaultName - String! The name of the vault configuration template
viewerSigners - [VaultConfigTemplateSigner!]! The signers associated with this vault configuration template that belong to the current user (viewer)
Example
{
  "createdAt": "abc123",
  "creator": User,
  "custodyKeysAddedCount": 123,
  "grantableOAuthScopes": ["xyz789"],
  "id": "4",
  "isViewerCreator": false,
  "otherSigners": [VaultConfigTemplateOtherSigner],
  "recoveryKeysAddedCount": 123,
  "recoveryProvider": RecoveryProviderPublic,
  "recoveryTimelock": 123,
  "requiredCustodySigners": 123,
  "requiredRecoverySigners": 123,
  "totalCustodySigners": 123,
  "totalRecoverySigners": 123,
  "updatedAt": "abc123",
  "vaultName": "xyz789",
  "viewerSigners": [VaultConfigTemplateSigner]
}

VaultConfigTemplateOtherSigner

Fields
Field Name Description
allowedKeyTypes - [String!]! The types of keys allowed for this signer
createdAt - String! The date and time when the signer was created
email - String! The email of the signer
hasCompletedSetup - Boolean! Whether the signer has completed setup by selecting a key
id - ID!
keyName - String! The name of the key
keyRole - String! The role of the key (spend/recovery)
lastNotified - String The date and time when the signer was last notified
selectedKeyType - KeyType The type of key that was selected
updatedAt - String! The date and time when the signer was last updated
user - User Use email field directly instead
Example
{
  "allowedKeyTypes": ["abc123"],
  "createdAt": "abc123",
  "email": "xyz789",
  "hasCompletedSetup": false,
  "id": 4,
  "keyName": "abc123",
  "keyRole": "xyz789",
  "lastNotified": "xyz789",
  "selectedKeyType": "APP",
  "updatedAt": "abc123",
  "user": User
}

VaultConfigTemplateSigner

Fields
Field Name Description
allowedKeyTypes - [String!]! The types of keys allowed for this signer
createdAt - String! The date and time when the signer was created
email - String! The email of the signer
hasCompletedSetup - Boolean! Whether the signer has completed setup by selecting a key
id - ID!
keyName - String! The name of the key
keyRole - String! The role of the key (spend/recovery)
lastNotified - String The date and time when the signer was last notified
selectedKeyType - KeyType The type of key that was selected
signer - Signer
updatedAt - String! The date and time when the signer was last updated
user - User Use email field directly instead
wallet - Wallet
Example
{
  "allowedKeyTypes": ["xyz789"],
  "createdAt": "abc123",
  "email": "abc123",
  "hasCompletedSetup": false,
  "id": "4",
  "keyName": "abc123",
  "keyRole": "abc123",
  "lastNotified": "abc123",
  "selectedKeyType": "APP",
  "signer": Signer,
  "updatedAt": "xyz789",
  "user": User,
  "wallet": Wallet
}

VaultConfigTemplateSignerInput

Fields
Input Field Description
allowedKeyTypes - [KeyType!]!
email - String!
keyName - String!
keyRole - KeyRole!
Example
{
  "allowedKeyTypes": ["APP"],
  "email": "abc123",
  "keyName": "xyz789",
  "keyRole": "CUSTODY"
}

VaultConfigTemplatesSortKey

Values
Enum Value Description

CREATED_AT

NAME

Example
"CREATED_AT"

VaultCustody

Fields
Input Field Description
authorizedWalletIds - [ID!]
keyTypes - [PublicKeyWithType!]
publicKeyIds - [ID!]
threshold - Int!
Example
{
  "authorizedWalletIds": [4],
  "keyTypes": [PublicKeyWithType],
  "publicKeyIds": ["4"],
  "threshold": 987
}

VaultCustodyConfig

Fields
Field Name Description
custodyAuthorizedWallets - VaultCustodyConfigCustodyAuthorizedWalletsConnection! Wallets that are authorized to perform custody spends for this vault
Arguments
after - String
before - String
first - Int
last - Int
sortKey - WalletsSortKey
custodyKeys - VaultCustodyConfigCustodyKeysConnection! Public keys associated with this vault custody config
Arguments
after - String
before - String
first - Int
last - Int
sortKey - PublicKeysSortKey
custodyThreshold - Int Threshold for the vault custody keys
id - ID!
needsVaultPuzzleMigration - Boolean! Whether this vault should be upgraded to the current vault puzzle version
puzzleVersion - VaultPuzzleVersion The version of the vault's puzzle. A signer needs it to rebuild the recovery path's restrictions when clear signing. Null when the wallet is not a vault.
recoveryAuthorizedWallets - VaultCustodyConfigRecoveryAuthorizedWalletsConnection! Wallets that are authorized to perform recovery for this vault
Arguments
after - String
before - String
first - Int
last - Int
sortKey - WalletsSortKey
recoveryClawbackTimelock - Int Timelock for the vault recovery clawback
recoveryKeys - VaultCustodyConfigRecoveryKeysConnection! Recovery keys associated with this vault custody config
Arguments
after - String
before - String
first - Int
last - Int
sortKey - PublicKeysSortKey
recoveryThreshold - Int Threshold for the vault recovery keys
vaultLauncherId - Bytea The launcher ID of the vault
Example
{
  "custodyAuthorizedWallets": VaultCustodyConfigCustodyAuthorizedWalletsConnection,
  "custodyKeys": VaultCustodyConfigCustodyKeysConnection,
  "custodyThreshold": 123,
  "id": 4,
  "needsVaultPuzzleMigration": true,
  "puzzleVersion": "FORCE_SINGLETON_RECREATION",
  "recoveryAuthorizedWallets": VaultCustodyConfigRecoveryAuthorizedWalletsConnection,
  "recoveryClawbackTimelock": 123,
  "recoveryKeys": VaultCustodyConfigRecoveryKeysConnection,
  "recoveryThreshold": 123,
  "vaultLauncherId": Bytea
}

VaultCustodyConfigCustodyAuthorizedWalletsConnection

Fields
Field Name Description
edges - [VaultCustodyConfigCustodyAuthorizedWalletsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [
    VaultCustodyConfigCustodyAuthorizedWalletsConnectionEdge
  ],
  "pageInfo": PageInfo,
  "totalCount": 987
}

VaultCustodyConfigCustodyAuthorizedWalletsConnectionEdge

Fields
Field Name Description
cursor - String!
node - Wallet!
Example
{
  "cursor": "abc123",
  "node": Wallet
}

VaultCustodyConfigCustodyKeysConnection

Fields
Field Name Description
edges - [VaultCustodyConfigCustodyKeysConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [VaultCustodyConfigCustodyKeysConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

VaultCustodyConfigCustodyKeysConnectionEdge

Fields
Field Name Description
cursor - String!
node - PublicKey!
Example
{
  "cursor": "abc123",
  "node": PublicKey
}

VaultCustodyConfigInput

Fields
Input Field Description
custody - VaultCustody!
recovery - VaultRecoveryConfig!
signerIds - [ID!]!
Example
{
  "custody": VaultCustody,
  "recovery": VaultRecoveryConfig,
  "signerIds": ["4"]
}

VaultCustodyConfigRecoveryAuthorizedWalletsConnection

Fields
Field Name Description
edges - [VaultCustodyConfigRecoveryAuthorizedWalletsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [
    VaultCustodyConfigRecoveryAuthorizedWalletsConnectionEdge
  ],
  "pageInfo": PageInfo,
  "totalCount": 987
}

VaultCustodyConfigRecoveryAuthorizedWalletsConnectionEdge

Fields
Field Name Description
cursor - String!
node - Wallet!
Example
{
  "cursor": "abc123",
  "node": Wallet
}

VaultCustodyConfigRecoveryKeysConnection

Fields
Field Name Description
edges - [VaultCustodyConfigRecoveryKeysConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [VaultCustodyConfigRecoveryKeysConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

VaultCustodyConfigRecoveryKeysConnectionEdge

Fields
Field Name Description
cursor - String!
node - PublicKey!
Example
{
  "cursor": "abc123",
  "node": PublicKey
}

VaultKeyProofInput

Description

Proof that the viewer controls a custody or recovery key of the vault being restored

Fields
Input Field Description
challengeId - String! The ID returned by requestVaultRestoreChallenge for this launcher ID
publicKey - String Hex public key that produced the signature. When omitted, every member key is tried.
signature - String Hex signature over the challenge message. BLS12_381 signs with the AUG scheme, SECP256R1 signs its SHA-256, and a passkey sends hex JSON of its authenticatorData, clientDataJSON, and signature.
type - VaultKeyProofType!
Example
{
  "challengeId": "xyz789",
  "publicKey": "abc123",
  "signature": "abc123",
  "type": "SIGNATURE"
}

VaultKeyProofMethod

Values
Enum Value Description

PASSKEY

Sign the challenge with a passkey that is a member of the vault

RECOVERY_PHRASE

Sign with the key derived from a recovery phrase. The chain does not say whether a BLS key came from a recovery phrase or the Chia Signer app, so this is offered for every unlinked BLS key it could be.

SIGNER_APP

A member key is already linked from the viewer's Chia Signer app
Example
"PASSKEY"

VaultKeyProofType

Values
Enum Value Description

SIGNATURE

A signature over the restore challenge message by a member key of the vault

SIGNER_APP

A member key the viewer already linked from the Chia Signer app
Example
"SIGNATURE"

VaultPuzzleVersion

Description

The version of a vault's puzzle, which determines the restrictions on its recovery path.

Values
Enum Value Description

FORCE_SINGLETON_RECREATION

LEGACY

Example
"FORCE_SINGLETON_RECREATION"

VaultRecoveriesSortKey

Description

The set of valid sort keys for the VaultRecoveries query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

VaultRecovery

Fields
Field Name Description
createdAt - String! The date and time when the vault recovery was created
id - ID!
postRecoveryTimelock - Int The clawback timelock, in seconds, of the proposed post-recovery vault config. Null for a recovery initiated outside Cloud Wallet.
reason - String The reason provided for the vault recovery
recoveryComplete - String The date and time when the recovery timelock expires
recoveryEndedAt - String The date and time when the recovery actually finished or was cancelled, derived from the on-chain transition
signatureRequest - SignatureRequest The signature request that proposed this recovery. Null for a recovery initiated outside Cloud Wallet.
state - VaultRecoveryState! The current state of the vault recovery
wallet - Wallet!
Example
{
  "createdAt": "abc123",
  "id": "4",
  "postRecoveryTimelock": 987,
  "reason": "xyz789",
  "recoveryComplete": "xyz789",
  "recoveryEndedAt": "abc123",
  "signatureRequest": SignatureRequest,
  "state": "CLAWED_BACK",
  "wallet": Wallet
}

VaultRecoveryAction

Fields
Input Field Description
autoRecovery - Boolean
custody - VaultCustody!
reason - String Reason for the recovery request
recovery - VaultRecoveryConfig!
recoveryMethod - RecoveryMethod Recovery method: INSTANT (custody keys, no timelock) or DELAYED (recovery keys, with timelock). Default = DELAYED
signerWalletIds - [ID!] Vault wallet IDs to involve as signers. When omitted, all current vault-type signers are included. Pass an empty list to exclude all vault signers (e.g. for passphrase-only recovery).
upgradeVaultPuzzle - Boolean Upgrade a legacy vault to the current puzzle version during recovery. Default = false
Example
{
  "autoRecovery": false,
  "custody": VaultCustody,
  "reason": "xyz789",
  "recovery": VaultRecoveryConfig,
  "recoveryMethod": "DELAYED",
  "signerWalletIds": [4],
  "upgradeVaultPuzzle": true
}

VaultRecoveryClawbackAction

Fields
Input Field Description
clawback - Boolean
Example
{"clawback": true}

VaultRecoveryConfig

Fields
Input Field Description
authorizedWalletIds - [ID!]
clawbackTimelock - Int!
keyTypes - [PublicKeyWithType!]
publicKeyIds - [ID!]
recoveryProviderId - ID
threshold - Int!
Example
{
  "authorizedWalletIds": ["4"],
  "clawbackTimelock": 123,
  "keyTypes": [PublicKeyWithType],
  "publicKeyIds": [4],
  "recoveryProviderId": 4,
  "threshold": 123
}

VaultRecoveryReview

Fields
Field Name Description
approvalReason - String The reason for the recovery review approval
beforeAfterData - BeforeAfterData The before and after key configuration changes
createdAt - String! The date and time when the recovery review was created
id - ID!
initiator - VaultRecoveryReviewInitiator
reason - String! The reason for the recovery review
recoveryHistory - [VaultRecoveryReview!]! The history of all completed (approved or rejected) recovery reviews for the wallet associated with this review
recoveryProvider - RecoveryProvider!
rejectionReason - String The reason for the recovery review rejection
reviewedAt - String The date and time when the recovery review was reviewed (approved or rejected)
reviewedByUser - VaultRecoveryReviewReviewer The user who reviewed (approved or rejected) this recovery review
state - VaultRecoveryReviewState!
updatedAt - String! The date and time when the recovery review was last updated
vaultRecovery - VaultRecovery!
wallet - VaultRecoveryReviewWallet! The wallet associated with this recovery review. Returns a restricted VaultRecoveryReviewWallet type instead of the full Wallet type because recovery review owners do not have permission to access the complete wallet object.
Example
{
  "approvalReason": "xyz789",
  "beforeAfterData": BeforeAfterData,
  "createdAt": "xyz789",
  "id": "4",
  "initiator": VaultRecoveryReviewInitiator,
  "reason": "abc123",
  "recoveryHistory": [VaultRecoveryReview],
  "recoveryProvider": RecoveryProvider,
  "rejectionReason": "abc123",
  "reviewedAt": "abc123",
  "reviewedByUser": VaultRecoveryReviewReviewer,
  "state": "APPROVED",
  "updatedAt": "abc123",
  "vaultRecovery": VaultRecovery,
  "wallet": VaultRecoveryReviewWallet
}

VaultRecoveryReviewInitiator

Fields
Field Name Description
email - String! The email of the user
name - String The name of the user
organizationName - String The name of the organization the initiator belongs to
Example
{
  "email": "xyz789",
  "name": "xyz789",
  "organizationName": "xyz789"
}

VaultRecoveryReviewReviewer

Fields
Field Name Description
email - String! The email of the user
id - ID! The global ID of the user
name - String The name of the user
Example
{
  "email": "abc123",
  "id": "4",
  "name": "abc123"
}

VaultRecoveryReviewsSortKey

Values
Enum Value Description

CREATED_AT

INITIATOR_NAME

NAME

ORGANIZATION_NAME

STATE

Example
"CREATED_AT"

VaultRecoveryReviewState

Description

The set of valid sort keys for the VaultRecoveryReviewState query.

Values
Enum Value Description

APPROVED

PENDING

REJECTED

Example
"APPROVED"

VaultRecoveryReviewWallet

Fields
Field Name Description
id - ID!
name - String The name of the wallet
Example
{"id": 4, "name": "xyz789"}

VaultRecoverySigner

Fields
Field Name Description
authorizedWallet - Wallet
createdAt - String! The date and time when the custody config was created
id - ID!
keyType - KeyType The type of key that was selected
publicKey - PublicKey
Example
{
  "authorizedWallet": Wallet,
  "createdAt": "xyz789",
  "id": "4",
  "keyType": "APP",
  "publicKey": PublicKey
}

VaultRecoverySignersSortKey

Description

The set of valid sort keys for the VaultRecoverySigners query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

VaultRecoveryState

Description

The state of a vault recovery attempt.

Values
Enum Value Description

CLAWED_BACK

EXTERNALLY_FINISHED

FINISHED

INITIATED

INSTANT

PENDING

REVIEW

REVIEW_REJECTED

Example
"CLAWED_BACK"

VaultRestoreChallenge

Fields
Field Name Description
challengeId - String! Pass this back in the proof of restoreVaultFromChain or restoreVaultFromConfig
expiresAt - String! When the challenge stops being accepted
linkableSignerAppKeys - [VaultRestoreLinkableKey!]! Member keys that could be in a Chia Signer app but are not linked to the viewer. Linking one from the app and requesting a new challenge makes SIGNER_APP available.
message - String! Hex bytes a member key of the vault signs
proofMethods - [VaultKeyProofMethod!]! The ways the viewer can prove control of a member key of this vault
Example
{
  "challengeId": "abc123",
  "expiresAt": "abc123",
  "linkableSignerAppKeys": [VaultRestoreLinkableKey],
  "message": "xyz789",
  "proofMethods": ["PASSKEY"]
}

VaultRestoreLinkableKey

Description

A member key of the vault that may be in a Chia Signer app but is not linked to the viewer

Fields
Field Name Description
keyType - VaultSignerAppKeyType!
publicKey - String! Hex public key, to request when relinking it from the app
Example
{
  "keyType": "HARDWARE",
  "publicKey": "xyz789"
}

VaultSignerAppKeyType

Values
Enum Value Description

HARDWARE

A spend key the Chia Signer app keeps in secure hardware (SECP256R1)

SOFTWARE

A recovery key the Chia Signer app keeps in software (BLS12_381)
Example
"HARDWARE"

VaultSignerState

Description

Where a signer stands in its vault's custody as a custody-changing recovery moves it along

Values
Enum Value Description

ACTIVE

OLD

PENDING

Example
"ACTIVE"

Wallet

Fields
Field Name Description
address - PuzzleHash One of the wallet's puzzle hashes and its address. For a vault's receive addresses, use vaultAddresses.
addresses - WalletAddressesConnection! Addresses associated with this wallet
Arguments
after - String
before - String
first - Int
last - Int
airdrops - WalletAirdropsConnection! The airdrops that are associated with this wallet.
Arguments
after - String
airdropType - AirdropType

Filter airdrops by type

before - String
first - Int
last - Int
sortKey - AirdropsSortKey
asset - WalletAsset The assets that are associated with this wallet
Arguments
assetHash - String
assets - WalletAssetsConnection! The assets that are associated with this wallet.
Arguments
addressIndex - Int

Optional vault address derivation index to filter balances by.

after - String
before - String
first - Int
includeXch - Boolean

Whether to include the wallet XCH asset in the connection.

last - Int
balance - BigInt! The total balance of this wallet Use assets instead
canViewerAcceptOffer - Boolean! Whether the current viewer can accept offers with this wallet. Always false for OAuth client sessions.
canViewerCreateAirdrop - Boolean! Whether the current viewer can create airdrops from this wallet. Always false for OAuth client sessions.
canViewerCreateAsset - Boolean! Whether the current viewer can issue new tokens from this wallet. Always false for OAuth client sessions.
canViewerCreateBroadcastMessage - Boolean! Whether the current viewer can create broadcast messages from this wallet. Always false for OAuth client sessions.
canViewerCreateNft - Boolean! Whether the current viewer can mint NFTs from this wallet. Always false for OAuth client sessions.
canViewerCreateOffer - Boolean! Whether the current viewer can create offers from this wallet. Always false for OAuth client sessions.
canViewerCreateTransfer - Boolean! Whether the current viewer can send from this wallet, including coin splits, coin combines and NFT transfers. Always false for OAuth client sessions.
canViewerDelete - Boolean! Whether the current viewer can delete this wallet. Always false for OAuth client sessions.
canViewerRecover - Boolean! Whether the current viewer can start or manage a recovery of this vault. Always false for OAuth client sessions.
canViewerUpdate - Boolean! Whether the current viewer can edit this wallet. Always false for OAuth client sessions.
createdAt - String! The date and time when the wallet was created
custodyConfig - WalletCustodyConfig! Custody configuration which defines the type and behavior of this wallet
grantableOAuthScopes - [String!]!
Arguments
requestedScopes - [String!]!
hasMintedAssets - Boolean! Whether this wallet has minted any CAT2 assets
hasReceiveAddress - Boolean! Whether the wallet has a derived receive address
id - ID!
messages - WalletMessagesConnection! The messages that are associated with this wallet.
Arguments
after - String
before - String
direction - WalletMessageDirection

Filter messages by direction

first - Int
last - Int
query - String
name - String The name of the wallet
needsConfigDownload - Boolean! Whether the vault config has changed since last download (e.g. after recovery)
nfts - WalletNftsConnection! The NFTs that are associated with this wallet.
Arguments
after - String
before - String
first - Int
last - Int
sortKey - NftsSortKey
offers - WalletOffersConnection! The offers that are associated with this wallet.
Arguments
after - String
before - String
first - Int
isCreator - Boolean
last - Int
settlementTypes - [OfferSettlementType!]
states - [OfferState!]
pinnedTransactions - WalletPinnedTransactionsConnection! Unsigned and retryable rejected transactions pinned for user action.
Arguments
addressIndex - Int

Optional vault address derivation index to filter transactions by.

after - String
before - String
changedAssetHash - String

Only transactions that changed this asset for the wallet, offers and transactions that changed several assets included. Takes the asset hash of a token or the launcher id of an NFT. An NFT launcher id matches nothing without permission to read the wallet NFTs. Null is XCH.

direction - TransactionDirection
first - Int
last - Int
platformSubscriptions - WalletPlatformSubscriptionsConnection! The subscriptions that are associated with this wallet.
Arguments
after - String
before - String
first - Int
last - Int
recoveryEligibility - RecoveryEligibility! Whether a vault recovery can currently be initiated.
recoveryState - WalletRecoveryState! The state of the recovery for this wallet
settings - WalletSettings! Settings applied to this wallet
signerType - SignerType The type of signer for this wallet
signers - WalletSignersConnection! The signers that are associated with this wallet
Arguments
after - String
before - String
first - Int
last - Int
state - WalletState The state of the wallet
transactions - WalletTransactionsConnection! The transactions that are associated with this wallet.
Arguments
addressIndex - Int

Optional vault address derivation index to filter transactions by.

after - String
before - String
changedAssetHash - String

Only transactions that changed this asset for the wallet, offers and transactions that changed several assets included. Takes the asset hash of a token or the launcher id of an NFT. An NFT launcher id matches nothing without permission to read the wallet NFTs. Null is XCH.

direction - TransactionDirection
excludePinned - Boolean

Whether transactions pinned for user action should be excluded.

first - Int
last - Int
updatedAt - String! The date and time when the wallet was last updated
user - User! The user that owns this wallet
vaultAddresses - [VaultAddress!]! All derived addresses for this vault wallet, ordered by index
vaultRecoveries - WalletVaultRecoveriesConnection! All vault recovery attempts for this wallet
Arguments
after - String
before - String
first - Int
last - Int
vaultRecovery - VaultRecovery Vault recovery configuration applied to this wallet
vaultRecoveryProvider - RecoveryProviderPublic The recovery provider configured as a recovery key for this vault (if any)
vaultRecoverySigners - WalletVaultRecoverySignersConnection! Vault recovery signers assigned to this wallet
Arguments
after - String
before - String
first - Int
last - Int
walletSubscriptions - WalletWalletSubscriptionsConnection! The subscriptions that are associated with this wallet.
Arguments
after - String
before - String
first - Int
last - Int
Example
{
  "address": PuzzleHash,
  "addresses": WalletAddressesConnection,
  "airdrops": WalletAirdropsConnection,
  "asset": WalletAsset,
  "assets": WalletAssetsConnection,
  "balance": {},
  "canViewerAcceptOffer": false,
  "canViewerCreateAirdrop": true,
  "canViewerCreateAsset": true,
  "canViewerCreateBroadcastMessage": true,
  "canViewerCreateNft": true,
  "canViewerCreateOffer": true,
  "canViewerCreateTransfer": false,
  "canViewerDelete": true,
  "canViewerRecover": false,
  "canViewerUpdate": false,
  "createdAt": "abc123",
  "custodyConfig": WalletCustodyConfig,
  "grantableOAuthScopes": ["xyz789"],
  "hasMintedAssets": false,
  "hasReceiveAddress": false,
  "id": "4",
  "messages": WalletMessagesConnection,
  "name": "abc123",
  "needsConfigDownload": true,
  "nfts": WalletNftsConnection,
  "offers": WalletOffersConnection,
  "pinnedTransactions": WalletPinnedTransactionsConnection,
  "platformSubscriptions": WalletPlatformSubscriptionsConnection,
  "recoveryEligibility": RecoveryEligibility,
  "recoveryState": "AWAITING_REVIEW",
  "settings": WalletSettings,
  "signerType": "MIXED_MULTISIG",
  "signers": WalletSignersConnection,
  "state": "READY",
  "transactions": WalletTransactionsConnection,
  "updatedAt": "abc123",
  "user": User,
  "vaultAddresses": [VaultAddress],
  "vaultRecoveries": WalletVaultRecoveriesConnection,
  "vaultRecovery": VaultRecovery,
  "vaultRecoveryProvider": RecoveryProviderPublic,
  "vaultRecoverySigners": WalletVaultRecoverySignersConnection,
  "walletSubscriptions": WalletWalletSubscriptionsConnection
}

WalletActionInput

Fields
Input Field Description
autoSubmit - Boolean Whether to automatically submit on-chain once required signatures are provided
fee - BigInt The fee to pay
networkId - ID ID of network to trigger action against wallet on
requestId - String Unique identifier for the request
userId - ID New wallet owner userId (if different than the authenticated user)
vaultAction - VaultAction Vault specific action to be performed
walletId - ID! ID of wallet to trigger action against
Example
{
  "autoSubmit": true,
  "fee": {},
  "networkId": "4",
  "requestId": "xyz789",
  "userId": "4",
  "vaultAction": VaultAction,
  "walletId": 4
}

WalletActionPayload

Fields
Field Name Description
signatureRequest - SignatureRequest! Signature request for wallet action
Example
{"signatureRequest": SignatureRequest}

WalletAddressesConnection

Fields
Field Name Description
edges - [WalletAddressesConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletAddressesConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

WalletAddressesConnectionEdge

Fields
Field Name Description
cursor - String!
node - PuzzleHash!
Example
{
  "cursor": "abc123",
  "node": PuzzleHash
}

WalletAirdropsConnection

Fields
Field Name Description
edges - [WalletAirdropsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletAirdropsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

WalletAirdropsConnectionEdge

Fields
Field Name Description
cursor - String!
node - Airdrop!
Example
{
  "cursor": "abc123",
  "node": Airdrop
}

WalletAsset

Fields
Field Name Description
amount - BigInt! The total amount of this asset Use totalAmount field instead
asset - Asset! The asset that is associated with this wallet asset
assetHash - String The CAT asset hash. Null for XCH.
canViewerUpdate - Boolean! Whether viewer can update asset or not
decimals - Int!
displayName - String! The user's custom display name for the asset (falls back to the asset's actual name if not customized) Use name instead.
displaySymbol - String The user's custom display symbol for the asset (falls back to the asset's actual symbol if not customized) Use symbol instead.
id - ID!
identifier - String! The CAT asset hash, or the network genesis challenge for XCH. Use assetHash for CAT assets and network.genesisChallenge for XCH.
issuerWallet - Wallet
lockedAmount - BigInt! The locked amount of this asset currently locked in pending transactions or offers
mintState - TransactionStateString
multiIssuance - Boolean! Whether this asset supports multiple issuances
name - String!
revocable - Boolean! Whether this asset is revocable
spendableAmount - BigInt! The spendable amount of this asset, excluding any locked amounts
symbol - String
totalAmount - BigInt! The total amount of this asset
totalMelted - BigInt! The total amount of this asset that has been melted (cumulative)
totalMinted - BigInt! The total amount of this asset that has been minted (cumulative)
totalSupply - BigInt! The current circulating supply of this asset (totalMinted - totalMelted)
transactions - WalletAssetTransactionsConnection! The transactions that are associated with this wallet asset
Arguments
after - String
before - String
first - Int
last - Int
type - AssetType! Use assetHash to distinguish CAT2 assets from XCH.
wallet - Wallet! The wallet that owns this asset
Example
{
  "amount": {},
  "asset": Asset,
  "assetHash": "xyz789",
  "canViewerUpdate": true,
  "decimals": 987,
  "displayName": "abc123",
  "displaySymbol": "abc123",
  "id": "4",
  "identifier": "abc123",
  "issuerWallet": Wallet,
  "lockedAmount": {},
  "mintState": "CLAWED_BACK",
  "multiIssuance": false,
  "name": "abc123",
  "revocable": false,
  "spendableAmount": {},
  "symbol": "xyz789",
  "totalAmount": {},
  "totalMelted": {},
  "totalMinted": {},
  "totalSupply": {},
  "transactions": WalletAssetTransactionsConnection,
  "type": "CAT1",
  "wallet": Wallet
}

WalletAssetsConnection

Fields
Field Name Description
edges - [WalletAssetsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletAssetsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

WalletAssetsConnectionEdge

Fields
Field Name Description
cursor - String!
node - WalletAsset!
Example
{
  "cursor": "abc123",
  "node": WalletAsset
}

WalletAssetsSortKey

Description

The set of valid sort keys for the WalletAssets query.

Values
Enum Value Description

CREATED_AT

ID

NAME

Example
"CREATED_AT"

WalletAssetTransactionsConnection

Fields
Field Name Description
edges - [WalletAssetTransactionsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletAssetTransactionsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

WalletAssetTransactionsConnectionEdge

Fields
Field Name Description
cursor - String!
node - TransactionCoinRecord!
Example
{
  "cursor": "abc123",
  "node": TransactionCoinRecord
}

WalletCustodyConfig

Fields
Field Name Description
createdAt - String! The date and time when the custody config was created
id - ID!
standardCustodyConfig - StandardCustodyConfig Standard custody config for standard wallet similar to the Chia reference wallet
vaultCustodyConfig - VaultCustodyConfig Vault custody config
walletId - String! ID of the wallet
Example
{
  "createdAt": "abc123",
  "id": 4,
  "standardCustodyConfig": StandardCustodyConfig,
  "vaultCustodyConfig": VaultCustodyConfig,
  "walletId": "abc123"
}

WalletInterface

Fields
Field Name Description
id - ID!
name - String The name of the wallet
Possible Types
WalletInterface Types

VaultRecoveryReviewWallet

Wallet

Example
{"id": 4, "name": "xyz789"}

WalletMessage

Fields
Field Name Description
bulletinCoinName - String! The coin ID of the bulletin coin that contains this message
createdAt - String! When the message was received
direction - WalletMessageDirection! Whether a message was sent or received by this wallet
id - ID!
isRead - Boolean! Whether this message has been read by the wallet
message - String!
state - String!
topic - String!
vaultLauncherId - String! Launcher ID of the vault that sent the message
wallet - Wallet! The wallet that owns this message
Example
{
  "bulletinCoinName": "xyz789",
  "createdAt": "xyz789",
  "direction": "INBOUND",
  "id": 4,
  "isRead": false,
  "message": "abc123",
  "state": "xyz789",
  "topic": "xyz789",
  "vaultLauncherId": "abc123",
  "wallet": Wallet
}

WalletMessageDirection

Description

The direction of a wallet message.

Values
Enum Value Description

INBOUND

OUTBOUND

Example
"INBOUND"

WalletMessagesConnection

Fields
Field Name Description
edges - [WalletMessagesConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletMessagesConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

WalletMessagesConnectionEdge

Fields
Field Name Description
cursor - String!
node - WalletMessage!
Example
{
  "cursor": "abc123",
  "node": WalletMessage
}

WalletMessagesSortKey

Description

The set of valid sort keys for the WalletMessages query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

WalletNftsConnection

Fields
Field Name Description
edges - [WalletNftsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletNftsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

WalletNftsConnectionEdge

Fields
Field Name Description
cursor - String!
node - Nft!
Example
{
  "cursor": "abc123",
  "node": Nft
}

WalletOffer

Fields
Field Name Description
assets - WalletOfferAssetsConnection! The assets that are associated with this offer.
Arguments
after - String
before - String
first - Int
last - Int
sortKey - OfferAssetsSortKey
bech32 - String!
createdAt - String! The date and time when the offer was created
creatorIncludedFee - BigInt The fee included by the offer creator
expiresAt - DateTime
id - ID!
isCreator - Boolean! Whether the wallet is the creator of the offer
nfts - WalletOfferNftsConnection! The NFTs that are associated with this offer.
Arguments
after - String
before - String
first - Int
last - Int
sortKey - OfferNftsSortKey
offerId - ID!
settlementType - String Settlement type of offer
spendBundle - String!
state - String
transactions - [Transaction!]! Transactions related to this offer
wallet - Wallet! Wallet which has offers
Example
{
  "assets": WalletOfferAssetsConnection,
  "bech32": "abc123",
  "createdAt": "abc123",
  "creatorIncludedFee": {},
  "expiresAt": "2007-12-03T10:15:30Z",
  "id": 4,
  "isCreator": false,
  "nfts": WalletOfferNftsConnection,
  "offerId": "4",
  "settlementType": "xyz789",
  "spendBundle": "xyz789",
  "state": "abc123",
  "transactions": [Transaction],
  "wallet": Wallet
}

WalletOfferAssetsConnection

Fields
Field Name Description
edges - [WalletOfferAssetsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletOfferAssetsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

WalletOfferAssetsConnectionEdge

Fields
Field Name Description
cursor - String!
node - OfferAsset!
Example
{
  "cursor": "abc123",
  "node": OfferAsset
}

WalletOfferNftsConnection

Fields
Field Name Description
edges - [WalletOfferNftsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletOfferNftsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

WalletOfferNftsConnectionEdge

Fields
Field Name Description
cursor - String!
node - OfferNft!
Example
{
  "cursor": "abc123",
  "node": OfferNft
}

WalletOffersConnection

Fields
Field Name Description
edges - [WalletOffersConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletOffersConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

WalletOffersConnectionEdge

Fields
Field Name Description
cursor - String!
node - WalletOffer!
Example
{
  "cursor": "abc123",
  "node": WalletOffer
}

WalletOffersSortKey

Description

The set of valid sort keys for the WalletOffersSortKey query.

Values
Enum Value Description

CREATED_AT

STATUS

WALLET_NAME

Example
"CREATED_AT"

WalletPinnedTransactionsConnection

Fields
Field Name Description
edges - [WalletPinnedTransactionsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletPinnedTransactionsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

WalletPinnedTransactionsConnectionEdge

Fields
Field Name Description
cursor - String!
node - WalletTransaction!
Example
{
  "cursor": "xyz789",
  "node": WalletTransaction
}

WalletPlatformSubscriptionsConnection

Fields
Field Name Description
edges - [WalletPlatformSubscriptionsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletPlatformSubscriptionsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

WalletPlatformSubscriptionsConnectionEdge

Fields
Field Name Description
cursor - String!
node - SubscriptionEntity!
Example
{
  "cursor": "abc123",
  "node": SubscriptionEntity
}

WalletRecoveryState

Description

The set of valid sort keys for the WalletRecoveryState query.

Values
Enum Value Description

AWAITING_REVIEW

CLAWBACK_SIGNED

CLAWBACK_SUBMITTED

FINISH_SIGNED

FINISH_SUBMITTED

IDLE

PENDING

SIGNED

SUBMITTED

TIMELOCK

TIMELOCK_COMPLETE

Example
"AWAITING_REVIEW"

WalletSettings

Fields
Field Name Description
watchtower - Boolean! Master watchtower switch. While false, the vault receives no activity alerts. Recovery alerts are always sent.
watchtowerAlertSettings - [WatchtowerAlertSetting!]! How this vault receives each watchtower alert type it can change, including types it has not changed from the default. The recovery alerts are always sent and are not listed.
Example
{
  "watchtower": false,
  "watchtowerAlertSettings": [WatchtowerAlertSetting]
}

WalletSigner

Fields
Field Name Description
createdAt - String!
id - ID!
signer - Signer! Signer associated with wallet
wallet - Wallet! Wallet which has signer associated with it
Example
{
  "createdAt": "xyz789",
  "id": 4,
  "signer": Signer,
  "wallet": Wallet
}

WalletSignersConnection

Fields
Field Name Description
edges - [WalletSignersConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletSignersConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

WalletSignersConnectionEdge

Fields
Field Name Description
cursor - String!
node - Signer!
vaultSignerState - VaultSignerState Where the signer stands in this vault's custody: active, pending a recovery in progress, or old. Null when none of the signer's keys is a member of the vault.
Example
{
  "cursor": "xyz789",
  "node": Signer,
  "vaultSignerState": "ACTIVE"
}

WalletsSortKey

Description

The set of valid sort keys for the Wallets query.

Values
Enum Value Description

CREATED_AT

NAME

Example
"CREATED_AT"

WalletState

Description

The set of valid states for the Wallet.

Values
Enum Value Description

READY

VAULT_PENDING_CREATE

VAULT_RECOVERY_TIMELOCK

VAULT_RECOVERY_TIMELOCK_COMPLETE

Example
"READY"

WalletSubscription

Fields
Field Name Description
allAvailableTopics - WalletSubscriptionAllAvailableTopicsConnection! All available topics defined for this subscription
Arguments
after - String
before - String
first - Int
last - Int
autoSubscribe - Boolean! Whether the wallet should automatically subscribe to new topics as they are seen on-chain
avatarFileName - String Stored avatar file name for the subscription.
id - ID!
isPlatform - Boolean! Whether this is a platform-level subscription
name - String! Name of the subscription
topics - WalletSubscriptionTopicsConnection! Topics the wallet subscribes to.
Arguments
after - String
before - String
first - Int
last - Int
vaultAddress - String Vault receive address derived from the launcher id
vaultLauncherId - String! Vault launcher ID as a 64-character hexadecimal string.
Example
{
  "allAvailableTopics": WalletSubscriptionAllAvailableTopicsConnection,
  "autoSubscribe": true,
  "avatarFileName": "abc123",
  "id": "4",
  "isPlatform": true,
  "name": "xyz789",
  "topics": WalletSubscriptionTopicsConnection,
  "vaultAddress": "xyz789",
  "vaultLauncherId": "abc123"
}

WalletSubscriptionAllAvailableTopicsConnection

Fields
Field Name Description
edges - [WalletSubscriptionAllAvailableTopicsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [
    WalletSubscriptionAllAvailableTopicsConnectionEdge
  ],
  "pageInfo": PageInfo,
  "totalCount": 987
}

WalletSubscriptionAllAvailableTopicsConnectionEdge

Fields
Field Name Description
cursor - String!
node - SubscriptionTopic!
Example
{
  "cursor": "xyz789",
  "node": SubscriptionTopic
}

WalletSubscriptionsSortKey

Description

The set of valid sort keys for the WalletSubscriptions query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

WalletSubscriptionTopic

Fields
Field Name Description
createdAt - String!
id - ID!
name - String Name of the subscription topic
subscriptionTopicId - String! The ID of the underlying subscription topic
topic - String Topic of the subscription topic
Example
{
  "createdAt": "xyz789",
  "id": 4,
  "name": "abc123",
  "subscriptionTopicId": "xyz789",
  "topic": "abc123"
}

WalletSubscriptionTopicsConnection

Fields
Field Name Description
edges - [WalletSubscriptionTopicsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletSubscriptionTopicsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

WalletSubscriptionTopicsConnectionEdge

Fields
Field Name Description
cursor - String!
node - WalletSubscriptionTopic!
Example
{
  "cursor": "xyz789",
  "node": WalletSubscriptionTopic
}

WalletSubscriptionTopicsSortKey

Description

The set of valid sort keys for the WalletSubscriptionTopics query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

WalletTransaction

Fields
Field Name Description
airdropPayoutRecipientCount - Int The number of airdrop recipients this transaction paid, when it pays out an airdrop sent from this wallet with clawback recipients. Null for every other transaction.
airdropSummary - AirdropTransactionSummary Recipient and clawback totals for an airdrop sent from this wallet. Null for every other transaction.
amount - BigInt! The amount in mojos, never negative. For a transfer, airdrop, royalty or block reward, it is the size of the wallet main token change. It is the stored amount instead when the wallet transaction has no main token change, when the change is zero or contradicts the stored direction, when it is XCH and walletFee is null, and when the wallet is a vault with several wallet transactions for the transaction, one per address. Every other type, offers, mints, coin splits and combines included, reports the amount stored when the transaction was recorded. Use assetChanges.
asset - Asset For a transfer, airdrop, royalty or block reward, the token of the wallet main token change, or the token stored on the transaction when the wallet transaction has no main token change. Every other type reports the token stored on the transaction, which is null for offers. Use assetChanges.
assetChanges - WalletTransactionAssetChangesConnection! What the transaction changed for this wallet, one node per asset: tokens first, then NFTs, outgoing before incoming. A vault with one wallet transaction per address lists the whole wallet on the address with the lowest index, and none on the others. NFT changes are listed only with permission to read the wallet NFTs. A page holds at most 250 changes.
Arguments
after - String
before - String
first - Int
last - Int
associatedClawbackTransaction - WalletTransaction The clawback transaction associated with this transaction
buyOrder - BuyOrder The buy order associated with this transaction, if any
clawbackExpirationTime - DateTime The latest expiration time among the clawback outputs represented by this wallet transaction
clawbackState - ClawbackState! Clawback state and available actions for this transaction
coinReservationTransaction - WalletTransaction Reservation (coin split) transaction for this offer, if present
confirmationHeight - Int The block height at which this transaction was confirmed
confirmations - Int The block confirmation count of this transaction
confirmedAt - String Confirmation block timestamp as an ISO 8601 string.
createdAt - String!
direction - String INBOUND or OUTBOUND, as stored when the transaction was recorded, which is null for offers. A transfer, airdrop, royalty or block reward without a stored direction can report the direction of the wallet main token change. Use assetChanges.
fee - BigInt The fee of the whole transaction in mojos, which can include fees other wallets paid. walletFee is the fee this wallet paid. Use walletFee.
from - String The address this transaction was sent from
hasUnspentClawbackCoins - Boolean! Whether this clawback transaction has unspent clawback coins that can be finalized or clawed back. Returns false if the receiver already finalized the transaction.
id - ID!
initiatingApplicationName - String The name of the OAuth application that initiated this transaction
inputs - WalletTransactionInputsConnection! Input coins to the transaction.
Arguments
after - String
applyCombineSplitFilters - Boolean
before - String
first - Int
last - Int
sortKey - CoinRecordsSortKey
isCoinReservationForOffer - Boolean! True if this transaction itself is a reservation (coin split) for an offer
memos - [String!]!
message - Message The broadcast message associated with this bulletin transaction, if any
nfts - WalletTransactionNftsConnection The NFTs included in this transaction.
Arguments
after - String
before - String
first - Int
last - Int
offer - WalletOffer The offer created with this transaction. Only available after signing.
outputs - WalletTransactionOutputsConnection! Output coins from the transaction.
Arguments
after - String
applyCombineSplitFilters - Boolean
before - String
first - Int
last - Int
sortKey - CoinRecordsSortKey
resubmission - TransactionResubmissionDetails! Transaction resubmission availability and rejection details.
signatureRequest - SignatureRequest The signature request to sign this transaction
state - TransactionStateString! The state of this transaction
timestamp - String
to - String The address this transaction was sent to
type - TransactionType
unspentClawbackCoins - UnspentClawbackCoins The clawback coins this transaction created that are still unspent, which are the coins that finalizing, pushing through, or clawing back the transaction spends. Null when there are none.
vaultRecoveryReview - VaultRecoveryReview The vault recovery review associated with this transaction, if any
wallet - Wallet! The wallet that owns this transaction
walletFee - BigInt The network fee this wallet paid, in mojos. Null when it is not known, such as when several wallets spent XCH in the transaction or its coins are not synced yet.
xchHandle - String The XCHandle this transaction was sent to, without the leading @. Set only for outbound sends created through an XCHandle.
Example
{
  "airdropPayoutRecipientCount": 123,
  "airdropSummary": AirdropTransactionSummary,
  "amount": {},
  "asset": Asset,
  "assetChanges": WalletTransactionAssetChangesConnection,
  "associatedClawbackTransaction": WalletTransaction,
  "buyOrder": BuyOrder,
  "clawbackExpirationTime": "2007-12-03T10:15:30Z",
  "clawbackState": ClawbackState,
  "coinReservationTransaction": WalletTransaction,
  "confirmationHeight": 123,
  "confirmations": 123,
  "confirmedAt": "abc123",
  "createdAt": "abc123",
  "direction": "abc123",
  "fee": {},
  "from": "abc123",
  "hasUnspentClawbackCoins": false,
  "id": "4",
  "initiatingApplicationName": "abc123",
  "inputs": WalletTransactionInputsConnection,
  "isCoinReservationForOffer": true,
  "memos": ["xyz789"],
  "message": Message,
  "nfts": WalletTransactionNftsConnection,
  "offer": WalletOffer,
  "outputs": WalletTransactionOutputsConnection,
  "resubmission": TransactionResubmissionDetails,
  "signatureRequest": SignatureRequest,
  "state": "CLAWED_BACK",
  "timestamp": "xyz789",
  "to": "abc123",
  "type": "AIRDROP",
  "unspentClawbackCoins": UnspentClawbackCoins,
  "vaultRecoveryReview": VaultRecoveryReview,
  "wallet": Wallet,
  "walletFee": {},
  "xchHandle": "abc123"
}

WalletTransactionAssetChange

Description

What a wallet transaction changed for one asset, from the perspective of the wallet. The network fee is not part of it.

Fields
Field Name Description
amount - BigInt! How much the wallet gained or lost, in mojos, never negative. Zero for a coin split or combine, which gives back what it spends.
asset - Asset The token that changed. Null for an NFT.
assetHash - String The asset hash as 64 lowercase hex characters: the asset id of a CAT, or the launcher id of an NFT. Null for XCH.
direction - TransactionDirection INBOUND when the wallet gained the asset, OUTBOUND when it lost it. Null when the change is zero.
inputCoinCount - Int! The number of coins of the asset the wallet spent.
kind - WalletTransactionAssetChangeKind!
outputCoinCount - Int! The number of coins of the asset created for the wallet.
Example
{
  "amount": {},
  "asset": Asset,
  "assetHash": "xyz789",
  "direction": "INBOUND",
  "inputCoinCount": 123,
  "kind": "NFT",
  "outputCoinCount": 987
}

WalletTransactionAssetChangeKind

Description

Whether an asset change is of a token, XCH included, or of an NFT.

Values
Enum Value Description

NFT

TOKEN

Example
"NFT"

WalletTransactionAssetChangesConnection

Fields
Field Name Description
edges - [WalletTransactionAssetChangesConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletTransactionAssetChangesConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

WalletTransactionAssetChangesConnectionEdge

Fields
Field Name Description
cursor - String!
node - WalletTransactionAssetChange!
Example
{
  "cursor": "xyz789",
  "node": WalletTransactionAssetChange
}

WalletTransactionInputsConnection

Fields
Field Name Description
edges - [WalletTransactionInputsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletTransactionInputsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

WalletTransactionInputsConnectionEdge

Fields
Field Name Description
cursor - String!
node - TransactionInput!
Example
{
  "cursor": "abc123",
  "node": TransactionInput
}

WalletTransactionNftsConnection

Fields
Field Name Description
edges - [WalletTransactionNftsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletTransactionNftsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

WalletTransactionNftsConnectionEdge

Fields
Field Name Description
cursor - String!
node - Nft!
Example
{
  "cursor": "xyz789",
  "node": Nft
}

WalletTransactionOutputsConnection

Fields
Field Name Description
edges - [WalletTransactionOutputsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletTransactionOutputsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

WalletTransactionOutputsConnectionEdge

Fields
Field Name Description
cursor - String!
node - TransactionOutput!
Example
{
  "cursor": "abc123",
  "node": TransactionOutput
}

WalletTransactionsConnection

Fields
Field Name Description
edges - [WalletTransactionsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletTransactionsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

WalletTransactionsConnectionEdge

Fields
Field Name Description
cursor - String!
node - WalletTransaction!
Example
{
  "cursor": "xyz789",
  "node": WalletTransaction
}

WalletTransactionsSortKey

Description

The set of valid sort keys for the WalletTransactions query.

Values
Enum Value Description

CREATED_AT

Example
"CREATED_AT"

WalletVaultRecoveriesConnection

Fields
Field Name Description
edges - [WalletVaultRecoveriesConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletVaultRecoveriesConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

WalletVaultRecoveriesConnectionEdge

Fields
Field Name Description
cursor - String!
node - VaultRecovery!
Example
{
  "cursor": "xyz789",
  "node": VaultRecovery
}

WalletVaultRecoverySignersConnection

Fields
Field Name Description
edges - [WalletVaultRecoverySignersConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletVaultRecoverySignersConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

WalletVaultRecoverySignersConnectionEdge

Fields
Field Name Description
cursor - String!
node - VaultRecoverySigner!
Example
{
  "cursor": "xyz789",
  "node": VaultRecoverySigner
}

WalletWalletSubscriptionsConnection

Fields
Field Name Description
edges - [WalletWalletSubscriptionsConnectionEdge!]!
pageInfo - PageInfo!
totalCount - Int!
Example
{
  "edges": [WalletWalletSubscriptionsConnectionEdge],
  "pageInfo": PageInfo,
  "totalCount": 987
}

WalletWalletSubscriptionsConnectionEdge

Fields
Field Name Description
cursor - String!
node - WalletSubscription!
Example
{
  "cursor": "xyz789",
  "node": WalletSubscription
}

WatchtowerAlertFrequency

Description

How often a watchtower alert type is emailed: each time it happens (IMMEDIATE), or batched into a daily, weekly, or monthly digest.

Values
Enum Value Description

DAILY

IMMEDIATE

MONTHLY

WEEKLY

Example
"DAILY"

WatchtowerAlertSetting

Description

How a vault receives one type of watchtower alert.

Fields
Field Name Description
alertType - WatchtowerAlertType! The alert type this setting applies to
digestable - Boolean! Whether this alert type may be batched into a digest. When false, the alert is always sent immediately and only IMMEDIATE is accepted as its frequency.
enabled - Boolean! Whether the alert is sent at all. Defaults to false: a vault receives the alert only after turning it on. Has no effect while the vault's watchtower is false.
frequency - WatchtowerAlertFrequency! How often the alert is emailed. Defaults to IMMEDIATE.
Example
{
  "alertType": "CLAWBACK_FINALIZED",
  "digestable": false,
  "enabled": false,
  "frequency": "DAILY"
}

WatchtowerAlertType

Description

A kind of watchtower alert sent about a vault.

Values
Enum Value Description

CLAWBACK_FINALIZED

CLAWBACK_RECEIVED

FARMING_REWARD_RECEIVED

OFFER_CLOSED

OUTGOING_SPEND

RECOVERY_ABORTED

RECOVERY_COMPLETE

RECOVERY_INITIATED

RECOVERY_ROLLED_BACK

RECOVERY_TIMELOCK_COMPLETE

ROYALTY_RECEIVED

TOKEN_REVOKED

TRANSFER_RECEIVED

Example
"CLAWBACK_FINALIZED"

XchHandleResolution

Fields
Field Name Description
address - String
expiration - String
handle - String!
indexedPeakHeight - Int
status - XchHandleResolutionStatus!
Example
{
  "address": "xyz789",
  "expiration": "xyz789",
  "handle": "abc123",
  "indexedPeakHeight": 123,
  "status": "EXPIRED"
}

XchHandleResolutionStatus

Values
Enum Value Description

EXPIRED

FOUND

NOT_FOUND

UNAVAILABLE

Example
"EXPIRED"

XCHStatus

Description

Possible states for xch payment in buy order

Values
Enum Value Description

CLAWBACK_EXPIRED

CLAWED_BACK

CLAWING_BACK

COMPLETE

FAILED

INITIATED

IN_MEMPOOL

NOT_INITIATED

PENDING

PUSHING_THROUGH

Example
"CLAWBACK_EXPIRED"