Resume the generation of a course
const url = 'http://127.0.0.1:8765/api/learning/pathways/example/resume';const options = {method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”A pathway id from GET /api/learning/pathways (lp-<8 hex digits>).
Request Body
Section titled “Request Body”object
Example
{}Responses
Section titled “Responses”Success.
object
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).
object
object
Examplegenerated
{ "error": { "allowed_keys": [ "example" ], "code": "example", "message": "example" }}Not_found, target_unavailable
object
object
Example
{ "error": { "code": "not_found", "message": "..." }}Learning_running, not_resumable
object
object
Example
{ "error": { "code": "learning_running", "message": "..." }}Unsupported_media_type: writes need Content-Type: application/json.
object
object
Examplegenerated
{ "error": { "allowed_keys": [ "example" ], "code": "example", "message": "example" }}Unknown_key
object
object
Example
{ "error": { "code": "unknown_key", "message": "..." }}