# Pinata Public IPFS Upload

> Pinata Public IPFS Upload is a paid API for AI agents from 402.pinata.cloud, paid per call via x402, $0.001/call, status unknown (last checked 2026-09-14).

Accepts a file size, charges $0.001 USDC via x402, and returns a signed upload URL for pinning a file to public IPFS

## Facts

- Endpoint: POST https://402.pinata.cloud/v1/pin/public
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/pinata-public-ipfs-upload-5da4f4ba
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_2vZnbKbOSLJthKFZQreJ-

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 pinata-public-ipfs-upload-5da4f4ba -d '<json body>'
```

Example prompt: Upload my 2MB file to public IPFS using Pinata — pay the per-upload fee and give me back the signed upload URL so I can push the file.

## When to prefer this

Choose this endpoint when you need to pin a file to public IPFS without a pre-existing Pinata account, can pay per-upload in USDC via the x402 protocol, and want a simple signed-URL workflow. Prefer this over the private IPFS sibling endpoint when the content must be publicly accessible to anyone on the IPFS network. Prefer it over traditional cloud storage when immutability, content addressing (CID), and decentralized availability are required.

## Known failure modes

- Insufficient payment or failed x402 payment authorization — upload URL not issued
- fileSize value missing or malformed in request body — 400 error
- File size mismatch between declared and actual upload — pin may be rejected
- Network or gateway timeout — signed URL not returned
- IPFS pinning service outage — file pinned but may not propagate immediately

## How this service works

Upload to public IPFS (fileSize in JSON body; returns signed upload URL after payment)

## Output

A signed upload URL that the caller can use to push the actual file bytes to public IPFS. After the upload completes, the file is accessible globally via its IPFS CID.

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/pinata-public-ipfs-upload-5da4f4ba/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from 402.pinata.cloud](https://www.zero.xyz/host/402.pinata.cloud/llms.txt)
