Upload files to IPFS via Pinata without an account — pay per request with Tempo stablecoins over MPP.
What it does
This MPP endpoint lets you upload public files to IPFS through Pinata's infrastructure without creating an account or using an API key. Payment is handled inline via the Machine Payments Protocol (MPP) using Tempo stablecoins on chain 4217. The endpoint returns a signed upload URL that you then use with the Pinata SDK to complete the file upload.
The payment challenge advertises an amount of 1000 base units in a stablecoin on the Tempo L2 (chain ID 4217). Assuming 6 decimals (typical for stablecoins), this translates to $0.001 per request as a base charge; the listing title suggests dynamic pricing based on file size ($0.10/GB/month, minimum $0.01). The caller passes a `fileSize` query parameter so the server can compute the appropriate charge. Once paid, the response provides a pre-signed URL for uploading the actual file content via the Pinata SDK's `upload.public.file().url()` method.
Uploaded content is publicly available on any IPFS gateway or through a Pinata Dedicated IPFS Gateway. The intent is "charge" (one-shot payment per call), and settlement occurs on Tempo L2. No API key or Pinata account is required — the MPP payment itself authorizes the request.
Capabilities
Use cases
- —Uploading files to IPFS from an AI agent or automated pipeline without managing API keys
- —Paying per-upload for decentralized file storage using crypto micropayments
- —Storing public content on IPFS for dApps, NFT metadata, or static assets
- —Enabling account-free IPFS uploads in client-side or serverless applications
Fit
Best for
- —Agents or bots that need to store files on IPFS without pre-provisioned credentials
- —One-off or low-volume IPFS uploads where account setup is undesirable
- —Crypto-native workflows that can settle payments on Tempo L2
Not for
- —High-volume bulk uploads where a traditional Pinata subscription would be cheaper
- —Private or encrypted file storage (this endpoint is for public IPFS content only)
- —Users without a Tempo-compatible wallet or stablecoin balance
Quick start
import { Mppx, tempo } from 'mppx/client'
import { privateKeyToAccount } from 'viem/accounts'
import { PinataSDK } from 'pinata'
const account = privateKeyToAccount('0xabc…123')
Mppx.create({ methods: [tempo({ account })] })
const fileSize = 1024 // bytes
const res = await fetch(
`https://mpp.pinata.cloud/v1/pin/public?fileSize=${fileSize}`,
{ method: 'POST' }
)
const { url } = await res.json()
const pinata = new PinataSDK()
const file = new File(['hello world'], 'hello.txt')
const upload = await pinata.upload.public.file(file).url(url)
console.log(upload)Example
Response
{
"url": "https://uploads.pinata.cloud/v3/files/sign?expires=1713550306&signature=abc123..."
}Endpoint
Quality
The endpoint is live (402 challenge captured) and the landing page provides a working code example, but there is no OpenAPI schema, no formal docs (docs/api/pricing all 404), and the response shape is inferred from the code snippet rather than documented. Pricing details are partially stated in the listing title but not confirmed by crawled content. The stablecoin currency address and decimal count are not independently verified.
Warnings
- —No OpenAPI or formal API documentation available — /docs, /api, and /pricing all return 404.
- —The stablecoin currency at address 0x20C0…8b50 on chain 4217 is not independently identified; 6 decimals is assumed but unconfirmed.
- —Dynamic pricing model ($0.10/GB/month, min $0.01) is stated in the existing listing title but not corroborated by any crawled page.
- —Response JSON shape ({url}) is inferred from the landing page code example, not from a schema or documentation.
Citations
- —Account-free IPFS uploads from Pinata using MPP, pay with Tempo stablecoins via HTTP 402https://mpp.pinata.cloud
- —Code example showing fileSize query parameter and response containing a url field used with pinata.upload.public.file().url()https://mpp.pinata.cloud
- —Public IPFS content available on public gateways or Dedicated IPFS Gatewayhttps://mpp.pinata.cloud
- —MPP challenge: amount 1000, currency 0x20C0…8b50, chainId 4217, method tempo, intent chargehttps://mpp.pinata.cloud/v1/pin/public