Deezy Rare Satoshi Circulation and Hunting API
Deezy Rare Satoshi Circulation and Hunting API
The UTXO to scan for special satoshis.
Whether to return a PSBT that extracts the special sats to addresses of your choice
List of addresses (taproot preferred) where you'd like the special sats to be sent to. Must provide at least one address if "extract" is true. If there are more special sat outputs than addresses provided, we will re-use the addresses provided as needed.
List of addresses (taproot preferred) where you'd like the regular (non-special) sats sent to. Must provide at least one address if "extract" is true. If there are more regular sat outputs than addresses provided, we will re-use the addresses provided as needed.
Optional fee rate in sats/vbyte of the extraction transaction. If not provided, we will use the current next block minimum fee rate.
Optional list of tag combinations to exclude from the scan. The default value for the excluded tags, if not provided, is [['omega'], ['alpha'], ['block_78'], ['vintage_nakamoto'], ['pizza']]. To scan the full set of tags, pass an empty array.
Optional list of tag combinations to include from the scan. If included_tags is set, it will override excluded_tags settings.
Optional mapping of tag names to their minimum size values for filtering. The key is the tag name and the value is the minimum sat size required for that tag to be extracted.
You can use the optional mapping of tag names to their maximum age values for filtering. This allows you to specify the maximum year for a tag to be considered, and the tag will only be included if it is from that year or earlier. The key should be the tag name, and the value should be the maximum year (inclusive). This is a sub-filter applied before excluded_tags or included_tags.
Optional mapping of tag names to their maximum number of satoshis to be extracted. The key is the tag name and the value is the maximum number of satoshis allowed for that tag to be extracted.
An object mapping rarity tags to Bitcoin addresses. This is used to direct special satoshis identified by their rarity tags to specific addresses. The script will use the first matching tag to determine where to send the sat. The order of the tag:address pairs in your configuration matters. For example, if your configuration is { 'uncommon': 'address123', 'omega': 'address345' } and the script finds an uncommon omega sat, it will be sent to 'address123'. However, if your configuration is { 'omega': 'address345', 'uncommon': 'address123' }, the sat would be sent to 'address345'.
Combination of multiple tags is also allowed, ex: { 'omega/block_78': 'address345'}. This will direct bundle to 'address345' if it has both omega and block_78 tags.
Optional parameter saying when to split the outputs to regular funds addresses into smaller chunks. Options are NEVER (default), NO_SATS (split only when no special sats are found) or ALWAYS (always split). This can be useful to shake up the coin selection of an exchange if they happen to return the same sats to you over and over again. Splitting up the outputs can cause the exchange to give you fresh sats on your next withdrawal.
The target output size of the regular funds outputs when splitting is enabled.
Optional parameter saying when to attempt to create an output of withdraw_size_sats amount to the specified address within the extraction PSBT.
The target output size of the withdrawal output when withdrawal_address is provided.
Whether to split large chunk of sats, if it contains another special sats (subset). Large chunk will be split into: [A, B, CHANGE] or [A, B, A] if sets are valid accordingly to minimum sizes configurations
Ex: you have 5M of block_9 with 600 sats of 450x inside, MIN_TAG_SIZES is 1M for block_9. Enabling this flag will result into outputs of 4.5M block_9, 600 block_9 450x, rest will go to change since remaining is less then 1M.
curl -i -X POST \
https://docs.deezy.io/_mock/swagger/v1/sat-hunting/scan \
-H 'Content-Type: application/json' \
-H 'x-api-token: YOUR_API_KEY_HERE' \
-d '{
"address_to_scan": "bc1qy3c3vn2pfrmk8t5qt2apqqxx48l80senpfmqqh",
"extract": true,
"special_sat_addresses": [
"bc1ptjcfjm8f7gz8umrh0sg3ve8ewq3gm0q9m7khhplny8u7m0nvqf8s0ym0zh",
"bc1ptnadrqyv2862egv6ywanrpllknxw7tks2j9ddlwll9c8ada492cqy67rqd",
"bc1pgfyhzsjmkdtknrh3puzartyxjyztkpm7pfgmuleekj7akksr06lqvmxz8g"
],
"regular_funds_addresses": [
"bc1pdeyrsp2zyevlyenmqv4n240ww9hppf54x4eem5p473lqxh6jepts0wg28y",
"bc1pd7u90a2xvq3nkh4jdtym35uwa8h5xz9xhtcjkj7nj9vdn328hjvsctgu5r",
"bc1p3j5hrnxw7nkc0367pfygggf4pwata98zs7u75jcqp8cxklzak7yq9jfk9z"
],
"extraction_fee_rate": 10,
"excluded_tags": [
[
"omega",
"prime"
],
[
"omega"
],
[
"alpha",
"prime"
],
[
"alpha"
],
[
"block_78"
],
[
"vintage_nakamoto"
],
[
"pizza"
]
],
"included_tags": [
[
"omega",
"prime"
],
[
"omega"
],
[
"alpha",
"prime"
],
[
"alpha"
],
[
"block_78"
],
[
"vintage_nakamoto"
],
[
"pizza"
]
],
"min_tag_sizes": {
"block_78": 100,
"vintage_nakamoto": 300
},
"max_tag_ages": {
"alpha": 2009,
"omega": 2010
},
"tag_limits": {
"alpha": 10,
"omega": 15
},
"tag_by_address": {
"uncommon": "address123",
"omega": "address345"
},
"split_trigger": "NEVER",
"split_target_size_sats": 100000000,
"withdraw_address": "bc1q2utnxf5d4y2vqmly5w675dqxtgd0fqhnezmq52",
"withdraw_size_sats": 100000000,
"split_special_ranges": false
}'
{ "id": "20a27d48e7ae0db029a01b1fd06fd6d8" }
curl -i -X GET \
'https://docs.deezy.io/_mock/swagger/v1/sat-hunting/scan/{id}' \
-H 'x-api-token: YOUR_API_KEY_HERE'
Rare Sat Info for the Provided UTXO or address
The status of the scan operation - PENDING, PROCESSING, or COMPLETED
The UTXO that was scanned for special satoshis
The address that was scanned for special satoshis
A list of Runes identified in the provided UTXO or address. If no Runes were found, this will be an empty array.
A list of special satoshis identified in the provided UTXO or address. If no special sats were found, this will be an empty array.
A base64-encoded unsigned PSBT that extracts the special sats to addreses of your choice. Only returned if "extract" is true in the request body. If no special sats were identified, this will be null. WARNING: You should run additional verification locally to check that the fee rate is reasonable and that all outputs are to addresses you control before signing and broadcasting.
The value used for excluded_tags in the scan.
The value used for included_tags in the scan.
The value used for min_tag_sizes in the scan.
The value used for tag_by_address in the scan.
The value used for split_target_size_sats in the scan.
The value used for withdraw_address in the scan.
If withdraw_address was provided, denotes if a withdrawal output was sucessfully created.
{ "status": "COMPLETED", "utxo": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b:0", "address": "bc1qy3c3vn2pfrmk8t5qt2apqqxx48l80senpfmqqh", "runes": [ { … } ], "satributes": [ { … } ], "extraction_psbt": "cHNidP8BAHECAAAAAeJQY2VLRtutKgQYFUajEKpjFfl0Uyrm6x23OumDpe/4AQAAAAD/////AkxREgEAAAAAFgAUv6pTgbKHN60CZ+RQn5yOuH6c2WiA8PoCAAAAABYAFJDbOFU0E6zFF/M+g/AKDyqI2iUaAAAAAAABAOsCAAAAAAEBbxqXgEf9DlzcqqNM610s5pL1X258ra6+KJ22etb7HAcBAAAAAAAAAAACACT0AAAAAAAiACC7U1W0iJGhQ6o7CexDh5k36V6v3256xpA9/xmB2BybTFZdDQQAAAAAFgAUKp2ThzhswyM2QHlyvmMB6tQB7V0CSDBFAiEA4Md8RIZYqFdUPsgDyomlzMJL9bJ6Ho23JGTihXtEelgCIAeNXRLyt88SOuuWFVn3IodCE4U5D6DojIHesRmikF28ASEDHYFzMEAxfmfq98eSSnZtUwb1w7mAtHG65y8qiRFNnIkAAAAAAQEfVl0NBAAAAAAWABQqnZOHOGzDIzZAeXK+YwHq1AHtXQEDBAEAAAAAAAA=", "excluded_tags": [ [ … ], [ … ], [ … ], [ … ], [ … ] ], "included_tags": [ [ … ], [ … ], [ … ], [ … ], [ … ] ], "min_tag_sizes": { "block_78": 100, "vintage_nakamoto": 300 }, "tag_limits": { "alpha": 10, "omega": 15 }, "tag_by_address": { "uncommon": "address123", "omega": "address345" }, "split_trigger": "NEVER", "split_target_size_sats": 100000000, "withdraw_address": "bc1q2utnxf5d4y2vqmly5w675dqxtgd0fqhnezmq52", "withdraw_size_sats": 100000000, "withdraw_success": true, "split_special_ranges": true }
curl -i -X GET \
'https://docs.deezy.io/_mock/swagger/v1/sat-hunting/scans?limit=0&offset=0' \
-H 'x-api-token: YOUR_API_KEY_HERE'
[ { "request_id": "358c7d411b3491cf9ed5d65d984a6415", "status": "PENDING" } ]
This endpoint retrieves the user limits for sat hunting. The user's plan allows for a certain amount of BTC every certain number of days, and allows purchasing additional volume at a rate of a certain number of satoshis per 1 BTC of scan volume. Contact help@deezy.io for questions or to change your plan.
curl -i -X GET \
https://docs.deezy.io/_mock/swagger/v1/sat-hunting/user/limits \
-H 'x-api-token: string'
{ "payment_address": "1bc1q...", "amount": 97666993630, "unit": "sats", "days": 30, "subscription_cost": 100000000, "one_time_cost": 200000, "user_volume": 97666993631, "remaining_volume": 97666993631 }
curl -i -X GET \
'https://docs.deezy.io/_mock/swagger/v1/sat-hunting/earnings?days_ago=30&group_by=string' \
-H 'x-api-token: YOUR_API_KEY_HERE'
A summary of earnings with optional grouping and time-based filtering.
The summary of earnings.
{ "summary": [ { … }, { … } ], "group_by": "string", "days_ago": 0 }