{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["intent","intentcell","admonition","tilegrid","tile"]},"type":"markdown"},"seo":{"title":"VKS in the Dashboard","projectTitle":"Vilna Docs","description":"Connect signing nodes, set approval rules, create an address and request transaction signing through the Vilna website.","siteUrl":"https://docs.vilna.io","lang":"en-US","image":"https://cdn.vilna.io/docs/og/26103121/en/guides-vks.png","meta":[{"name":"og:type","content":"website"},{"name":"og:site_name","content":"Vilna Documentation"},{"name":"og:image:width","content":"1200"},{"name":"og:image:height","content":"630"},{"name":"twitter:card","content":"summary_large_image"},{"name":"robots","content":"max-image-preview:large"}],"llmstxt":{"title":"Vilna API Documentation","description":"Vilna Platform API monitors public blockchain activity, balances and invoices and delivers signed webhooks. It does not sign or broadcast transactions. VKS separately coordinates account setup, signer approvals and signing, retains signed results and can submit a complete transaction to a node. Node acceptance is not blockchain confirmation. Each API uses its own scoped credential in X-Api-Key. Workspace setup and VKS-key issuance start in the Dashboard.\n","details":{"content":"**Platform monitoring.** Platform observes merchant-controlled addresses,\nsupplied directly or derived from the merchant's extended public key (xPub).\nInvoices report incoming on-chain activity; they do not initiate transfers.\n\n**APIs and their credentials.**\n\n- Platform API (api.vilna.io) - monitor addresses and extended public keys, read\n  balances and transactions, reconcile incoming payments, create invoices, and\n  receive events.\n- Blockchain RPC (rpc.vilna.io) - JSON-RPC and gRPC node access across every\n  supported network behind one key.\n- Management API (mgmt.vilna.io) - published workspace, project, member and key\n  operations, with Dashboard bootstrap and credential grant limits.\n- VKS API (vks.vilna.io) - workspace signers, vaults, accounts, signing requests,\n  signed results and optional asynchronous send. Uses a Dashboard-issued VKS key\n  with vks:access; the public Management API has no VKS-key issuance route.\n\n**Pages with no markdown source**, so they cannot be linked below:\n\n- Product overview: https://docs.vilna.io/\n- All guides: https://docs.vilna.io/guides\n"},"excludeFiles":["legal/terms.md","legal/privacy.md","legal/cookies.md","@l10n/ru/legal/terms.md","@l10n/ru/legal/privacy.md","@l10n/ru/legal/cookies.md"],"sections":[{"title":"Getting Started","description":"What the platform is, how to make a first call, and answers to common questions","includeFiles":["get-started/quickstart.md","get-started/dashboard.md","get-started/core-concepts.md","get-started/members.md","get-started/faq.md"]},{"title":"API Reference","description":"Authentication, permissions, idempotency, errors, standards, and per-service endpoint documentation","includeFiles":["apis/authentication.md","apis/permissions.md","apis/idempotency.md","apis/errors.md","apis/standards.md","apis/networks.md","apis/platform/@v2/index.md","apis/platform/@v2/webhooks.md","apis/platform/@v2/api.yaml","apis/mgmt/index.md","apis/mgmt/api.yaml","apis/vks/index.md","apis/vks/api.yaml","apis/rpc/index.md","apis/rpc/json-rpc.md","apis/rpc/grpc.md"]},{"title":"Developer Guides","description":"Integration patterns, events, notifications, and tooling","includeFiles":["guides/events.md","guides/channels.md","guides/tokens.md","guides/integration-patterns.md","guides/mcp.md","guides/simulation.md","guides/invoices.md","guides/vks.md"]},{"title":"Trust and custody","description":"The non-custodial model in plain terms","includeFiles":["legal/non-custodial.md"]},{"title":"Optional","description":"Background reading and release history","includeFiles":["get-started/blockchain-basics.md","changelog.md"]}]},"jsonLd":{"@context":"https://schema.org","@graph":[{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://docs.vilna.io/"},{"@type":"ListItem","position":2,"name":"Guides","item":"https://docs.vilna.io/guides"},{"@type":"ListItem","position":3,"name":"VKS in the Dashboard"}]},{"@type":"TechArticle","headline":"VKS in the Dashboard","description":"Connect signing nodes, set approval rules, create an address and request transaction signing through the Vilna website.","url":"https://docs.vilna.io/guides/vks","datePublished":"2026-10-26","dateModified":"2026-11-01"}]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"vks-in-the-dashboard","__idx":0},"children":["VKS in the Dashboard"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"id":"first-connection-to-vks"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use VKS through the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://app.vilna.io"},"children":["Vilna website"]},". See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/vks"},"children":["VKS overview"]}," for the resource model."]},{"$$mdtype":"Tag","name":"Intent","attributes":{},"children":[{"$$mdtype":"Tag","name":"IntentCell","attributes":{"label":"Vilna user","icon":"users"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Connect signing nodes, configure vault approval rules and request transaction signatures in the Vilna Dashboard."]}]},{"$$mdtype":"Tag","name":"IntentCell","attributes":{"label":"Signer operator","icon":"server"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A signer is the software node that participates in signing. Its operator manages the node and reviews approval requests in the signer management interface."]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["VKS supports mainnets and testnets. Available operations depend on the address format, the selected nodes and the network. Check ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/networks#vks"},"children":["network compatibility"]}," before using an address."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"id":"1-prepare-access-and-operators"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"1-open-vks-in-vilna","__idx":1},"children":["1. Open VKS in Vilna"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sign in, select a workspace and open ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["VKS"]},". Your workspace membership needs VKS access; ask a workspace administrator if the section is unavailable. Working through the website does not require a VKS API key."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Beta access and demo"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The signer software is open source and in Beta. Contact ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:support@vilna.io"},"children":["support@vilna.io"]}," to obtain its source code and installation instructions, or to try a demo."]}]},{"$$mdtype":"Tag","name":"TileGrid","attributes":{"cols":"2"},"children":[{"$$mdtype":"Tag","name":"Tile","attributes":{"icon":"server","title":"Signing nodes"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Arrange at least 2 signing nodes with their operators. This walkthrough starts with installed signer software. Operators can manage their nodes through ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://signer.vilna.io"},"children":["signer.vilna.io"]},". This management interface is also open source and can be hosted on your own infrastructure."]}]},{"$$mdtype":"Tag","name":"Tile","attributes":{"icon":"key","title":"Project access"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To select networks and assets later, you need ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["api:blockchain:read"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["api:asset:read"]}," in a project whose catalogue contains them. For a Bitcoin transfer, also register the source address on the intended network in that project and ensure you have ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["api:address:read"]}," to read its unspent outputs (UTXOs)."]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"id":"2-invite-or-select-signers"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"2-connect-signing-nodes","__idx":2},"children":["2. Connect signing nodes"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Nodes"]},", choose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connect node"]},", then ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create connection token"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Compare the service identity and fingerprint shown by Vilna with the operator through a trusted channel. Pass the token privately to that operator and save it before closing the dialog."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The operator connects the node through its management interface. Return to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Nodes"]},", check registration and connection status, and compare the registered node's fingerprint with the operator."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Repeat for the second node. You can reuse existing registered nodes after checking their identities and capabilities."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Protect connection tokens"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Keep connection tokens out of messages to shared channels, logs and screenshots."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"3-create-a-vault-and-wait-for-acceptance","__idx":3},"children":["3. Create a vault and wait for acceptance"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Open ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Vaults"]}," and choose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create vault"]},". A vault defines the participating nodes and their approval rule."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For a first setup, select 2 registered nodes and require both. For another configuration, choose 2–5 nodes and the number of node approvals required; ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Advanced rule"]}," also lets you designate mandatory nodes. Review the displayed rule before creating the vault."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each operator reviews and accepts or rejects the configuration in their signer management interface. Vilna shows the received decisions. Continue after the vault becomes active; a rejected or expired request needs attention before you can create an address."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"id":"4-create-an-account-and-check-readiness"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"4-create-an-address","__idx":4},"children":["4. Create an address"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the active vault, choose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create address"]},", or use the same action under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Addresses"]},". Select the intended blockchain family and address format, review the settings and confirm creation."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Wait for ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Address ready"]},". The website shows progress; you do not need to prepare API requests or track protocol stages yourself. If creation fails or expires, open the address to inspect its status before trying again."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The address represents a VKS blockchain account, separate from your Vilna user account. Choose the network when using the address; Bitcoin address formats also distinguish mainnet and testnet."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"id":"5-request-signing-and-obtain-decisions"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"5-prepare-an-operation-and-request-signing","__idx":5},"children":["5. Prepare an operation and request signing"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open the ready address and choose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Send"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select the catalogue project, network and asset, then enter the recipient and amount. The form offers operations supported by that address and network. For this walkthrough, choose a transfer with fee payment from the source address."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Choose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Calculate preview"]}," and check the sender, network, asset, recipient, amount and estimated fee. Make sure the source address has enough funds for the operation and fees."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select a signing group that satisfies the vault rule, then choose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request signature"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The selected operators review the request and approve or reject it through their signer management interfaces. Follow the result under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signing requests"]}," in Vilna. A created request is not yet a completed signature; it may be rejected, fail or expire."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"id":"6-optionally-send-and-inspect-the-outcome"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"6-optionally-send-the-signed-transaction","__idx":6},"children":["6. Optionally send the signed transaction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Open the signing request and check its result. For a complete signed transaction, choose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Send"]}," when you want VKS to submit it to the blockchain node. Producing a signature does not send it automatically."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After you request sending, VKS may automatically retry after a temporary error or an unknown outcome, using the same signed transaction. Check ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["VKS send attempts"]},"."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Check blockchain confirmation separately"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Accepted by blockchain node"]}," means node acceptance, not blockchain confirmation. VKS does not track confirmations; use blockchain monitoring to check what happened on-chain."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If acceptance is unknown, inspect the existing request and send history before starting another action: the transaction may already have reached the network."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"id":"retries-deadlines-and-retained-results"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"if-an-action-does-not-complete","__idx":7},"children":["If an action does not complete"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Open the existing vault, address or signing request and check its current state. An interrupted page load or an error message does not by itself prove that the action was cancelled. Check the existing result before creating a replacement request."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Expiry of a signing request does not erase an already produced signature. The ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/vks#signing-and-sending-are-separate"},"children":["VKS overview"]}," explains retained results and deletion limits."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For a custom integration, use the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/vks/api"},"children":["VKS API reference"]},"."]}]},"headings":[{"value":"VKS in the Dashboard","id":"vks-in-the-dashboard","depth":1},{"value":"1. Open VKS in Vilna","id":"1-open-vks-in-vilna","depth":2},{"value":"2. Connect signing nodes","id":"2-connect-signing-nodes","depth":2},{"value":"3. Create a vault and wait for acceptance","id":"3-create-a-vault-and-wait-for-acceptance","depth":2},{"value":"4. Create an address","id":"4-create-an-address","depth":2},{"value":"5. Prepare an operation and request signing","id":"5-prepare-an-operation-and-request-signing","depth":2},{"value":"6. Optionally send the signed transaction","id":"6-optionally-send-the-signed-transaction","depth":2},{"value":"If an action does not complete","id":"if-an-action-does-not-complete","depth":2}],"frontmatter":{"seo":{"title":"VKS in the Dashboard","description":"Connect signing nodes, set approval rules, create an address and request transaction signing through the Vilna website.","image":"https://cdn.vilna.io/docs/og/26103121/en/guides-vks.png","jsonLd":{"@context":"https://schema.org","@graph":[{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://docs.vilna.io/"},{"@type":"ListItem","position":2,"name":"Guides","item":"https://docs.vilna.io/guides"},{"@type":"ListItem","position":3,"name":"VKS in the Dashboard"}]},{"@type":"TechArticle","headline":"VKS in the Dashboard","description":"Connect signing nodes, set approval rules, create an address and request transaction signing through the Vilna website.","url":"https://docs.vilna.io/guides/vks","datePublished":"2026-10-26","dateModified":"2026-11-01"}]}}},"lastModified":"2026-10-31T22:39:47.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/vks","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}