NAV Navbar
shell

Introduction

Welcome to the Qase.io API! You can use our API to access Qase.io API endpoints, which allows to retrieve information about entities stored in database and perform actions with them. The API is organized around REST.

API Rate limits

Your application can make up to 200 API requests per minute.

Once the limit is exceeded, clients receive an HTTP 429 with a Retry-After: X header to indicate how long their timeout period is before they will be able to send requests again. The timeout period is set to 60 seconds once the limit is exceeded.

Authentication

To authorize, use this code:

# With shell, you can just pass the correct header with each request
curl "https://api.qase.io/v1/api_endpoint"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Make sure to replace api_token with your API key.

Qase.io uses API tokens to authenticate requests. You can view an manage your API keys in API tokens pages.

Your API keys has the same access rights as your role in the app, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.

Qase API expects for the API key to be included in all API requests to the server in a header that looks like the following:

Token: api_token

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

Projects

Get All Projects

Request:

curl "https://api.qase.io/v1/projects"
  -H "Token: api_token"
  -H "Content-type: application/json"

Response:

{
      "status": true,
      "result": {
          "total": 10,
          "filtered": 10,
          "count": 1,
          "entities": [
              {
                  "title": "Demo Project",
                  "code": "DEMO",
                  "counts": {
                      "cases": 10,
                      "suites": 3,
                      "milestones": 0,
                      "runs": {
                          "total": 1,
                          "active": 1
                      },
                      "defects": {
                          "total": 0,
                          "open": 0
                      }
                  }
              }
          ]
      }
  }

This method allows to retrieve all projects available for your account. You can you limit and offset params to paginate.

HTTP Request

GET https://api.qase.io/v1/projects

Query Parameters

Parameter Default Description
limit 100 A number of projects in result set
offset 0 How many projects should be skipped

Get a Specific Project

Request:

curl "https://api.qase.io/v1/project/{code}"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "title": "Qase Web Application",
        "code": "QAPP",
        "counts": {
            "cases": 250,
            "suites": 38,
            "milestones": 4,
            "runs": {
                "total": 46,
                "active": 20
            },
            "defects": {
                "total": null,
                "open": 13
            }
        }
    }
}

This method allows to retrieve a specific project.

HTTP Request

GET https://api.qase.io/v1/project/{code}

URL Parameters

Parameter Required Description
CODE True Project CODE is required to retrieve specific project

Create a new project

Request:

curl "https://api.qase.io/v1/project"
  -X POST
  -H "Token: api_token"
  -H "Content-Type: application/json"
  -d '{"title":"New", "code": "NEW"}'

JSON payload:

{
    "title": "new",
    "code": "NEW",
    "description": "Awesome project",
    "access": "all",
    "members: []
}

Response:

{
    "status": true,
    "id": 1
}

This method is used to create a new project through API.

HTTP Request

POST https://api.qase.io/v1/project

URL Parameters

Parameter Required Description
code True Project code

JSON payload fields

Parameter Type Description
title String Test suite title. Required field.
description string Test suite description
preconditions string Test suite preconditions
parent_id int Parent suite ID (nullable)

Test cases

Get all test cases

Request:

curl "https://api.qase.io/v1/case/{code}?limit=10&offset=0&filters[severity]=high,low"
  -H "Token: api_token"
  -H "Content-type: application/json"

Response:

{
    "status": true,
    "result": {
        "total": 250,
        "filtered": 250,
        "count": 1,
        "entities": [
            {
                "id": 5,
                "position": 1,
                "title": "Test case",
                "description": "Description for case",
                "preconditions": "",
                "postconditions": "",
                "severity": 4,
                "priority": 2,
                "type": 1,
                "behavior": 2,
                "is_automated": false,
                "is_deprecated": false,
                "milestone_id": null,
                "suite_id": 1,
                "tags": [],
                "links": [],
                "revision": 1,
                "custom_fields": [],
                "attachments": [],
                "steps": [],
                "created": "2018-05-02T20:32:23.000000Z",
                "updated": "2019-07-21T13:24:08.000000Z"
            }
        ]
    }
}

This method allows to retrieve all test cases stored in selected project. You can you limit and offset params to paginate.

HTTP Request

GET https://api.qase.io/v1/case/{code}

Query Parameters

