> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://fastpix.com/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://fastpix.com/docs/_mcp/server.

# Get all unused upload URLs

GET https://api.fastpix.com/v1/on-demand/uploads

This endpoint retrieves a paginated list of all unused upload signed URLs within your organization. It provides comprehensive metadata including upload IDs, creation dates, status, and URLs, helping you manage your media resources efficiently.

An unused upload URL is a signed URL that gets generated when an user initiates upload but never completed the upload process. This can happen due to reasons like network issues, manual cancellation of upload, browser/app crashes or session timeouts.These URLs remain in the system as "unused" since they were created but never resulted in a successful media file upload.

#### How it works

 - The endpoint returns metadata for all unused upload URLs in your organization's library.
 - Results are paginated to manage large datasets effectively.
 - Signed URLs expire after 24 hours from creation.
 - Each entry includes full metadata about the unused upload.



#### Example

A video management team at a media organization regularly uploads content but often forgets to delete or use unused uploads. These unused uploads have signed URLs that expire after 24 hours and need to be managed efficiently. By using this API, the team can retrieve metadata for all unused uploads, identify expired signed URLs, and decide whether to regenerate URLs, reuse the uploads, or delete them.


Reference: https://fastpix.com/docs/video-on-demand-api/manage-videos/list-uploads

## Authentication

- `Authorization` header (basic auth, required) — FastPix APIs are secured with Basic Authentication. Use your Access Token ID as the username and Secret Key as the password in the Authorization header of each API request. * Username: Access Token ID * Password: Secret Key Activate your FastPix account to generate your API credentials. See the guide here

## Request

### Query parameters

- `limit` (integer, optional, default: 10) — Limit specifies the maximum number of items to display per page.
- `offset` (integer, optional, default: 1) — Offset determines the starting point for data retrieval within a paginated list.
- `orderBy` (enum, optional, default: desc) — The values in the list can be arranged in two ways: DESC (Descending) or ASC (Ascending).
  - Allowed values: `asc`, `desc`

## Response

### 200

List of video media

- `success` (boolean, optional) — Shows the request status. Returns true for success and false for failure.
- `data` (list of UnusedDirectUpload, optional) — Displays the result of the request.
- `pagination` (Pagination, optional) — Pagination organizes content into pages for better readability and navigation.

## Types

### UnusedDirectUpload

Displays the result of the request.

- `uploadId` (string, optional) — The unique identifier assigned to the media when created. The value must be a valid UUID.
- `trial` (boolean, optional) — Indicates if the upload was a trial.
- `status` (enum, optional) — Determines the media's status, which can be one of the possible values.
  - Allowed values: `waiting`
- `url` (string, optional) — The url hosts the media file for FastPix, which needs to be download to use further. It supports formats like MP3, MP4, MOV, MKV, or TS, and includes text tracks for subtitles/CC (SRT file/VTT file). While FastPix can handle various audio and video formats and codecs, using standard inputs can help with optimal processing speed.
- `timeout` (double, optional, default: 14400) — The duration set for the validity of the upload URL. If the upload isn’t completed within this timespan, it is marked as timed out.
- `corsOrigin` (string, optional) — Upload media directly from a device using the url name or enter "*" to allow all.
- `pushMediaSettings` (UnusedDirectUploadResponse, optional)

### Pagination

Pagination organizes content into pages for better readability and navigation.

- `totalRecords` (integer, optional) — The total number of records matching the request, across all pages.
- `currentOffset` (integer, optional) — The page returned by this response. Pages are numbered from 1, so the first page has a `currentOffset` of 1.
- `offsetCount` (integer, optional) — The total number of pages: `totalRecords` divided by `limit`, rounded up.

### UnusedDirectUploadResponse

- `playbackIds` (list of Unused-uploads-playbackId, optional)
- `metadata` (map from string to string, optional) — You can search for videos with specific key value pairs using metadata, when you tag a video in "key" : "value" pairs. Dynamic metadata allows you to define a key that allows any value pair. You can have maximum of 255 characters and upto 10 entries are allowed.
- `creatorId` (string, optional) — The unique identifier of the user who created this media.
- `title` (string, optional, nullable) — Title of the media file.
- `tags` (list of string, optional) — Free-form labels attached to the media for grouping or filtering.
- `thirdPartyId` (string, optional, nullable) — Your own identifier for this media in an external system. FastPix stores it with the media and returns it as is.
- `mediaQuality` (enum, optional) — The quality tier applied to the media.
  - Allowed values: `standard`, `pro`, `premium`, `custom`
- `codecTier` (enum, optional) — The codec tier the media is encoded with. basic uses H.264, plus uses H.264 and H.265.
  - Allowed values: `basic`, `plus`
