Skip to content

Complete a file upload

POST/v1/files/{id}/complete

Finalizes an upload after the file bytes have been uploaded.

If an optional md5 hex digest is provided, the server validates the checksum before marking the file as completed.

Required scope: files:create

Rate limit category: Write

Path ParametersExpand Collapse
id: string

Unique identifier of the file to complete.

Body ParametersJSONExpand Collapse
md5: optional string

Optional MD5 hex digest of the uploaded file for checksum verification.

ReturnsExpand Collapse
FileCompleteResponse = object { id, completedAt, createdAt, 5 more }
id: string

Unique identifier for the file.

completedAt: string

When the file upload was completed.

createdAt: string

When the file upload session was created.

expiresAt: string

When the upload session expires. Null once completed, cancelled, or expired.

filename: string

Original filename.

mimeType: string

MIME type of the file.

sizeBytes: number

File size in bytes.

minimum-9007199254740991
maximum9007199254740991
status: "PENDING" or "COMPLETED" or "CANCELLED" or "EXPIRED"

Current upload status of the file.

Accepts one of the following:
"PENDING"
"COMPLETED"
"CANCELLED"
"EXPIRED"

Complete a file upload

curl https://api.lightfield.app/v1/files/$ID/complete \
    -H 'Content-Type: application/json' \
    -H 'Lightfield-Version: 2026-03-01' \
    -H "Authorization: Bearer $API_KEY" \
    -d '{}'
{
  "id": "id",
  "completedAt": "completedAt",
  "createdAt": "createdAt",
  "expiresAt": "expiresAt",
  "filename": "filename",
  "mimeType": "mimeType",
  "sizeBytes": -9007199254740991,
  "status": "PENDING"
}
Returns Examples
{
  "id": "id",
  "completedAt": "completedAt",
  "createdAt": "createdAt",
  "expiresAt": "expiresAt",
  "filename": "filename",
  "mimeType": "mimeType",
  "sizeBytes": -9007199254740991,
  "status": "PENDING"
}