POST /drives/{driveId}/items/{itemId}/copy
POST /groups/{groupId}/drive/items/{itemId}/copy
POST /me/drive/items/{item-id}/copy
POST /sites/{siteId}/drive/items/{itemId}/copy
POST /users/{userId}/drive/items/{itemId}/copy
Optional query parameters
This method supports the @microsoft.graph.conflictBehavior query parameter to customize the behavior when a conflict occurs.
Value
Description
fail
Default behavior is to report the failure.
replace
Overwrite existing item at the target site.
rename
Rename the item.
Note: The conflictBehavior is not supported for OneDrive Consumer.
Request body
In the request body, provide a JSON object with the following parameters.
Optional. Reference to the parent item the copy will be created in.
name
string
Optional. The new name for the copy. If this isn't provided, the same name will be used as the original.
Note: The parentReference should include the driveId and id parameters for the target folder.
Response
Returns details about how to monitor the progress of the copy, upon accepting the request.
Example
This example copies a file identified by {item-id} into a folder identified with a driveId and id value.
The new copy of the file will be named contoso plan (copy).txt.
POST /me/drive/items/{item-id}/copy
Content-Type: application/json
{
"parentReference": {
"driveId": "6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B",
"id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
},
"name": "contoso plan (copy).txt"
}
// Code snippets are only available for the latest version. Current version is 5.x
var graphClient = new GraphServiceClient(requestAdapter);
var requestBody = new Microsoft.Graph.Drives.Item.Items.Item.Copy.CopyPostRequestBody
{
ParentReference = new ItemReference
{
DriveId = "6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B",
Id = "DCD0D3AD-8989-4F23-A5A2-2C086050513F",
},
Name = "contoso plan (copy).txt",
};
var result = await graphClient.Drives["{drive-id}"].Items["{driveItem-id}"].Copy.PostAsync(requestBody);
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc drives items copy post --drive-id {drive-id} --drive-item-id {driveItem-id} --body '{\
"parentReference": {\
"driveId": "6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B",\
"id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"\
},\
"name": "contoso plan (copy).txt"\
}\
'
<?php
// THIS SNIPPET IS A PREVIEW VERSION OF THE SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new CopyPostRequestBody();
$parentReference = new ItemReference();
$parentReference->setDriveId('6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B');
$parentReference->setId('DCD0D3AD-8989-4F23-A5A2-2C086050513F');
$requestBody->setParentReference($parentReference);
$requestBody->setName('contoso plan (copy).txt');
$result = $graphServiceClient->drives()->byDriveId('drive-id')->items()->byDriveItemId('driveItem-id')->copy()->post($requestBody)->wait();
# THE PYTHON SDK IS IN PREVIEW. FOR NON-PRODUCTION USE ONLY
graph_client = GraphServiceClient(request_adapter)
request_body = CopyPostRequestBody(
parent_reference = ItemReference(
drive_id = "6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B",
id = "DCD0D3AD-8989-4F23-A5A2-2C086050513F",
),
name = "contoso plan (copy).txt",
)
result = await graph_client.drives.by_drive_id('drive-id').items.by_item_id('driveItem-id').copy.post(body = request_body)
The value of the Location header provides a URL for a service that will return the current state of the copy operation.
You can use this information to determine when the copy has finished.
Remarks
In many cases the copy action is performed asynchronously.
The response from the API will only indicate that the copy operation was accepted or rejected; for example, due to the destination filename already being in use.