Skip to content

Generate Magic Link

POST
/api/v1/auth/magic-link/generate
curl --request POST \
--url https://api.qeychain.xyz/api/v1/auth/magic-link/generate \
--header 'Content-Type: application/json' \
--data '{ "external_user_id": "example", "email": "hello@example.com", "name": "example", "wallet_address": "example", "client_name": "example", "clients": [ { "name": "example", "wallets": [ "example" ] } ], "default_client_name": "example", "default_wallet_address": "example", "source": "example", "timestamp": 1, "signature": "example" }'

Generate a one-time magic link URL for partner SSO.

Called server-to-server by partner backends (e.g., TAIP). The request body must include a valid HMAC-SHA256 signature.

Signature message format:

  • With wallet: external_user_id + email + wallet_address + source + timestamp
  • Without wallet: external_user_id + email + source + timestamp
Media typeapplication/json
MagicLinkGenerateRequest

Request from partner backend to generate a magic link.

object
external_user_id
required
External User Id
string
>= 1 characters <= 255 characters
email
required
Email
string format: email
name
Any of:
string
<= 255 characters
wallet_address
Any of:
string
>= 26 characters <= 255 characters
client_name
Any of:
string
<= 255 characters
clients
Any of:
Array<object>
ClientWalletsSchema

A client and their associated wallet addresses.

object
name
required
Name
string
>= 1 characters <= 255 characters
wallets
required
Wallets
Array<string>
>= 1 items
default_client_name
Any of:
string
<= 255 characters
default_wallet_address
Any of:
string
<= 255 characters
source
required
Source
string
>= 1 characters <= 100 characters
timestamp
required
Timestamp

Unix timestamp of request

integer
signature
required
Signature

HMAC-SHA256 signature

string
>= 1 characters
Examplegenerated
{
"external_user_id": "example",
"email": "hello@example.com",
"name": "example",
"wallet_address": "example",
"client_name": "example",
"clients": [
{
"name": "example",
"wallets": [
"example"
]
}
],
"default_client_name": "example",
"default_wallet_address": "example",
"source": "example",
"timestamp": 1,
"signature": "example"
}

Successful Response

Media typeapplication/json
Examplegenerated
example

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}