Quickstart
Start uploading and retrieving content in no time
Getting Started with Pinata
Whether you’re brand new or a seasoned developer, Pinata makes it simple to store and retrieve content with speed and security. All you need to kick off your journey is a free Pinata account!
Looking for our Web3 tools? You can find them here!
1. Get API key and Gateway URL
Inside the Pinata App select “API Keys” from the sidebar, then click “New Key” in the top right. We would recommend starting with Admin privileges and unlimited uses to start. You will receive a pinata_api_key
, pinata_api_secret
, and a JWT
. The JWT is the most common authentication method and what we’ll be using below.
Next you will want to grab your Gateway domain by clicking the Gateways tab in the sidebar. You should see it listed in the format fun-llama-300.mypinata.cloud
and you will want to copy it exactly like that.
2. Install and Setup SDK
In the root of your project run the install command with your package manager of choice.
Import and initialize the SDK in your codebase with the API key and Gateway from the previous step
import { PinataSDK } from "pinata";
const pinata = new PinataSDK({
pinataJwt: "PINATA_JWT",
pinataGateway: "example-gateway.mypinata.cloud",
});
PINATA_JWT
is a secret key, be sure to initialize the SDK in a secure environment and practice basic variable security practices. If you need to upload from a client environment, consider using signed JWTs2. Upload a File
Use the upload
method to upload a File object.
You should get a response object like the one below
{
id: "349f1bb2-5d59-4cab-9966-e94c028a05b7",
name: "file.txt",
cid: "bafybeihgxdzljxb26q6nf3r3eifqeedsvt2eubqtskghpme66cgjyw4fra",
size: 4682779,
number_of_files: 1,
mime_type: "text/plain",
user_id: "7a484d2c-4219-4f80-9d9d-86b42461e71a",
group_id: null
}
The unique thing about Pinata’s File API is the CID or Content Identifier. Its a unique hash based on the content ofthe file.
3. Retrieve a File through a Gateway
Use the cid
of a file to fetch it through a Gateway, or create a signed URL.
import { PinataSDK } from "pinata";
const pinata = new PinataSDK({
pinataJwt: process.env.PINATA_JWT!,
pinataGateway: "example-gateway.mypinata.cloud",
});
async function main() {
try {
const data = await pinata.gateways.get("bafkreibm6jg3ux5qumhcn2b3flc3tyu6dmlb4xa7u5bf44yegnrjhc4yeq");
console.log(data)
const url = await pinata.gateways.createSignedURL({
cid: "bafkreib4pqtikzdjlj4zigobmd63lig7u6oxlug24snlr6atjlmlza45dq",
expires: 1800,
})
console.log(url)
} catch (error) {
console.log(error);
}
}
main();
What’s Next?
Ready to see more of what Pinata has to offer? Here are some additional features and concepts to help you get the most out of our platform:
Groups
With Groups, you can organize your files via the Pinata API or the web app. Create a Group, store your IPFS content, and fetch content quickly and easily.
Workspaces
Workspaces allow you to add multiple team members to your Pinata account and collaborate seamlessly. Even if your team members don’t have a Pinata account, you can invite them easily. This feature is essential for efficient project collaboration and management.