- `sourceAccess` (boolean, optional) — The sourceAccess parameter determines whether the original media file is accessible. Set to true to enable access or false to restrict it.
- `optimizeAudio` (boolean, optional) — Enhance the quality and volume of the audio track. This is available for pre-recorded content only.

### Unused-uploads-playbackId

A collection of Playback ID objects utilized for crafting HLS playback urls.

- `accessPolicy` (enum, optional) — Access policy for media content
  - Allowed values: `public`, `private`, `drm`
- `accessRestrictions` (UnusedUploadsPlaybackIdAccessRestrictions, optional) — Controls access based on domains and user agents. Defines a default policy (either "allow" or "deny") and provides lists for explicitly allowed or denied domains and user agents.

### UnusedUploadsPlaybackIdAccessRestrictions

Controls access based on domains and user agents. Defines a default policy (either "allow" or "deny") and provides lists for explicitly allowed or denied domains and user agents.

- `domains` (UnusedUploadsPlaybackIdAccessRestrictionsDomains, optional) — Restrictions based on the originating domain of a request (for example, whether requests from certain websites must be allowed or blocked).
- `userAgents` (UnusedUploadsPlaybackIdAccessRestrictionsUserAgents, optional) — Restrictions based on the user agent (which is typically a string sent by browsers or bots identifying themselves).

### UnusedUploadsPlaybackIdAccessRestrictionsDomains

Restrictions based on the originating domain of a request (for example, whether requests from certain websites must be allowed or blocked).

- `defaultPolicy` (enum, optional) — Policy action type
  - Allowed values: `allow`, `deny`
- `allow` (list of string, optional) — A list of domains that are explicitly allowed access.
- `deny` (list of string, optional) — A list of domains that are explicitly blocked from accessing the resource.

### UnusedUploadsPlaybackIdAccessRestrictionsUserAgents

Restrictions based on the user agent (which is typically a string sent by browsers or bots identifying themselves).

- `defaultPolicy` (enum, optional) — Policy action type
  - Allowed values: `allow`, `deny`
- `allow` (list of string, optional) — A list of specific user agents that are allowed to access the resource.
- `deny` (list of string, optional) — A list of specific user agents that are blocked.

## Examples

**Response**

```json
{
  "success": true,
  "data": [
    {
      "uploadId": "9149264c-6cb9-40d3-9313-95a85c56135e",
      "trial": true,
      "status": "waiting",
      "url": "https://storage.fastpix.net/uploads/7619ee69-d758-4589-80ee-965f6bfc922c/9149264c-6cb9-40d3-9313-95a85c56135e?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=assets-svc%2F20250109%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250109T084749Z&X-Amz-Expires=14400&X-Amz-SignedHeaders=host&X-Amz-Signature=f0a1e3798792543bff7fed64314cc386f56adc1bc1a65f6d4d9c137c6998b6ce",
      "timeout": 14400,
      "corsOrigin": "*",
      "pushMediaSettings": {
        "playbackIds": [
          {
            "accessPolicy": "public",
            "accessRestrictions": {
              "domains": {
                "defaultPolicy": "allow",
                "allow": [],
                "deny": []
              },
              "userAgents": {
                "defaultPolicy": "allow",
                "allow": [],
                "deny": []
              }
            }
          }
        ],
        "metadata": {
          "key1": "value1"
        },
        "mediaQuality": "standard",
        "codecTier": "basic"
      }
    }
  ],
  "pagination": {
    "totalRecords": 100,
    "currentOffset": 1,
    "offsetCount": 10
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.fastpix.com/v1/on-demand/uploads"

response = requests.get(url, auth=("<username>", "<password>"))

print(response.json())
```

```javascript
const url = 'https://api.fastpix.com/v1/on-demand/uploads';
const credentials = btoa("<username>:<password>");

const options = {method: 'GET', headers: {Authorization: `Basic ${credentials}`}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.fastpix.com/v1/on-demand/uploads"

	req, _ := http.NewRequest("GET", url, nil)

	req.SetBasicAuth("<username>", "<password>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.fastpix.com/v1/on-demand/uploads")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request.basic_auth("<username>", "<password>")

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.fastpix.com/v1/on-demand/uploads")
  .basicAuth("<username>", "<password>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.fastpix.com/v1/on-demand/uploads', [
  'headers' => [
  ],
    'auth' => ['<username>', '<password>'],
]);

echo $response->getBody();
```

```csharp
using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://api.fastpix.com/v1/on-demand/uploads");
client.Authenticator = new HttpBasicAuthenticator("<username>", "<password>");
var request = new RestRequest(Method.GET);

IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let credentials = Data("<username>:<password>".utf8).base64EncodedString()

let headers = ["Authorization": "Basic \(credentials)"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.fastpix.com/v1/on-demand/uploads")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```