Parameter Default Description
limit 100 A number of test cases in result set
offset 0 How many test cases should be skipped
filters[search] Provide a string that will be used to search by name
filters[milestone_id] ID of milestone
filters[suite_id] ID of test suite
filters[severity] A list of severity values separated by comma. Possible values: undefined, blocked, critical, major, normal, minor, trivial
filters[priority] A list of priority values separated by comma. Possible values: undefined, high, medium, low
filters[type] A list of type values separated by comma. Possible values: other, functional smoke, regression, security, usability, performance, acceptance
filters[behavior] A list of behavior values separated by comma. Possible values: undefined, positive negative, destructive
filters[is_automated] Boolean value. Used to get all automated/not automated cases.
filters[is_deprecated] Boolean value. Used to get all deprecated/not deprecated cases.

Get a specific test case

Request:

curl "https://api.qase.io/v1/case/{code}/{id}"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": [
        {
            "id": 1,
            "position": 1,
            "title": "Test case",
            "description": "Test case description",
            "preconditions": "",
            "postconditions": "",
            "severity": "major",
            "priority": "high",
            "type": "undefined",
            "behavior": "positive",
            "is_automated": false,
            "is_deprecated": false,
            "milestone_id": null,
            "suite_id": null,
            "tags": [],
            "links": [],
            "revision": 1,
            "custom_fields": [],
            "attachments": [],
            "steps": [],
            "created": "2018-05-02T20:32:23.000000Z",
            "updated": "2019-07-21T13:24:08.000000Z"
        }
    ]
}

This method allows to retrieve a specific test case.

HTTP Request

GET https://api.qase.io/v1/case/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Test case id

Delete test case

Request:

curl "https://api.qase.io/v1/case/{code}/{id}"
  -X DELETE
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true
}

This method completely deletes a test case from repository

HTTP Request

DELETE https://api.qase.io/v1/case/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Test case id

Suites

Get all test suites

Request:

curl "https://api.qase.io/v1/suite/{code}?limit=10&offset=0&filters[search]=title"
  -H "Token: api_token"
  -H "Content-type: application/json"

Response:

{
    "status": true,
    "result": {
        "total": 250,
        "filtered": 250,
        "count": 1,
        "entities": [
            {
                "id": 1,
                "title": "Level 1",
                "description": "Set from API",
                "preconditions": "Set from API",
                "position": 1,
                "parent_id": null,
                "created": "2018-05-02T10:49:01.000000Z",
                "updated": "2019-07-21T19:10:15.000000Z"
            }
        ]
    }
}

This method allows to retrieve all test suites stored in selected project. You can you limit and offset params to paginate.

HTTP Request

GET https://api.qase.io/v1/suite/{code}

Query Parameters

Parameter Default Description
limit 100 A number of suites in result set
offset 0 How many suites should be skipped
filters[search] Provide a string that will be used to search by title

Get a specific test suite

Request:

curl "https://api.qase.io/v1/suite/{code}/{id}"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": [
        {
            "id": 1,
            "title": "Level 1",
            "description": "Set from API",
            "preconditions": "Set from API",
            "position": 1,
            "parent_id": null,
            "created": "2018-05-02T10:49:01.000000Z",
            "updated": "2019-07-21T19:10:15.000000Z"
        }
    ]
}

This method allows to retrieve a specific test suite.

HTTP Request

GET https://api.qase.io/v1/suite/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Test suite id

Create a new test suite

Request:

curl "https://api.qase.io/v1/suite/{code}"
  -X POST
  -H "Token: api_token"
  -H "Content-Type: application/json"
  -d '{"title":"Test suite"}'

JSON payload:

{
    "title": "new",
    "parent_id": null
}

Response:

{
    "status": true,
    "id": 1
}

This method is used to create a new test suite through API.

HTTP Request

POST https://api.qase.io/v1/suite/{code}

URL Parameters

Parameter Required Description
code True Project code

JSON payload fields

Parameter Type Description
title String Test suite title. Required field.
description string Test suite description
preconditions string Test suite preconditions
parent_id int Parent suite ID (nullable)

Update test suite

Request:

curl "https://api.qase.io/v1/suite/{code}"
  -X PATCH
  -H "Token: api_token"
  -H "Content-Type: application/json"
  -d '{"title":"Test suite title"}'

JSON payload:

{
    "title": "new",
    "parent_id": null
}

Response:

{
    "status": true
}

