Nodes API
GraphQL reference for Rails Yield node operations — deploy, connect, activate, deactivate, change settings, and query state, sockets, credentials, and partners.
All node operations live under the node root. Queries read your team's deployed nodes; mutations are gated to master accounts and require the dashboard Bearer token.
Authorization: Bearer $AMBOSS_DASHBOARD_TOKENQueries
node.deployed_nodes
Returns every node owned by your team, ordered by created_at desc.
query DeployedNodes {
node {
id
deployed_nodes {
id
alias
pubkey
state
type
node_type
network
is_automated
taproot_assets_enabled
created_at
deactivation_initiated
deleted_at
}
}
}curl -X POST https://rails.amboss.tech/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AMBOSS_DASHBOARD_TOKEN" \
-d '{"query":"query{ node { deployed_nodes { id alias pubkey state type } } }"}'const data = await client.request(DEPLOYED_NODES);
console.log(data.node.deployed_nodes);node.deployed_node
Fetch a single node by ID. Throws Node not found! if the node does not belong to your team.
query DeployedNode($nodeId: String!) {
node {
id
deployed_node(node_id: $nodeId) {
id
pubkey
alias
state
type
node_type
network
is_automated
taproot_assets_enabled
withdrawal_target
funds_available_at
backup { id created_at size }
sockets {
lnd { id rest grpc }
litd { id rest grpc }
}
}
}
}DeployedNode fields
| Field | Type | Description |
|---|---|---|
id | String! | UUID of the node row. |
state | DeployedNodeState | See Node Lifecycle. |
type | DeployedNodeType | LP for yield, PAYMENTS for payments nodes, ROUTER for routing-only. |
node_type | ManagedNodeType | FULLY_MANAGED or THIRD_PARTY. |
network | DeployedNodeNetwork | MAINNET, TESTNET, SIGNET, REGTEST. |
pubkey | String | Lightning public key once activation completes. |
alias | String | The node's Lightning alias (cached for one week). |
is_automated | Boolean! | Whether Rails automation is currently driving the node. |
taproot_assets_enabled | Boolean! | Whether the Taproot Assets daemon is enabled. |
withdrawal_target | String! | Sats the team has marked for withdrawal (string-encoded decimal). |
funds_available_at | String! | ISO timestamp by which channel leases are projected to unwind for a clean exit. |
backup | NodeBackup | Latest SCB (static channel backup) snapshot. |
sockets | NodeSockets | gRPC and REST endpoints for direct LND or Litd connections. |
credentials | NodeMacaroonList | Macaroons available to the master account (see LND API). |
deactivation_initiated | String | ISO timestamp set when node.deactivate is called. |
deleted_at | String | ISO timestamp once the node is fully removed. |
Mutations
node.deploy
Dashboard-driven only. This mutation triggers async provisioning, but completing the deployment also requires browser-side macaroon baking, symmetric-key decryption, and encrypted credential storage. Calling node.deploy from a backend will leave the node stuck in WAITING_FOR_CREDENTIALS. Use the dashboard - see Deploy a Node.
Creates a Fully Managed node. The deploy is async: the call returns immediately, RabbitMQ provisions the node in the background, and the node advances through CREATED → WAITING_FOR_CREDENTIALS → WAITING_FOR_DEPOSIT once the dashboard finishes the credential setup.
mutation Deploy($type: String) {
node {
deploy(type: $type) {
success
}
}
}| Variable | Default | Notes |
|---|---|---|
type | LP | LP, PAYMENTS, or ROUTER. Most yield users want LP. |
Non-team accounts can have one active node per type. Calling deploy while a deployment is already in progress (cached for ten minutes) throws Node deployment in progress.
deploy(type: PAYMENTS) additionally requires a live Payments environment to already exist (Set up a live payments environment before deploying a payments node).
node.connect
Dashboard-driven only. The management_macaroon field expects the macaroon already encrypted with the team's symmetric key, which only the browser holds. Calling node.connect from a backend will not produce a working node. Use the dashboard - see Third Party Hosted.
Attaches Rails to a Lightning node you already operate. Supply either an lnd or litd credential block.
mutation Connect($input: NodeConnectInput!) {
node {
connect(input: $input) {
node_id
success
}
}
}Variables:
{
"input": {
"node_type": "LP",
"lnd": {
"rest": "https://your-lnd:8080",
"grpc": "your-lnd:10009",
"tls_cert": "-----BEGIN CERTIFICATE-----\n...",
"management_macaroon": "<hex-encoded admin-equivalent macaroon>"
}
}
}For Litd:
{
"input": {
"node_type": "LP",
"litd": {
"rest": "https://your-litd:8443",
"grpc": "your-litd:10009",
"tls_cert": null,
"management_macaroon": "<hex>",
"taproot_assets": true
}
}
}The macaroon must include the Required permissions (view, channel management, fee policy, invoice creation). Rails encrypts and stores the macaroon; the raw value never leaves your network in cleartext on the response.
Litd connections are gated to team accounts during the current rollout. LND connections are available to all teams with the LP feature flag.
node.activate
Flips a node from WAITING_FOR_ACTIVATION to ACTIVE. Returns a Stripe checkout URL the user must complete to set up the subscription.
mutation Activate($nodeId: String!, $successUrl: String!, $cancelUrl: String!) {
node {
activate(node_id: $nodeId, success_url: $successUrl, cancel_url: $cancelUrl) {
success
external_url
}
}
}success_url and cancel_url are the URLs Stripe redirects to after checkout. If the user returns to success_url, the node automation flips on automatically (driven by the Stripe webhook).
external_url is null when no subscription is needed (team accounts, non-mainnet networks, the RAILS_WITHOUT_SUB user tag).
node.deactivate
Begin offboarding. Channels close, funds unwind, and the node moves through DELETION_INITIATED → DELETED. Requires the master-account password hash for irreversibility.
mutation Deactivate($input: NodeDeactivationInput!) {
node {
deactivate(input: $input) {
success
}
}
}{
"input": {
"node_id": "<NODE_ID>",
"password_hash": "<argon2id-derived hash, see Security>"
}
}See Security for how to derive the password hash client-side.
node.change_settings
Update node settings such as the Lightning alias. Currently supported on Fully Managed nodes only and rate-limited to one change per 24 hours.
mutation ChangeSettings($input: NodeSettingsInput!) {
node {
change_settings(input: $input) {
new_alias
}
}
}{ "input": { "node_id": "<NODE_ID>", "alias": "treasury-lp-01" } }Related namespaces
API Reference
Rails Yield GraphQL API — endpoint, authentication, rate limits, error format, and per-resource reference for nodes, liquidity, and direct LND access.
Liquidity API
GraphQL reference for Rails Yield earnings and balances — funds, balance and revenue charts, transaction history, stats, and per-asset balances under user.liquidity_provider.