Example
To generate attachment metadata for attachment with parent post ID 37:
<?php
$attach_id = wp_insert_attachment( $attachment, $filename, 37 );
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
?>
The function should be used in conjunction with wp_update_attachment_metadata().
See more https://codex.wordpress.org/Function_Reference/wp_generate_attachment_metadata