This method is used to update a test suite through API. You should provide an object with a list of fields you want to update in a payload. At least one field is required. Fields in payload will overwrite existing values.

HTTP Request

PATCH https://api.qase.io/v1/suite/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Test suite id

JSON payload fields

Parameter Type Description
title String Test suite title. Required field.
description string Test suite description
preconditions string Test suite preconditions
parent_id int Parent suite ID (nullable)

Delete test suite

Request:

curl "https://api.qase.io/v1/suite/{code}/{id}"
  -X DELETE
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true
}

This method completely deletes a test suite from repository

HTTP Request

DELETE https://api.qase.io/v1/suite/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Test suite id

Milestones

Get all milestones

Request:

curl "https://api.qase.io/v1/milestone/{code}?limit=10&offset=0&filters[search]=title"
  -H "Token: api_token"
  -H "Content-type: application/json"

Response:

{
    "status": true,
    "result": {
        "total": 250,
        "filtered": 250,
        "count": 1,
        "entities": [
            {
                "id": 1,
                "title": "Release 1.0",
                "description": null,
                "due_date": null,
                "created": "2018-08-31T23:59:10.000000Z",
                "updated": "2018-08-31T23:59:10.000000Z"
            }
        ]
    }
}

This method allows to retrieve all milestones stored in selected project. You can you limit and offset params to paginate.

HTTP Request

GET https://api.qase.io/v1/milestone/{code}

Query Parameters

Parameter Default Description
limit 100 A number of milestones in result set
offset 0 How many milestones should be skipped
filters[search] Provide a string that will be used to search by title

Get a specific milestone

Request:

curl "https://api.qase.io/v1/milestone/{code}/{id}"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": [
        {
            "id": 1,
            "title": "Level 1",
            "description": "Set from API",
            "preconditions": "Set from API",
            "position": 1,
            "parent_id": null,
            "created": "2018-05-02T10:49:01.000000Z",
            "updated": "2019-07-21T19:10:15.000000Z"
        },
    ]
}

This method allows to retrieve a specific milestone.

HTTP Request

GET https://api.qase.io/v1/milestone/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Milestone id

Create a new milestone

Request:

curl "https://api.qase.io/v1/milestone/{code}"
  -X POST
  -H "Token: api_token"
  -H "Content-Type: application/json"
  -d '{"title":"Release 1.0"}'

JSON payload:

{
    "title": "new",
    "parent_id": null
}

Response:

{
    "status": true,
    "id": 1
}

This method is used to create a new milestone through API.

HTTP Request

POST https://api.qase.io/v1/milestone/{code}

URL Parameters

Parameter Required Description
code True Project code

JSON payload fields

Parameter Type Description
title String Milestone title. Required field.
description string Milestone description

Update milestone

Request:

curl "https://api.qase.io/v1/milestone/{code}"
  -X PATCH
  -H "Token: api_token"
  -H "Content-Type: application/json"
  -d '{"title":"Milestone title"}'

JSON payload:

{
    "title": "new",
    "description": null
}

Response:

{
    "status": true
}

This method is used to update a milestone through API. You should provide an object with a list of fields you want to update in a payload. At least one field is required. Fields in payload will overwrite existing values.

HTTP Request

PATCH https://api.qase.io/v1/milestone/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Milestone id

JSON payload fields

Parameter Type Description
title String Milestone title. Required field.
description string Milestone description

Delete milestone

Request:

curl "https://api.qase.io/v1/milestone/{code}/{id}"
  -X DELETE
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true
}

This method completely deletes a milestone from repository

HTTP Request

DELETE https://api.qase.io/v1/milestone/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Milestone id

Shared steps

Get all shared steps

Request:

curl "https://api.qase.io/v1/shared_step/{code}?limit=10&offset=0&filters[search]=title"
  -H "Token: api_token"
  -H "Content-type: application/json"

Response:

{
    "status": true,
    "result": {
        "total": 250,
        "filtered": 250,
        "count": 1,
        "entities": [
            {
                "hash": "0223905c291bada23e6049d415385982af92d758",
                "title": "Shared step",
                "action": "Open signup page",
                "expected_result": "Page is opened",
                "cases": [
                    41,
                    35,
                    42,
                    30
                ],
                "cases_count": 4,
                "created": "2019-02-09T23:16:49.000000Z",
                "updated": "2019-02-09T23:16:49.000000Z"
            }
        ]
    }
}

