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

# API reference

> Browse 0xkey API activities and queries by tag.

export const tags = [{
  "id": "boot-proof",
  "label": "Boot Proof"
}, {
  "id": "activities",
  "label": "Activities"
}, {
  "id": "api-keys",
  "label": "API keys"
}, {
  "id": "authenticators",
  "label": "Authenticators"
}, {
  "id": "organizations",
  "label": "Organizations"
}, {
  "id": "broadcasting",
  "label": "Broadcasting"
}, {
  "id": "publicapiservice",
  "label": "PublicApiService"
}, {
  "id": "user-auth",
  "label": "User Auth"
}, {
  "id": "on-ramp",
  "label": "On Ramp"
}, {
  "id": "policies",
  "label": "Policies"
}, {
  "id": "private-keys",
  "label": "Private Keys"
}, {
  "id": "send-transactions",
  "label": "Send Transactions"
}, {
  "id": "users",
  "label": "Users"
}, {
  "id": "wallets",
  "label": "Wallets"
}, {
  "id": "app-proof",
  "label": "App Proof"
}, {
  "id": "private-key-tags",
  "label": "Private Key Tags"
}, {
  "id": "user-tags",
  "label": "User Tags"
}, {
  "id": "sessions",
  "label": "Sessions"
}];

export const endpoints = [{
  "name": "Get a specific boot proof",
  "id": "get-a-specific-boot-proof",
  "type": "query",
  "tags": [{
    "id": "boot-proof",
    "label": "Boot Proof"
  }]
}, {
  "name": "Get activity",
  "id": "get-activity",
  "type": "query",
  "tags": [{
    "id": "activities",
    "label": "Activities"
  }]
}, {
  "name": "Get API key",
  "id": "get-api-key",
  "type": "query",
  "tags": [{
    "id": "api-keys",
    "label": "API keys"
  }]
}, {
  "name": "Get API keys",
  "id": "get-api-keys",
  "type": "query",
  "tags": [{
    "id": "api-keys",
    "label": "API keys"
  }]
}, {
  "name": "Get authenticator",
  "id": "get-authenticator",
  "type": "query",
  "tags": [{
    "id": "authenticators",
    "label": "Authenticators"
  }]
}, {
  "name": "Get authenticators",
  "id": "get-authenticators",
  "type": "query",
  "tags": [{
    "id": "authenticators",
    "label": "Authenticators"
  }]
}, {
  "name": "Get configs",
  "id": "get-configs",
  "type": "query",
  "tags": [{
    "id": "organizations",
    "label": "Organizations"
  }]
}, {
  "name": "Get gas usage and limits.",
  "id": "get-gas-usage-and-limits",
  "type": "query",
  "tags": [{
    "id": "broadcasting",
    "label": "Broadcasting"
  }]
}, {
  "name": "Get nonces for an address.",
  "id": "get-nonces-for-an-address",
  "type": "query",
  "tags": [{
    "id": "broadcasting",
    "label": "Broadcasting"
  }]
}, {
  "name": "Get OAuth 2.0 credential",
  "id": "get-oauth-2-0-credential",
  "type": "query",
  "tags": [{
    "id": "publicapiservice",
    "label": "PublicApiService"
  }]
}, {
  "name": "Get Oauth providers",
  "id": "get-oauth-providers",
  "type": "query",
  "tags": [{
    "id": "user-auth",
    "label": "User Auth"
  }]
}, {
  "name": "Get On Ramp transaction status",
  "id": "get-on-ramp-transaction-status",
  "type": "query",
  "tags": [{
    "id": "on-ramp",
    "label": "On Ramp"
  }]
}, {
  "name": "Get policy",
  "id": "get-policy",
  "type": "query",
  "tags": [{
    "id": "policies",
    "label": "Policies"
  }]
}, {
  "name": "Get policy evaluations",
  "id": "get-policy-evaluations",
  "type": "query",
  "tags": [{
    "id": "activities",
    "label": "Activities"
  }]
}, {
  "name": "Get private key",
  "id": "get-private-key",
  "type": "query",
  "tags": [{
    "id": "private-keys",
    "label": "Private Keys"
  }]
}, {
  "name": "Get send transaction status",
  "id": "get-send-transaction-status",
  "type": "query",
  "tags": [{
    "id": "send-transactions",
    "label": "Send Transactions"
  }]
}, {
  "name": "Get smart contract interface",
  "id": "get-smart-contract-interface",
  "type": "query",
  "tags": [{
    "id": "policies",
    "label": "Policies"
  }]
}, {
  "name": "Get sub-organizations",
  "id": "get-sub-organizations",
  "type": "query",
  "tags": [{
    "id": "organizations",
    "label": "Organizations"
  }]
}, {
  "name": "Get the latest boot proof for an app",
  "id": "get-the-latest-boot-proof-for-an-app",
  "type": "query",
  "tags": [{
    "id": "boot-proof",
    "label": "Boot Proof"
  }]
}, {
  "name": "Get user",
  "id": "get-user",
  "type": "query",
  "tags": [{
    "id": "users",
    "label": "Users"
  }]
}, {
  "name": "Get verified sub-organizations",
  "id": "get-verified-sub-organizations",
  "type": "query",
  "tags": [{
    "id": "organizations",
    "label": "Organizations"
  }]
}, {
  "name": "Get wallet",
  "id": "get-wallet",
  "type": "query",
  "tags": [{
    "id": "wallets",
    "label": "Wallets"
  }]
}, {
  "name": "Get wallet account",
  "id": "get-wallet-account",
  "type": "query",
  "tags": [{
    "id": "wallets",
    "label": "Wallets"
  }]
}, {
  "name": "List activities",
  "id": "list-activities",
  "type": "query",
  "tags": [{
    "id": "activities",
    "label": "Activities"
  }]
}, {
  "name": "List App Proofs for an activity",
  "id": "list-app-proofs-for-an-activity",
  "type": "query",
  "tags": [{
    "id": "app-proof",
    "label": "App Proof"
  }]
}, {
  "name": "List Fiat On Ramp Credentials",
  "id": "list-fiat-on-ramp-credentials",
  "type": "query",
  "tags": [{
    "id": "on-ramp",
    "label": "On Ramp"
  }]
}, {
  "name": "List OAuth 2.0 Credentials",
  "id": "list-oauth-2-0-credentials",
  "type": "query",
  "tags": [{
    "id": "user-auth",
    "label": "User Auth"
  }]
}, {
  "name": "List policies",
  "id": "list-policies",
  "type": "query",
  "tags": [{
    "id": "policies",
    "label": "Policies"
  }]
}, {
  "name": "List private key tags",
  "id": "list-private-key-tags",
  "type": "query",
  "tags": [{
    "id": "private-key-tags",
    "label": "Private Key Tags"
  }]
}, {
  "name": "List private keys",
  "id": "list-private-keys",
  "type": "query",
  "tags": [{
    "id": "private-keys",
    "label": "Private Keys"
  }]
}, {
  "name": "List smart contract interfaces",
  "id": "list-smart-contract-interfaces",
  "type": "query",
  "tags": [{
    "id": "policies",
    "label": "Policies"
  }]
}, {
  "name": "List user tags",
  "id": "list-user-tags",
  "type": "query",
  "tags": [{
    "id": "user-tags",
    "label": "User Tags"
  }]
}, {
  "name": "List users",
  "id": "list-users",
  "type": "query",
  "tags": [{
    "id": "users",
    "label": "Users"
  }]
}, {
  "name": "List wallets",
  "id": "list-wallets",
  "type": "query",
  "tags": [{
    "id": "wallets",
    "label": "Wallets"
  }]
}, {
  "name": "List wallets accounts",
  "id": "list-wallets-accounts",
  "type": "query",
  "tags": [{
    "id": "wallets",
    "label": "Wallets"
  }]
}, {
  "name": "Who am I",
  "id": "who-am-i",
  "type": "query",
  "tags": [{
    "id": "sessions",
    "label": "Sessions"
  }]
}];

