Skip to main content
Trace file management (feature-gated: enable_trace_routes)

Endpoints


List tracesets

GET /api/v1/tracesets List all tracesets. Supports pagination, filtering by workspace/status, full-text name search, and date range filtering. Results are sorted by creation date (newest first) by default.

Parameters

Responses

200 - Paginated list of tracesets
400 - Bad Request — Invalid query parameters (bad cursor, invalid sort field)

Get traceset

GET /api/v1/tracesets/{id} Returns a traceset by ID including all file metadata, tags, and expiration information.

Parameters

Responses

200 - Traceset details
404 - Traceset not found

Delete traceset

DELETE /api/v1/tracesets/{id} Soft-deletes a traceset. Associated library files are reference-counted and cleaned up asynchronously. Excluded when trace_routes_read_only is enabled.

Parameters

Responses

204 - Traceset deleted 404 - Traceset not found

Get traceset download URL

GET /api/v1/tracesets/{id}/download Returns a presigned S3 download URL for a specific file within a traceset, or for the entire traceset archive if no file is specified. The URL expires after a short TTL.

Parameters

Responses

200 - Presigned download URL
400 - File uses an external URL that cannot be downloaded via presigned URL
404 - Traceset not found

Validate traceset

POST /api/v1/tracesets/{id}/validate Runs validation checks on a traceset including file integrity and metadata completeness. Optionally accepts a topologyId for compatibility validation, but the topology_correlation check currently always returns passed (not yet implemented).

Parameters

Request Body

Responses

200 - Validation result
404 - Traceset not found

Initiate multipart traceset upload

POST /api/v1/tracesets/upload-url Creates a traceset record and returns presigned S3 multipart upload URLs for each file. Each file is split into parts based on size. PUT each part with its size bytes before partUrlsExpireAt (one hour by default); expiresAt is the 24-hour session lifetime, not the URLs’. After uploading all parts to their presigned URLs, call POST /api/v1/tracesets/upload-url/complete to finalize the upload. An upload with primary files must declare its rank count in workloadMetadata, as shape.rankCount or as parallelism degrees (dp, tp, sp, ep, pp, multiplied together); the declaration is checked before any upload URL is issued, and the traceset reports it as rankCountDerived. An upload of supporting files only needs no declaration.

Request Body

Responses

200 - Presigned upload URLs for each file part
400 - Invalid request: empty files list or missing required fields; primary files without a declared rank count; a shape.rankCount or parallelism degree that is not a whole number of at least 1; a shape.rankCount that differs from the parallelism product; a declared rank count above 2,147,483,647; or a workloadMetadata, shape or parallelism that is neither an object nor null. The message names the field at fault.

Complete multipart traceset upload

POST /api/v1/tracesets/upload-url/complete Finalizes a multipart upload session by providing the ETags returned by S3 for all uploaded parts. The traceset is ready when this returns, every file reports metadataStatus complete, and the platform does not process the trace files: the rank count is the one declared at upload. With exactly one primary file, that file reports rankRange 0 to N−1 for N declared ranks. Returns 201 on first completion or 200 on idempotent retry. The completion keeps running if this request times out (408) or disconnects: retry the same request, which answers 409 while the completion runs, then 200 once it has finished or 400 if it failed.

Request Body

Responses

201 - Upload completed and traceset created
200 - Idempotent retry — upload was already completed
400 - Invalid request (missing parts, bad ETags, or an upload session minted by POST /api/v1/mapping-files/upload-url, which only POST /api/v1/mapping-files/upload-url/complete accepts)
404 - Upload session not found
409 - The upload session is being completed by another request, or by an earlier request that timed out; retry until it answers 200, or 400 if the completion failed (open a new upload session)
410 - Upload session expired
413 - An uploaded file is larger than the size declared for it at upload-url; its staged object is deleted and the upload session fails, so open a new upload session