This method allows to retrieve all shared steps stored in selected project. You can you limit and offset params to paginate.

HTTP Request

GET https://api.qase.io/v1/shared_step/{code}

Query Parameters

Parameter Default Description
limit 100 A number of shared steps in result set
offset 0 How many shared_steps should be skipped
filters[search] Provide a string that will be used to search by title

Get a specific shared step

Request:

curl "https://api.qase.io/v1/shared_steps/{code}/{id}"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": [
        {
            "hash": "0223905c291bada23e6049d415385982af92d758",
            "title": "Shared step",
            "action": "Open signup page",
            "expected_result": "Page is opened",
            "cases": [
                41,
                35,
                42,
                30
            ],
            "cases_count": 4,
            "created": "2019-02-09T23:16:49.000000Z",
            "updated": "2019-02-09T23:16:49.000000Z"
        }
    ]
}

This method allows to retrieve a specific shared step.

HTTP Request

GET https://api.qase.io/v1/shared_step/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Shared step id

Create a new shared step

Request:

curl "https://api.qase.io/v1/shared_step/{code}"
  -X POST
  -H "Token: api_token"
  -H "Content-Type: application/json"
  -d '{"title":"Shared step", "action": "Open URL"}'

JSON payload:

{
    "title": "Shared step",
    "action": "Open URL",
    "expected_result": "URL is opened"
}

Response:

{
    "status": true,
    "id": 1
}

This method is used to create a new shared step through API.

HTTP Request

POST https://api.qase.io/v1/shared_step/{code}

URL Parameters

Parameter Required Description
code True Project code

JSON payload fields

Parameter Type Description
title String Shared step title. Required field.
action string Step action. Required field.
expected_result string Step expected result.

Update shared step

Request:

curl "https://api.qase.io/v1/shared_step/{code}"
  -X PATCH
  -H "Token: api_token"
  -H "Content-Type: application/json"
  -d '{"title":"Shared step title"}'

JSON payload:

{
    "title": "Shared step",
    "action": "Open URL",
    "expected_result": "URL is opened"
}

Response:

{
    "status": true
}

This method is used to update a shared step through API. You should provide an object with a list of fields you want to update in a payload. At least one field is required. Fields in payload will overwrite existing values.

HTTP Request

PATCH https://api.qase.io/v1/shared_step/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Shared step id

JSON payload fields

Parameter Type Description
title String Shared step title. Required field.
action string Step action. Required field.
expected_result string Step expected result.

Delete shared step

Request:

curl "https://api.qase.io/v1/shared_step/{code}/{id}"
  -X DELETE
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true
}

This method completely deletes a shared step from repository. Also it will be removed from all test cases.

HTTP Request

DELETE https://api.qase.io/v1/shared_step/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Shared step id

Test plans

Get all test plans

Request:

curl "https://api.qase.io/v1/plan/{code}?limit=10&offset=0&filters[search]=title"
  -H "Token: api_token"
  -H "Content-type: application/json"

Response:

{
    "status": true,
    "result": {
        "total": 1,
        "filtered": 1,
        "count": 1,
        "entities": [
            {
                "id": 1,
                "title": "Sample plan",
                "description": "Regression",
                "cases_count": 10,
                "created": "2019-01-10T22:47:53.000000Z",
                "updated": "2019-01-10T22:47:53.000000Z"
            }
        ]
    }
}

This method allows to retrieve all test plans stored in selected project. You can you limit and offset params to paginate.

HTTP Request

GET https://api.qase.io/v1/plan/{code}

Query Parameters

Parameter Default Description
limit 100 A number of test plans in result set
offset 0 How many test plans should be skipped

Get a specific test plan

Request:

curl "https://api.qase.io/v1/plan/{code}/{id}"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "id": 16,
        "title": "Sample plan",
        "description": "Awesome plan",
        "cases_count": 1,
        "created": "2019-09-15T18:49:07.000000Z",
        "updated": "2019-09-15T18:49:30.000000Z",
        "average_time": 40,
        "cases": [
            {
                "case_id": 1,
                "assignee_id": 1
            }
        ]
    }
}

This method allows to retrieve a specific test plan with detailed information about test cases in that plan and assignee.

HTTP Request

GET https://api.qase.io/v1/plan/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Plan id

