Saltar al contenido principal

Referencia de la API

A continuación se muestra una referencia para la API de phoenixd, actualizada para la versión 0.7.0.

Seguridad

⚠️ Esta API debe estar protegida. Da acceso a tus fondos. Eres responsable de protegerla. Específicamente, esta API no debe ser accesible desde el mundo exterior.

La API utiliza un esquema de autenticación Básica. Las contraseñas se generan en el primer inicio (ver ~/.phoenix/phoenix.conf).

Contraseña principal

http-password es la contraseña principal y da acceso a todos los puntos finales de la API.

Contraseña secundaria

http-password-limited-access es menos sensible que la contraseña principal, pero aun así no debe compartirse, ya que otros ataques son posibles, por ejemplo, agotamiento de recursos creando millones de facturas, etc...

Los siguientes puntos finales no están disponibles con esta contraseña secundaria: payinvoice, payoffer, paylnaddress, lnurlpay, lnurlauth, sendtoaddress, closechannel, export.

Crear factura Bolt11

Punto final

POST /createinvoice

Descripción

Crea una factura Bolt11 con una descripción.

Una factura Bolt11 es una solicitud de pago para Lightning no reutilizable y con fecha de caducidad, muy adecuada para un flujo de pago minorista. Solo se puede pagar una vez.

