Skip to main content
GET
/
passkeys
/
account
/
{passkey_account_address}
Get passkey account
curl --request GET \
  --url https://grid.squads.xyz/api/grid/v1/passkeys/account/{passkey_account_address} \
  --header 'Authorization: Bearer <token>' \
  --header 'x-grid-environment: <x-grid-environment>'
{
  "pubkey": "<string>",
  "relyingPartyId": "<string>",
  "sessionKey": "<unknown>"
}
Retrieves detailed information about a passkey account including its relying party ID, public key, and current session key if not expired.

Path Parameters

  • passkey_account_address (required): The on-chain Solana address of the passkey account

Response

Returns passkey account details:
{
  "relying_party_id": "example.com",
  "pubkey": "9yM...def", // Passkey public key in base58
  "session_key": {
    // Optional: Only if session is still valid
    "key": "3pQ...ghi",
    "expiration": 1234567890 // Unix timestamp
  }
}

Session Key Validation

The endpoint performs session key expiration validation:
  1. Checks Blockchain Clock: Queries Solana for current slot/timestamp
  2. Validates Expiration: Compares session expiration against blockchain time
  3. Returns if Valid: Includes session_key in response if not expired
  4. Omits if Expired: session_key field not included if expired
Session validation is performed against the Solana blockchain clock, not the API server time. This ensures consistent validation across all Grid services.

Use Cases

Check Session Status

Determine if an existing session key is still valid:
const response = await fetch(
  `https://grid.squads.xyz/api/grid/v1/passkeys/account/${passkeyAddress}`,
  {
    headers: {
      Authorization: "Bearer YOUR_API_KEY",
      "x-grid-environment": "sandbox",
    },
  }
);

const data = await response.json();

if (data.session_key) {
  console.log("Session is valid until:", new Date(data.session_key.expiration * 1000));
  // Use existing session
} else {
  console.log("Session expired, need to re-authenticate");
  // Call /passkeys/auth to refresh
}

Verify Passkey Existence

Check if a passkey account exists before operations:
try {
  const response = await fetch(
    `https://grid.squads.xyz/api/grid/v1/passkeys/account/${passkeyAddress}`,
    {
      headers: {
        Authorization: "Bearer YOUR_API_KEY",
        "x-grid-environment": "sandbox",
      },
    }
  );

  if (response.ok) {
    console.log("Passkey exists");
  }
} catch (error) {
  console.error("Passkey not found");
}

Get Relying Party Information

Retrieve the relying party ID for cross-origin validation:
const data = await response.json();
console.log("Relying Party:", data.relying_party_id);
// Use for WebAuthn RP configuration

Response Fields

relying_party_id

The WebAuthn relying party identifier associated with this passkey. Limited to 32 bytes. Used for validating WebAuthn operations.

pubkey

The passkey’s public key in base58 format. This is the cryptographic public key used to verify signatures from this passkey.

session_key (optional)

Only included if a session key exists and has not expired:
  • key: Session public key in base58 format
  • expiration: Unix timestamp when session expires

Important Notes

  • Blockchain Validation: Session expiration checked against Solana clock
  • Expired Sessions: session_key omitted if expired (not an error)
  • Passkey Persistence: Passkey data persists even after session expiration
  • RP ID Limit: Relying party IDs are limited to 32 bytes
  • Cross-Origin: Relying party ID must match WebAuthn origin

Error Handling

Common errors:
  • NoValidExternallySignedAccount: Passkey address not found
  • InvalidExternallySignedAccountAddress: Malformed address
  • NotFound: Passkey account does not exist

Authorizations

Authorization
string
header
required

Your Grid API key from the Grid Dashboard

Headers

x-grid-environment
string
required

Solana network environment (sandbox, devnet, mainnet)

Path Parameters

passkey_account_address
string
required

Passkey account address (Solana public key)

Response

Passkey account retrieved successfully

pubkey
string
required
relyingPartyId
string
required
sessionKey
object

Grid v1 API SessionKey type that supports backward-compatible deserialization from both raw bytes array (old format) and base58 string (new format). Always serializes to base58 string format.