Skip to main content
POST
/
v1
/
buckets
/
{bucket_identifier}
/
uploads
/
list
List Uploads
curl --request POST \
  --url https://api.mixpeek.com/v1/buckets/{bucket_identifier}/uploads/list \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --header 'X-Namespace: <x-namespace>' \
  --data '
{
  "filters": {
    "status": "PENDING"
  },
  "sort": {
    "direction": "desc",
    "field": "created_at"
  },
  "search": "video",
  "return_presigned_urls": false,
  "limit": 20,
  "offset": 0
}
'
{
  "results": [
    {
      "upload_id": "<string>",
      "bucket_id": "<string>",
      "filename": "<string>",
      "content_type": "<string>",
      "presigned_url_expiration": 123,
      "s3_key": "<string>",
      "status": "PENDING",
      "create_object_on_confirm": true,
      "created_at": "2023-11-07T05:31:56Z",
      "expires_at": "2023-11-07T05:31:56Z",
      "file_size_bytes": 10485760,
      "presigned_url": "<string>",
      "metadata": {},
      "object_metadata": {},
      "blob_property": "<string>",
      "blob_type": "<string>",
      "file_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "skip_duplicates": true,
      "is_duplicate": false,
      "duplicate_of_upload_id": "upl_original123",
      "message": "<string>",
      "completed_at": "2024-01-15T10:35:00Z",
      "verified_at": "2024-01-15T10:35:00Z",
      "etag": "d41d8cd98f00b204e9800998ecf8427e",
      "object_id": "obj_a1b2c3d4e5f6",
      "task_id": "task_abc123"
    }
  ],
  "pagination": {
    "total": 123,
    "page": 123,
    "page_size": 123,
    "total_pages": 123,
    "next_page": "<string>",
    "previous_page": "<string>"
  },
  "stats": {
    "total_uploads": 123,
    "total_size_bytes": 123,
    "uploads_by_status": {},
    "avg_file_size_bytes": 123,
    "unique_buckets": 123
  }
}

Headers

Authorization
string
required

REQUIRED: Bearer token authentication using your API key. Format: 'Bearer sk_xxxxxxxxxxxxx'. You can create API keys in the Mixpeek dashboard under Organization Settings.

X-Namespace
string
required

REQUIRED: Namespace identifier for scoping this request. All resources (collections, buckets, taxonomies, etc.) are scoped to a namespace. You can provide either the namespace name or namespace ID. Format: ns_xxxxxxxxxxxxx (ID) or a custom name like 'my-namespace'

Path Parameters

bucket_identifier
string
required

The unique identifier of the bucket

Query Parameters

limit
integer | null
offset
integer | null

Body

application/json

Request model for listing uploads with filtering, sorting, and search.

Provides flexible querying capabilities using the same filter/sort framework as documents, objects, and other list endpoints.

Supports: - Complex filters using LogicalOperator (AND, OR, NOT) - Shorthand filter syntax: {"metadata.campaign": "summer_2024"} - Full-text search across filename and metadata - Multi-field sorting - Pagination with limit/offset

Examples: - List all pending uploads in a bucket - Find uploads by metadata campaign - Search for uploads by filename pattern - Sort by file size or creation date

filters
LogicalOperator · object

Complex filters using logical operators (AND, OR, NOT). Supports shorthand syntax: pass field-value pairs for equality matching. Examples: - Filter by status: {'status': 'PENDING'} - Filter by metadata: {'metadata.campaign': 'summer_2024'} - Complex: {'AND': [{'field': 'status', 'operator': 'eq', 'value': 'PENDING'}, {'field': 'file_size_bytes', 'operator': 'gte', 'value': 1000000}]} See LogicalOperator documentation for full syntax.

Example:
{ "status": "PENDING" }
sort
SortOption · object

Sort options for ordering results. Can sort by any field including metadata fields using dot notation. Default: created_at descending (newest first). Examples: - Sort by creation date: {'field': 'created_at', 'direction': 'desc'} - Sort by file size: {'field': 'file_size_bytes', 'direction': 'asc'} - Sort by metadata: {'field': 'metadata.priority', 'direction': 'desc'}

Example:
{
"direction": "desc",
"field": "created_at"
}
search
string | null

Full-text search across filename and metadata fields. Case-insensitive partial matching. Searches in: filename, metadata values (converted to strings). Examples: - 'video' - finds 'product_video.mp4', 'tutorial_video.mov' - 'summer' - finds uploads with metadata.campaign='summer_2024'

Example:

"video"

return_presigned_urls
boolean
default:false

Whether to regenerate presigned URLs for S3 access in the response. OPTIONAL, defaults to false. If true: - Generates new GET presigned URLs for completed uploads - Useful for downloading files from S3 - Adds ~50ms per upload to response time. If false: - No presigned URLs in response - Faster response time. Note: Original PUT presigned URLs are never returned (security).

limit
integer
default:20

Maximum number of uploads to return. OPTIONAL, defaults to 20.

Required range: 1 <= x <= 100
offset
integer
default:0

Number of uploads to skip for pagination. OPTIONAL, defaults to 0.

Required range: x >= 0

Response

Successful Response

Response model for listing uploads.

results
UploadResponse · object[]
required

List of upload records matching the query

pagination
PaginationResponse · object
required

Pagination metadata including total count, limit, offset, has_more

stats
UploadListStats · object
required

Aggregate statistics across all uploads in the result