From perplexity-pack
Installs OpenAI client and configures Perplexity Sonar API authentication for Node.js or Python. Provides env setup and verification scripts.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin perplexity-packThis skill is limited to using the following tools:
Set up Perplexity Sonar API access using the OpenAI-compatible chat completions endpoint at `https://api.perplexity.ai`. Perplexity does not have a custom SDK -- you use the standard OpenAI client library pointed at Perplexity's base URL.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Set up Perplexity Sonar API access using the OpenAI-compatible chat completions endpoint at https://api.perplexity.ai. Perplexity does not have a custom SDK -- you use the standard OpenAI client library pointed at Perplexity's base URL.
set -euo pipefail
# Node.js / TypeScript
npm install openai
# Python
pip install openai
There is no @perplexity/sdk package. Perplexity uses the OpenAI wire format, so you use the official openai package with a custom baseURL.
# Set environment variable
export PERPLEXITY_API_KEY="pplx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# Or create .env file (add .env to .gitignore)
echo 'PERPLEXITY_API_KEY=pplx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' >> .env
API keys start with pplx- and are generated at perplexity.ai/settings/api. You must add credits to your account before making API calls.
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.PERPLEXITY_API_KEY,
baseURL: "https://api.perplexity.ai",
});
async function verify() {
const response = await client.chat.completions.create({
model: "sonar",
messages: [{ role: "user", content: "What is 2+2?" }],
max_tokens: 50,
});
console.log("Connected:", response.choices[0].message.content);
console.log("Model:", response.model);
console.log("Tokens used:", response.usage?.total_tokens);
}
verify().catch(console.error);
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["PERPLEXITY_API_KEY"],
base_url="https://api.perplexity.ai",
)
response = client.chat.completions.create(
model="sonar",
messages=[{"role": "user", "content": "What is 2+2?"}],
max_tokens=50,
)
print("Connected:", response.choices[0].message.content)
print("Model:", response.model)
print("Tokens:", response.usage.total_tokens)
| Model | Use Case | Input $/M tokens | Output $/M tokens |
|---|---|---|---|
sonar | Fast search, simple queries | $1 | $1 |
sonar-pro | Deep research, more citations | $3 | $15 |
sonar-reasoning-pro | Chain-of-thought with search | $3 | $15 |
sonar-deep-research | Multi-step research synthesis | $2 | $8 |
| Error | Cause | Solution |
|---|---|---|
401 Unauthorized | Invalid or missing API key | Verify key starts with pplx- and has credits |
403 Forbidden | Key lacks model access | Check key permissions at perplexity.ai/settings |
Module not found: openai | SDK not installed | Run npm install openai or pip install openai |
Connection refused | Wrong base URL | Ensure baseURL is https://api.perplexity.ai |
After successful auth, proceed to perplexity-hello-world for your first search query.