{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-apis/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["quickfacts","fact","endpoint"]},"type":"markdown"},"seo":{"title":"VKS API - Approval and Signing","projectTitle":"Vilna Docs","description":"Coordinate approvals and transaction signing on mainnet and test networks. Configure signer rules and optionally submit transactions.","siteUrl":"https://docs.vilna.io","lang":"en-US","image":"https://cdn.vilna.io/docs/og/26103121/en/apis-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":"API Reference","item":"https://docs.vilna.io/apis"},{"@type":"ListItem","position":3,"name":"VKS API - Approval and Signing"}]},{"@type":"TechArticle","headline":"VKS API - Approval and Signing","description":"Coordinate approvals and transaction signing on mainnet and test networks. Configure signer rules and optionally submit transactions.","url":"https://docs.vilna.io/apis/vks","datePublished":"2026-10-26","dateModified":"2026-11-05"}]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"vks-api","__idx":0},"children":["VKS API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["VKS (Vilna Key Security) coordinates transaction approval and signing according to the signer rules you configure in a vault. Use the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/vks"},"children":["first-connection guide"]}," for an ordered walkthrough and the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/vks/api"},"children":["API reference"]}," for request and response schemas."]},{"$$mdtype":"Tag","name":"QuickFacts","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"Fact","attributes":{"icon":"server"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vks.vilna.io/v1"]}]}," ",{"$$mdtype":"Tag","name":"Fact","attributes":{"icon":"key"},"children":["Workspace VKS key"]}," ",{"$$mdtype":"Tag","name":"Fact","attributes":{"icon":"lock"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vks:access"]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["VKS supports signing on mainnet and test networks for EVM, Tron and supported Bitcoin address formats. Use the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/networks#vks"},"children":["network table"]}," to choose a compatible account format and signing nodes."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"id":"limits","level":2,"__idx":1},"children":["Resource limits "]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/vks/api/limits/get-limits"},"children":["Get workspace limits"]}," returns signer ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["used"]}," and effective ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["max"]},". Usage includes registered signers and unexpired pending invitations. A ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["max"]}," of 0 prevents new invitations; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["used"]}," can exceed a lowered maximum. These values are informational and do not reserve capacity."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"credentials-and-resources","__idx":2},"children":["Credentials and resources"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Issue a VKS key in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://app.vilna.io"},"children":["Dashboard"]}," and send it in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Api-Key"]},". All published VKS operations require ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vks:access"]},". A Platform, RPC or management key does not replace it. The public Management API has no VKS-key issuance operation."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Resource"},"children":["Resource"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Purpose"},"children":["Purpose"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Signer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A signing node with a registration identity, fingerprints, connection status and supported signing methods."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Vault"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A group of registered signers and an approval rule: all required signers plus ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["threshold_k"]}," additional signers."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Account"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A blockchain account created in an active vault; usable for signing only after setup reaches ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ceremony"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An account setup attempt; inspect its progress using an attempt ID from the account."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transaction"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A request for approval and signing, including selected signers, decisions, signed result and send history."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A vault has at most five signers and every signing group needs at least two. Choose one complete group from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["minimal_quorums"]}," for each transaction. Signers must accept the vault before it becomes active. Account setup then starts automatically, without another approval step. Only one account may be in setup per vault."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"operator-handoff","__idx":3},"children":["Operator handoff"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The public API creates signer invitations and reports registration state; the signer operator completes registration through the signer management interface. Compare the hub identity from ",{"$$mdtype":"Tag","name":"Endpoint","attributes":{"method":"GET","path":"/v1/info","api":"vks"},"children":[]}," and the registered signer's fingerprints through a trusted channel. A name alone does not verify identity."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Vault acceptance and transaction approval also happen on the signer side. This API has no public HTTP operation to register a signer or approve a vault or transaction. Arrange the operator workflow before starting. See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/vks#1-open-vks-in-vilna"},"children":["setup prerequisites"]}," for Beta access, a demo and the signer management interface."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"signing-and-sending-are-separate","__idx":4},"children":["Signing and sending are separate"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/platform"},"children":["Platform API"]}," monitors public blockchain activity and invoices. VKS instead receives transaction intent and signer decisions. It can return a signed result and optionally submit a complete signed transaction to a blockchain node."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Check ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["result_form"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transaction"]}," is ready for submission; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ingredient"]}," must first be included in a sponsor-paid transaction. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["raw_tx"]}," is Base64-encoded."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A signing deadline does not delete an existing signed result; results remain available without automatic deletion. Deleting a signer revokes catalogue access but does not erase keys on its device or history in related resources. Account deletion is limited to unsuccessful setup states."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sending through VKS returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["202"]}," when the request is saved. Inspect transaction logs for attempts; node acceptance is not chain confirmation. VKS does not track confirmations. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/networks#vks"},"children":["networks"]}," for supported networks and account formats and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/idempotency"},"children":["idempotency"]}," before retrying any mutation."]}]},"headings":[{"value":"VKS API","id":"vks-api","depth":1},{"value":"Resource limits","id":"limits","depth":2},{"value":"Credentials and resources","id":"credentials-and-resources","depth":2},{"value":"Operator handoff","id":"operator-handoff","depth":2},{"value":"Signing and sending are separate","id":"signing-and-sending-are-separate","depth":2}],"frontmatter":{"seo":{"title":"VKS API - Approval and Signing","description":"Coordinate approvals and transaction signing on mainnet and test networks. Configure signer rules and optionally submit transactions.","image":"https://cdn.vilna.io/docs/og/26103121/en/apis-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":"API Reference","item":"https://docs.vilna.io/apis"},{"@type":"ListItem","position":3,"name":"VKS API - Approval and Signing"}]},{"@type":"TechArticle","headline":"VKS API - Approval and Signing","description":"Coordinate approvals and transaction signing on mainnet and test networks. Configure signer rules and optionally submit transactions.","url":"https://docs.vilna.io/apis/vks","datePublished":"2026-10-26","dateModified":"2026-11-05"}]}}},"lastModified":"2026-11-05T09:40:36.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/apis/vks","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}