Install the SDKs, step by step
Install the plycdn packages with the tool you already use: npm, NuGet or pip. There is nothing to download by hand. This page takes you from the one-time setup to checking it worked and keeping the packages up to date. The packages and what they do are in the platform guides: ASP.NET Core, Node.js, Python, Angular and React.
You need: a plycdn account, and npm, the .NET SDK or pip on the machine that builds your application. No API key is needed to install; the packages are for use with a plycdn account under the plycdn Terms of Use: https://plycdn.com/terms.
1How it works
- Set up once. You tell your tool that plycdn's own packages come from the plycdn feed, and everything else from the public registry.
- Install with your tool's usual command.
- Upgrade with your tool's usual command. Every version from Content Search 1.31.0 and Storage & video 1.22.0 onward is on the feeds. Earlier versions are not; they stay available as downloads in the dashboard under Developers → SDKs.
The same page in the dashboard, Developers → SDKs, shows the install command for each language with a Copy button, and the one-time setup under Set up once. The file download beside it is the alternative for machines that cannot reach the feeds.
| You build with | Packages |
|---|---|
| Node.js | @plycdn/node (storage, delivery, video), @plycdn/content-search-node (Content Search) |
| Angular | @plycdn/angular, @plycdn/content-search |
| React | @plycdn/react, @plycdn/content-search-react |
| ASP.NET Core | Plycdn.AspNetCore.Storage, Plycdn.AspNetCore.Video, Plycdn.AspNetCore.Storage.S3, Plycdn.AspNetCore.Storage.AzureBlob, Plycdn.ContentSearch.AspNetCore |
| Python | plycdn (storage, delivery, video), plycdn-content-search (Content Search) |
2Node.js, Angular and React (npm)
Set up once. Create a file named .npmrc beside your package.json with this line, and commit it so your colleagues and CI need no setup:
@plycdn:registry=https://npm.plycdn.com/
Yarn 2 or later does not read .npmrc. Put this in .yarnrc.yml beside your package.json instead, and commit it:
npmScopes:
plycdn:
npmRegistryServer: "https://npm.plycdn.com/"
Then use yarn add in place of npm install. npm, pnpm and Yarn 1 read the .npmrc line.
Install.
npm install @plycdn/node
npm install @plycdn/content-search-node
npm install @plycdn/angular @plycdn/content-search # Angular
npm install @plycdn/react @plycdn/content-search-react # React
Install only what you use. Everything that is not an @plycdn package still comes from the public npm registry.
Check it worked.
npm view @plycdn/node versions
This lists the versions on the feed. In a project, npm ls @plycdn/node shows the one installed.
Upgrade.
npm update @plycdn/node
3ASP.NET Core (NuGet)
Set up once. Create a file named nuget.config beside your solution (.sln). The packageSourceMapping part sends every Plycdn.* package to the plycdn feed and everything else to nuget.org. Commit the file.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="plycdn" value="https://nuget.plycdn.com/v3/index.json" />
</packageSources>
<packageSourceMapping>
<packageSource key="plycdn"><package pattern="Plycdn.*" /></packageSource>
<packageSource key="nuget.org"><package pattern="*" /></packageSource>
</packageSourceMapping>
</configuration>
Install.
dotnet add package Plycdn.AspNetCore.Storage
dotnet add package Plycdn.AspNetCore.Video # only if you use video
dotnet add package Plycdn.AspNetCore.Storage.S3 # an S3 client for plycdn storage
dotnet add package Plycdn.AspNetCore.Storage.AzureBlob
dotnet add package Plycdn.ContentSearch.AspNetCore # Content Search
Plycdn.AspNetCore.Video builds on Plycdn.AspNetCore.Storage; both come from the plycdn feed.
For CI, use a lock file. Add <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile> to a <PropertyGroup> in your project file, run dotnet restore once, and commit the packages.lock.json it writes. In CI, run dotnet restore --locked-mode. The restore then fails if a package's contents differ from the ones you locked.
Check it worked.
dotnet package search Plycdn --source https://nuget.plycdn.com/v3/index.json
On an older .NET SDK, use dotnet nuget list source to confirm the plycdn source is listed. Then dotnet list package shows what your project uses.
Upgrade.
dotnet list package --outdated
dotnet add package Plycdn.AspNetCore.Storage # takes the newest version
4Python (pip)
Install. Point pip at the plycdn index with --index-url. That is the only index you need: other packages your install needs, such as httpx, still come from the public index automatically.
pip install plycdn --index-url https://pypi.plycdn.com/simple/
pip install plycdn-content-search --index-url https://pypi.plycdn.com/simple/
Add the extras your application needs in quotes, for example "plycdn[fastapi,s3,azure]".
For a project, put the index line at the top of requirements.txt, so a plain pip install -r requirements.txt works for everyone:
--index-url https://pypi.plycdn.com/simple/
plycdn[fastapi,s3,azure]
plycdn-content-search[fastapi]
Check it worked.
pip index versions plycdn --index-url https://pypi.plycdn.com/simple/
Upgrade.
pip install -U plycdn --index-url https://pypi.plycdn.com/simple/
5Pin a version
Pin when a build must not change by itself (put the version you want in place of VERSION): npm install @plycdn/node@VERSION, dotnet add package Plycdn.AspNetCore.Storage --version VERSION, or plycdn==VERSION in requirements.txt. A published version never changes, so a pinned install gives the same package every time. Commit your lockfile too.
6Install from a file instead
If a machine cannot reach the feeds, open Developers → SDKs in the dashboard, download the zip for your language and its checksum, and follow the platform guide's "or download" step. This is also where versions older than the feeds' first ones are.
7Check it works
- The version-listing command for your tool prints versions (above).
- The install finishes without an error, and the package appears in your lockfile or project file.
- Your application builds and starts, and one call you already make (for example listing your buckets) succeeds with your API key.
8Questions and problems
| You see | Cause and fix |
|---|---|
npm: 404 Not Found - GET https://registry.npmjs.org/@plycdn%2fnode |
The .npmrc line is missing or not read. Put @plycdn:registry=https://npm.plycdn.com/ in the .npmrc beside package.json, run from that folder, and check with npm config get @plycdn:registry. |
NuGet: Unable to find package Plycdn.AspNetCore.Storage or NU1101 |
The source or its mapping is missing. Check nuget.config is beside your solution, has the plycdn source and the Plycdn.* mapping, and that * is mapped to nuget.org so other packages still restore. |
pip: No matching distribution found for plycdn |
Point pip at the plycdn index: add --index-url https://pypi.plycdn.com/simple/. If the error is about a version, you asked for one older than the feed's first (Content Search 1.31.0, Storage & video 1.22.0); download that one from Developers → SDKs. |
| The install hangs or fails with a connection error | A corporate proxy or firewall is blocking npm.plycdn.com, nuget.plycdn.com or pypi.plycdn.com on port 443. Ask your network team to allow the host, or install from the downloaded file. |
| The feed answers but a package file does not download | The file is served through a short-lived link, so a proxy that rewrites or caches redirects can break it. Allow the host without inspection, or retry; a repeat is safe. |
| A version you expect is not listed | Only versions from Content Search 1.31.0 and Storage & video 1.22.0 onward are on the feeds. Older ones are downloads under Developers → SDKs. |
Still stuck? Send the exact command and its full output to your plycdn contact.