Cryfi API

Cryfi API allows any trading automation strategy to share signals automatically. If you want to connect your trading bot to Cryfi you need to: 1) If you channel/group is paid - Create a private Channel, if free - Create a public channel

2) Add @CryfiBotarrow-up-right to the channel (you can press « start » —> « I’m a signal provider » on @CryfiBotarrow-up-right and it will guide you through this step or check our step-by-step guide)

3) If your channel is paid - You should setup your subscription price, wallet address & free trial period on the app (/app command on @CryfiBotarrow-up-right)

4) Then we’ll need to properly identify you in the backend so we’ll need to know the quoted data given by the /init_data command on @CryfiBotarrow-up-right

5) Integrate our API:

import requests

def assert_response_success(response, url):
	if response.status_code != 200:
		print(f"[-] An error occurred while reaching {url}")
		print(response)
		print(response.text)
		exit()

"""
Returns the list of pairs listed on Cryfi
These are all the binance future pairs

Response format:
[{
	'symbol': 'BTCUSDT',
	'base_asset': 'BTC',
	'quote_asset': 'USDT',
	'leverages': [125, 100, 50, 20, 10, 5, 4, 3, 2, 1] # The maximum of this list is the maximum allowed leverage
}]
"""
def get_pairs():
	url = "https://api.cryfi.app/api/pairs/getPairs"
	response = requests.get(url)
	assert_response_success(response, url)
	return response.json()

pairs = get_pairs()
print(f"[+] {len(pairs)} pairs available")

def create_signal(pair_symbol, leverage, portfolio_size, sl, sl_size, entries, entries_size, targets, targets_size, description, screenshot = None):
	# The length of the positions should equal the length of the sizes
	assert len(sl) == len(sl_size) and len(entries) == len(entries_size) and len(targets) == len(targets_size)
	# The sizes should add up to 100%
	assert sum(sl_size) == 100 and sum(entries_size) == 100 and sum(targets_size) == 100
	# The pair_symbol should be in the result of get_pairs()
	pair = next((pair for pair in pairs if pair["symbol"] == pair_symbol), None)
	assert pair
	# The leverage should not be more than the maximum allowed
	assert leverage <= max(pair["leverages"])

	json_data = {
		# To get your init_data send the /init_data command to the Cryfi Telegram Bot (https://t.me/CryfiBot)
		"init_data": "<your init_data goes here>",
		"signal": {
			"pair": pair_symbol,
			"leverage": leverage,
			"portfolio_size": portfolio_size,
			"sl": sl,
			"sl_size": sl_size,
			"entries": entries,
			"entries_size": entries_size,
			"targets": targets,
			"targets_size": targets_size,
			"description": description,
			"screenshot": screenshot,
		},
	}
	url = "https://telegram.cryfi.app/create-signal"
	response = requests.post(url, json=json_data)
	assert_response_success(response, url)
	print(f"[+] {response.json()['message']}")


pair_symbol = "ETHUSDT"
leverage = 5
portfolio_size = 10 # Optional position size of portfolio (here 10 is 10%). If not specified, default value is 100%
sl = [3050] # Prices of the stop losses
sl_size = [100] # Position size of each stop loss in %
entries = [3100, 3150] # Prices of the entries
entries_size = [50, 50] # Position size of each entry in %
targets = [3200, 3250] # Prices of the targets
targets_size = [35, 65] # Position size of each targets in %
description = "This signal makes sense because..." # Optional signal description
screenshot = "https://www.tradingview.com/x/9ql06UmW/" # Optional image URL

create_signal(pair_symbol, leverage, portfolio_size, sl, sl_size, entries, entries_size, targets, targets_size, description, screenshot)

6) If you have any troubles with the integration or want to ask questions feel free to tag the Admin in the Cryfi Chatarrow-up-right or write in the chat about your desire to integrate Cryfi API. Our team members will contact you shortly.

Last updated

Was this helpful?