Parámetros

  • description la descripción de la factura (máx. 128 caracteres).
    • o en su lugar descriptionHash hash sha256 de una descripción.
  • amountSat (opcional) la cantidad solicitada por la factura, en satoshi. Si no se establece, la factura se puede pagar por cualquier cantidad.
  • expirySeconds (opcional) la caducidad de la factura en segundos, por defecto 3600 (1 hora).
  • externalId (opcional) un identificador personalizado. Úsalo para vincular la factura a un sistema externo.
  • webhookUrl (opcional) una URL de webhook que será notificada cuando este pago específico haya sido recibido. Esta notificación se realiza además de los [#webhook](webhooks normales) definidos in la configuración.

Ejemplo de código

$ curl -X POST http://localhost:9740/createinvoice \
-u :<phoenixd_api_password> \
-d description=\'mi primera factura\' \
-d amountSat=100 \
-d externalId=foobar \
-d webhookUrl=\'https://my.webhook.net\'

Respuesta

{
"amountSat": 100,
"paymentHash": "f419207c9edde9021ebfb6bd0df6bd0a6606ecaf935357cc2f362e30835c3765",
"serialized": "lntb1u1pjlsjnqpp57svjqly7mh5sy84lk67sma4apfnqdm90jdf40np0xchrpq6uxajscqpjsp592kp0fs2ssgpq9h54tsfaj5w34287v8fezgaw6cr56f076c05glq9q7sqqqqqqqqqqqqqqqqqsqqqqqysgqdq6d4ujqenfwfehggrfdemx76trv5mqz9grzjqwfn3p9278ttzzpe0e00uhyxhned3j5d9acqak5emwfpflp8z2cnflcyamh4dcuhwqqqqqlgqqqqqeqqjqnjpjvnv0p3wvwc6vhzkkgm8kl9r837x4p9qupk5ln5tqlm7prrlsy5xd8cf5agae64f53dvm9el0z5hvgcnta4stgmrg7zwfah0nqrqph4ts8l"
}

Crear oferta Bolt12

Punto final

POST /createoffer

Descripción

Crea una oferta Bolt12 con una descripción y cantidad opcionales.

Una oferta es una solicitud de pago estática y reutilizable que no caduca. Se puede pagar muchas veces. Es muy adecuada para donaciones o propinas.

Nota: también hay disponible una llamada getoffer pero está obsoleta. Este punto final getoffer devuelve una oferta, pero siempre la misma. En su lugar, se debe usar createoffer.

Parámetros

  • description (opcional) la descripción de la oferta (máx. 128 caracteres).
  • amountSat (opcional) la cantidad solicitada por la oferta, en satoshi. Si no se establece, la oferta se puede pagar por cualquier cantidad.

Ejemplo de código

$ curl -X POST http://localhost:9740/createoffer \
-u :<phoenixd_api_password> \
-d description=\'una oferta para Pierre\' \
-d amountSat=100

Respuesta

lno1qgsyxjtl6luzd9t3pr62xr7eemp6awnejusgf6gw45q75vcfqqqqqqqgqvqcdgq2zdskugr0venx2u3qvehhygzsd9jhyun9zrhq8yecsj40r443pquhuhh7tjrteukce2xj7uqwm2vahys5lsn39vf5q2fyfxsw6xn824393en87nre87xcectkgcj85trcu5hn9r9703645qsrxtcq785whraquh5atw89w5scg707fz23405ygk7jn9uek3tkmvdqqvc8yz8xm2yme6hjx3x02csmq6pfzaejqr3kzg7u8am96txu95z8am8zgvfvfcnzk27ylwk43ut48xv2vrkhqtj3wes32glw5ft5h7f4p8ytwey4cqjsks55zcmr3hka0p8e50thjqpjytmt5wsa4ylhavdmewv7jmj2ppy9daujfmfvpmnw9cf75cymjffzh2nafn883vsqr3a8u2l797mayh3p

Obtener dirección Lightning

Punto final

GET /getlnaddress

Descripción

Obtiene una dirección Lightning BIP-353 del LSP. Solo funciona si tienes un canal.

Nota: también puedes usar servicios de terceros o auto-alojar la dirección.

Ejemplo de código

$ curl http://localhost:9740/getlnaddress \
-u :<phoenixd_api_password>

Respuesta

₿purplecrocus03@phoenixwallet.me

Pagar factura Bolt11

Punto final

POST /payinvoice

Descripción

Paga una factura Lightning BOLT11. Se aplica una tarifa del 0.4%. La respuesta incluye el paymentId interno para ese pago.

Parámetros

  • amountSat cantidad opcional en satoshi. Si no se establece, se pagará la cantidad solicitada en la factura.
  • invoice factura BOLT11

Ejemplo de código

$ curl -X POST http://localhost:9740/payinvoice \
-u :<phoenixd_api_password> \
-d amountSat=1 \
-d invoice=lntb10n1pjl3pmlpp5jkrt9qvl83knc0sg0xztjlw0fd6t40725hdyh3pq0arudswvw8sqcqpjsp5zsc4phrg5v6nl84wkd9vuqzlva22j2qwll28v37y9jgjs7ap2dxs9q7sqqqqqqqqqqqqqqqqqqqsqqqqqysgqdq4xysyymr0vd4kzcmrd9hx7mqz9grzjqwfn3p9278ttzzpe0e00uhyxhned3j5d9acqak5emwfpflp8z2cnfl6h8msfh3505gqqqqlgqqqqqeqqjq6f8fhkj0uma7m68arjj3m5gn339xh3m5fn4qj9r9xu550686m0y8kadeahnn02ucmyq9nfsj0vl5vhpl6g7h6fs8xa8wu2qr3yc6a2gp4h32vu

Respuesta

{
"recipientAmountSat": 1,
"routingFeeSat": 4,
"paymentId": "961d413c-91ca-4f3d-9d91-760a08405901",
"paymentHash": "9586b2819f3c6d3c3e087984b97dcf4b74babfcaa5da4bc4207f47c6c1cc71e0",
"paymentPreimage": "6a3e65d9a05113864c9c27e430cc99751359ccbfa8fd5869aea46405df657986"
}

Pagar oferta Bolt12

Punto final

POST /payoffer

Descripción

Paga una oferta Lightning BOLT12. Se aplica una tarifa del 0.4%. La respuesta incluye el paymentId interno para ese pago.

Parámetros

  • amountSat cantidad opcional en satoshi. Si no se establece, se pagará la cantidad solicitada en la factura.
  • offer oferta BOLT12
  • message un mensaje opcional para el destinatario

Ejemplo de código

$ curl -X POST http://localhost:9740/payoffer \
-u :<phoenixd_api_password> \
-d amountSat=123 \
-d offer=lno1qgsyxjtl6luzd9t3pr62xr...9ry9zqagt0ktn4wwvqg52v9ss9ls22sqyqqestzp2l6decpn87pq96udsvx \
-d message=\'👋 ¡Hola!\'

Respuesta

{
"recipientAmountSat": 123,
"routingFeeSat": 4,
"paymentId": "889c26f1-3028-4fae-9bd9-130c6e93542f",
"paymentHash": "54ed3cadcd102a475f7e7bd25a89223b46514df72c01c4fa9880aed7a795eb16",
"paymentPreimage": "09820bd4915f91ab21377879d5182c1bcf35feabdda5933266a99b4126f32b9b"
}

Pagar dirección Lightning

Punto final

POST /paylnaddress

Descripción

Paga una dirección Lightning similar a un correo electrónico, ya sea basada en BIP-353 o LNURL. Se aplica una tarifa del 0.4%. La respuesta incluye el paymentId interno para ese pago. Parámetros

  • amountSat cantidad opcional en satoshi. Si no se establece, se pagará la cantidad solicitada en la factura.
  • address factura BOLT11
  • message un mensaje opcional para el destinatario

Ejemplo de código

$ curl -X POST http://localhost:9740/paylnaddress \
-u :<phoenixd_api_password> \
-d amountSat=123 \
-d address=flashybugle70@testnet.phoenixwallet.me \
-d message=\'👋 ¡Hola!\'

Respuesta

{
"recipientAmountSat": 123,
"routingFeeSat": 4,
"paymentId": "a9b1b8f8-bfdb-4299-9979-18e616bc9259",
"paymentHash": "bfa554308df2f397cd23ba724316660aaa398b2044b3e4e15ed79b8f2b278679",
"paymentPreimage": "dc4a8e059599d464d9ea10dfc0ffe6ad23a898c897c42dad973716e85c26a920"
}

Pagar en cadena

Punto final

POST /sendtoaddress

Descripción

Envía parte de tu saldo actual a una dirección de Bitcoin. El canal dividido no se cierra y permanece activo. Devuelve el id de la transacción si la división fue exitosa.

Parámetros

  • amountSat cantidad en satoshi
  • address dirección de Bitcoin a donde se enviarán los fondos
  • feerateSatByte tasa de tarifa en satoshi por vbyte

Ejemplo de código

$ curl -X POST http://localhost:9740/sendtoaddress \
-u :<phoenixd_api_password> \
-d amountSat=100000 \
-d address=tb1qwnp38xc5qh35ch9l5p6a3r7kwupj9rw5a4jn3y \
-d feerateSatByte=12

Respuesta

05a28b4972560655eeedaaf72c4d8e9f1a285e47e2d347734853b5e49ae9ead0

Aumentar tarifa

Punto final

POST /bumpfee

Descripción

Hace que todas tus transacciones no confirmadas usen una tasa de tarifa más alta, usando CPFP. Devuelve el ID de la transacción hija.

Parámetros

  • feerateSatByte tasa de tarifa, en satoshi por vbyte.

Ejemplo de código

$ curl -X POST http://localhost:9740/bumpfee \
-u :<phoenixd_api_password> \
-d feerateSatByte=11

Respuesta

758b3df67c62c9cd9ebbde1ff6eaadc1c51f94d5b1a3efb2548236b9a6f1c659

Listar pagos entrantes

Punto final

GET /payments/incoming

Descripción

Lista los pagos entrantes.

Parámetros

  • from: marca de tiempo de inicio en milisegundos desde la época, por defecto 0
  • to: marca de tiempo de fin en milisegundos desde la época, por defecto ahora
  • limit: número de pagos en la página, por defecto 20
  • offset: desplazamiento de página, por defecto 0
  • all: también devuelve facturas no pagadas
  • externalId: solo incluye pagos que usan este id externo.

Ejemplo de código

$ curl \'http://localhost:9740/payments/incoming?all=true&limit=3&offset=2\' \
-u :<phoenixd_api_password>

Respuesta

[
{
"type": "incoming_payment",
"subType": "lightning",
"paymentHash": "b02a9a090c7a5ae7af39f4c8398629fd596d348a452a48d290a8e250bcdd7f31",
"preimage": "d4ffb9d35c4f85bc2a11d09d7a35ef5799f19dcacd66740fc6b470c1b7e5ab9f",
"externalId": "some_custom_id",
"description": "foobar",
"invoice": "lntb1u1pnm73qvpp5kq4f5zgv0fdw0tee7nyrnp3fl4vk6dy2g54y355s4r39p0xa0ucscqzyssp5ljhykmd6a4ykvt683scnqd37umgy87x4nel4nc7gnhjahd86dvvq9q7sqqqqqqqqqqqqqqqqqqqsqqqqqysgqdq2vehk7cnpwgmqz9gxqyz5vqrzjqwfn3p9278ttzzpe0e00uhyxhned3j5d9acqak5emwfpflp8z2cnflaaxc6fnra0gcqqqqlgqqqqqeqqjqfrjwg5t3rg3k9mlnrsp0mglghr670hfwcunr5umyhjv4uegas6a3q7y9s3kg3a22ejmkgw9t98j0mhuz93ffkprtjtqx8mn068v3qasqhvlm9k",
"isPaid": true,
"receivedSat": 100,
"fees": 0,
"completedAt": 1740588077020,
"createdAt": 1740588044198
},
{
"type": "incoming_payment",
"subType": "lightning",
"paymentHash": "b215bf7745a7d5250be2535b723dd881368c4c4dbd44819cbb0ca7d2d02ee140",
"preimage": "2ddcc7fd888f5c524e69c2a6e5ddd89a701b60c73746697568d438aa1cdbdafa",
"isPaid": true,
"receivedSat": 352,
"fees": 0,
"payerKey": "02da45cf516282e6959e48c26d6ed5f98bf7c32248193439bd1d22de81ae897426",
"completedAt": 1738677427800,
"createdAt": 1738677427800
},
{
"type": "incoming_payment",
"subType": "lightning",
"paymentHash": "9d1f404813f02b86ef177cffd2405f76010fafa98728d0c6ba57ba66f3736f7f",
"preimage": "1bd574c090c1214299449a6a0a23a7dc906b310b6e2d2afcabeb2d707205abb9",
"isPaid": true,
"receivedSat": 100000,
"fees": 0,
"payerKey": "02da45cf516282e6959e48c26d6ed5f98bf7c32248193439bd1d22de81ae897426",
"completedAt": 1738676523881,
"createdAt": 1738676523881
}
]

Obtener pago entrante

Punto final

GET /payments/incoming/{paymentHash}

Ejemplo de código

$ curl http://localhost:9740/payments/incoming/b02a9a090c7a5ae7af39f4c8398629fd596d348a452a48d290a8e250bcdd7f31 \
-u :<phoenixd_api_password>

Respuesta

{
"type": "incoming_payment",
"subType": "lightning",
"paymentHash": "b02a9a090c7a5ae7af39f4c8398629fd596d348a452a48d290a8e250bcdd7f31",
"preimage": "d4ffb9d35c4f85bc2a11d09d7a35ef5799f19dcacd66740fc6b470c1b7e5ab9f",
"externalId": "some_custom_id",
"description": "foobar",
"invoice": "lntb1u1pnm73qvpp5kq4f5zgv0fdw0tee7nyrnp3fl4vk6dy2g54y355s4r39p0xa0ucscqzyssp5ljhykmd6a4ykvt683scnqd37umgy87x4nel4nc7gnhjahd86dvvq9q7sqqqqqqqqqqqqqqqqqqqsqqqqqysgqdq2vehk7cnpwgmqz9gxqyz5vqrzjqwfn3p9278ttzzpe0e00uhyxhned3j5d9acqak5emwfpflp8z2cnflaaxc6fnra0gcqqqqlgqqqqqeqqjqfrjwg5t3rg3k9mlnrsp0mglghr670hfwcunr5umyhjv4uegas6a3q7y9s3kg3a22ejmkgw9t98j0mhuz93ffkprtjtqx8mn068v3qasqhvlm9k",
"isPaid": true,
"receivedSat": 100,
"fees": 0,
"completedAt": 1740588077020,
"createdAt": 1740588044198
}

Listar pagos salientes

Punto final

GET /payments/outgoing

Descripción

Lista los pagos salientes.

Parámetros

  • from: marca de tiempo de inicio en milisegundos desde la época, por defecto 0
  • to: marca de tiempo de fin en milisegundos desde la época, por defecto ahora
  • limit: número de pagos en la página, por defecto 20
  • offset: desplazamiento de página, por defecto 0
  • all: también devuelve pagos que han fallado

Ejemplo de código

$ curl \'http://localhost:9740/payments/outgoing?all=true&limit=3&offset=2\' \
-u :<phoenixd_api_password>

Respuesta

[
{
"type": "outgoing_payment",
"subType": "auto_liquidity",
"paymentId": "7ad2ac96-1ff9-47ae-9013-b02203c55b93",
"txId": "53d85c7e1c5c667f5358666bafd0bce78295d6a87946f984133c9d8efe0b357d",
"isPaid": true,
"sent": 26850,
"fees": 26850000,
"completedAt": 1728565522629,
"createdAt": 1728565522382
},
{
"type": "outgoing_payment",
"subType": "lightning",
"paymentId": "9c020753-795c-40a9-b30e-b898b2ba80f5",
"paymentHash": "8125523666c317232342a6c01cc1f22a00affa958428eb9b8d7dc174fd4c2ddf",
"preimage": "0d9074340788444faca4a64d587febaac8bfb4cb811aabdf7ad2a2671647e425",
"isPaid": true,
"sent": 5,
"fees": 4004,
"completedAt": 1738348590680,
"createdAt": 1738348589678
},
{
"type": "outgoing_payment",
"subType": "lightning",
"paymentId": "dddfb160-f5dc-4930-b0d9-bc7a2ebf7b21",
"paymentHash": "9727389e1c776f4efb315c4effae02affcb723883d13433ea74cc9e3f2034a93",
"preimage": "e21f2f734d298a28fb77474ba11510c425566203daa0f9820706d6bfa75e4faa",
"isPaid": true,
"sent": 8,
"fees": 4016,
"invoice": "lntb1pne6xpnpp5junn38suwah5a7e3t380ltsz4l7twgug85f5x048fny78usrf2fscqzyssp5d4wueagg7fjetanym9gl0hpu244nclvxv72nmzlj0z2q4lpewsws9q7sqqqqqqqqqqqqqqqqqqqsqqqqqysgqdqqmqz9gxqyjw5qrzjqwfn3p9278ttzzpe0e00uhyxhned3j5d9acqak5emwfpflp8z2cnflcrt90lceflpuqqqqlgqqqqqeqqjq3nk0es2ahydaf9uz32kryn0wsgek0dmzfddy7nr7f007pn5nzdv83jnf3s7u7cvfxq6j4zd3khz86vzam7gfdq38f8earlc6u7fz5wcppg66jj",
"completedAt": 1738348627503,
"createdAt": 1738348626053
}
]

Obtener pago saliente

Punto final

GET /payments/outgoing/{paymentId}

GET /payments/outgoingbyhash/{paymentHash}

Ejemplo de código

# por uuid
$ curl http://localhost:9740/payments/outgoing/dddfb160-f5dc-4930-b0d9-bc7a2ebf7b21 \
-u :<phoenixd_api_password>
# por hash de pago
$ curl http://localhost:9740/payments/outgoingbyhash/9727389e1c776f4efb315c4effae02affcb723883d13433ea74cc9e3f2034a93 \
-u :<phoenixd_api_password>

Respuesta

{
"type": "outgoing_payment",
"subType": "lightning",
"paymentId": "dddfb160-f5dc-4930-b0d9-bc7a2ebf7b21",
"paymentHash": "9727389e1c776f4efb315c4effae02affcb723883d13433ea74cc9e3f2034a93",
"preimage": "e21f2f734d298a28fb77474ba11510c425566203daa0f9820706d6bfa75e4faa",
"isPaid": true,
"sent": 8,
"fees": 4016,
"invoice": "lntb1pne6xpnpp5junn38suwah5a7e3t380ltsz4l7twgug85f5x048fny78usrf2fscqzyssp5d4wueagg7fjetanym9gl0hpu244nclvxv72nmzlj0z2q4lpewsws9q7sqqqqqqqqqqqqqqqqqqqsqqqqqysgqdqqmqz9gxqyjw5qrzjqwfn3p9278ttzzpe0e00uhyxhned3j5d9acqak5emwfpflp8z2cnflcrt90lceflpuqqqqlgqqqqqeqqjq3nk0es2ahydaf9uz32kryn0wsgek0dmzfddy7nr7f007pn5nzdv83jnf3s7u7cvfxq6j4zd3khz86vzam7gfdq38f8earlc6u7fz5wcppg66jj",
"completedAt": 1738348627503,
"createdAt": 1738348626053
}

Exportación CSV

Punto final

POST /export

Descripción

Exporta tu historial de pagos exitosos en un archivo CSV. Devuelve la ruta del archivo generado en tu sistema de archivos.

El CSV resultante permite un seguimiento preciso del saldo y el crédito de tarifa, y muestra la división entre las tarifas de minería y de servicio:

  • balance: suma de todos los amount_msat
  • fee credit: suma de todos los fee_credit_msat

Parámetros

  • from: marca de tiempo de inicio en milisegundos desde la época, por defecto 0
  • to: marca de tiempo de fin en milisegundos desde la época, por defecto ahora

Ejemplo de código

$ curl http://localhost:9740/export \
-u :<phoenixd_api_password>

Respuesta

el historial de pagos ha sido exportado a /Users/foobar/.phoenix/exports/export-1729249806.csv

Websocket de pagos

Punto final

WS /websocket

Descripción

Transmite JSON de los pagos recibidos.

La carga útil de JSON contendrá un campo de tipo (por ahora, solo "payment_received") y otros datos técnicos. Puede contener un externalId si se proporcionó uno cuando se creó la factura, o el payerKey/payerNote para las ofertas.

Autenticación

La autenticación se puede realizar con autenticación básica o con el encabezado Sec-WebSocket-Protocol.

Ejemplo de Websocket

Usando websocat, una utilidad de línea de comandos para websocket:

$ websocat --basic-auth :<phoenixd_api_password> ws://127.0.0.1:9740/websocket
{ "type": "payment_received", "amountSat": 15, "payerNote": "hola 👋", "payerKey": "02ad95a81c1865ddb41a49f07b11a70b3f8fcd68ae161e0eb561a074f6a223ff84", "paymentHash": "5ad2185b67c6ba2e65987ab22abf5b4f8c25049d1a3b5dda76f050bc7726aab3" }
{ "type": "payment_received", "amountSat": 30, "payerKey": "02ad95a81c1865ddb41a49f07b11a70b3f8fcd68ae161e0eb561a074f6a223ff84", "paymentHash": "604def4dd6846ea6373ba27353b229ddb31ca1cb206d4becf95f82a0df4b8cfc" }

Webhook

Cuando se recibe un pago, phoenixd ejecutará una solicitud HTTP POST a los puntos finales de tu elección, si hay alguno configurado en los ajustes de phoenix.conf. Usa este mecanismo de webhook para notificar a un sistema externo que se recibió un pago con éxito.

Notas:

  • El punto final del webhook debe ser https, pero Phoenixd no lo exige.

  • Para notificar a un webhook específico para un pago específico, usa el parámetro webhookUrl en su lugar al crear la factura.

  • La carga útil de JSON es similar a los eventos de websocket.

Ejemplo de configuración

# en ~/.phoenix/phoenix.conf
webhook=https://webhook.site/aaaaaaaa-bbbb-xxxx-yyyy-zzzz
# puedes tener múltiples webhooks, todos serán notificados
webhook=https://anotherwebhook.com

Ejemplo de Webhook

$ curl -X POST https://webhook.site/aaaaaaaa-bbbb-xxxx-yyyy-zzzz \
--header \'accept: application/json\' \
--header \'accept-charset: UTF-8\' \
--header \'content-type: application/json\' \
--header \'host: webhook.site\' \
--data $\'{\
"type": "payment_received",
"amountSat": 100,
"paymentHash": "ae4ad6c862986ca50e5ce9d295f2218396bf192c60be8a85b347eddf57622c15",
"externalId": "foobar"
}\'

