Testmo logo
Product News

Announcing Test Case Management APIs in Testmo

By Simon Knight
.
Oct 15, 2025
.
5 min read
Testmo Test Case Management API

We’re excited to announce the release of three powerful new API namespaces for the Testmo test case repository: Cases, Folders, and Attachments. These additions significantly expand programmatic access to your Testmo repository data, supporting advanced test case management automation workflows.

This release provides Testmo users with the ability to:

  • Import test cases via API, including test case folders & attachments
  • Update test case fields using automations from other systems like Jira, GitHub, or GitLab
  • Implement detailed extraction scenarios for audit, review, backup, or advanced reporting

What’s New?

These three new API namespaces, Cases, Folders, and Attachments, provide comprehensive CRUD (Create, Read, Update, Delete) functionality for managing the core components of your test repository.

The endpoints are currently in beta, with a view towards identifying any issues or improvements we should make before finalizing them. If you have feedback, please let us know about it in our form here:

→ Provide Feedback

Cases

The Cases namespace provides API methods for getting, adding, updating, or deleting cases from a Testmo project. You can utilize endpoints to retrieve a list of cases, which supports pagination, filtering options (like folder ID, template ID, or creation date), and expands for including additional information such as history, comments, or automation links.

Bulk operations are also supported, allowing you to create, update, or delete up to 100 cases per request. When updating cases in bulk, you can modify attributes like folder ID, state ID, custom priority, estimate, and custom fields.

Folders

The Folders namespace provides API methods for getting, adding, updating, or deleting folders from a Testmo project. This supports getting a list of folders, filtering by parent ID or name (partial match), and allows for bulk creation, updates, and deletion of up to 100 folders per request.

The Attachments namespace provides methods for getting, adding, or deleting attachments from test cases. You can retrieve attachment details for a specific case, including the path for download. It supports uploading a single attachment or up to 20 attachments in bulk, and allows for deleting up to 100 attachments simultaneously using an array of attachment IDs.

How Does This Support Automation Workflows?

Testmo’s REST API is designed to allow you to access your Testmo data programmatically, and we continue to expand our available endpoints to support more use cases around automation, reporting, and integrations.

The ability to retrieve detailed information on test cases—including custom fields, steps, and history—allows you to implement new test case management scenarios, examples of which may include internal audits, compliance reviews, and creating comprehensive backups of your test repository data.

Furthermore, the new bulk update capability for cases is crucial for advanced synchronization and integration use cases. For example, if you manage requirements or priority levels in an integrated system like Jira, GitHub or GitLab you can now use the Testmo API to retrieve relevant data from that system and then programmatically apply bulk updates to the corresponding test cases in Testmo, modifying fields such as custom priority, state ID, or descriptive custom fields.

Example Usage

Here’s a few examples to get you started with the new Test Case Management API functionality:

Example 1: Retrieve a List of Cases

Use this example to retrieve a list of cases within a given project, filtered by folder and template. This is ideal for building dashboards, performing audits, or reviewing cases under specific templates or organisational structures.


GET /projects/1/cases?folder_id=1&template_id=0
200 OK
{
    "page": 1,
    "prev_page": null,
    "next_page": null,
    "last_page": 1,
    "per_page": 100,
    "total": 41,
    "result": [
        {
            "id": 40,
            "estimate": null,
            "folder_id": 1,
            "forecast": null,
            "has_automation": false,
            "has_automation_status": false,
            "key": 40,
            "name": "Check external authentication (OAuth)",
            "project_id": 1,
            "repo_id": 1,
            "state_id": 4,
            "status_id": 2,
            "status_at": "2025-09-10 14:16:32.619735",
            "template_id": 3,
            "created_at": "2025-09-19 14:13:41.069669",
            "created_by": 1,
            "updated_at": null,
            "updated_by": null,
            "custom_priority": 2,
            "custom_description": null,
            "custom_expected": null
        },
        ...
    ]
}

Example 2: Retrieve Cases by Date Range with Automation Links

