IPFS endpoints
Upload meta-address
POST /api/v1/ipfs/upload validates meta-address hex and uploads bytes through Pinata v3.
Retrieve raw bytes
GET /api/v1/ipfs/:cid returns application/octet-stream from backend proxy.
Endpoints
POST /api/v1/ipfs/uploadGET /api/v1/ipfs/:cid
Upload request schema
Hex-encoded SPECTER meta-address.
Optional display/pin name sent to Pinata upload API.
Upload response schema
Uploaded IPFS content identifier.
Formatted value for name service storage, e.g. ipfs://<cid>.
Retrieve request params
CID to retrieve through backend gateway client.
Typical flow
Upload meta-address bytes
Call POST /api/v1/ipfs/upload and capture the returned CID.
Set name-service record
Write text_record into ENS specter text record or SuiNS content hash.
Verify retrieval
Call GET /api/v1/ipfs/:cid and confirm raw bytes are returned.
Example calls
- Upload (cURL)
- Retrieve (cURL)
- JavaScript
curl -s -X POST https://backend.specterpq.com/api/v1/ipfs/upload \
-H "Content-Type: application/json" \
-d '{"meta_address":"<HEX_META_ADDRESS>","name":"alice.eth-specter"}' | jq .
curl -s "https://backend.specterpq.com/api/v1/ipfs/<CID>" --output meta-address.bin
const up = await fetch("https://backend.specterpq.com/api/v1/ipfs/upload", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ meta_address, name: "alice.eth-specter" })
});
const uploaded = await up.json();
console.log(uploaded.cid, uploaded.text_record);
Required environment variables
Upload requires PINATA_JWT. Retrieval requires PINATA_GATEWAY_URL and PINATA_GATEWAY_TOKEN.
Gateway and caching behavior
Downloads use configured dedicated gateway and can be cached in-memory by CID when cache is enabled.
Response content type for GET
GET /api/v1/ipfs/:cid responds with raw bytes and Content-Type: application/octet-stream.