Obtener información del nodo

Punto final

GET /getinfo

Ejemplo de código

$ curl http://localhost:9740/getinfo \
-u :<phoenixd_api_password>

Respuesta

{
"nodeId": "023a882b070d0b9b1c8db2975f2dcc65d1ffa22e00085506ab24799d6d95d658a2",
"channels": [
// una lista compacta de tus canales
{
"state": "Normal",
"channelId": "853c38dae30b4252cddcf3c87fc69f63313813cc5a0d06921d8a8d1f4c5f0692",
"balanceSat": 10,
"inboundLiquiditySat": 1013562,
"capacitySat": 1015160,
"fundingTxId": "3ed12fe931d1bc32ba94de8311f21016443ff6af338ac4e58b1b9ce2bd07dbf6"
}
]
}

Obtener saldo

Punto final

GET /getbalance

Ejemplo de código

$ curl http://localhost:9740/getbalance \
-u :<phoenixd_api_password>

Respuesta

{
"balanceSat": 104228,
"feeCreditSat": 391
}

Listar canales

Punto final

GET /listchannels

Ejemplo de código

$ curl http://localhost:9740/listchannels \
-u :<phoenixd_api_password>

Respuesta

[
{
"type": "fr.acinq.lightning.channel.states.Normal",
"commitments": {
"params": {
"channelId": "caeda5a5ad278221c0ec995d667a607b7f7e006f7c092872783acf2015fa6455",
"channelConfig": [
"funding_pubkey_based_channel_keypath"
],
"channelFeatures": [
"option_static_remotekey",
"option_anchor_outputs",
"zero_reserve_channels",
"option_dual_fund"
],
"localParams": {
"nodeId": "022c03770b43158d67321a34de5e3e5a4a662adeafbe0270674704eeef56e39770",
"fundingKeyPath": "m/2147483553'\/2147483543'\/2143050548'\/2147483562'\/2147462237'\/2147483597'\/2147478557'\/2147483611'\/0\'",
"dustLimit": 546,
"maxHtlcValueInFlightMsat": 20000000000,
"htlcMinimum": 1000,
"toSelfDelay": 2016,
"maxAcceptedHtlcs": 6,
"isInitiator": false,
...
},
"remoteParams": {
"nodeId": "03933884aaf1d6b108397e5efe5c86bcf2d8ca8d2f700eda99db9214fc2712b134",
"dustLimit": 546,
"maxHtlcValueInFlightMsat": 2100000000000000000,
"htlcMinimum": 1,
...
},
"channelFlags": 0
},

},
"shortChannelId": "0x7410060x0",
"channelUpdate": {
"signature": "76164e3c3325521936461a40d12a2b7d998b97acb41fb80a59d4751bac4a0cd671f3b704559fef4a182729b98db0b57402e56f8f439cc7bc20096d05392af947",
"chainHash": "43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000",
"shortChannelId": "0x7410060x0",
"timestampSeconds": 1709829101,
"messageFlags": 1,
"channelFlags": 0,
"cltvExpiryDelta": 144,
"htlcMaximumMsat": 1252708000
},
...
}
]

