Skip to main content

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-token header 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:

FieldTypeNotes
data[name]stringRun name
data[project]stringThe project's projectId
data[source]stringWhere it ran
data[tags][]stringRepeat once per tag
filesfileRepeat 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

StatusMeaning
200 / 201Accepted
400Missing required fields, or the project was not found
403Invalid, expired or missing token
404The 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.