GET
https://api.cryptohopper.com/v1/template
Returns the user's own templates, sorted by name, with the number of templates in result.
OAuth scope:
read About scopes
hasTriggers, hasConfigPool and hasSignals are 1 whenever the stored value is not empty, which includes an empty list, so they can be 1 for a template without triggers, pools or signals. logo is a bare file name (for example binance-usdt.jpg) when the template has no image of its own. item_id is null for own templates.
Example request
curl "https://api.cryptohopper.com/v1/template" \
-H "access-token: YOUR_ACCESS_TOKEN"
const response = await fetch('https://api.cryptohopper.com/v1/template', {
method: 'GET',
headers: {
"access-token": "YOUR_ACCESS_TOKEN"
}
});
const data = await response.json();
import requests
response = requests.get(
"https://api.cryptohopper.com/v1/template",
headers={
"access-token": "YOUR_ACCESS_TOKEN"
},
)
data = response.json()
$ch = curl_init('https://api.cryptohopper.com/v1/template');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'access-token: YOUR_ACCESS_TOKEN',
],
]);
$data = json_decode(curl_exec($ch), true);
Parameters
Headers
| Name | Type | Required | Description |
|---|---|---|---|
access-token |
string | Required | The OAuth access token of the user. |
Response
{
"data": {
"templates": [
{
"template_id": "138000",
"type": "template",
"item_id": null,
"name": "My BTC bot",
"description": "Trend following on USDT pairs",
"logo": "https://cdn.cryptohopper.com/images/hoppers/templates/138000_2026-09-01-10-15-00.jpg",
"exchange": "binance",
"base_currency": "usdt",
"currencies": "BTC,ETH",
"hidden_configuration": "0",
"hasTriggers": 1,
"hasConfigPool": 1,
"hasSignals": 1,
"created_date": "2026-09-01 10:15:00"
}
],
"result": 1
}
}