API Reference
Exploratory Tests
Create and manage exploratory tests for your products.
Prerequisites:
- You need a product (see Products)
- A test environment is required (see Test Environments)
- Either features (see Features) or a test template (see Test Templates) must be provided
- For mobile apps, you may need to upload a binary app first (see Binary Apps)
Get exploratory test
Retrieve a specific exploratory test by ID.
Endpoint: GET /exploratory_tests/{exploratory_test_id}
Parameters:
exploratory_test_id(number, required) - ID of the Exploratory test
Example Request:
1curl -X GET "https://api.test.io/customer/v2/exploratory_tests/123" \
2 -H "Authorization: Token YOUR_API_TOKEN"Response: 200 OK
Returns the exploratory test object with full details including test environment, features, requirements, and more.
List exploratory tests
Returns a paginated list of exploratory tests for the specified product.
Endpoint: GET /products/{product_id}/exploratory_tests{?page,per_page}
Parameters:
product_id(number, required) - ID of the Productpage(number, optional) - Page number of the result setper_page(number, optional) - Number of items per page when pagination is applied. Used only if page is provided. Default: 25
Notes:
If page parameter is omitted, pagination is not applied and the last 150 tests are returned.
Example Request:
1curl -X GET "https://api.test.io/customer/v2/products/1/exploratory_tests?page=1&per_page=25" \
2 -H "Authorization: Token YOUR_API_TOKEN"Response: 200 OK
Returns an array of exploratory test objects.
Create exploratory test
Creates a new exploratory test for the specified product.
Endpoint: POST /products/{product_id}/exploratory_tests
Parameters:
product_id(number, required) - ID of the Product
All attributes must be provided inside the root object exploratory_test.
Attributes
test_title(string, optional) - Test titlegoal(string, optional) - Goal of the testout_of_scope(string, optional) - Out of scope itemsinstructions(string, optional) - Additional requirements for testersstart_at(string, optional) - Start date and time of the test. Default: within the next full hourduration(string, optional) - Duration of the test. Default:- 2 hours for rapid test
- 24 hours for usability and focused test
- 28 hours for coverage test
report_language(string, optional, default: en) - Language in which bugs will be reported. Allowed values: en, detesting_type(string, optional, default: coverage) - Type of the test. Allowed values: coverage, usability, rapid, focusedbug_severities(object, optional) - Bug severities related attributes (only applicable iftesting_typeis focused)low(boolean, optional, default: false) - Enable low-severity bugshigh(boolean, optional, default: false) - Enable high-severity bugscritical(boolean, optional, default: false) - Enable critical-severity bugs
section_id(number, optional) - Section ID to associate the test withallow_device_clouds(boolean, optional, default: false) - Allow testers to use device cloudsrequirements(array, optional) - Device requirements (see Building Requirements Array below)attachments(array, optional) - Test attachmentsuse_default_devices(boolean, optional, default: true) - Whether to use default devices selectiontest_environment(object, required) - Test environment related attributesfeatures(array, optional) - Features to be testedtest_template(object, optional) - Test template related attributes
⚠️ Constraint: features and test_template are mutually exclusive - exactly one must be provided.
Example Request
1{
2 "exploratory_test": {
3 "test_title": "Checkout Flow Test",
4 "goal": "Validate the checkout process for usability and bugs",
5 "out_of_scope": "Payment provider integration",
6 "instructions": "Focus on speed and clarity of the checkout process.",
7 "start_at": "2025-09-20T14:00:00Z",
8 "duration": "30",
9 "report_language": "en",
10 "testing_type": "focused",
11 "bug_severities": {
12 "high": true,
13 "critical": true
14 },
15 "section_id": 42,
16 "allow_device_clouds": true,
17 "requirements": [
18 {
19 "category": {
20 "id": 5
21 },
22 "vendor": {
23 "id": 10
24 },
25 "devices": [
26 {
27 "id": 101
28 },
29 {
30 "id": 102
31 }
32 ],
33 "operating_system": {
34 "id": 20
35 },
36 "min_operating_system_version": {
37 "id": 200
38 },
39 "max_operating_system_version": {
40 "id": 205
41 },
42 "browsers": [
43 {
44 "id": 301
45 }
46 ],
47 "input_devices": [
48 {
49 "id": 401
50 }
51 ]
52 }
53 ],
54 "attachments": [
55 {
56 "id": 5
57 },
58 {
59 "file_url": "https://example.com/checkout_flow.pdf"
60 }
61 ],
62 "use_default_devices": false,
63 "test_environment": {
64 "title": "Staging Checkout Environment",
65 "url": "https://staging.example.com/",
66 "username": "tester",
67 "password": "secret",
68 "access": "VPN required",
69 "allow_orders": false
70 },
71 "features": [
72 {
73 "id": 15
74 },
75 {
76 "title": "Shopping Cart",
77 "description": "Verify adding and removing items works as expected.",
78 "howtofind": "Navigate to cart after adding an item.",
79 "enable_default": true,
80 "enable_content": true,
81 "enable_visual": false,
82 "user_stories": [
83 "As a customer, I want to add items to my cart so I can purchase them.",
84 "As a customer, I want to remove items from my cart if I change my mind."
85 ],
86 "use_markdown": true
87 }
88 ]
89 }
90}Response: 201 Created
Returns the created exploratory test object with full details.
Building Requirements Array
The requirements array allows you to specify device targeting for your test. Each requirement object can include:
category- Device category (e.g., mobile, desktop, tablet)vendor- Device manufacturer (e.g., Apple, Samsung)devices- Specific device modelsoperating_system- OS (e.g., iOS, Android, Windows)min_operating_system_version/max_operating_system_version- OS version rangebrowsers- Browser applicationsinput_devices- Input methods (e.g., keyboard, touch)
Important: All IDs in the requirements array (category, vendor, devices, operating_system, browsers, etc.) must be retrieved from the Public Device API. Use the Public Device API to:
- List available device categories, vendors, and models
- Get operating system and browser options
- Retrieve the correct IDs for each requirement field
Example: To find available iOS devices, query the Public Device API for devices with operating_system: "iOS", then use the returned IDs in your requirements array.
For a simpler approach using device type, OS, and browser names, see the Requirements page which explains the alternative format used in test case tests.