# StableUpload File Upload Slot

> StableUpload File Upload Slot is a paid API for AI agents from stableupload.dev, paid per call via x402, $2/call, status unknown (last checked 2026-09-14).

Purchases a file upload slot and returns a pre-signed URL that the agent can use to upload a file for hosting

## Facts

- Endpoint: POST https://stableupload.dev/api/upload
- Price: $2/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/stableupload-6ce50845
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_bW0FgydDEdwvtNZo5KTl_

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-6ce50845 -d '<json body>'
```

Example prompt: Upload this file to StableUpload and give me the hosted URL — it's a PDF report I need to share online.

## When to prefer this

Use this endpoint when you need to upload a single arbitrary file (not specifically a zip site) to get a hosted URL. Choose this over the Site endpoint when you are not deploying a zip-based static site but simply need file storage with a public URL. Ideal for agents that need to host documents, images, or other assets with a 6-month TTL without deploying a full website.

## Known failure modes

- Payment failure — insufficient USDC balance or x402 payment not accepted
- Upload URL expired — pre-signed URL has a TTL and must be used promptly
- File too large — exceeds allowed size for the upload slot
- Authentication error — wallet not recognized or signature invalid
- Server error — 5xx response indicating temporary unavailability

## How this service works

Buy an upload slot. Agent uploads file via returned URL.

## Output

Returns a pre-signed upload URL that the agent uses to PUT the actual file bytes, along with an upload ID for tracking the upload and later retrieving metadata or activating the file as a site.

## Example request

```json
{
 "tier": "short-10mb",
 "filename": "test-document.pdf",
 "contentType": "application/pdf",
 "policyTtlSeconds": 3600
}
```

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "tier": {
   "enum": [
    "10mb",
    "100mb",
    "1gb",
    "short-10mb",
    "short-100mb",
    "short-1gb",
    "short-5gb"
   ],
   "type": "string",
   "description": "Upload tier. Default 6-month tiers: 10mb ($0.02), 100mb ($0.20), 1gb ($2.00). Short-term 7-day workflow tiers: short-10mb ($0.005), short-100mb ($0.02), short-1gb ($0.10), short-5gb ($0.50, file uploads only)."
  },
  "filename": {
   "type": "string",
   "maxLength": 512,
   "minLength": 1,
   "description": "Name of the file to upload"
  },
  "contentType": {
   "type": "string",
   "maxLength": 255,
   "minLength": 1,
   "description": "MIME type of the file (e.g. image/png, video/mp4)"
  },
  "policyTtlSeconds": {
   "type": "integer",
   "maximum": 86400,
   "minimum": 60,
   "description": "Optional upload URL/form expiration in seconds, 60-86400. Use longer TTLs only when reserving an output slot for a downstream service."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "maxSize": 10485760,
  "postUrl": "https://stableupload-prod.s3.us-east-1.amazonaws.com/",
  "uploadId": "2s42wjsk3a",
  "expiresAt": "2026-05-02T16:00:00.000Z",
  "publicUrl": "https://f.stableupload.dev/2s42wjsk3a/quick-note.txt",
  "uploadUrl": "https://stableupload-prod.s3.us-east-1.amazonaws.com/",
  "postFields": {
   "key": "uploads/2s42wjsk3a/quick-note.txt",
   "policy": "base64-policy",
   "x-amz-date": "20260425T160000Z",
   "Content-Type": "text/plain",
   "x-amz-algorithm": "AWS4-HMAC-SHA256",
   "x-amz-signature": "hex-signature",
   "x-amz-credential": "AKIAEXAMPLE/20260425/us-east-1/s3/aws4_request"
  },
  "curlExample": "curl -X POST \"https://stableupload-prod.s3.us-east-1.amazonaws.com/\" -F \"key=uploads/2s42wjsk3a/quick-note.txt\" -F \"Content-Type=text/plain\" -F \"x-amz-algorithm=AWS4-HMAC-SHA256\" -F \"x-amz-credential=AKIAEXAMPLE/20260425/us-east-1/s3/aws4_request\" -F \"x-amz-date=20260425T160000Z\" -F \"policy=base64-policy\" -F \"x-amz-signature=hex-signature\" -F \"file=@quick-note.txt;type=text/plain\"",
  "uploadMethod": "post",
  "uploadUrlExpiresAt": "2026-04-25T16:15:00.000Z"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/stableupload-6ce50845/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)
