curl --request GET \
--url https://gateway.molpha.io/v1/session/challengeconst options = {method: 'GET'};
fetch('https://gateway.molpha.io/v1/session/challenge', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://gateway.molpha.io/v1/session/challenge"
response = requests.get(url)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://gateway.molpha.io/v1/session/challenge"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"status": "ok",
"data": {
"info": {
"domain": "gateway.molpha.io",
"uri": "https://gateway.molpha.io/v1/session",
"version": "1",
"statement": "<string>",
"nonce": "5f3a9c0e7b1d4a26c8e0f1a2b3c4d5e6",
"issuedAt": "2026-10-07T12:00:00.000Z",
"expirationTime": "2026-10-07T12:05:00.000Z",
"resources": [
"<string>"
]
},
"supportedChains": [
{
"chainId": "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
"type": "ed25519",
"signatureScheme": "siws"
}
],
"address": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"owner": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"chainId": "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
"message": "<string>"
}
}{
"error": "validation failed"
}{
"error": "validation failed"
}Get a sign-in challenge
The terms of a Sign-In-With-X sign-in for an address and the exact text its wallet must sign.
curl --request GET \
--url https://gateway.molpha.io/v1/session/challengeconst options = {method: 'GET'};
fetch('https://gateway.molpha.io/v1/session/challenge', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://gateway.molpha.io/v1/session/challenge"
response = requests.get(url)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://gateway.molpha.io/v1/session/challenge"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"status": "ok",
"data": {
"info": {
"domain": "gateway.molpha.io",
"uri": "https://gateway.molpha.io/v1/session",
"version": "1",
"statement": "<string>",
"nonce": "5f3a9c0e7b1d4a26c8e0f1a2b3c4d5e6",
"issuedAt": "2026-10-07T12:00:00.000Z",
"expirationTime": "2026-10-07T12:05:00.000Z",
"resources": [
"<string>"
]
},
"supportedChains": [
{
"chainId": "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
"type": "ed25519",
"signatureScheme": "siws"
}
],
"address": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"owner": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"chainId": "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
"message": "<string>"
}
}{
"error": "validation failed"
}{
"error": "validation failed"
}Query Parameters
Base58 public key that will sign in
"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"
Base58 subscription owner; defaults to address
Response
Sign-in challenge
"ok"
The terms of one sign-in.
Hide child attributes
Hide child attributes
The sign-in message fields, in the shape of the x402 sign-in-with-x extension.
Hide child attributes
Hide child attributes
"gateway.molpha.io"
"https://gateway.molpha.io/v1/session"
"1"
"5f3a9c0e7b1d4a26c8e0f1a2b3c4d5e6"
"2026-10-07T12:00:00.000Z"
"2026-10-07T12:05:00.000Z"
The key that must sign message.
"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"
The subscription owner the session is for; equal to address for the owner itself.
"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"
"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"
The exact UTF-8 text to sign, with no trailing newline.