Ingestion API
The endpoints sekee-cli calls. Use them directly if
you would rather not add a dependency to your pipeline.
All of them:
- Live under
{base-url}/api/ - Authenticate with an
x-api-tokenheader carrying an API token - Derive the organization from that token
:::caution auth: false does not mean public
These routes are declared without Strapi's own auth because they use the token
header instead. The controller validates the token, checks it is active and
unexpired, stamps its last-used time, and derives the tenant from it. Any new
ingestion route must follow the same path.
:::
POST /api/automation-runs
Creates a completed run from one or more reports, in one request.
multipart/form-data:
| Field | Type | Notes |
|---|---|---|
data[name] | string | Run name |
data[project] | string | The project's projectId |
data[source] | string | Where it ran |
data[tags][] | string | Repeat once per tag |
files | file | Repeat once per XML report |
curl -X POST "$SEKEE_URL/api/automation-runs" \
-H "x-api-token: $SEKEE_API_TOKEN" \
-F 'data[name]=Nightly regression' \
-F 'data[project]=1' \
-F 'data[source]=GitHub Actions' \
-F 'data[tags][]=nightly' \
-F 'files=@./reports/results.xml'
POST /api/automation-runs/init
Creates a run with status running and returns its id.
curl -X POST "$SEKEE_URL/api/automation-runs/init" \
-H "x-api-token: $SEKEE_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"data":{"name":"PR #42","project":"1","source":"CI","tags":["pr"]}}'
POST /api/automation-runs/:id/thread
Appends one report to a running run and increments its counts.
multipart/form-data with the thread name and one files entry.
curl -X POST "$SEKEE_URL/api/automation-runs/5/thread" \
-H "x-api-token: $SEKEE_API_TOKEN" \
-F 'name=Shard 1' \
-F 'files=@./results.xml'
POST /api/automation-runs/:id/complete
Marks a running run completed.
curl -X POST "$SEKEE_URL/api/automation-runs/5/complete" \
-H "x-api-token: $SEKEE_API_TOKEN"
Responses and errors
| Status | Meaning |
|---|---|
200 / 201 | Accepted |
400 | Missing required fields, or the project was not found |
403 | Invalid, expired or missing token |
404 | The run id does not exist |
What ingest does besides storing the report
For each test named in a report, ingest also:
- Finds or creates an automation test by a fingerprint of
"<suite> :: <name>"within the project - Writes an automation test result for that test in that run
- Writes or increments an error row for each distinct failure, guarded so a re-sent report cannot inflate the counts
- Refreshes Jira remote links for any linked test case, if the integration is on
Other APIs
The rest of the product's API is not a documented public surface. If you want an assistant or a script to read and write your test library, use the AI connector — it goes through the same permissions you have, rather than around them.