Create a new plan

Request:

curl "https://api.qase.io/v1/plan/{code}"
  -X POST
  -H "Token: api_token"
  -H "Content-Type: application/json"
  -d '{"title": "New plan","description": "Awesome plan","cases": [1,2]}'

JSON payload:

{
    "title": "New plan",
    "description": "Awesome plan",
    "cases": [1,2]
}

Response:

{
    "status": true,
    "result": {
        "id": 17
    }
}

This method is used to create a new test plan through API. In response you will receive an ID of newly created plan.

HTTP Request

POST https://api.qase.io/v1/plan/{code}

URL Parameters

Parameter Required Description
code True Project code

JSON payload fields

Parameter Required Type Description
title True String Test plan title
description False string Test plan description
cases True array A list of test case ids

Update test plan

Request:

curl "https://api.qase.io/v1/plan/{code}"
  -X PATCH
  -H "Token: api_token"
  -H "Content-Type: application/json"
  -d '{"title":"Updated plan", "cases":[1,2,3]}'

JSON payload:

{
    "title": "Updated plan",
    "cases": [1,2,3]
}

Response:

{
    "status": true,
    "result": {
        "id": 1
    }
}

This method is used to update a test plan through API. You should provide an object with a list of fields you want to update in a payload. At least one field is required. Fields in payload will overwrite existing values.

HTTP Request

PATCH https://api.qase.io/v1/plan/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Test plan id

JSON payload fields

Parameter Required Type Description
title False String Test plan title
description False string Test plan description
cases False array A list of test case ids

Delete test plan

Request:

curl "https://api.qase.io/v1/plan/{code}/{id}"
  -X DELETE
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "id": "17"
    }
}

This method completely deletes a test plan from repository

HTTP Request

DELETE https://api.qase.io/v1/plan/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Test plan id

Test runs

Get all test runs

Request:

curl "https://api.qase.io/v1/run/{code}?limit=10&offset=0"
  -H "Token: api_token"
  -H "Content-type: application/json"

Response:

{
    "status": true,
    "result": {
        "total": 1,
        "filtered": 1,
        "count": 1,
        "entities": [
            {
                "id": 1,
                "title": "Test run 2019/12/12",
                "description": null,
                "status": 0,
                "start_time": "2019-12-12 12:12:12",
                "end_time": null,
                "public": false,
                "stats": {
                    "total": 3,
                    "untested": 3,
                    "passed": 0,
                    "failed": 0,
                    "blocked": 0,
                    "skipped": 0,
                    "retest": 0,
                    "deleted": 4
                },
                "time_spent": 0,
                "user_id": 1,
                "environment": null,
                "cases": [1,2,3]
            }
        ]
    }
}

This method allows to retrieve all test runs stored in selected project. You can you limit and offset params to paginate.

HTTP Request

GET https://api.qase.io/v1/run/{code}

Query Parameters

Parameter Default Description
limit 100 A number of test runs in result set
offset 0 How many test runs should be skipped
filter[status] - A list of status values separated by comma. Possible values: active, complete, abort
include - Add this param to include a list of test cases into response. Possible value: cases

Get a specific test run

Request:

curl "https://api.qase.io/v1/run/{code}/{id}"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "id": 1,
        "title": "Test run 2019/12/12",
        "description": null,
        "status": 0,
        "start_time": "2019-12-12 12:12:12",
        "end_time": null,
        "public": false,
        "stats": {
            "total": 3,
            "untested": 3,
            "passed": 0,
            "failed": 0,
            "blocked": 0,
            "skipped": 0,
            "retest": 0,
            "deleted": 4
        },
        "time_spent": 0,
        "user_id": 1,
        "environment": null,
        "cases": [1,2,3]
    }
}

This method allows to retrieve a specific test run.

HTTP Request

GET https://api.qase.io/v1/run/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Test run id

Query Parameters

Parameter Default Description
include - Add this param to include a list of test cases into response. Possible value: cases

Create a new test run

Request:

curl "https://api.qase.io/v1/run/{code}"
  -X POST
  -H "Token: api_token"
  -H "Content-Type: application/json"
  -d '{"title": "New test run","description": "Awesome run by API","environment_id": null,"cases": [1,2]}'

JSON payload:

{
    "title": "New test run",
    "description": "Awesome run by API",
    "environment_id": null,
    "cases": [1,2]
}

