# File Submission

Two `POST` request formats can be used to submit a file: `application/json` or `multipart/form-data`.

## JSON

This is the preferred method of file submission. It uses the `source_config` request parameter to provide a direct download URL to the Rev AI server.

This method supports the use of pre-signed URLs. Links to videos hosted on platforms like YouTube are not valid because they are not direct download links.

To submit a download URL with restricted access, authorization headers can be provided in the `source_config` parameter. More details on the `source_config` parameter can be found on the [submission details page](/api/asynchronous/).

Signed URLs usually have an expiration time which is configurable. To ensure the Rev AI server can access the link, make sure the expiration time is set to 2 hours or more. In the event you plan on resending the same file, make sure to generate a new pre-signed URL.

## Form data

This method can be used to send a local file to the Rev AI server directly from the host machine as a `multipart/form-data` request.

## Limits

The following default limits apply per user, per endpoint for the Asynchronous Speech-to-Text API:

- 10,000 transcription requests submitted every 10 minutes.
- 500 transcriptions processed every 10 minutes. Any submissions over this will be accepted but put into a queue and not started until the next interval.
- Maximum audio duration of 17 hours.
- File uploads submitted as `multipart/form-data` requests to the `/jobs` endpoint have a concurrency limit of 5 and a file size limit of 2 GB per request.
- File uploads via the Rev AI dashboard or using the `source_config` job parameter have a file size limit of 5 TB.