Cerrar canal

Punto final

POST /closechannel

Descripción

Cierra un canal dado y envía todos los fondos a una dirección en cadena. Devuelve el ID de la transacción de cierre.

Atención: cerrar un canal es final, no se puede cancelar.

Parámetros

  • channelId identificador del canal a cerrar
  • address dirección de bitcoin a donde se enviará tu saldo
  • feerateSatByte tasa de tarifa en satoshi por vbyte

Ejemplo de código

$ curl -X POST http://localhost:9740/closechannel \
-u :<phoenixd_api_password> \
-d channelId=1943e03b85c06c60678ecc0fefcae8317f0a1429838aaeed1c9df4e548d7c29c \
-d feerateSatByte=10 \
-d address=tb1qrhv88h2rf7wscut7st3ha5uspx2njjr7xdzn5t

Respuesta

758b3df67c62c9cd9ebbde1ff6eaadc1c51f94d5b1a3efb2548236b9a6f1c659

Decodificar factura

Punto final

POST /decodeinvoice

Parámetros

invoice una factura Bolt11

Ejemplo de código

$ curl -X POST http://localhost:9740/decodeinvoice \
-u :<phoenixd_api_password> \
-d invoice=lntb10n1pngtqfhpp5qezkef9tussdxurernxpmur9fzm2g0gqjuffaypvd2r7ma8urh4scqpjsp5u3dgmgrry4advuse35al6d2j2ns9uewequpuwcf8eun0pk7m5lms9q7sqqqqqqqqqqqqqqqqqqqsqqqqqysgqdq4xysyymr0vd4kzcmrd9hx7mqz9grzjqwfn3p9278ttzzpe0e00uhyxhned3j5d9acqak5emwfpflp8z2cnfl6h8msfh3505gqqqqlgqqqqqeqqjq3krntmn2r4d8j0ncgztxkssymfpwy3lv48jt5zgq5te8c5h56r6r03a2nz09nye89pmyhncm64ppwcufntar2zs5m4jw2cfm8u9m3usqxju37k

