# training

This method is to control the training of the mental command and facial expression detections. Before you start a training, you should [subscribe](/cortex-api/data-subscription/subscribe.md) to the "sys" data stream.

See [BCI](/cortex-api/bci.md) for details.

## Parameters

| Name        | Type     | Required | Description                                                                                                                                  |
| ----------- | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| cortexToken | `string` | yes      | A token returned by [authorize](/cortex-api/authentication/authorize.md).                                                                    |
| session     | `string` | yes      | A session id returned by [createSession](/cortex-api/session/createsession.md). The training will be for the headset linked to this session. |
| detection   | `string` | yes      | Must be "mentalCommand" or "facialExpression".                                                                                               |
| status      | `string` | yes      | Control what this method does, like start the training, or cancel it... Available status depends on which **detection** you selected.        |
| action      | `string` | yes      | The action you want to train. Available actions depends on which **detection** you selected.                                                 |

### status

To get the available status for a detection, call [getDetectionInfo](/cortex-api/bci/getdetectioninfo.md), and check the field **controls** of the result object. Or you can check this list:

| Status | Description                                                   |
| ------ | ------------------------------------------------------------- |
| start  | Start a new training for the specified **action**.            |
| accept | Accept a successful training and add it to the profile.       |
| reject | Reject a successful training. It is not added to the profile. |
| reset  | Cancel the current training.                                  |
| erase  | Erase all the training data for the specified **action**.     |

### action

To get the available actions for a detection, call [getDetectionInfo](/cortex-api/bci/getdetectioninfo.md), and check the field **actions** of the result object.

However, note that for the facial expression detection, only these actions can be trained: "neutral", "surprise", "frown", "smile", "clench".

## Result

The result is an object containing these fields:

| Name    | Type     | Description                            |
| ------- | -------- | -------------------------------------- |
| action  | `string` | The **action** you set in the request. |
| status  | `string` | The **status** you set in the request. |
| message | `string` | A success message.                     |

## Examples

### Start a training

Start a mental command training for the action "push".

{% tabs %}
{% tab title="Request" %}

```javascript
{
    "id": 14,
    "jsonrpc": "2.0",
    "method": "training",
    "params": {
        "action": "push",
        "cortexToken": "xxx",
        "detection": "mentalCommand",
        "session": "f3a35fd0-9163-4cc4-ab30-4ed224369f91",
        "status": "start"
    }
}
```

{% endtab %}

{% tab title="Response" %}

```javascript
{
    "id": 14,
    "jsonrpc": "2.0",
    "result": {
        "action": "push",
        "message": "Set up training successfully",
        "status": "start"
    }
}
```

{% endtab %}
{% endtabs %}

### Accept a training

Accept a successful training for the action "push".

{% tabs %}
{% tab title="Request" %}

```javascript
{
    "id": 15,
    "jsonrpc": "2.0",
    "method": "training",
    "params": {
        "action": "push",
        "cortexToken": "xxx",
        "detection": "mentalCommand",
        "session": "f3a35fd0-9163-4cc4-ab30-4ed224369f91",
        "status": "accept"
    }
}
```

{% endtab %}

{% tab title="Response" %}

```javascript
{
    "id": 15,
    "jsonrpc": "2.0",
    "result": {
        "action": "push",
        "message": "Set up training successfully",
        "status": "accept"
    }
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://emotiv.gitbook.io/cortex-api/bci/training.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
