Api Endpoint

api.munition.io

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.

Open interactive test console

Offering

Provider
api.munition.io
Method
POST
Offering type
Api Endpoint
Transport type
http
Category
Infrastructure
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://api.munition.io/v1/uploads
MIME type
Not provided
First seen
2026-10-16T01:50:19.913Z
Last seen
Tags
None supplied

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.005 USDC
Atomic price: 5000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Payment option 2
0.005 USDC
Atomic price: 5000 · Network: eip155:137 · Asset: USDC · Scheme: exact
Payment option 3
0.005 USDC
Atomic price: 5000 · Network: eip155:42161 · Asset: USDC · Scheme: exact
Payment option 4
0.005 USDC
Atomic price: 5000 · Network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "5000",
    "payTo": "0x54d6C2C08e10F1a1d3dA88dF513bbE9BCf1A4aFa"
  },
  {
    "scheme": "exact",
    "network": "eip155:137",
    "asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
    "amount": "5000",
    "payTo": "0x54d6C2C08e10F1a1d3dA88dF513bbE9BCf1A4aFa"
  },
  {
    "scheme": "exact",
    "network": "eip155:42161",
    "asset": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
    "amount": "5000",
    "payTo": "0x54d6C2C08e10F1a1d3dA88dF513bbE9BCf1A4aFa"
  },
  {
    "scheme": "exact",
    "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
    "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "amount": "5000",
    "payTo": "CawPXxATKM9iBPc2o6FRzu9LbvzZWcepD9akwZkbDyDo"
  }
]

Observed health

Status
Healthy
Latest latency
31 ms
Average latency
255 ms
HTTP status
204
Last checked
Reachability
100% over 14 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "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 schema

{
  "$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"
}