Respuesta

{
"chain": "testnet",
"amount": 1000,
"paymentHash": "06456ca4abe420d370791ccc1df06548b6a43d0097129e902c6a87edf4fc1deb",
"description": "1 Blockaccino",
"minFinalCltvExpiryDelta": 18,
"paymentSecret": "e45a8da063257ad672198d3bfd355254e05e65d90703c76127cf26f0dbdba7f7",
"paymentMetadata": "2a",
"extraHops": [
[
{
"nodeId": "03933884aaf1d6b108397e5efe5c86bcf2d8ca8d2f700eda99db9214fc2712b134",
"shortChannelId": "16734014x14719942x36770",
"feeBase": 1000,
"feeProportionalMillionths": 100,
"cltvExpiryDelta": 144
}
]
],
"features": {
"activated": {
"var_onion_optin": "Mandatory",
"payment_secret": "Mandatory",
"basic_mpp": "Optional",
"option_payment_metadata": "Optional",
"trampoline_payment_experimental": "Optional"
},
"unknown": []
},
"timestampSeconds": 1720025399
}

Decodificar oferta

Punto final

POST /decodeoffer

Parámetros

  • offer una oferta Bolt12

Ejemplo de código

$ curl -X POST http://localhost:9740/decodeoffer \
-u :<phoenixd_api_password> \
-d offer=lno1qgsyxjtl6luzd9t3pr62xr...9ry9zqagt0ktn4wwvqg52v9ss9ls22sqyqqestzp2l6decpn87pq96udsvx

