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
descriptionla descripción de la factura (máx. 128 caracteres).- o en su lugar
descriptionHashhash sha256 de una descripción.
- o en su lugar
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
amountSatcantidad opcional en satoshi. Si no se establece, se pagará la cantidad solicitada en la factura.invoicefactura 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
amountSatcantidad opcional en satoshi. Si no se establece, se pagará la cantidad solicitada en la factura.offeroferta BOLT12messageun 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
amountSatcantidad opcional en satoshi. Si no se establece, se pagará la cantidad solicitada en la factura.addressfactura BOLT11messageun 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
amountSatcantidad en satoshiaddressdirección de Bitcoin a donde se enviarán los fondosfeerateSatBytetasa 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
feerateSatBytetasa 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 0to: marca de tiempo de fin en milisegundos desde la época, por defecto ahoralimit: número de pagos en la página, por defecto 20offset: desplazamiento de página, por defecto 0all: también devuelve facturas no pagadasexternalId: 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 0to: marca de tiempo de fin en milisegundos desde la época, por defecto ahoralimit: número de pagos en la página, por defecto 20offset: desplazamiento de página, por defecto 0all: 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_msatfee credit: suma de todos los fee_credit_msat
Parámetros
from: marca de tiempo de inicio en milisegundos desde la época, por defecto 0to: 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
channelIdidentificador del canal a cerraraddressdirección de bitcoin a donde se enviará tu saldofeerateSatBytetasa 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
offeruna 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
amountSatla 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
amountSatla cantidad a pagarlnurlel recurso lnurl-paymessageun 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
lnurlel 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
lnurlel 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