Skip to Content
dApps
On this page

lnurl

Request to execute a LNURL  request. The application needs to pass a LNURL  string which should be provided for example by the application’s backend. The lnurl function can also accept a LUD-16  static identifier (e.g. [email protected]) instead of a LNURL string.

The method returns a promise which resolves once the LNURL flow is completed. It returns the last response from the LNURL server. For LNURL-pay requests it also contains payment information (preimage, payment hash) and for LNURL-auth requests it contains auth information (message, signature)

Method

declare function lnurl(lnurl: string): Promise<LNURLResponse>;;

Response

type LNURLResponse = | { status: "OK"; data?: unknown } | { status: "ERROR"; reason: string };

LNURL-pay Response

type LNURLPayResponse = | { status: "OK"; data: { preimage: string, paymentHash: string, paymentRequest: string } } | { status: "ERROR"; reason: string };

LNURL-auth Response

type LNURLAuthResponse = | { status: "OK"; data: { message: string, signature: string } } | { status: "ERROR"; reason: string };

Example

const lnurl = "<LNURL_OR_LIGHTNING_ADDRESS>"; const provider = (window.$onekey && window.$onekey.webln) || window.webln; if (!provider || typeof provider.lnurl !== "function") { throw new Error("LNURL is not supported by this provider."); } await provider.enable(); const result = await provider.lnurl(lnurl); // promise resolves once the LNURL process is finished (e.g. a payment is sent or the login is complete)

Check result.status: an ERROR response contains a reason. Also catch rejected promises, including connection or user-approval failures. The optional data payload depends on the LNURL flow; do not assume a fixed shape without checking it.

Last updated on