Respuesta

{
"chain": "testnet",
"amount": 1000,
"paymentHash": "06456ca4abe420d370791ccc1df06548b6a43d0097129e902c6a87edf4fc1deb",
"description": "1 Blockaccino",
"minFinalCltvExpiryDelta": 18,
"paymentSecret": "e45a8da063257ad672198d3bfd355254e05e65d90703c76127cf26f0dbdba7f7",
"paymentMetadata": "2a",
"extraHops": [
[
{
"nodeId": "03933884aaf1d6b108397e5efe5c86bcf2d8ca8d2f700eda99db9214fc2712b134",
"shortChannelId": "16734014x14719942x36770",
"feeBase": 1000,
"feeProportionalMillionths": 100,
"cltvExpiryDelta": 144
}
]
],
"features": {
"activated": {
"var_onion_optin": "Mandatory",
"payment_secret": "Mandatory",
"basic_mpp": "Optional",
"option_payment_metadata": "Optional",
"trampoline_payment_experimental": "Optional"
},
"unknown": []
},
"timestampSeconds": 1720025399
}

Estimar tarifas de liquidez

Punto final

POST /estimateliquidityfees

Descripción

Estima una tarifa de liquidez para una cantidad dada. Ten en cuenta que depende de la tasa de tarifa de minería actual, que es volátil. La estimación devuelta es el costo total y no tiene en cuenta ningún crédito de tarifa que puedas tener.

