Skip to content

IPFS ​

Pin images to IPFS through Pinata and list files you previously uploaded. Related: Collections (image metadata values are typically ipfs://… URIs from this endpoint).

Uploads are images only (PNG, JPEG, WebP, GIF, max 5MB). The API compresses each file to WebP (≤1MB) before pinning. Pinning is free (no credits).

The gallery catalog is per Mintea user. Pins made before the catalog existed are on Pinata but will not appear in GET /v1/ipfs/files.

TIP

Requires PINATA_JWT on the API. Browser sessions use the mintea_session cookie; scripts use Authorization: Bearer mtk_… / mts_….

MethodPathAuthCreditsDescription
POST/v1/ipfs/pinYes—Pin a single image (multipart field file)
GET/v1/ipfs/filesYes—List your pinned images (cursor, limit, q)

Pin ​

POST /v1/ipfs/pin with multipart/form-data and field file.

Success (catalog write succeeded):

json
{
  "uri": "ipfs://bafy…",
  "cid": "bafy…",
  "id": "clx…",
  "name": "photo.webp",
  "mimeType": "image/webp",
  "sizeBytes": 184320,
  "createdAt": "2026-09-18T19:00:00.000Z"
}

If Pinata succeeds but the catalog write fails, the response is still { "uri", "cid" } so minting is not blocked.

Errors: missing file or invalid type → 400; larger than 5MB → 400; Pinata unset/unavailable → 503.

bash
curl -b cookies.txt -X POST https://api.mintea.tech/v1/ipfs/pin \
  -F 'file=@./cover.png'

List ​

GET /v1/ipfs/files?cursor=&limit=&q=

  • limit: 1–48, default 24
  • cursor: opaque token from the previous page
  • q: optional case-insensitive filter on filename or CID
json
{
  "page": [
    {
      "id": "clx…",
      "cid": "bafy…",
      "uri": "ipfs://bafy…",
      "name": "photo.webp",
      "mimeType": "image/webp",
      "sizeBytes": 184320,
      "createdAt": "2026-09-18T19:00:00.000Z"
    }
  ],
  "nextCursor": null,
  "total": 1
}

Only the authenticated user’s files are returned.