public function create(Video $video, $waitForIngest = 0) {
        if(is_null($video)) {
            throw new VideoClientException("No video provided");
        }

        if(is_null($video->sourceUrl) || !filter_var($video->sourceUrl, FILTER_VALIDATE_URL)) {
            throw new VideoClientException("Invalid source URL");
        }

        $ingestedStatus = "INGESTED";

        try {
            // Make the request to the SafeStream REST API
            $videoResponse = $this->post($this->apiResourcePath, $video);

            // Wait for the video to be ingested before returning
            // TODO: Have the ingest wait be on a separate thread
            if($waitForIngest > 0 && !$ingestedStatus == $videoResponse->status) {
                $startTime = round(microtime(true) * 1000);
                $ingested = false;
                while(!$ingested && (round(microtime(true) * 1000) - $startTime) < $waitForIngest) {
                    $test = $this->find($video->key);
                    if($ingestedStatus == $videoResponse->status) {
                        return $test;
                    }

                    sleep(3);
                }

                throw new VideoClientException("Timeout reached waiting for video to be ingested");

            } else {
                return $videoResponse;
            }
        } catch(SafeStreamHttpException $e) {
            throw new VideoClientException($e);
        }
    }