Response:

{
    "status": true,
    "result": {
        "id": 1
    }
}

This method is used to create a new test run through API. In response you will receive an ID of newly created run.

HTTP Request

POST https://api.qase.io/v1/run/{code}

URL Parameters

Parameter Required Description
code True Project code

JSON payload fields

Parameter Required Type Description
title True String Test run title
description False string Test run description
environment_id False integer Environment ID
cases True array A list of test case ids

Delete test run

Request:

curl "https://api.qase.io/v1/run/{code}/{id}"
  -X DELETE
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "id": "1"
    }
}

This method completely deletes a test run from repository

HTTP Request

DELETE https://api.qase.io/v1/run/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Test run id

Test run results

Get all test run results

Request:

curl "https://api.qase.io/v1/result/{code}?limit=10&offset=0"
  -H "Token: api_token"
  -H "Content-type: application/json"

Response:

{
    "status": true,
    "result": {
        "total": 1,
        "filtered": 1,
        "count": 1,
        "entities": [
            {
                "hash": "6efce6e4f9de887a2ee863e8197cb74ab626a273",
                "comment": null,
                "run_id": 1,
                "case_id": 1,
                "steps": null,
                "status": "Passed",
                "is_api_result": false,
                "time_spent": 0,
                "end_time": "2018-11-11 11:11:11"
            }
        ]
    }
}

This method allows to retrieve all test run run results stored in selected project. You can you limit and offset params to paginate. Also you can use various filters to get specific results.

HTTP Request

GET https://api.qase.io/v1/result/{code}

Query Parameters

Parameter Default Description
limit 100 A number of test runs in result set
offset 0 How many test runs should be skipped
filter[status] - A single test run result status. Possible values: passed, failed, blocked
filter[member] - Team member ID. Search result by team member.
filter[run] - Run ID. Search for all results in a specific run.
filter[case_id] - Test case ID. Search for all results for a specific test case.
filter[from_end_time] - Will return all results created after provided datetime. Allowed format: Y-m-d H:i:s
filter[to_end_time] - Will return all results created before provided datetime. Allowed format: Y-m-d H:i:s

Get a specific test run result

Request:

curl "https://api.qase.io/v1/result/{code}/{hash}"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "hash": "6efce6e4f9de887a2ee863e8197cb74ab626a273",
        "comment": null,
        "run_id": 1,
        "case_id": 1,
        "steps": null,
        "status": "Passed",
        "is_api_result": false,
        "time_spent": 0,
        "end_time": "2018-11-11 11:11:11"
    }
}

This method allows to retrieve a specific test run result by hash.

HTTP Request

GET https://api.qase.io/v1/result/{code}/{hash}

URL Parameters

Parameter Required Description
code True Project code
hash True Test run result hash

Add a new test run result

Request:

curl "https://api.qase.io/v1/result/{code}/{run_id}"
  -X POST
  -H "Token: api_token"
  -H "Content-Type: application/json"
  -d '{"case_id": 1,"time": 100,"status": "passed","member_id": 1,"comment": "Failed via API","defect": true,"steps": [{"position": 1,"status": "passed"},{"position": 2,"status": "passed"},{"position": 3,"status": "failed"}]}'

JSON payload:

{
    "case_id": 1,
    "time": 100,
    "status": "failed",
    "member_id": 1,
    "comment": "Failed via API",
    "defect": true,
    "steps": [
      {
        "position": 1,
        "status": "passed"
      },
      {
        "position": 2,
        "status": "passed"
      },
      {
        "position": 3,
        "status": "failed"
      }
    ]
}

Response:

{
    "status": true,
    "result": {
        "hash": "2898ba7f3b4d857cec8bee4a852cdc85f8b33132"
    }
}

This method allows to add a new test run result through API. In response you will receive a hash of newly created result.

HTTP Request

POST https://api.qase.io/v1/result/{code}/{run_id}

URL Parameters

Parameter Required Description
code True Project code
run_id True Test run ID

JSON payload fields

Parameter Required Type Description
case_id True integer Test case ID in a run. If case doesn't included in a run, you will receive an error in response.
status True integer Test run result status. Possible values: in_progress, passed, failed, blocked
time False integer Time spent in seconds
member_id False integer An ID of team member
comment False string A comment for the result
defect False boolean If defect param is provided and set to true, a new defect will be created.
steps False array An array of step objects. Required fields: status, position.