Parámetros

  • amountSat la cantidad de liquidez, en satoshi.

Ejemplo de código

$ curl -X POST http://localhost:9740/estimateliquidityfees \
-u :<phoenixd_api_password> \
-d amountSat=2000000

Respuesta

{
"miningFeeSat": 1219,
"serviceFeeSat": 20000
}

LNURL Pay

Descripción

Paga un recurso LNURL-pay. Ten en cuenta que el servicio puede aplicar restricciones sobre la cantidad a pagar o el mensaje -- el flujo de lnurl-pay suele ser interactivo. Punto final

POST /lnurlpay

Parámetros

  • amountSat la cantidad a pagar
  • lnurl el recurso lnurl-pay
  • message un comentario para el destinatario

Ejemplo de código

$ curl -X POST http://localhost:9740/lnurlpay \
-u :<phoenixd_api_password> \
-d lnurl=LNURL1DP68GURN8GHJ7MRWW4EXCTNXD9SHG6NPVCHXXMMD9AKXUATJDSKHQCTE8AEK2UMND9HKU0TZV9JR2VM9XV6RVV3JVSUNWDRYXUCNVDFHV43KVE3KXQCRJDFHX33XGDENX9NRSVTRXCENVC3KV33NGWR9XQURWC3N8YEN2WP4V4JNZV8XSUH \
-d amountSat=100

