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.