# Get a backtest

`GET https://api.cryptohopper.com/v1/backtest/{id}`

Part of [Backtesting](https://www.cryptohopper.com/api-documentation/api-reference/backtesting.md) in the Cryptohopper API reference.

Returns one backtest with its settings, balances, trades, open positions, log, notes and progress in percent_completed.

OAuth scope: `read`

The log holds at most 500 lines. Requires an active subscription or trial; otherwise the request is refused with 403.

## Headers

| Name | Type | Required | Description |
|---|---|---|---|
| `access-token` | string | yes | The OAuth access token of the user. |

## Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `id` | string | yes | Backtest ID, as returned by List backtests. |

## Example request

```bash
curl "https://api.cryptohopper.com/v1/backtest/BACKTEST_ID" \
  -H "access-token: YOUR_ACCESS_TOKEN"
```

## Response

Example response (illustrative values):

```json
{
    "data": {
        "id": "45120",
        "user_id": "12345",
        "template_type": "market",
        "template_id": "8812",
        "exchange": "binance",
        "quote_currency": "USDT",
        "markets": "[\"BTCUSDT\",\"ETHUSDT\"]",
        "backtest_settings": {
            "start_amount": 1000,
            "subscription_id": 3,
            "start_date": "2026-08-01 00:00:00",
            "end_date": "2026-08-31 00:00:00"
        },
        "profit": "4.25",
        "start_balance": "1000",
        "end_balance": "1042.5",
        "successful_sells": "38",
        "loss_sells": "6",
        "average_sell_time": "0",
        "start_date": "2026-08-01 00:00:00",
        "end_date": "2026-08-31 00:00:00",
        "open_positions": [],
        "open_shorts": [],
        "open_reserved": [],
        "open_tsb": [],
        "open_orders": [],
        "balances": [],
        "trades": [],
        "current_buys": [],
        "current_sells": [],
        "bot_statuses": {
            "buying": 1,
            "selling": 1
        },
        "history_total_assets": [
            [
                1754006400,
                1000
            ],
            [
                1754017200,
                1003.2
            ]
        ],
        "history_total_assets_usd": [],
        "output_log": [],
        "template_config": {
            "id": "8812",
            "template_type": "market"
        },
        "notes": [
            {
                "id": "12",
                "title": "First run",
                "note": "Good results on BTC.",
                "created": "2026-09-01T10:50:00Z"
            }
        ],
        "error_message": "",
        "created": "2026-09-01 10:00:00",
        "updated": "2026-09-01 10:45:00",
        "start_of_test": "2026-09-01 10:00:00",
        "completed": "1",
        "log_filtered": 1,
        "percent_completed": 100
    }
}
```

Status codes: 200. Errors return JSON with `status`, `error` and `message`, plus a numeric `code` when the error comes from the API itself rather than the gateway.
