---
title: "Backtest Initialization"
canonical: https://www.quantconnect.com/docs/v2/cloud-platform/api-reference/ai-assistance/tools/backtest-initialization
markdown: https://www.quantconnect.com/docs/v2/cloud-platform/api-reference/ai-assistance/tools/backtest-initialization.md
language: python
source: https://github.com/QuantConnect/Documentation/tree/master/01%20Cloud%20Platform/99%20API%20Reference/10%20AI%20Assistance/02%20Tools/01%20Backtest%20Initialization
modified: 2026-10-29
index: https://www.quantconnect.com/llms.txt
---

# Backtest Initialization

[Documentation](https://www.quantconnect.com/docs/v2.md) > [Cloud Platform](https://www.quantconnect.com/docs/v2/cloud-platform.md) > [API Reference](https://www.quantconnect.com/docs/v2/cloud-platform/api-reference.md) > [AI Assistance](https://www.quantconnect.com/docs/v2/cloud-platform/api-reference/ai-assistance.md) > [Tools](https://www.quantconnect.com/docs/v2/cloud-platform/api-reference/ai-assistance/tools.md) > Backtest Initialization

> Code examples are shown in Python. Append `?lang=csharp` to this URL for the C# version of this page.

## Introduction

Run a backtest for a few seconds to initialize the algorithm and get initialization errors if any.

## Request

Run a backtest for a few seconds to initialize the algorithm and get initialization errors if any. The `/ai/tools/backtest-init` API accepts requests in the following format:

| `BasicFilesRequest` Model - Request to process files. |  |
| --- | --- |
| language | `string Enum required example: Py` Programming language. Options : ['C#', 'Py'] |
| files | `File Array required example: [{"name": "file.py", "content": "fileContent"}]` Files to process. |
| Example | `{ "language": "Py", "files": "[{"name": "file.py", "content": "fileContent"}]" ] }` |

| `File` Model - File for a AI. |  |
| --- | --- |
| name | `string example: main.py` Name of a file. |
| content | `string` Contents of the file. |
| Example | `{ "name": "main.py", "content": "string" }` |

## Responses

The `/ai/tools/backtest-init` API provides a response in the following format:

### 200 Success

| `BacktestInitResponse` Model - Response to a backtest initialization request. |  |
| --- | --- |
| state | `string Enum` State of the backtest. Options : ['End', 'Error'] |
| version | `number example: 2.0` Version of the response. |
| payload | `string` Information about the backtest initialization. |
| payloadType | `string example: String` Type of the payload. |
| Example | `{ "state": "End", "version": 2.0, "payload": "string", "payloadType": "String" }` |

### 401 Authentication Error

| `UnauthorizedError` Model - Unauthorized response from the API. Key is missing, invalid, or timestamp is too old for hash. |  |
| --- | --- |
| www_authenticate | `string` Header |

## Examples

The following example demonstates initializing a backtest for a specific algorithm through the cloud API.

```
from base64 import b64encode
from hashlib import sha256
from time import time
from requests import get, post
BASE_URL = 'https://www.quantconnect.com/api/v2/'

# You need to replace these with your actual credentials.
# You can request your credentials at https://www.quantconnect.com/settings/
# You can find our organization ID at https://www.quantconnect.com/organization/
USER_ID = 0
API_TOKEN = '____'
ORGANIZATION_ID = '____'

def get_headers():
    # Get timestamp
    timestamp = f'{int(time())}'
    time_stamped_token = f'{API_TOKEN}:{timestamp}'.encode('utf-8')

    # Get hased API token
    hashed_token = sha256(time_stamped_token).hexdigest()
    authentication = f'{USER_ID}:{hashed_token}'.encode('utf-8')
    authentication = b64encode(authentication).decode('ascii')

    # Create headers dictionary.
    return {
        'Authorization': f'Basic {authentication}',
        'Timestamp': timestamp
    }

# Authenticate to verify credentials
response = post(f'{BASE_URL}/authenticate', headers = get_headers())
print(response.json())

# --------------------

### Initialize Backtest
# Send a POST request to the /ai/tools/backtest-init endpoint to initialize a backtest
response = post(f'{BASE_URL}/ai/tools/backtest-init', headers=get_headers(), json={
    "language": "Python",  # Programming language of the algorithm
    "files": [  # List of files for the backtest
        {
            "name": "utils.py",  # Name of the file
            "content": '''
# region imports
from AlgorithmImports import *
# endregion

class Project(QCAlgorithm):

    def Initialize(self):
        self.AddEquity("SPY", Resolution.Minute)
'''  # Content of the file (Python code)
        }
    ]
})
# Parse the JSON response into python managable dict
result = response.json()
# Check if the request was successful and print the backtest initialization result
if result['success']:
    print("Backtest Initialized Successfully:")
    print(result)
```
