> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tornadoapi.io/llms.txt
> Use this file to discover all available pages before exploring further.

# API Marketplaces

> Integrate Tornado API via RapidAPI, Apify, or Zyla API Hub

<Note>
  Marketplace users must provide their own cloud storage credentials in each request.
</Note>

## Supported Marketplaces

Tornado API is available on multiple API marketplaces, allowing you to use the service without managing your own API keys.

<CardGroup cols={3}>
  <Card title="RapidAPI" icon="bolt" href="#rapidapi">
    The world's largest API marketplace
  </Card>

  <Card title="Apify" icon="robot" href="#apify">
    Web scraping and automation platform
  </Card>

  <Card title="Zyla API Hub" icon="globe" href="#zyla-api-hub">
    Premium API marketplace
  </Card>
</CardGroup>

## Key Differences from Direct API

| Aspect          | Direct API               | Marketplace                  |
| --------------- | ------------------------ | ---------------------------- |
| Authentication  | `x-api-key` header       | Marketplace-specific headers |
| Storage         | Pre-configured or inline | **Inline required**          |
| Billing         | Stripe                   | Managed by marketplace       |
| Max Resolution  | Up to 4K (2160p)         | **720p**                     |
| Max File Size   | Unlimited                | **512 MB**                   |
| Max Duration    | Unlimited                | **30 minutes**               |
| Batch Downloads | Supported                | Not available                |
| Live Recording  | Supported                | Not available                |
| Video Clipping  | Supported                | Not available                |

<Warning>
  Marketplace access is limited to encourage upgrading to the [direct API](https://accounts.dash.tornadoapi.io) for unlimited access (4K, no duration/size limits, batch downloads, live recording, clipping).
</Warning>

## RapidAPI

### Authentication

RapidAPI handles authentication automatically. Simply include your RapidAPI subscription key:

```bash theme={null}
curl -X POST "https://tornado-api.p.rapidapi.com/jobs" \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: tornado-api.p.rapidapi.com" \
  -d '{
    "url": "https://youtube.com/watch?v=dQw4w9WgXcQ",
    "format": "mp4",
    "storage": {
      "provider": "s3",
      "endpoint": "https://s3.amazonaws.com",
      "bucket": "my-videos",
      "region": "us-east-1",
      "access_key": "YOUR_ACCESS_KEY",
      "secret_key": "YOUR_SECRET_KEY"
    }
  }'
```

### Subscription Tiers

RapidAPI offers multiple subscription tiers with different rate limits:

* **Basic**: Limited requests per month
* **Pro**: Higher limits
* **Ultra**: Enterprise-level access

## Apify

### Authentication

Use your Apify API token in the Authorization header:

```bash theme={null}
curl -X POST "https://tornado-api.apify.actor/jobs" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -d '{
    "url": "https://youtube.com/watch?v=dQw4w9WgXcQ",
    "format": "mp4",
    "storage": {
      "provider": "gcs",
      "project_id": "my-project",
      "bucket": "my-videos",
      "service_account_json": "{...}"
    }
  }'
```

### Standby Mode

Tornado API runs as an Apify Actor in Standby mode, providing HTTP endpoint access with your Apify credentials.

## Zyla API Hub

### Authentication

Zyla tokens must be prefixed with `zyla_`:

```bash theme={null}
curl -X POST "https://zylalabs.com/api/tornado/jobs" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer zyla_YOUR_API_KEY" \
  -d '{
    "url": "https://youtube.com/watch?v=dQw4w9WgXcQ",
    "format": "mp4",
    "storage": {
      "provider": "blob",
      "account_name": "mystorageaccount",
      "container": "videos",
      "account_key": "YOUR_ACCOUNT_KEY"
    }
  }'
```

## Storage Configuration

<Warning>
  Marketplace users **must** provide storage credentials in every request. Files cannot be stored on Tornado's infrastructure.
</Warning>

### Supported Providers

<AccordionGroup>
  <Accordion title="AWS S3 / Cloudflare R2 / MinIO">
    ```json theme={null}
    {
      "provider": "s3",
      "endpoint": "https://s3.amazonaws.com",
      "bucket": "my-bucket",
      "region": "us-east-1",
      "access_key": "AKIAIOSFODNN7EXAMPLE",
      "secret_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
      "folder_prefix": "videos/",
      "base_folder": "downloads"
    }
    ```
  </Accordion>

  <Accordion title="Azure Blob Storage">
    ```json theme={null}
    {
      "provider": "blob",
      "account_name": "mystorageaccount",
      "container": "mycontainer",
      "account_key": "YOUR_ACCOUNT_KEY",
      "folder_prefix": "videos/",
      "base_folder": "downloads"
    }
    ```

    Or with SAS Token:

    ```json theme={null}
    {
      "provider": "blob",
      "account_name": "mystorageaccount",
      "container": "mycontainer",
      "sas_token": "sv=2021-06-08&ss=b&srt=sco...",
      "folder_prefix": "videos/",
      "base_folder": "downloads"
    }
    ```
  </Accordion>

  <Accordion title="Google Cloud Storage">
    ```json theme={null}
    {
      "provider": "gcs",
      "project_id": "my-project",
      "bucket": "my-bucket",
      "service_account_json": "{\"type\":\"service_account\",...}",
      "folder_prefix": "videos/",
      "base_folder": "downloads"
    }
    ```
  </Accordion>

  <Accordion title="Alibaba Cloud OSS">
    ```json theme={null}
    {
      "provider": "oss",
      "endpoint": "https://oss-cn-hangzhou.aliyuncs.com",
      "bucket": "my-bucket",
      "access_key_id": "LTAI...",
      "access_key_secret": "...",
      "folder_prefix": "videos/",
      "base_folder": "downloads"
    }
    ```
  </Accordion>
</AccordionGroup>

## Security

<Info>
  Your storage credentials are:

  * **Never logged** - Credentials are redacted in all logs
  * **Never stored** - Credentials are only used during the job execution
  * **Validated** - Credentials are tested before the job is accepted
</Info>

## Error Handling

Common errors for marketplace users:

| Error                           | Description                                  | Solution                                                                      |
| ------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------- |
| `Storage credentials required`  | Missing `storage` field                      | Add storage configuration to your request                                     |
| `Invalid storage credentials`   | Credentials validation failed                | Check your cloud provider credentials                                         |
| `Invalid Apify token`           | Apify authentication failed                  | Verify your Apify API token                                                   |
| `Invalid Zyla token format`     | Token doesn't start with `zyla_`             | Prefix your token with `zyla_`                                                |
| `Batch downloads not available` | Marketplace users cannot use batch downloads | Use the [direct API](https://accounts.dash.tornadoapi.io) for batch downloads |
| `Live recording not available`  | Marketplace users cannot record live streams | Use the direct API for live recording                                         |
| `Clipping not available`        | Marketplace users cannot use video clipping  | Use the direct API for clipping                                               |