Need to find recently created cases or link automation data? This query lets you pull cases created within a specific time frame and optionally expand the response to include connected automation links for richer reporting.


GET /projects/1/cases?created_after=2025-06-01T00:00:00Z&created_before=2025-06-15T23:59:59Z&expands=automation_links

{
    "page": 1,
    "prev_page": null,
    "next_page": null,
    "last_page": 1,
    "per_page": 100,
    "total": 24,
    "result": [
        {
            "id": 535,
            "estimate": null,
            "folder_id": 37,
            "forecast": null,
            "has_automation": true,
            "has_automation_status": true,
            "key": 535,
            "name": "SQL Injection - User Credentials Retrieval",
            "project_id": 1,
            "repo_id": 1,
            "state_id": 4,
            "status_id": 2,
            "status_at": "2025-10-03 10:02:03.378800",
            "template_id": 3,
            "created_at": "2025-10-03 09:51:22.978067",
            "created_by": 1,
            "updated_at": "2025-10-03 09:52:42.377991",
            "updated_by": 1,
            "automation_links": [
                7479,
                7478
            ],
            "custom_priority": 2,
            "custom_description":  "<p>1. Navigate to the product search. 2. Enter a crafted SQL injection payload to extract user credentials. 3. Verify that the response contains a list of user emails and passwords.</p>", 
            "custom_expected": null
        }
        ...
    ],
    "expands": {
        "automation_links": [
            {
                "name": "should pass a dummy test for SQL Injection",
                "automation_case_id": 7478,
                "automation_source_id": 5
            },
            {
                "name": "should pass a dummy test for NoSQL Injection",
                "automation_case_id": 7479,
                "automation_source_id": 5
            }
        ]
    }}

Example 3: Upload a Single Attachment

You can easily attach supporting evidence or documentation—such as screenshots, logs, or reports—to individual test cases using a single upload endpoint. This example shows how to send a file to a specific case via the API.


POST /api/v1/cases/1/attachments/single --form 'file=@"/PATH_TO_YOUR FILE"'

201 CREATED
{
    "result": [
        {
            "id": 10,
            "name": "images-16.jpeg",
            "note": null,
            "mime_type": "image/jpeg",
            "size": 10576,
            "created_at": "2025-09-29T07:40:37.640Z",
            "created_by": 1,
            "path": "http://localhost/attachments/view/10"
        }
    ]
}

Example 4: Bulk Update Cases

For teams managing large test repositories, this endpoint streamlines updates. Use it to apply consistent folder assignments, states, estimates, or priorities across multiple cases in one request, reducing manual effort and human error.


PATCH /api/v1/projects/1/cases
{
    "ids": [1, 2, 3, 4, 5],
    "folder_id": 1,
    "state_id": 1,
    "estimate": 200,
    "custom_priority": 1
}

200 OK
{
    "result": [
        {
            "id": 1,
            "estimate": 200,
            "folder_id": 1,
            "forecast": 200,
            "has_automation": false,
            "has_automation_status": false,
            "key": 1,
            "name": "Check login",
            "project_id": 1,
            "repo_id": 1,
            "state_id": 1,
            "status_id": 2,
            "status_at": "2025-09-10 14:16:32.619735",
            "template_id": 3,
            "created_at": "2025-09-19 14:13:40.616240",
            "created_by": 1,
            "updated_at": "2025-09-24 08:48:14.365222",
            "updated_by": 1,
            "custom_priority": 1,
            "custom_description": null,
            "custom_expected": null
        },
        {
            ...
        }
    ]
}

We Want Your Feedback!

The Cases, Folders, and Attachments API endpoints are the latest in a series of planned API releases for Testmo. To ensure this and further endpoints hit the target, we welcome your feedback. If you have some comments or suggestions relating to these new namespaces, please let us know about them in the linked form: Provide Your Feedback Here!

More from Testmo

Get news about Testmo & software testing

Also receive our free original testing & QA content directly in your inbox whenever we publish new guides and articles.
We will email you occasionally when news about Testmo and testing content is published. You can unsubscribe at any time with a single click. Learn more in our privacy policy.