Synchronous questions about one file
POST/v1/inspect
Header, bounds, point format and georeferencing
On S3 this reads only the front of the object (the fixed header and the VLR block) with ranged GETs, so it answers in milliseconds however large the file is. header_only says which path was taken.
Operation id inspect
Request body: application/json FileRequest
POST/v1/validate
Integrity checks, each pass, warn or fail
Operation id validate
Request body: application/json FileRequest
POST/v1/stats
Streaming per-point statistics (classes, intensity, elevation)
Operation id stats
Request body: application/json FileRequest
POST/v1/dry-run
What a submission would cost in chunks, memory and time
Reads nothing but the header and writes nothing.
Operation id dryRun
Request body: application/json SubmitRequest
Submitting work and reading the run ledger
GET/v1/jobs
This tenant's jobs, newest first
Operation id jobs
POST/v1/jobs
Submit a job
Give exactly one of preset/process, chain or tier. The file must be one of this tenant's uploads. The job's initial status.json is written before the message is enqueued, so a poll immediately after this call finds state "queued".
Operation id submit
Request body: application/json SubmitRequest
GET/v1/jobs/{id}
status.json from the job prefix
Operation id status
GET/v1/jobs/{id}/events
events.json - what a person should be told about this run
Operation id events
GET/v1/jobs/{id}/logs
logs.jsonl - the job's own log lines, a page at a time
Poll with after_line set to the next_line of the last page.
Operation id logs
GET/v1/jobs/{id}/report
The job's report
report.json for a process job, manifest.json for a chain or tier job, error.json for a failure; source says which one this is.
Operation id report
GET/v1/jobs/{id}/artifacts
The deliverables in the job prefix, with a URL for each
get_url is a presigned GET on S3, or the path of GET /v1/jobs/{id}/files/{name} on this server for a local store. A name may be nested (tiles/tileset.json, tiles/0_0/lod0.glb) — a 3D Tiles tileset and its tiles keep their relative layout under the job prefix. The ledger objects (status.json, events.json, logs.jsonl, cancel) have their own operations and are not listed here.
Operation id artifacts
GET/v1/jobs/{id}/artifacts.zip
Every artifact in the job prefix, in one zip
Every entry `artifacts` lists, nested names included, Stored (not compressed — LAZ, glb and PNG deliverables already are). Built on request into the service's scratch directory and streamed back; a second call replaces the first rather than piling up.
Operation id artifactsZip
GET/v1/jobs/{id}/files/{name}
One artifact's bytes (local store; development mode)
name may be nested (tiles/tileset.json). Content-Type is by extension (glb, gltf, laz/las, csv, svg, zip and the rest each get their own type); Content-Disposition is inline for a type a console fetches directly (json, geojson, glb, gltf, png, html, svg, txt) and attachment otherwise. A single Range: bytes=start-end request (a COPC viewer reading cloud.copc.laz in pieces) answers 206 with Content-Range and Accept-Ranges; anything else — no Range header, a multi-range request — answers the whole file.
Operation id artifactFile
POST/v1/jobs/{id}/cancel
Ask a job to stop
Writes the cancel object the engine looks for at its next step boundary. A job that had not started yet is cancelled immediately; partial outputs of a running job stay where they are.
Operation id cancel