> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.thymia.ai/api-reference/thymia-api/mental-wellness-thymia-helios/llms.txt.
> For full documentation content, see https://docs.thymia.ai/api-reference/thymia-api/mental-wellness-thymia-helios/llms-full.txt.

# Run the model using the Thymia Activity Plugin

POST /v1/models/mental-wellness-activity
Content-Type: application/json

Create a new run of the Mental Wellness model for a specific user, using the Thymia Activity Plugin to host an activity and capture a recording.

The response contains:
 * A link for the user to perform an activity. The link should then be embedded in the Thymia Activity Plugin.
   Once the activity is completed, the recording of it will be used automatically as input to the model.
 * The id of the new model run which can be used to poll for results **after the activity has been completed**.

Reference: https://docs.thymia.ai/api-reference/thymia-api/mental-wellness-thymia-helios/create-model-run-with-activity-v-1-models-mental-wellness-activity-post

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: Thymia API
  version: 1.0.0
paths:
  /v1/models/mental-wellness-activity:
    post:
      operationId: create-model-run-with-activity-v-1-models-mental-wellness-activity-post
      summary: Run the model using the Thymia Activity Plugin
      description: >-
        Create a new run of the Mental Wellness model for a specific user, using
        the Thymia Activity Plugin to host an activity and capture a recording.


        The response contains:
         * A link for the user to perform an activity. The link should then be embedded in the Thymia Activity Plugin.
           Once the activity is completed, the recording of it will be used automatically as input to the model.
         * The id of the new model run which can be used to poll for results **after the activity has been completed**.
      tags:
        - subpackage_mentalWellnessThymiaHelios
      parameters:
        - name: x-api-key
          in: header
          description: Your API Activation Key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: >-
            Details of new model run created, including a link to a thymia
            activity.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/MentalWellnessModelRunCreateActivityResponse
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MentalWellnessModelRunActivityCreate'
components:
  schemas:
    BirthSex:
      type: string
      enum:
        - MALE
        - FEMALE
        - INTERSEX
        - UNKNOWN
      description: An enumeration.
      title: BirthSex
    UserDetails:
      type: object
      properties:
        userLabel:
          type: string
          description: A unique label identifying a user that all model input refers to
        dateOfBirth:
          type: string
          format: date
          description: >-
            An ISO 8601 date; if day or month are unknown, supply the parts
            which *are* known and use `01` for the rest
        birthSex:
          $ref: '#/components/schemas/BirthSex'
          description: The sex assigned to a user at birth
      required:
        - userLabel
        - dateOfBirth
        - birthSex
      title: UserDetails
    LanguageCode:
      type: string
      enum:
        - en
        - en-AU
        - en-GB
        - en-IE
        - en-IN
        - en-US
        - en-ZA
        - es-ES
        - es-US
        - id-ID
        - ja-JP
      description: An enumeration.
      title: LanguageCode
    Accent:
      type: string
      enum:
        - ID
        - NG
        - KE
      description: An enumeration.
      title: Accent
    Tag:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
      required:
        - name
        - value
      title: Tag
    DataDeletionType:
      type: string
      enum:
        - RECORDINGS
      description: An enumeration.
      title: DataDeletionType
    MentalWellnessModelRunActivityCreate:
      type: object
      properties:
        user:
          $ref: '#/components/schemas/UserDetails'
          description: The user that this model run is being submitted for
        language:
          $ref: '#/components/schemas/LanguageCode'
          description: >-
            The code of the language being spoken by the user in the recording
            to be uploaded
        accent:
          $ref: '#/components/schemas/Accent'
          description: >-
            The accent of the user speaking, in addition to the language they
            are speaking
        sleepTime:
          type: string
          format: date-time
          description: >-
            When the user fell asleep for their last main sleep before the
            recording was made (as an ISO 8601 datetime). This should <b>not
            include timezone information</b> but it is assumed to be in the
            local timezone of the user in the recording so the time of day can
            be inferred.
        wakeTime:
          type: string
          format: date-time
          description: >-
            When the user woke from their last main sleep before the recording
            was made (as an ISO 8601 datetime). This should <b>not include
            timezone information</b> but it is assumed to be in the local
            timezone of the user in the recording so the time of day can be
            inferred.
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
          description: |-
            Name/Value pairs to tag a model run for later identification. Note:
            * Tag names must be unique
            * At most 20 tags are allowed per model run
        deleteData:
          type: boolean
          default: false
          description: >-
            Boolean flag indicating if user data is to be deleted after the
            completion of the model run. If True, the recordings, model inputs
            and model results will be deleted 12 hrs after the model run
            completes. Attempts to retrieve results after this time will receive
            a 404 error. If you wish to be more specific about which types of
            data are deleted, see the `data_to_delete` field below.
        dataToDelete:
          type: array
          items:
            $ref: '#/components/schemas/DataDeletionType'
          description: >-
            An array of data types to indicate which data inputs should be
            deleted after completion of the model run.

            To be used in combination with the `delete_data` boolean flag. Note:

            * If `delete_data` is set to `true` and `data_to_delete` value is
            omitted, all data will be deleted.

            * If `delete_data` is set to `true` and `data_to_delete` value is
            set to one or more data types, only the specified data will be
            deleted.
        activityType:
          type: string
          description: >-
            The type of activity to show to users. If omitted, a default
            activity will be used.
                    See the [online docs](https://thymia.ai/docs/building-your-integration) for the latest list of activities to choose from.
      required:
        - user
        - language
      title: MentalWellnessModelRunActivityCreate
    MentalWellnessModelRunCreateActivityResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: The id of the newly created model run
        activityLink:
          type: string
          description: >-
            A link to the thymia app, allowing users to perform an activity
            which captures a recording
      required:
        - id
        - activityLink
      title: MentalWellnessModelRunCreateActivityResponse
    ValidationErrorLocItems:
      oneOf:
        - type: string
        - type: integer
      title: ValidationErrorLocItems
    ValidationError:
      type: object
      properties:
        loc:
          type: array
          items:
            $ref: '#/components/schemas/ValidationErrorLocItems'
        msg:
          type: string
        type:
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
    HTTPValidationError:
      type: object
      properties:
        detail:
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
      title: HTTPValidationError
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: x-api-key
      description: Your API Activation Key

```

## SDK Code Examples

```python
import requests

url = "https://api.example.com/v1/models/mental-wellness-activity"

payload = {
    "user": {
        "userLabel": "a1f5c3d9-7b2e-4f8a-9c3d-2e7f1b6a4d8e",
        "dateOfBirth": "1985-04-12",
        "birthSex": "MALE"
    },
    "language": "en-GB"
}
headers = {
    "x-api-key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.example.com/v1/models/mental-wellness-activity';
const options = {
  method: 'POST',
  headers: {'x-api-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"user":{"userLabel":"a1f5c3d9-7b2e-4f8a-9c3d-2e7f1b6a4d8e","dateOfBirth":"1985-04-12","birthSex":"MALE"},"language":"en-GB"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.example.com/v1/models/mental-wellness-activity"

	payload := strings.NewReader("{\n  \"user\": {\n    \"userLabel\": \"a1f5c3d9-7b2e-4f8a-9c3d-2e7f1b6a4d8e\",\n    \"dateOfBirth\": \"1985-04-12\",\n    \"birthSex\": \"MALE\"\n  },\n  \"language\": \"en-GB\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-api-key", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.example.com/v1/models/mental-wellness-activity")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"user\": {\n    \"userLabel\": \"a1f5c3d9-7b2e-4f8a-9c3d-2e7f1b6a4d8e\",\n    \"dateOfBirth\": \"1985-04-12\",\n    \"birthSex\": \"MALE\"\n  },\n  \"language\": \"en-GB\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.example.com/v1/models/mental-wellness-activity")
  .header("x-api-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"user\": {\n    \"userLabel\": \"a1f5c3d9-7b2e-4f8a-9c3d-2e7f1b6a4d8e\",\n    \"dateOfBirth\": \"1985-04-12\",\n    \"birthSex\": \"MALE\"\n  },\n  \"language\": \"en-GB\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.example.com/v1/models/mental-wellness-activity', [
  'body' => '{
  "user": {
    "userLabel": "a1f5c3d9-7b2e-4f8a-9c3d-2e7f1b6a4d8e",
    "dateOfBirth": "1985-04-12",
    "birthSex": "MALE"
  },
  "language": "en-GB"
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.example.com/v1/models/mental-wellness-activity");
var request = new RestRequest(Method.POST);
request.AddHeader("x-api-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"user\": {\n    \"userLabel\": \"a1f5c3d9-7b2e-4f8a-9c3d-2e7f1b6a4d8e\",\n    \"dateOfBirth\": \"1985-04-12\",\n    \"birthSex\": \"MALE\"\n  },\n  \"language\": \"en-GB\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "x-api-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "user": [
    "userLabel": "a1f5c3d9-7b2e-4f8a-9c3d-2e7f1b6a4d8e",
    "dateOfBirth": "1985-04-12",
    "birthSex": "MALE"
  ],
  "language": "en-GB"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.example.com/v1/models/mental-wellness-activity")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```