Skip to main content
GET
/
v0
/
auth
/
siwe
/
challenge
Get Challenge
curl --request GET \
  --url https://api.sumvin.com/v0/auth/siwe/challenge \
  --header 'x-juno-jwt: <api-key>'
{
  "_links": {
    "self": {
      "href": "<string>",
      "method": "GET",
      "templated": false,
      "description": "<string>"
    }
  },
  "message": "<string>",
  "nonce": "<string>",
  "expires_at": 123
}

Authorizations

x-juno-jwt
string
header
required

JWT issued by Dynamic Labs or Privy. Sent in the x-juno-jwt header on every authenticated request.

Headers

x-juno-orgid
string | null

Tenant org ID for multi-tenant auth

x-juno-jwt
string | null
x-sumvin-token
string | null
x-sumvin-pat
string | null
X-Timestamp-Format
string

Controls how timestamp fields are serialized in JSON response bodies.

Default (header omitted or any other value): epoch milliseconds as integers. iso8601: UTC ISO 8601 strings of the form YYYY-MM-DDTHH:MM:SSZ.

Example: with X-Timestamp-Format: iso8601, the field value 1704067200000 becomes "2024-01-01T00:00:00Z".

Affected fields (recursively, in dicts and arrays): any field whose name ends in _at, plus the literal field names timestamp, period_start, and period_end. All other fields are passed through unchanged.

Only iso8601 is recognized. Any other value (or omitting the header) yields the default epoch-ms representation; the server does not reject unknown values, so this is documented as an example rather than an enum to keep generated clients permissive.

Example:

"iso8601"

Query Parameters

address
string
required

Wallet address to generate challenge for (0x-prefixed 20-byte hex)

Required string length: 42
Pattern: ^0x[0-9a-fA-F]{40}$
chain_id
enum<integer>
required

Chain on which the wallet will sign the SIWE message. Sei mainnet (1329) in production; Sei testnet (1328) in non-production.

Available options:
1329,
1328

Response

SIWE challenge generated

HAL-style links

message
string
required

EIP-4361 formatted message to sign

nonce
string
required

One-time nonce for replay protection

expires_at
integer
required

Challenge expiry timestamp (epoch ms)