Skip to main content

Stories

A finished ride is a track, a set of photos and a route you chose for a reason. The story tools turn that into something worth showing someone.

AI trip stories

POST /enrich/trip-story starts a job that reads a recorded ride and writes it up. Generation is asynchronous — the endpoint returns a job, and you poll it:

StartPOST /enrich/trip-story
List your jobsGET /enrich/jobs
One job's stateGET /enrich/jobs/{job_id}
The finished storyGET /enrich/jobs/{job_id}/story
DeleteDELETE /enrich/jobs/{job_id}

ENRICH_STORY_LANGS sets which languages a story is generated in, and ENRICH_MAX_ACTIVE_JOBS caps how many run at once.

Along the way the enrichment gateway can pull context about what you rode past: GET /enrich/wiki/nearby finds Wikipedia articles near a point and GET /enrich/wiki/summary/{page_id} fetches one.

Editing and publishing

A generated story is a draft, not a verdict. PUT /enrich/jobs/{job_id}/edits stores your changes as an overlay on the generated text, and POST /enrich/jobs/{job_id}/republish rebuilds the published page with them applied. Editing never destroys the original generation.

Publishing gives the story a capability slug — a public URL under /enrich/view/{slug}/… that anyone can open without an account. That is deliberate: a story is meant to be sent to someone.

Two consequences worth knowing:

  • The published page is served from a private store by the enrichment router, not a public static mount, so the slug is genuinely the only way in.
  • POST /enrich/jobs/{job_id}/revoke withdraws the slug. Anyone holding the old link loses access immediately.

StoryMaps

A StoryMap is the same material as a scrolling 3D map: the reader moves through the ride while the globe flies along with them. StoryMaps are authored in the desktop client and published the same way, through the enrichment jobs above.

Rendering the globe needs a Cesium ion token, which the deployment sets as CESIUM_ION_TOKEN; without it the map surface will not load.

:::caution Being written The authoring walkthrough — choosing chapters, camera moves and cover images — is still to be written up. The endpoints above are complete and documented in the API reference under the enrichment tag. :::