Learnings
What IonWarp learned about this repo, with an expiry.
Base path /api/v1/learnings 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 learnings
GET /api/v1/learnings
curl "https://ionwarp.com/api/v1/learnings" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_acme"What has IonWarp learned about this repo so far?data_query {
"collection": "learnings"
}Returns a paginated list of learning objects, newest first.
{
"object": "list",
"data": [
{
"object": "learning",
"id": "obj_123",
"learning": "The test suite runs under bun, not jest.",
"why": "package.json's test script invokes `bun test`; no jest config exists.",
"created_at": "2026-07-25T12:00:00.000Z",
"updated_at": "2026-07-25T12:00:00.000Z"
}
],
"has_more": false,
"next_cursor": null
}Parameters
| Parameter | Type | Kind | Description |
|---|---|---|---|
q | string | search | Free-text search across learning, why. |
sort | string | sort | One of learned_at; prefix with - to reverse. |
limit | number | page | Rows to return, 1–100. Defaults to 20. |
cursor | string | page | next_cursor from the previous page. |
Retrieve a learning
GET /api/v1/learnings/learning-tests-run-under-bun
curl "https://ionwarp.com/api/v1/learnings/learning-tests-run-under-bun" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_acme"Open the learning {id}data_get {
"collection": "learnings",
"object_id": "learning-tests-run-under-bun"
}Returns the learning object.
{
"object": "learning",
"id": "obj_123",
"learning": "The test suite runs under bun, not jest.",
"why": "package.json's test script invokes `bun test`; no jest config exists.",
"created_at": "2026-07-25T12:00:00.000Z",
"updated_at": "2026-07-25T12:00:00.000Z"
}Parameters
| Parameter | Type | Kind | Description |
|---|---|---|---|
id | string | path | The learning's id or slug. |
Append an event to a learning
POST /api/v1/learnings/{id}/events
curl -X POST "https://ionwarp.com/api/v1/learnings/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 learning {id}data_event {
"collection": "learnings",
"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
| Field | Type | Required | Description |
|---|---|---|---|
event | string | yes | The human-readable timeline entry. |
context | object | no | Provenance — source, integration, worker_run_id, … |
What comes back (read-only)
Every learning carries the envelope below. The fields under it are computed or stamped by the platform — they are returned, never sent.
| Field | Type | Description |
|---|---|---|
object | string | Always learning. |
id | string | Stable object id. Also accepted in place of slug on any path. |
slug | string | URL-safe name, unique within the collection. |
created_at | string | ISO-8601 timestamp of the first write. |
updated_at | string | ISO-8601 timestamp of the most recent write. The cursor sorts on this. |
learning | string | One sentence IonWarp now believes about this repository or team. |
why | string | What IonWarp saw that made it believe this. |
learned_at | string | When the learning was recorded (ISO 8601). |
forgets_at | string | When the learning expires and stops being fed to future runs (ISO 8601). A learning is create/forget — it never decays by degrees. |
Errors
Failures use { error: { type, code, message, param } }. The full code table is generated at Error Codes.