API Reference

Features

Manage features for your products.

Prerequisites: You need a product before creating features. See Products to get or create a product. Features are used when creating exploratory tests (see Exploratory Tests).

What are Features?

Features represent distinct areas or capabilities of your product that you want to test. Each feature describes a specific part of your application, along with instructions on how to find it and optional user stories that define expected behavior.

Examples of Features:

  • Login Page - The authentication screen where users enter their credentials
  • Shopping Cart - The area where users review and manage items before checkout
  • User Profile Settings - The page where users update their personal information and preferences
  • Search Functionality - The search bar and results page used to find products or content

Features are not executed standalone. They are always used within the scope of an Exploratory Test. You can attach User Stories to features to describe specific behaviors that testers should verify.

Features and Sections

Features belong to a product and can optionally be organized into sections. Sections allow you to group related features together within a product.

  • For products without sections, features are created directly under the product. Use GET /products/{product_id}/features to retrieve all features and POST /features to create new ones.
  • For products with sections, features must be associated with one or more sections. When creating a feature, provide section_ids to assign it to specific sections. Use GET /products/{product_id}/sections/{section_id}/features to retrieve features scoped to a particular section, or use GET /products/{product_id}/features to retrieve all features across all sections.

List features

Retrieve all features for a specific product. This endpoint returns the full list of features regardless of whether sections are enabled for the product.

Endpoint: GET /products/{product_id}/features

Parameters:

  • product_id (number, required) - ID of the Product

Query Parameters:

ParameterTypeRequiredDescription
includes[]arrayNoOptional associations to expand. Supported value: user_stories. When included, user_stories returns objects with id, path, title, feature_id instead of plain strings.

To retrieve features for a particular section (when sections are enabled for the product), use GET /products/{product_id}/sections/{section_id}/features. See List features by section below.

Example Request:

1curl -X GET "https://api.test.io/customer/v2/products/1/features" \
2  -H "Authorization: Token YOUR_API_TOKEN"

Response: 200 OK

By default, user_stories is an array of path strings:

1{
2  "features": [
3    {
4      "id": 1,
5      "title": "Account Management",
6      "description": "Manage your account information",
7      "howtofind": "Top right of the screen",
8      "user_stories": ["User story 1", "User story 2"]
9    }
10  ]
11}

Example Request (with expanded user stories):

1curl -X GET "https://api.test.io/customer/v2/products/1/features?includes[]=user_stories" \
2  -H "Authorization: Token YOUR_API_TOKEN"

Response: 200 OK

When includes[]=user_stories is passed, each user story is returned as an object:

1{
2  "features": [
3    {
4      "id": 1,
5      "title": "Account Management",
6      "description": "Manage your account information",
7      "howtofind": "Top right of the screen",
8      "user_stories": [
9        {
10          "id": 10,
11          "path": "User story 1",
12          "title": "User story 1",
13          "feature_id": 1
14        },
15        {
16          "id": 11,
17          "path": "User story 2",
18          "title": "User story 2",
19          "feature_id": 1
20        }
21      ]
22    }
23  ]
24}

List features by section

Retrieve all features for a specific section of a product. Use this endpoint for products that have sections enabled.

Endpoint: GET /products/{product_id}/sections/{section_id}/features

Parameters:

  • product_id (number, required) - ID of the Product
  • section_id (number, required) - ID of the Section

Query Parameters:

ParameterTypeRequiredDescription
includes[]arrayNoOptional associations to expand. Supported value: user_stories. See List features for details.

Example Request:

1curl -X GET "https://api.test.io/customer/v2/products/1/sections/2/features" \
2  -H "Authorization: Token YOUR_API_TOKEN"

Response: 200 OK

1{
2  "features": [
3    {
4      "id": 1,
5      "title": "Account Management",
6      "description": "Manage your account information",
7      "howtofind": "Top right of the screen",
8      "user_stories": ["User story 1"]
9    }
10  ]
11}

Create feature

Create a new feature.

Endpoint: POST /features

Request Body:

  • product_id (number, required) - ID of the Product
  • section_ids (array[number], optional) - Array of section IDs
  • feature (object, required) - Feature object
    • title (string, required) - Feature title
    • description (string, required) - Feature description
    • howtofind (string, optional) - Instructions on how to find the feature
    • target_idx (string, optional) - Target index
    • user_stories (array[string], optional) - Array of user story descriptions
    • use_markdown (boolean, optional) - Whether to use markdown formatting

Example Request:

1curl -X POST "https://api.test.io/customer/v2/features" \
2  -H "Authorization: Token YOUR_API_TOKEN" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "product_id": 1,
6    "section_ids": [1],
7    "feature": {
8      "title": "Account Management",
9      "description": "Manage your account information",
10      "howtofind": "Top right of the screen",
11      "user_stories": ["User story 1"],
12      "use_markdown": true
13    }
14  }'

Response: 201 Created

1{
2  "feature": {
3    "id": 15,
4    "title": "Account Management",
5    "description": "Manage your account information",
6    "howtofind": "Top right of the screen",
7    "user_stories": ["User story 1"]
8  }
9}

Copy features

Copy all features (including their user stories) from one product to another. The features are duplicated into the destination product.

Endpoint: PUT /products/{product_id}/features/copy

Parameters:

  • product_id (number, required) - ID of the source Product to copy features from
  • destination_product_id (number, required) - ID of the destination Product to copy features to

Query Parameters:

ParameterTypeRequiredDescription
includes[]arrayNoOptional associations to expand. Supported value: user_stories. See List features for details.

Example Request:

1curl -X PUT "https://api.test.io/customer/v2/products/1/features/copy" \
2  -H "Authorization: Token YOUR_API_TOKEN" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "destination_product_id": 2
6  }'

Response: 200 OK

Returns the list of features in the destination product after copying.

1{
2  "features": [
3    {
4      "id": 30,
5      "title": "Account Management",
6      "description": "Manage your account information",
7      "howtofind": "Top right of the screen",
8      "user_stories": ["User story 1"]
9    }
10  ]
11}
Previous
Products