This is exactly the use case for "202 Accepted" status code:
10.2.3 202 Accepted
The request has been accepted for processing, but the processing has
not been completed. The request might or might not eventually be acted
upon, as it might be disallowed when processing actually takes place.
There is no facility for re-sending a status code from an asynchronous
operation such as this.
The 202 response is intentionally non-committal. Its purpose is to
allow a server to accept a request for some other process (perhaps a
batch-oriented process that is only run once per day) without
requiring that the user agent's connection to the server persist until
the process is completed. The entity returned with this response
SHOULD include an indication of the request's current status and
either a pointer to a status monitor or some estimate of when the user
can expect the request to be fulfilled.
The response can contain Location header to indicate where the client needs to query for the status of the request.
As far as I know, no browsers implements anything special with 202 Accepted, so you'll need to implement the handling of 202 Accepted in the client side yourself.
One possible implementation is that the URI in Location header would be the URI that the resource you're trying to create will end up in, and it would return 404 on a GET request until the processing is finished.
Another more sophisticated implementation is that the URI in Location header would be the URI for the progress resource for the asynchronous request, and it would return a 200 OK with the progress status of the request, and when the processing is finished, the resource will return a 201 Created with the final Location of the created resource.