Update test run result

Request:

curl "https://api.qase.io/v1/result/{code}/{run_id}/{hash}"
  -X PATCH
  -H "Token: api_token"
  -H "Content-Type: application/json"
  -d '{"time": 100,"status": "passed","comment": "Failed via API","defect": true,"steps": {"3": "failed"}}'

JSON payload:

{
    "time": 100,
    "status": "passed",
    "comment": "Failed via API v2",
    "defect": true,
    "steps": [
      {
        "position": 3,
        "status": "passed"
      }
    ]
}

Response:

{
    "status": true,
    "result": {
        "hash": "2898ba7f3b4d857cec8bee4a852cdc85f8b33132"
    }
}

This method allows to update test run result through API. At least one field is required. If you provide steps object, method will overwrite only existing steps.

HTTP Request

PATCH https://api.qase.io/v1/result/{code}/{run_id}/{hash}

URL Parameters

Parameter Required Description
code True Project code
run_id True Test run ID
hash True Test run result hash

JSON payload fields

Parameter Required Type Description
status False integer Test run result status. Possible values: in_progress, passed, failed, blocked
time False integer Time spent in seconds
comment False string A comment for the result
defect False boolean If defect param is provided and set to true, a new defect will be created using existing data.
steps False object An array of step objects. Required fields: status, position.

Delete test run result

Request:

curl "https://api.qase.io/v1/result/{code}/{hash}"
  -X DELETE
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "hash": "2898ba7f3b4d857cec8bee4a852cdc85f8b33132"
    }
}

This method completely deletes a test run result from repository

HTTP Request

DELETE https://api.qase.io/v1/result/{code}/{hash}

URL Parameters

Parameter Required Description
code True Project code
hash True Test run result hash

Defects

Get all defects

Request:

curl "https://api.qase.io/v1/defect/{code}?limit=10&offset=0"
  -H "Token: api_token"
  -H "Content-type: application/json"

Response:

{
    "status": true,
    "result": {
        "total": 1,
        "filtered": 1,
        "count": 1,
        "entities": [
            {
                "id": 1,
                "title": "Dangerous defect",
                "actual_result": "Something happened",
                "status": "open",
                "user_id": 1,
                "attachments": [],
                "created": "2019-11-08T22:03:07.000000Z",
                "updated": "2019-11-19T22:29:57.000000Z"
            }
        ]
    }
}

This method allows to retrieve all defects stored in selected project. You can you limit and offset params to paginate.

HTTP Request

GET https://api.qase.io/v1/defect/{code}

Query Parameters

Parameter Default Description
limit 100 A number of defects in result set
offset 0 How many defects should be skipped
filter[status] - A single status of defect. Possible values: open, resolved

Get a specific defect

Request:

curl "https://api.qase.io/v1/defect/{code}/{id}"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "id": 1,
        "title": "Dangerous defect",
        "actual_result": "Something happened",
        "status": "open",
        "user_id": 1,
        "attachments": [],
        "created": "2019-11-08T22:03:07.000000Z",
        "updated": "2019-11-19T22:29:57.000000Z"
    }
}

This method allows to retrieve a specific defect.

HTTP Request

GET https://api.qase.io/v1/defect/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Defect id

Resolve

Request:

curl "https://api.qase.io/v1/defect/{code}/resolve/{id}"
  -X PATCH
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "id": 1
    }
}

This method is used to resolve defect through API. If defect is already resolved, you will get a message that defect is not found.

HTTP Request

PATCH https://api.qase.io/v1/defect/{code}/resolve/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Defect id

Delete defect

Request:

curl "https://api.qase.io/v1/defect/{code}/{id}"
  -X DELETE
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "id": "1"
    }
}

This method completely deletes a defect from repository

HTTP Request

DELETE https://api.qase.io/v1/defect/{code}/{id}

URL Parameters

Parameter Required Description
code True Project code
id True Defect id

Custom Fields

Get all custom fields

Request:

curl "https://api.qase.io/v1/custom_field/{code}?limit=10&offset=0"
  -H "Token: api_token"
  -H "Content-type: application/json"

Response:

