Skip to content

Resume the generation of a course

POST
/api/learning/pathways/{pathway_id}/resume
curl --request POST \
--url http://127.0.0.1:8765/api/learning/pathways/example/resume \
--header 'Content-Type: application/json' \
--data '{}'

Go on with a course whose generation failed or was interrupted. Restarts the job on the same pathway (202): every step whose stored result still validates is skipped, so only what is missing costs model calls and fetches. For a pathway whose status is failed or interrupted (or queued and never started). 409 not_resumable for one that has its course, 409 learning_running while a course of this project is being generated. The user approved this course when it was first started. A course is generated by a job of the server (0.1.11.10): status then also reads interrupted (a job no live process runs any more: its process is gone, or it wrote no progress for 15 minutes; it is not stored, the record still says running). progress says how far the GENERATION is (never how far anybody read): step (the step under way, or null), steps in order (corpus, course, paths, render, audit, import; each pending | running | done | skipped | failed, with its times and detail, the last plain progress line), calls and fetches so far, the caps max_calls and max_fetches, and dropped: what was planned and is not in the course, each with what (lesson:<id>, module:<id>, path:<id>) and a reason code. progress is null for an imported course. error_code is the code of error (cancelled, cap_reached, too_little_verified, model_unavailable, model_authentication_required, audit_failed, …), else null. Ids, counts, codes and plain lines: never posting text, never resume text.

pathway_id
required
string

A pathway id from GET /api/learning/pathways (lp-<8 hex digits>).

Media typeapplication/json
object
Example
{}

Success.

Media typeapplication/json
object
schema_version
required
Allowed value: scout-learning-pathway-response:1
key
additional properties
any
Example
{
"pathway": {
"cost": {
"cli_model_calls": null,
"note": null,
"tokens": null,
"web_fetches": null,
"web_searches": null,
"worker_minutes": null
},
"course": null,
"error": null,
"error_code": null,
"id": "lp-4e5f6a7b",
"imported_from": null,
"progress": {
"calls": 9,
"dropped": [
{
"reason": "no_verified_source",
"what": "lesson:feature-stores"
}
],
"fetches": 131,
"max_calls": 120,
"max_fetches": 1500,
"step": "course",
"steps": [
{
"detail": "Reading 212 postings",
"finished_at": "2026-10-09T18:01:10Z",
"id": "corpus",
"started_at": "2026-10-09T18:00:01Z",
"status": "done"
},
{
"detail": "Writing module 3 of 8",
"finished_at": null,
"id": "course",
"started_at": "2026-10-09T18:01:10Z",
"status": "running"
},
{
"detail": null,
"finished_at": null,
"id": "paths",
"started_at": null,
"status": "pending"
},
{
"detail": null,
"finished_at": null,
"id": "render",
"started_at": null,
"status": "pending"
},
{
"detail": null,
"finished_at": null,
"id": "audit",
"started_at": null,
"status": "pending"
},
{
"detail": null,
"finished_at": null,
"id": "import",
"started_at": null,
"status": "pending"
}
]
},
"requested_at": "2026-10-09T18:00:00Z",
"revision": 14,
"role_text": "Director of AI enablement",
"schema": "scout-learning-pathway:1",
"source": "requested",
"status": "running",
"updated_at": "2026-10-09T18:04:30Z",
"url": null
},
"schema_version": "scout-learning-pathway-response:1"
}

Forbidden / forbidden_origin: loopback peer and Host 127.0.0.1:<port> or localhost:<port> only (Origin too on writes).

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Examplegenerated
{
"error": {
"allowed_keys": [
"example"
],
"code": "example",
"message": "example"
}
}

Not_found, target_unavailable

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Example
{
"error": {
"code": "not_found",
"message": "..."
}
}

Learning_running, not_resumable

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Example
{
"error": {
"code": "learning_running",
"message": "..."
}
}

Unsupported_media_type: writes need Content-Type: application/json.

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Examplegenerated
{
"error": {
"allowed_keys": [
"example"
],
"code": "example",
"message": "example"
}
}

Unknown_key

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Example
{
"error": {
"code": "unknown_key",
"message": "..."
}
}