From obul-core
USE THIS SKILL WHEN: the user wants to pin files to IPFS, upload content to IPFS, or retrieve files by CID. Provides pay-per-use IPFS pinning and retrieval via Pinata through the Obul proxy.
How this skill is triggered — by the user, by Claude, or both
Slash command
/obul-core:pinataThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Pinata provides pay-per-use IPFS pinning and retrieval — upload files to the decentralized web and retrieve them by
Pinata provides pay-per-use IPFS pinning and retrieval — upload files to the decentralized web and retrieve them by content identifier (CID). Through the Obul proxy, each request is paid individually via x402 — no Pinata account or API key required. Pin files to the public IPFS network or retrieve privately pinned content with a single API call.
All requests use the obulx CLI, which handles proxy routing and authentication automatically.
Install and log in (one-time setup):
npm install -g @obul.ai/obulx
obulx login
Base URL: https://402.pinata.cloud
Upload and pin a file to Pinata's public IPFS network. The endpoint returns a presigned upload URL — first request the URL by specifying the file size, then upload the file to the returned URL using a multipart form POST.
Pricing: $0.10 per GB per year
obulx -X POST -H "Content-Type: application/json" \
-d '{"fileSize": 1048576}' \
"https://402.pinata.cloud/v1/pin/public"
Response: JSON object with a url field containing a presigned upload URL. Upload your file to this URL as
multipart form data. The file will be pinned to IPFS and accessible via its CID on the public network.
Upload and pin a file to Pinata's private IPFS network. Works the same as public pinning but the file is only accessible through Pinata's private gateway with proper authorization.
Pricing: $0.10 per GB per year
obulx -X POST -H "Content-Type: application/json" \
-d '{"fileSize": 1048576}' \
"https://402.pinata.cloud/v1/pin/private"
Response: JSON object with a url field containing a presigned upload URL. Upload your file to this URL as
multipart form data. The file will be pinned privately and only retrievable through the retrieve endpoint.
Retrieve a privately pinned file by its content identifier (CID). Returns a temporary access URL for downloading the file.
Pricing: $0.0001
obulx "https://402.pinata.cloud/v1/retrieve/private/{cid}"
Response: JSON object with a url field containing a temporary presigned URL to access the private file. Use this
URL to download the file content.
| Endpoint | Price | Purpose |
|---|---|---|
POST /v1/pin/public | $0.10 per GB/year | Pin a file to the public IPFS network |
POST /v1/pin/private | $0.10 per GB/year | Pin a file to the private IPFS network |
GET /v1/retrieve/private/:cid | $0.0001 | Retrieve a privately pinned file by CID |
fileSize field determines pricing. Provide the exact file size in bytes to
avoid overpaying or having the upload rejected.| Error | Cause | Solution |
|---|---|---|
402 Payment Required | Payment not processed or insufficient | Verify your account has sufficient balance at my.obul.ai. Run obulx login if not authenticated. |
400 Bad Request | Missing or invalid request body | Ensure fileSize is provided and is a positive integer for pin requests. |
401 Unauthorized | Invalid or missing authentication | Run obulx login to authenticate. |
404 Not Found | CID does not exist | Verify the CID is correct. The file may not have been pinned or may have been unpinned. |
413 Payload Too Large | File exceeds size limits | Reduce the file size or split into smaller files before pinning. |
500 Internal Server Error | Upstream Pinata service issue | Wait a few seconds and retry. If persistent, the service may be experiencing downtime. |
npx claudepluginhub polymerdao/pay-plugin --plugin obul-coreImplements Vercel Blob for Next.js file uploads (images, PDFs, videos), client uploads with tokens, presigned URLs, listing/deleting, pathname organization, and fixes errors like BLOB_READ_WRITE_TOKEN or size limits.
Provides Data Availability storage patterns for Ritual dApps using StorageRef for off-chain providers like GCS, HuggingFace, Pinata. Covers credentials, error handling, DKMS encryption for precompiles like multimodal, FHE, LLM, agents.
Uploads screenshots, images, PDFs, and media to S3-compatible storage via MinIO Client, generates public/presigned URLs, supports batch uploads and history listing. Auto-triggers after Playwright screenshots.