Me

Link wallet

Submit purpose=link challenge message (requested in same session) and signature. Request Origin mode must match challenge: browser challenge must send same Origin (https://<stored domain>), programmatic challenge must omit Origin, otherwise returns 400 siwe_invalid (reason domain_mismatch). New link returns 201; returns 200 idempotently if wallet already belongs to this user.

Scope of support:

  • Supported: EOA wallets on Ethereum mainnet (Chain ID 1).
  • Not supported: Any other chains (Chain ID is embedded by server; submitting modified Chain ID fails byte-for-byte check returning 400 siwe_invalid, reason signature), contract wallets (EIP-1271), and smart accounts.
post/me/identities/siwe

Request

  • Base URL: https://console-api.blockvectra.com/v1
  • URL: https://console-api.blockvectra.com/v1/me/identities/siwe
  • Auth: HTTP bearer

Request body

messagestring required

EIP-4361 message (LF line endings, no trailing newline), up to 2048 bytes.

signaturestring required

65-byte ECDSA signature (r||s||v).

Response

Wallet already linked to this user (idempotent).

identity_idstring required
provider'siwe' | 'github' | 'google' required
subjectstring required

SIWE: eip155:1:<lowercase address>; GitHub: numeric id; Google: sub.

displaystring nullable required

EIP-55 address for SIWE, login for GitHub (display only), null for Google.

created_atstring date-time required

RFC 3339 UTC, second precision, ending in Z (2026-09-26T08:00:00Z); no fractional seconds, without +00:00 timezone offsets.

last_login_atstring date-time required

RFC 3339 UTC, second precision, ending in Z (2026-09-26T08:00:00Z); no fractional seconds, without +00:00 timezone offsets.

Example response

{
  "created_at": "2026-09-26T08:00:00Z",
  "last_login_at": "2026-09-26T08:00:00Z"
}

Changes

No recorded changes to this operation across all 1 revision of this API.