export const EndpointFilter = ({endpoints, tags}) => {
  const filterId = `endpoint-filter-${Math.random().toString(36).slice(2, 9)}`;
  const handleTagClick = value => {
    const rootEl = document.getElementById(filterId);
    if (!rootEl) return;
    const filterTags = rootEl.getAttribute('data-filter-tags') || '';
    const filterTagsArray = filterTags.split(',').filter(Boolean);
    const isType = ["all", "query", "activity"].includes(value);
    if (isType) {
      rootEl.setAttribute('data-filter-type', value);
    } else {
      if (filterTagsArray.includes(value)) {
        filterTagsArray.splice(filterTagsArray.indexOf(value), 1);
      } else {
        filterTagsArray.push(value);
      }
      rootEl.setAttribute('data-filter-tags', filterTagsArray.join(','));
    }
    const rows = rootEl.querySelectorAll('.endpoint-row');
    rows.forEach(r => {
      const tagsAttr = r.getAttribute('data-tags') || '';
      const tags = tagsAttr.split(',').filter(Boolean);
      const matchesTags = filterTagsArray.length === 0 || filterTagsArray.some(f => tags.includes(f));
      const rowType = r.getAttribute('data-endpoint-type') || 'all';
      const currentType = rootEl.getAttribute('data-filter-type');
      const matchesType = currentType === 'all' || rowType === currentType;
      r.style.display = matchesTags && matchesType ? 'block' : 'none';
    });
    const pills = rootEl.querySelectorAll('.endpoint-tag');
    pills.forEach(p => {
      if (p.hasAttribute('data-endpoint-type')) {
        const type = p.getAttribute('data-endpoint-type');
        if (type === rootEl.getAttribute('data-filter-type')) {
          p.style.backgroundColor = 'rgb(var(--primary-light))';
          p.style.color = 'white';
        } else {
          p.style.removeProperty('background-color');
          p.style.removeProperty('color');
        }
      } else {
        const tagId = p.getAttribute('data-tag');
        if (filterTagsArray.includes(tagId)) {
          p.style.backgroundColor = 'rgb(var(--primary-light))';
          p.style.color = 'white';
        } else {
          p.style.removeProperty('background-color');
          p.style.removeProperty('color');
        }
      }
    });
  };
  return <div>
<div className="flex flex-col gap-4" id={filterId} data-filter-tags="" data-filter-type="all">
<div className="flex flex-row gap-2 flex-wrap items-center">

          {tags.sort((a, b) => a.label.localeCompare(b.label)).map(tag => <span data-tag={tag.id} onClick={() => handleTagClick(tag.id)} className="endpoint-tag select-none h-8 text-xs px-2 cursor-pointer bg-gray-100/50 dark:bg-white/10 inline-flex items-center justify-center rounded-full text-gray-600 dark:text-gray-200 font-medium">
              {tag.label}
            </span>)}
        </div>
        <div className="flex flex-col pb-12 min-h-dvh">
          {endpoints.sort((a, b) => a.name.localeCompare(b.name)).map(endpoint => <div className="endpoint-row" data-tags={endpoint.tags.map(t => t.id).join(",")} data-endpoint-type={endpoint.type}>
              <span onClick={() => {
    window.location.href = `${endpoint.type === "query" ? "queries" : "activities"}/${endpoint.id}`;
  }} className="cursor-pointer py-2 font-normal border-b border-gray-100 dark:border-gray-700 group flex flex-row justify-between items-start md:items-center">
                <div className="flex flex-row gap-2 items-start md:items-center font-normal items-center">
                  <div className="">{endpoint.name}</div>

                  <span class="px-1 py-0.5 rounded text-[0.55rem] leading-tight font-bold bg-gray-100/50 dark:bg-white/5 text-gray-600 dark:text-gray-200">
                    {endpoint.type}
                  </span>
                </div>
                <div className="flex flex-row gap-2">
                  {endpoint.tags.map(tag => <span key={tag.id} style={{
    padding: "0 10px",
    letterSpacing: "0.025rem"
  }} className="inline-flex h-6 items-center text-xs rounded-full bg-gray-100/50 dark:bg-white/5 text-gray-600 dark:text-gray-200 font-medium break-all">
                      <span className="tracking-wide">{tag.label}</span>
                    </span>)}
                </div>
              </span>
            </div>)}
        </div>

      </div>
    </div>;
};

