Deep Link Documentation
Integrate Steem Keychain Mobile into your dApp with deep links. Trigger transfers, votes, delegations, and more with a single URL.
Quick Start
Add a deep link to your app in 30 seconds:
<a href="steem://transfer?to=kafio&amount=1.000¤cy=STEEM&memo=tip">
Tip 1 STEEM via Keychain
</a>When a user with Steem Keychain Mobile installed taps this link, it opens the wallet with a pre-filled transfer confirmation screen.
Overview
Steem Keychain Mobile handles two URL protocols:
| Protocol | Purpose | Example |
|---|---|---|
steem:// | Blockchain operations (transfer, vote, delegate, etc.) | steem://transfer?to=kafio&amount=1.000 |
steem-keychain:// | App commands (browser, add account, sign request) | steem-keychain://browser/https%3A%2F%2Fsteempro.com |
steem:// Protocol
The steem:// protocol triggers blockchain operations. Each operation maps to a Keychain signing request.
Transfer
steem://transfer?to={recipient}&amount={amount}¤cy={STEEM|SBD}&memo={memo}&from={sender}&enforce={true|false}| Parameter | Required | Default | Description |
|---|---|---|---|
to | — | Recipient account | |
amount | — | Amount (e.g. 1.000 or 1.000 STEEM) | |
currency | STEEM | STEEM or SBD | |
memo | "" | Transaction memo | |
from | Active account | Sender account | |
enforce | false | Lock amount/recipient fields |
steem://transfer?to=kafio&amount=5.000¤cy=STEEM&memo=Thanks%20for%20buildingVote
steem://vote?author={author}&permlink={permlink}&weight={weight}&voter={voter}| Parameter | Required | Default | Description |
|---|---|---|---|
author | — | Post author | |
permlink | — | Post permlink | |
weight | 10000 | Vote weight (-10000 to 10000) | |
voter | Active account | Voting account |
steem://vote?author=kafio&permlink=steem-keychain-mobile-phase-8&weight=10000Delegate
steem://delegate?to={delegatee}&amount={amount}&from={delegator}| Parameter | Required | Default | Description |
|---|---|---|---|
to | — | Account receiving delegation | |
amount | — | SP amount | |
from | Active account | Delegating account |
steem://delegate?to=kafio&amount=100.000Power Up
steem://power-up?from={account}&to={recipient}&amount={amount}| Parameter | Required | Default | Description |
|---|---|---|---|
from | — | Account powering up | |
to | Same as from | Recipient of SP | |
amount | — | STEEM amount |
Power Down
steem://power-down?account={account}&amount={amount}| Parameter | Required | Default | Description |
|---|---|---|---|
account | — | Account to power down | |
amount | — | SP amount to power down |
Witness Vote
steem://witness-vote?witness={witness}&account={voter}&approve={true|false}| Parameter | Required | Default | Description |
|---|---|---|---|
witness | — | Witness account name | |
account | Active account | Voter account | |
approve | true | Vote or unvote |
steem://witness-vote?witness=kafio.wit&approve=trueFollow / Unfollow
steem://follow?follower={you}&following={target}
steem://unfollow?follower={you}&following={target}| Parameter | Required | Default | Description |
|---|---|---|---|
follower | Active account | Your account | |
following | — | Account to follow/unfollow |
Reblog
steem://reblog?account={you}&author={author}&permlink={permlink}| Parameter | Required | Default | Description |
|---|---|---|---|
account | Active account | Reblogging account | |
author | — | Original post author | |
permlink | — | Original post permlink |
Post / Comment
Also accepts: steem://comment
steem://post?username={author}&title={title}&body={body}&parent_perm={permlink}&json_metadata={json}| Parameter | Required | Default | Description |
|---|---|---|---|
username | Active account | Author account | |
title | "" | Post title | |
body | "" | Post body (markdown) | |
parent_perm | "" | Parent permlink (for comments) | |
parent_username | null | Parent author (for comments) | |
json_metadata | {} | Post metadata JSON | |
permlink | Auto-generated | Custom permlink | |
comment_options | null | Comment options JSON (beneficiaries, max payout) |
Sign Buffer (Authentication)
Also accepts: steem://sign-buffer
steem://signBuffer?username={account}&message={message}&keyType={Posting|Active}| Parameter | Required | Default | Description |
|---|---|---|---|
username | Active account | Account to sign with | |
message | — | Message to sign | |
keyType | Posting | Key type to use |
Broadcast (Advanced)
steem://broadcast?username={account}&operations={json_ops}&keyType={Active|Posting}| Parameter | Required | Default | Description |
|---|---|---|---|
username | Active account | Broadcasting account | |
operations | — | JSON array of operations | |
keyType | Posting | Active or Posting |
Sign (Raw Transaction)
steem://sign?ops={url_encoded_json_operations}&account={account}The ops parameter should be a URL-encoded JSON array of blockchain operations. The wallet will prompt the user to sign the transaction with their Active key.
steem-keychain:// Protocol
The steem-keychain:// protocol triggers app-level commands — opening the browser, importing accounts, or sending arbitrary signing requests.
Open Browser
Opens a URL in Keychain's built-in dApp browser with Keychain JS bridge injected.
steem-keychain://browser/{url_encoded_url}steem-keychain://browser/https%3A%2F%2Fsteempro.comAdd Account
Import an account into the wallet with pre-filled keys.
steem-keychain://add_account={"name":"username","keys":{"posting":"5K..."}}Request (Any Operation)
Send any Keychain operation as a JSON-encoded request. This is the most flexible method — any operation the Keychain API supports can be triggered via this endpoint.
steem-keychain://request?data={url_encoded_json_request}steem-keychain://request?data=%7B%22type%22%3A%22transfer%22%2C%22to%22%3A%22kafio%22%2C%22amount%22%3A%221.000%22%2C%22currency%22%3A%22STEEM%22%7DQR Codes
Steem Keychain Mobile includes a universal QR scanner that automatically detects:
steem://deep links → routes to operation confirmationsteem-keychain://protocol → executes app command- Account import QR codes → routes to add account
- Regular URLs → opens in built-in browser
Integration Guide
Examples for integrating deep links into your application:
HTML
<a href="steem://transfer?to=kafio&amount=1.000¤cy=STEEM&memo=tip">
Tip 1 STEEM
</a>JavaScript
const deepLink = `steem://transfer?to=${recipient}&amount=${amount}¤cy=${currency}&memo=${encodeURIComponent(memo)}`;
window.location.href = deepLink;React Native
import { Linking } from 'react-native';
Linking.openURL('steem://transfer?to=kafio&amount=1.000¤cy=STEEM');Testing
Use the Deep Link Lab to build, validate, and test any deep link:
- Builder — Select an operation, fill the form, get a URI + QR code
- Parser — Paste any URI to decode and validate it
- History — Save and replay your test URIs
