## Complete `client.file.complete(stringid, FileCompleteParamsbody, RequestOptionsoptions?): FileCompleteResponse` **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](/using-the-api/scopes/):** `files:create` **[Rate limit category](/using-the-api/rate-limits/):** Write ### Parameters - `id: string` Unique identifier of the file to complete. - `body: FileCompleteParams` - `md5?: string` Optional MD5 hex digest of the uploaded file for checksum verification. ### Returns - `FileCompleteResponse` - `id: string` Unique identifier for the file. - `completedAt: string | null` When the file upload was completed. - `createdAt: string` When the file upload session was created. - `expiresAt: string | null` 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. - `status: "PENDING" | "COMPLETED" | "CANCELLED" | "EXPIRED"` Current upload status of the file. - `"PENDING"` - `"COMPLETED"` - `"CANCELLED"` - `"EXPIRED"` ### Example ```typescript import Lightfield from 'lightfield'; const client = new Lightfield({ apiKey: 'My API Key', }); const fileCompleteResponse = await client.file.complete('id'); console.log(fileCompleteResponse.id); ```