<Note>
  **Phase 1 status.** This reference is generated from the OpenAPI spec and lists every endpoint the public API exposes. Some endpoints are wired but return stubbed responses or have not been connected to downstream infrastructure yet:

  * **Broadcast** — `eth_send_raw_transaction` returns a mock receipt (no real RPC); `eth_send_transaction` and `sol_send_transaction` (high-level send) currently error.
  * **Stubbed queries** — `get_send_transaction_status`, `get_on_ramp_transaction_status`, `get_gas_usage`, `get_nonces`, `get_boot_proof`, `get_latest_boot_proof`, `list_app_proofs`, `list_fiat_on_ramp_credentials` return empty / zero-valued responses.
  * **Not in current proto** — `get_balances` and `get_tvc_app_status` have no corresponding RPC in the running services (their doc paths redirect to the [Roadmap](/0xkey/roadmap)).
  * **Webhooks** — webhook endpoint CRUD and listing are wired. Current subscription support is limited to `ACTIVITY_UPDATES`; update supports URL/name/active status but not subscription changes.
  * **Notarize-only** — `create_oauth_providers` returns an empty `provider_ids` list; fiat on-ramp CRUD activities only notarize, no real on-ramp is wired.

  See the [Roadmap](/0xkey/roadmap) for the authoritative status matrix.
</Note>

<EndpointFilter endpoints={endpoints} tags={tags} />
