# Munition File Upload (short-10mb tier)

> Munition File Upload (short-10mb tier) is a paid API for AI agents from api.munition.io, paid per call via x402, $0.005/call, status healthy (last checked 2026-09-15, last successful call 2026-09-14).

Creates a presigned S3 upload slot for files up to 10 MB, returning a public URL valid for 7 days, settled via x402 micropayment at $0.005 USDC per upload.

## Facts

- Endpoint: POST https://api.munition.io/v1/uploads
- Price: $0.005/call
- Payment: x402
- Status: healthy
- Last checked: 2026-09-15
- Last successful call: 2026-09-14
- Success rate: 100% of calls made through Zero
- Rating: 5.0 / 5 from 4 reviews
- Activations on Zero: 6
- Tags: x402
- Canonical page: https://www.zero.xyz/c/munition-file-upload-short-10mb-tier-5ae38864
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_eusFG6-VO519s6c54hOC1

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 munition-file-upload-short-10mb-tier-5ae38864 -d '<json body>'
```

Example prompt: Upload this 2.4 MB PDF report called 'analysis-report.pdf' to Munition using the short-10mb tier and give me the public link — the SHA-256 hash of the file is b43cd80a9e6155029135a38c0559aff6696566c431bfb8a9c9433882898247d1.

## When to prefer this

Choose this endpoint when an AI agent needs to make a file publicly accessible via a stable URL without registering an account or managing API keys — ideal for ephemeral agent outputs (reports, screenshots, JSON blobs) that only need to be shared for up to 7 days. Prefer this over general-purpose cloud storage SDKs when the agent operates anonymously with x402 micropayment settlement and needs a single-call, no-setup workflow.

## Known failure modes

- File size exceeds 10 MB maximum (400 Bad Request)
- SHA-256 hex digest does not match required 64-char lowercase hex pattern (422 Validation Error)
- SHA-256 base64 digest does not match required 43-char base64 pattern (422 Validation Error)
- MIME type string too long or empty (422 Validation Error)
- Payment not settled or x402 header missing (402 Payment Required)
- More than 20 tags provided (422 Validation Error)
- Filename exceeds 180 characters (422 Validation Error)

## How this service works

Munition Upload: x402-paid temporary file hosting for AI agents. Buy a presigned upload slot, upload one local file or generated artifact up to 10 MB, and get a public non-guessable files.munition.io link retained for 7 days. Useful for PDFs, screenshots, images, logs, JSON, reports, browser sharing, webhook sharing, and agent-to-human handoff.

## Output

A JSON object containing a presigned S3 PUT URL (valid for ~10 minutes), the required upload headers (Content-Type, Content-Length, x-amz-checksum-sha256, etc.), a stable public download URL at files.munition.io, an upload slot ID, and an expiry timestamp 7 days out. The agent must then PUT the actual file bytes to the uploadUrl using the provided uploadHeaders.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "mime": {
   "type": "string",
   "maxLength": 120,
   "minLength": 1,
   "description": "MIME type of the file to upload, for example application/pdf, image/png, text/plain, or application/json."
  },
  "size": {
   "type": "integer",
   "maximum": 10485760,
   "minimum": 1,
   "description": "File size in bytes. The short-10mb tier accepts one file up to 10 MB."
  },
  "tags": {
   "type": "array",
   "items": {
    "type": "string",
    "maxLength": 64,
    "minLength": 1
   },
   "default": [],
   "maxItems": 20,
   "description": "Optional stable upload tags for categorization. Tags are serialized and returned as an array of strings."
  },
  "tier": {
   "enum": [
    "short-10mb"
   ],
   "type": "string",
   "default": "short-10mb",
   "description": "Upload tier. short-10mb costs 0.005 USDC, accepts one file up to 10 MB, and retains the public link for 7 days."
  },
  "sha256": {
   "type": "string",
   "pattern": "^[a-f0-9]{64}$",
   "description": "Lowercase hex-encoded SHA-256 digest of the exact file bytes, used to bind the upload slot to the final file."
  },
  "filename": {
   "type": "string",
   "maxLength": 180,
   "minLength": 1,
   "description": "Optional original filename used for a readable public URL slug, for example report.pdf or screenshot.png."
  },
  "sha256Base64": {
   "type": "string",
   "pattern": "^[A-Za-z0-9+/]{43}=$",
   "description": "Base64-encoded 32-byte SHA-256 digest of the same file bytes, sent as x-amz-checksum-sha256 during the S3 PUT."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "id": "upl_example",
  "tags": [
   "agent-output",
   "report"
  ],
  "maxSize": 10485760,
  "expiresAt": "2026-09-16T19:30:14.538Z",
  "publicUrl": "https://files.munition.io/direct/upl_example-agent-report.pdf",
  "uploadUrl": "https://s3.example.com/presigned-put",
  "uploadMethod": "PUT",
  "uploadHeaders": {
   "content-type": "application/pdf",
   "content-length": "42000",
   "x-amz-meta-sha256": "b43cd80a9e6155029135a38c0559aff6696566c431bfb8a9c9433882898247d1",
   "x-amz-checksum-sha256": "tDzYCp5hVQKRNaOMBVmv9mllZsQxv7ipyUM4gomCR9E="
  },
  "uploadUrlExpiresAt": "2026-09-09T19:40:14.540Z"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/munition-file-upload-short-10mb-tier-5ae38864/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.munition.io](https://www.zero.xyz/host/api.munition.io/llms.txt)