Respuesta

    {
"recipientAmountSat": 100,
"routingFeeSat": 4,
"paymentId": "2ff3c4f2-1d97-4dc0-a522-371591c058dc",
"paymentHash": "6a0084471b2020373a89a81b5f7e34135154f24208e491d0122d99a686b1d58d",
"paymentPreimage": "5746edcdbf872fc508939f31f18998f294d579668f334a023804b992b0fe4842"
}

LNURL Withdraw

Descripción

Retira fondos de un servicio LNURL. Phoenixd retirará la cantidad máxima autorizada por el servicio. Punto final

POST /lnurlwithdraw

Parámetros

  • lnurl el recurso lnurl-withdraw

Ejemplo de código

$ curl -X POST http://localhost:9740/lnurlpay \
-u :<phoenixd_api_password> \
-d lnurl=lightning:LNURL1DP68GURN8GHJ7MRWW4EXCTNXD9SHG6NPVCHXXMMD9AKXUATJDSKHW6T5DPJ8YCTH8AEK2UMND9HKU0T9893XYVF5XQMX2EP4VYCNJWR9X56RSCEE893NYVP3VC6KGEPNX5UNGDFCV9NRJDNXXCMNXENZXPJXVCFS89NRWVFJXYCNXD3K89JNGAXMZVT

Respuesta

{
"url": "https://lnurl.fiatjaf.com/lnurl-withdraw?session=e9bb1406ed5a198e548c99c201f5dd359458af96f673fb0dfa09f712113669e4",
"minWithdrawable": 1000,
"maxWithdrawable": 4000,
"description": "ejemplo de retiro",
"k1": "1649e2443dd004421e05e08a17e52ee1454e9f74aacedacc822777b9ff4ffbfb",
"invoice": "lnbc40n1pnfqpstpp5npnnapuxylxelsat27q4dncgj...2f0tvfw33kspxfenxx"
}

LNURL Auth

Descripción

Autentica un recurso LNURL-auth para permitir una acción en un servicio remoto. Ver LUD-04 para más detalles.

Nota: La clave utilizada para firmar se deriva de la clave de la cartera (la derivación depende del dominio del servicio lnurl). Si tienes diferentes usuarios usando la misma instancia de phoenixd, ¡no les permitas usar esto o compartirán la misma firma y clave pública!

Punto final

POST /lnurlauth

Parámetros

  • lnurl el recurso lnurl-auth

Ejemplo de código

$ curl -X POST http://localhost:9740/lnurlauth \
-u :<phoenixd_api_password> \
-d lnurl=lnurl1dp68gurn8ghj7um5v93kketj9ehx2amn9ashq6f0d3hxzat5dqlhgct884kx7emfdcnxkvfav3nxxcehxyckvdrpxsexyden8qexywrpv33nvdmpxsukzdpnvgungct9xesnvcf3x9jnsenxvvurvcmzvd3rwdfevgmnwdpjxp3nqvg50j329

Respuesta

autenticación exitosa