Is it possible to create a new asset from an image URL?
Download the image into a temp file, then upload it as an asset. You can find $iAssetSourceId by looking at the URL when editing an asset source

$iAssetSourceId = 4;
$iAssetFolderId = (int)craft()-&gt;assets-&gt;getRootFolderBySourceId($iAssetSourceId)-&gt;id;
$sTempFilePath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $sFilename;
$sFileContents = file_get_contents($sImageUrl);
file_put_contents($sTempFilePath, $sFileContents);

// Get craft to copy the temp file into the assets folder
$oAssetOperationResponse = craft()-&gt;assets-&gt;insertFileByLocalPath(
    $sTempFilePath,
    $sFilename,
    $iAssetFolderId,
    AssetConflictResolution::Replace
);

return (int)$oAssetOperationResponse-&gt;responseData["fileId"];