## Cancel a file upload `client.File.Cancel(ctx, id, body) (*FileCancelResponse, error)` **post** `/v1/files/{id}/cancel` Cancels a pending upload by transitioning the file to `CANCELLED`. Only files in `PENDING` status can be cancelled. **[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 cancel. - `body FileCancelParams` - `Body param.Field[FileCancelParamsBody]` ### Returns - `type FileCancelResponse struct{…}` - `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 int64` File size in bytes. - `Status FileCancelResponseStatus` Current upload status of the file. - `const FileCancelResponseStatusPending FileCancelResponseStatus = "PENDING"` - `const FileCancelResponseStatusCompleted FileCancelResponseStatus = "COMPLETED"` - `const FileCancelResponseStatusCancelled FileCancelResponseStatus = "CANCELLED"` - `const FileCancelResponseStatusExpired FileCancelResponseStatus = "EXPIRED"` ### Example ```go package main import ( "context" "fmt" "github.com/Lightfld/lightfield-go" "github.com/Lightfld/lightfield-go/option" ) func main() { client := githubcomlightfldlightfieldgo.NewClient( option.WithAPIKey("My API Key"), ) fileCancelResponse, err := client.File.Cancel( context.TODO(), "id", githubcomlightfldlightfieldgo.FileCancelParams{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", fileCancelResponse.ID) } ``` #### Response ```json { "id": "id", "completedAt": "completedAt", "createdAt": "createdAt", "expiresAt": "expiresAt", "filename": "filename", "mimeType": "mimeType", "sizeBytes": -9007199254740991, "status": "PENDING" } ```