Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Pin Management

Manage content pins using the Pinner SDK.

Pin by CID

Basic Upload Pattern

import { Pinner } from "@lumeweb/pinner"; const pinner = new Pinner({ jwt: "YOUR_API_TOKEN" }); const file = new File(["Hello, Pinner!"], "hello.txt", { type: "text/plain" }); const result = await pinner.uploadAndWait(file); console.log("CID:", result.cid); console.log("Name:", result.name); console.log("Size:", result.size, "bytes");

List Pins

const pins = await pinner.listPins(); for (const pin of pins) { console.log(pin.cid, pin.status); }

Get Pin Status

Checking Pin Status

import { Pinner } from "@lumeweb/pinner"; const pinner = new Pinner({ jwt: "YOUR_API_TOKEN" }); const status = await pinner.getPinStatus("bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq"); console.log("Status:", status.status); // pinned, pinning, pending, or failed

Check if Content is Pinned

const isPinned = await pinner.isPinned("bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq"); console.log("Is pinned:", isPinned);

Update Metadata

await pinner.setPinMetadata("bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq", { name: "updated-name", customKey: "custom-value" });

Unpin

await pinner.unpin("bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq");

Unpin by Request ID

Remove a pin using a known request ID. The request ID (requestid) is the pinning service's identifier for a specific pin operation:

import { Pinner } from "@lumeweb/pinner"; const pinner = new Pinner({ jwt: "YOUR_API_TOKEN" }); // Unpin using a known request ID (obtained from your pinning service) await pinner.unpinByRequestId("your-request-id-here");

Using with Pinata Adapter

If you're using the Pinata adapter, you can delete pins by CID directly:

import { pinataAdapter } from "@lumeweb/pinner";
 
const adapter = pinataAdapter(pinner, {
  pinataGateway: "example.mypinata.cloud"
});
 
// Delete by CID (adapter handles request ID internally)
await adapter.files.public.delete(["bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq"]);