{
    "status": true,
    "result": {
        "total": 1,
        "filtered": 1,
        "count": 1,
        "entities": [
            {
                "id": 1,
                "title": "Description",
                "type": "Text",
                "placeholder": "Write something",
                "default_value": null,
                "value": null,
                "is_required": false,
                "is_visible": false,
                "is_filterable": false,
                "created": "2019-08-26T22:30:07.000000Z",
                "updated": "2019-08-26T22:30:07.000000Z"
            }
        ]
    }
}

This method allows to retrieve all custom fields for a specific project. You can you limit and offset params to paginate.

HTTP Request

GET https://api.qase.io/v1/custom_field/{code}

URL Parameters

Parameter Required Description
code True Project code

Query Parameters

Parameter Default Description
limit 100 A number of custom fields in result set
offset 0 How many custom fields should be skipped

Get a specific custom field

Request:

curl "https://api.qase.io/v1/custom_field/{code}/{id}"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "id": 1,
        "title": "Description",
        "type": "Text",
        "placeholder": "Write something",
        "default_value": null,
        "value": null,
        "is_required": false,
        "is_visible": false,
        "is_filterable": false,
        "created": "2019-08-26T22:30:07.000000Z",
        "updated": "2019-08-26T22:30:07.000000Z"
    }
}

This method allows to retrieve one custom fields for specific project by id

HTTP Request

GET https://api.qase.io/v1/custom_field/{code}/{id}

URL Parameters

URL Parameters

Parameter Required Description
code True Project code
id True Custom field id

Attachments

Get all attachments

Request:

curl "https://api.qase.io/v1/attachment?limit=10&offset=0"
  -H "Token: api_token"
  -H "Content-type: application/json"

Response:

{
    "status": true,
    "result": {
        "total": 1,
        "filtered": 1,
        "count": 1,
        "entities": [
            {
                "hash": "2497be4bc95f807d2fe3c2203793673f6e5140e8",
                "file": "filename.ext",
                "mime": "text/plain",
                "size": 100,
                "full_path": "https://storage.cdn.example/filename.ext"
            }
        ]
    }
}

This method allows to retrieve all attachments uploaded into your projects. You can you limit and offset params to paginate.

HTTP Request

GET https://api.qase.io/v1/attachment

Query Parameters

Parameter Default Description
limit 100 A number of attachments in result set
offset 0 How many attachments should be skipped

Get a specific attachment

Request:

curl "https://api.qase.io/v1/attachment/{hash}"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "hash": "2497be4bc95f807d2fe3c2203793673f6e5140e8",
        "file": "filename.ext",
        "mime": "text/plain",
        "size": 100,
        "full_path": "https://storage.cdn.example/filename.ext"
    }
}

This method allows to retrieve a specific attachment by hash.

HTTP Request

GET https://api.qase.io/v1/attachment/{hash}

URL Parameters

Parameter Required Description
hash True Unique hash

Team

Get all team members

Request:

curl "https://api.qase.io/v1/user?limit=10&offset=0"
  -H "Token: api_token"
  -H "Content-type: application/json"

Response:

{
    "status": true,
    "result": {
        "total": 1,
        "filtered": 13,
        "count": 1,
        "entities": [
            {
                "id": 1,
                "name": "John Smith",
                "email": "[email protected]",
                "title": "Team Owner",
                "status": 1
            }
        ]
    }
}

This method allows to retrieve all users in your team. You can you limit and offset params to paginate.

HTTP Request

GET https://api.qase.io/v1/user

Query Parameters

Parameter Default Description
limit 100 A number of users in result set
offset 0 How many users should be skipped

Get a specific team member

Request:

curl "https://api.qase.io/v1/user/{id}"
  -H "Token: api_token"
  -H "Content-Type: application/json"

Response:

{
    "status": true,
    "result": {
        "id": 1,
        "name": "John Smith",
        "email": "[email protected]",
        "title": "Team Owner",
        "status": 1
    }
}

This method allows to retrieve a specific team member by id.

HTTP Request

GET https://api.qase.io/v1/user/{id}

URL Parameters

Parameter Required Description
id True Team member ID

Errors

Qase API uses the following error codes:

Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- Your role doesn't have enough permissions to perform this action
404 Not Found -- The resource could not be found.
405 Method Not Allowed -- You tried to access a resource with an invalid method.
406 Not Acceptable -- You requested a format that isn't json.
410 Gone -- The resource requested has been removed from our servers.
429 Too Many Requests -- You're performing too many requests! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.