Documentation

Projects API for CI test analytics

Projects sit at the top of the API. Each one belongs to your organization and holds every test run your CI has sent under its project token. This page covers reading projects and making the small edits the API allows. Authentication, pagination, and error codes are described in the API overview.

The project object

Field Type Notes
id string The project's identifier, used everywhere a project is referenced.
name string Display name.
description string or null Free-form description.
test_runs_count integer Total runs ever recorded, including runs that failed to process.
latest_result string or null Result of the most recent processed run: tests_passed, tests_failed, or tests_errored. Null until a run finishes processing.
last_test_run_at string or null When the most recent run arrived.
created_at string ISO 8601 UTC.
updated_at string ISO 8601 UTC.
url string The project's page in the web app.

The project token used for uploads is not included in the API. It is only readable on the project's settings page.

List projects

GET /api/v1/projects

Returns every project in your organization, newest first. Accepts the standard limit and cursor parameters.

curl -H "Authorization: Bearer $TESTNOD_API_KEY" \
  "https://testnod.com/api/v1/projects?limit=2"
{
  "data": [
    {
      "id": "3f1a2b7c-...",
      "name": "Core API",
      "description": "Backend service test suite",
      "test_runs_count": 482,
      "latest_result": "tests_passed",
      "last_test_run_at": "2026-08-30T09:12:44Z",
      "created_at": "2026-01-14T18:02:11Z",
      "updated_at": "2026-08-30T09:12:44Z",
      "url": "https://testnod.com/projects/3f1a2b7c-..."
    }
  ],
  "pagination": { "next_cursor": "aWQ6MTQ", "has_more": true }
}

As an example, you can check on every project in one request by listing them and reading latest_result on each, then follow up on anything that looks off with the test runs API.

Get a project

GET /api/v1/projects/:id

curl -H "Authorization: Bearer $TESTNOD_API_KEY" \
  https://testnod.com/api/v1/projects/3f1a2b7c-...

Returns the project object, or 404 if the id is unknown or belongs to another organization.

Update a project name or description

PATCH /api/v1/projects/:id

Only name and description can be changed. Everything else about a project, including its token, alert configuration, and notification settings, is managed in the web app.

Parameter Type Notes
name string Required to be non-blank when supplied.
description string May be set to an empty string to clear it.
curl -X PATCH \
  -H "Authorization: Bearer $TESTNOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Core API (Go)"}' \
  https://testnod.com/api/v1/projects/3f1a2b7c-...

The updated project comes back on success. A blank name is rejected:

{
  "error": {
    "code": "validation_failed",
    "message": "The submitted data is invalid.",
    "details": [ { "field": "name", "message": "can't be blank" } ]
  }
}

Any other fields in the request body are ignored rather than rejected, so an extra key sent alongside name or description does not fail the request. A body with no recognized fields at all returns a 400.

Be first to try TestNod

We're opening early access soon. Drop your email and we'll get you in, and we're happy to help you set up too.

No spam. We'll only email you about TestNod.