IonWarp logoIonWarp
Get started
IonWarp Docs
Collections

Scorecards

Your repo's readiness score and how it was earned.

Base path /api/v1/scorecards on https://ionwarp.com. Authenticate with Authorization: Bearer $DASH_API_KEY and name the project with the Project-ID header. Writes are validated in declared mode; an operation this resource does not declare answers 405 operation_not_supported.

List scorecards

GET /api/v1/scorecards

curl "https://ionwarp.com/api/v1/scorecards?status=not_started" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_acme"
How do our scorecards look right now?
data_query {
  "collection": "scorecards",
  "where": {
    "status": "not_started"
  }
}

Returns a paginated list of scorecard objects, newest first.

{
  "object": "list",
  "data": [
    {
      "object": "scorecard",
      "id": "obj_123",
      "name": "Agentic Readiness",
      "status": "ready",
      "lifespan": "persistent",
      "trigger": "repo_connected",
      "summary": "IonWarp scanned acme/api and found 9 readiness actions.",
      "created_at": "2026-07-25T12:00:00.000Z",
      "updated_at": "2026-07-25T12:00:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Parameters

ParameterTypeKindDescription
statusstringfilterWhether the scorecard has ever been scanned, is scanning now, holds a committed result, or failed. One of not_started, running, ready, failed.
lifespanstringfilterHow long a result stays meaningful: persistent keeps its score until the next scan, ephemeral is a one-off, rolling is re-scored continuously. One of persistent, ephemeral, rolling.
triggerstringfilterWhat causes this scorecard to be scanned (e.g. repo_connected).
qstringsearchFree-text search across name, summary.
sortstringsortOne of score, last_scanned_at; prefix with - to reverse.
limitnumberpageRows to return, 1–100. Defaults to 20.
cursorstringpagenext_cursor from the previous page.

Retrieve a scorecard

GET /api/v1/scorecards/learning-tests-run-under-bun

curl "https://ionwarp.com/api/v1/scorecards/learning-tests-run-under-bun" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_acme"
What is holding the {id} score back?
data_get {
  "collection": "scorecards",
  "object_id": "learning-tests-run-under-bun"
}

Returns the scorecard object.

{
  "object": "scorecard",
  "id": "obj_123",
  "name": "Agentic Readiness",
  "status": "ready",
  "lifespan": "persistent",
  "trigger": "repo_connected",
  "summary": "IonWarp scanned acme/api and found 9 readiness actions.",
  "created_at": "2026-07-25T12:00:00.000Z",
  "updated_at": "2026-07-25T12:00:00.000Z"
}

Parameters

ParameterTypeKindDescription
idstringpathThe scorecard's id or slug.

Append an event to a scorecard

POST /api/v1/scorecards/{id}/events

curl -X POST "https://ionwarp.com/api/v1/scorecards/learning-tests-run-under-bun/events" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_acme" \
  -H "Content-Type: application/json" \
  -d '{"event":"Noted by the operator","context":{"source":"api"}}'
Add a note to the scorecard {id}
data_event {
  "collection": "scorecards",
  "object_id": "learning-tests-run-under-bun",
  "event": "Noted by the operator"
}

Returns the appended event object.

{
  "object": "event",
  "id": "evt_123",
  "event": "Noted by the operator"
}

Parameters

FieldTypeRequiredDescription
eventstringyesThe human-readable timeline entry.
contextobjectnoProvenance — source, integration, worker_run_id, …

What comes back (read-only)

Every scorecard carries the envelope below. The fields under it are computed or stamped by the platform — they are returned, never sent.

FieldTypeDescription
objectstringAlways scorecard.
idstringStable object id. Also accepted in place of slug on any path.
slugstringURL-safe name, unique within the collection.
created_atstringISO-8601 timestamp of the first write.
updated_atstringISO-8601 timestamp of the most recent write. The cursor sorts on this.
namestringName of the scorecard.
scorenumberPoints scored on the last completed scan. Written once, at the end of a scan — a scorecard mid-scan still shows the previous number.
max_scorenumberPoints this scorecard is out of (100 for AI readiness).
statusstringWhether the scorecard has ever been scanned, is scanning now, holds a committed result, or failed.
lifespanstringHow long a result stays meaningful: persistent keeps its score until the next scan, ephemeral is a one-off, rolling is re-scored continuously.
triggerstringWhat causes this scorecard to be scanned (e.g. repo_connected).
summarystringWhat the last scan concluded, in a sentence.
action_item_countnumberHow many follow-up actions the last scan left open.
last_scan_task_idstringTask that produced the current result — the handle to look that scan up.
last_scanned_atstringWhen the current result was committed (ISO 8601).

Errors

Failures use { error: { type, code, message, param } }. The full code table is generated at Error Codes.

On this page

IonWarp logoIonWarp

Ready to build? Connect an agent and go — no credit card needed to start.

Get startedSee our plans