# StableUpload List Uploads

> StableUpload List Uploads is a free API for AI agents from StableUpload at stableupload.dev, callable via MPP, Free, status unknown (last checked 2026-10-12, last successful call 2026-08-18).

Lists upload metadata for the authenticated wallet, paginated newest-first, including file and site uploads with status, URLs, and expiry info.

## Facts

- Endpoint: GET https://stableupload.dev/api/uploads?utm_source=zero.xyz
- Price: Free
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-12
- Last successful call: 2026-08-18
- Success rate: 100% of calls made through Zero
- Rating: 5.0 / 5 from 1 review
- Activations on Zero: 2
- Provider: StableUpload
- Docs: https://stableupload.dev
- Website: https://stableupload.dev
- Tags: upload, files, hosting, static-site, cdn, storage
- Canonical page: https://www.zero.xyz/c/stableupload-uploads-9f189b23
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Eo54E4pRWKD2qFEZbXiuy

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability stableupload-uploads-9f189b23
```

Example prompt: Show me my last 20 uploads on StableUpload — I want to see which ones are still active and what their public URLs are.

## When to prefer this

Use this endpoint when you need to audit, paginate through, or inspect the authenticated wallet's upload history on StableUpload — especially to retrieve public/site URLs, check expiry, or verify status of previously created uploads. Prefer this over fetching a single upload by ID when you don't know the specific upload ID or need a full inventory.

## Known failure modes

- Unauthenticated request returns 401 — wallet auth header missing or invalid
- limit out of range (< 1 or > 100) returns 400 validation error
- Invalid cursor value returns 400 or empty result set
- No uploads for wallet returns empty uploads array
- Service unavailable returns 5xx

## How this service works

List upload metadata for the authenticated wallet, newest first. Use nextCursor for pagination.

## Output

A JSON object containing an array of up to 100 upload records (newest first), each with ID, kind (file or site), filename, content type, tier, max/actual size, public URL, site URL, file count, custom hostname, status (pending/uploaded/expired), price paid, expiry date, and creation date. Also includes a nextCursor string for pagination if more results exist.

## Example request

```json
{
 "limit": 20
}
```

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "limit": {
   "type": "integer",
   "default": 50,
   "maximum": 100,
   "minimum": 1,
   "description": "Maximum uploads to return, 1-100. Default 50."
  },
  "cursor": {
   "type": "string",
   "description": "Pagination cursor from the previous nextCursor."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "uploads"
 ],
 "properties": {
  "uploads": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "id",
     "kind",
     "isSite",
     "filename",
     "contentType",
     "tier",
     "maxSize",
     "actualSize",
     "publicUrl",
     "siteUrl",
     "fileCount",
     "customHostname",
     "status",
     "pricePaid",
     "expiresAt",
     "createdAt"
    ],
    "properties": {
     "id": {
      "type": "string"
     },
     "kind": {
      "enum": [
       "file",
       "site"
      ],
      "type": "string",
      "description": "Upload type. Use siteUrl, not publicUrl, to serve sites."
     },
     "tier": {
      "type": "string"
     },
     "isSite": {
      "type": "boolean"
     },
     "status": {
      "type": "string",
      "description": "pending, uploaded, or expired. See guidance for lifecycle."
     },
     "maxSize": {
      "type": "number"
     },
     "siteUrl": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "type": "null"
       }
      ],
      "description": "Activated site URL, or null for file uploads/unactivated sites."
     },
     "filename": {
      "type": "string"
     },
     "createdAt": {
      "type": "string"
     },
     "expiresAt": {
      "type": "string"
     },
     "fileCount": {
      "anyOf": [
       {
        "type": "number"
       },
       {
        "type": "null"
       }
      ]
     },
     "pricePaid": {
      "type": "number"
     },
     "publicUrl": {
      "type": "string",
      "description": "File URL for file uploads. For sites, this points to the source zip; serve activated sites from siteUrl."
     },
     "actualSize": {
      "anyOf": [
       {
        "type": "number"
       },
       {
        "type": "null"
       }
      ]
     },
     "contentType": {
      "type": "string"
     },
     "customHostname": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "type": "null"
       }
      ]
     }
    },
    "additionalProperties": false
   }
  },
  "nextCursor": {
   "type": "string"
  }
 },
 "additionalProperties": false
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/stableupload-uploads-9f189b23/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from stableupload.dev](https://www.zero.xyz/host/stableupload.dev/llms.txt)
