Overview
Upload one or more files to a Plangrep job using multipart form data. This is the default upload path for most use cases. Files are attached to the job but processing does not start automatically — you must call Complete Uploads after all files have been sent.This endpoint stores files on the job but does not start processing. After all uploads are done, call
POST /api/open/v1/jobs/{jobId}/uploads/complete to close the upload window and begin ingestion.Endpoint
Authentication
All requests must include a Bearer token in theAuthorization header.
Path Parameters
The unique identifier of the job to upload files to.
Request
Content-Type:multipart/form-data
The request body is a multipart form with a required metadata part and one or more binary file parts.
metadata Part
A JSON string describing the files being uploaded. Supports the following top-level fields:
clientUploadFlowId(string, optional): A client-defined identifier for this upload flow, useful for correlating uploads across retries.files(array, optional): Metadata for each file part. Each entry may include:
The name of the corresponding form part (e.g.
file0, file1). Used to associate metadata with its binary part.The original filename (e.g.
drawings.pdf).MIME type of the file (e.g.
application/pdf).Document classification hint. One of:
plans, specifications, documents, addenda, mixed, other. Omit to allow Plangrep to auto-classify.Optional SHA-256 integrity checksum of the file bytes — a 64-character lowercase hex string. When provided, the server verifies the digest after upload.
File Parts
The binary content of the first file. Name this part
file0.Additional files. Name subsequent parts
file1, file2, and so on. Reference each part name in the metadata.files array via partName.Example metadata JSON
Response
Status:200 OK
The updated Job object reflecting the current state of the job after upload.
Overall upload batch status. One of:
uploaded— files were accepted and stored successfully.skipped— files were not stored (e.g. duplicates detected via SHA-256).
Current ingestion pipeline status for the job.
Current preflight validation status for the job.
One entry per uploaded file.
Unique identifier for the stored document.
Stored filename as recorded by the server.
Detected or declared MIME type.
File size in bytes.
Document classification applied to this file.
Per-file upload status:
uploaded or skipped.If
status is skipped, a human-readable reason explaining why the file was not stored.Additional document metadata objects associated with this upload batch.