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 failedCheck 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"]);