ToolAssay

Munition Upload

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.

Not tested: has real-world effectsour last check, 2026-09-24
0 of 0checks answered this week
n/amedian answer time
$0.005listed price per call
n/aprice it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://api.munition.io/v1/uploads

CategoryImage and media
Provider hostapi.munition.io
Networkseip155:137, eip155:42161, eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
Payment schemesexact
Self-reported calls, 30 days5 from 3 payers (the provider's figure, not ours)

Our checks, last 30 days

We never call tools that send, buy, move money or file anything, not even without paying.

Example input (from the provider)

{
  "body": {
    "filename": "agent-report.pdf",
    "mime": "application/pdf",
    "sha256": "b43cd80a9e6155029135a38c0559aff6696566c431bfb8a9c9433882898247d1",
    "sha256Base64": "tDzYCp5hVQKRNaOMBVmv9mllZsQxv7ipyUM4gomCR9E=",
    "size": 42000,
    "tags": [
      "agent-output",
      "report"
    ],
    "tier": "short-10mb"
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "additionalProperties": false,
          "properties": {
            "filename": {
              "description": "Optional original filename used for a readable public URL slug, for example report.pdf or screenshot.png.",
              "maxLength": 180,
              "minLength": 1,
              "type": "string"
            },
            "mime": {
              "description": "MIME type of the file to upload, for example application/pdf, image/png, text/plain, or application/json.",
              "maxLength": 120,
              "minLength": 1,
              "type": "string"
            },
            "sha256": {
              "description": "Lowercase hex-encoded SHA-256 digest of the exact file bytes, used to bind the upload slot to the final file.",
              "pattern": "^[a-f0-9]{64}$",
              "type": "string"
            },
            "sha256Base64": {
              "description": "Base64-encoded 32-byte SHA-256 digest of the same file bytes, sent as x-amz-checksum-sha256 during the S3 PUT.",
              "pattern": "^[A-Za-z0-9+/]{43}=$",
              "type": "string"
            },
            "size": {
              "description": "File size in bytes. The short-10mb tier accepts one file up to 10 MB.",
              "maximum": 10485760,
              "minimum": 1,
              "type": "integer"
            },
            "tags": {
              "default": [],
              "description": "Optional stable upload tags for categorization. Tags are serialized and returned as an array of strings.",
              "items": {
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              },
              "maxItems": 20,
              "type": "array"
            },
            "tier": {
              "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.",
              "enum": [
                "short-10mb"
              ],
              "type": "string"
            }
          },
          "required": [
            "mime",
            "size",
            "sha256",
            "sha256Base64"
          ],
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "additionalProperties": false,
          "properties": {
            "expiresAt": {
              "description": "When the public file link expires and the file is deleted.",
              "format": "date-time",
              "type": "string"
            },
            "id": {
              "description": "Munition upload slot id.",
              "type": "string"
            },
            "maxSize": {
              "description": "Maximum allowed file size in bytes for this upload slot.",
              "type": "integer"
            },
            "publicUrl": {
              "description": "Public non-guessable files.munition.io URL for sharing the uploaded file.",
              "format": "uri",
              "type": "string"
            },
            "tags": {
              "description": "Stable upload tags supplied when the slot was created.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "uploadHeaders": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Required headers for the uploadUrl PUT, including content-type, content-length, checksum, and sha256 metadata.",
              "type": "object"
            },
            "uploadMethod": {
              "const": "PUT",
              "description": "HTTP method to use when uploading bytes to uploadUrl.",
              "type": "string"
            },
            "uploadUrl": {
              "description": "Presigned S3 URL where the client uploads file bytes after payment.",
              "format": "uri",
              "type": "string"
            },
            "uploadUrlExpiresAt": {
              "description": "When the presigned upload URL expires.",
              "format": "date-time",
              "type": "string"
            }
          },
          "required": [
            "id",
            "uploadUrl",
            "uploadMethod",
            "uploadHeaders",
            "publicUrl",
            "expiresAt",
            "uploadUrlExpiresAt",
            "maxSize",
            "tags"
          ],
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}

This page as JSON