# trajectories.sh > Public archive and viewer for AI agent trajectories: step-by-step records of an agent working > on a task (tool calls, observations, screenshots, scores), stored in Harbor's ATIF format and > grouped into trajectory sets (one agent run over one or more tasks, N trials) and projects. ## URL shapes - Project page: https://www.trajectories.sh/projects/ - Trajectory set page: https://www.trajectories.sh/t/ - Either page returns its JSON payload instead of HTML with `?format=json` or `Accept: application/json`. ## Download everything (no browser; no login for public/unlisted) - A project: npx trajectories-sh@latest download project https://www.trajectories.sh/projects/ - A trajectory set: npx trajectories-sh@latest download trajectory https://www.trajectories.sh/t/ - Options: --out · --json (machine-readable summary on stdout) · --dry-run (list what would be fetched, fetch nothing) --format json|jsonl (jsonl also writes /trajectories.jsonl, one trial per line with result + trajectory inlined) Screenshots: 'download project' skips them unless --include-screenshots (they are most of the bytes); 'download trajectory' fetches them unless --no-screenshots. - Output: ///agent/trajectory.json plus result.json, config.json, verifier/, artifacts/ - Exit codes: 0 ok · 1 error · 2 bad arguments · 3 authentication required (set TRAJECTORIES_API_KEY) · 4 not found - Auth for private resources: set TRAJECTORIES_API_KEY= in the environment (create keys at https://www.trajectories.sh/settings). The CLI never prompts when a key is present, so it is safe to run unattended. ## Plain HTTP (curl) - Manifest for a project (jobs, trials, direct file URLs, the commands above): GET https://api.trajectories.sh/api/public/projects//export - Manifest for one trajectory set: GET https://api.trajectories.sh/api/public/trajectories//export - A trial's ATIF document: GET https://api.trajectories.sh/api/viewer/by-id//api/jobs//trials//trajectory - Public API schema: https://api.trajectories.sh/openapi.json (interactive: https://api.trajectories.sh/docs) - Errors are JSON with "detail" and, for 401/403/404, "how_to_authenticate". ## Data format (ATIF) trajectory.json: { schema_version, session_id, agent { name, model_name }, steps[], final_metrics }. A step: { step_id, source: agent|user|system, timestamp, message, tool_calls[] { function_name, arguments }, observation.results[] (text and/or image parts), metrics { prompt_tokens, completion_tokens } }. Trial result.json: verifier_result.rewards.reward (1.0 = pass), agent_info, started_at, finished_at. Spec: https://docs.harbor.sh/atif ## Full reference https://www.trajectories.sh/llms-full.txt