Skip to main content
Every request to the SnowSEO API must be authenticated with an API key. There’s no OAuth flow — just include your key and you’re good to go.

Quick Start

If you already have an API key, here’s the fastest way to make a request:
Replace YOUR_API_KEY with your actual key (starts with sk_). That’s it — no other headers needed.

Creating an API Key

1

Go to the API settings page

In the SnowSEO dashboard, navigate to Settings → Integrations → API.
2

Create a new key

Click Create new key. Give it a descriptive name so you remember what it’s for — e.g., Production Server, CI/CD Pipeline, or Analytics Dashboard.
3

Copy and store the key immediately

The full key is shown only once after creation. Copy it right away and store it in a secure location.
If you lose the key, there’s no way to retrieve it. Delete it and create a new one.

Making Your First Request

Here’s a complete example showing how to call the API from different environments:
Always check response.ok or response.status before trying to parse the JSON. The API returns detailed error objects that are easy to miss if you assume every response is valid.

Key Scopes & Permissions

Each API key is scoped to a single brand (team) within your organization. The key automatically carries your organization and brand context — you don’t need to pass teamId separately.
A single organization can have multiple brands (teams). If you need to access data from multiple brands, create a separate API key for each one.

Common Integration Patterns

Serverless Functions (Vercel, Netlify, etc.)

Webhook Handler (Receiving Data)

If you’re building an integration that receives webhooks from SnowSEO (e.g., article published events), validate the Authorization header:

Automated Reporting Script


Error Handling

The API returns structured error responses. Here’s how to handle them properly:

Error Reference

The API does not use machine-readable error codes. The error field always holds a human-readable message (e.g. "teamId is required", "Team not found", "Rate limit exceeded."). Branch on the HTTP status code, and surface error / message to the user.

Security Best Practices

Never expose your API key in frontend code, public repositories, or logs. Anyone with your key can access your SnowSEO data.
Always store your key in an environment variable, never hardcoded:
Add your .env file to .gitignore:
For GitHub, use Secrets (Settings → Secrets and variables → Actions) to store API keys for CI/CD pipelines.
Create different API keys for development, staging, and production:
  • MyApp-Dev
  • MyApp-Staging
  • MyApp-Production
This way you can revoke a compromised key without affecting other environments.
Rotate your API keys every 90 days or immediately if you suspect compromise:
  1. Create a new key in the dashboard
  2. Update your environment variable
  3. Deploy and verify it works
  4. Delete the old key
This gives you zero downtime while staying secure.
If you’re receiving webhooks from SnowSEO, always validate the Authorization header against your stored secret:

Rate Limits & Retries

Limits vary by endpoint — up to 60 requests per minute per endpoint, while heavier endpoints may have stricter caps. If you exceed the limit, you’ll get a 429 response:

Implementing Retry Logic


Quick Test

Verify your key works with a simple request:
Expected response (200 OK):
If you get 401 Unauthorized, double-check:
  1. The key is correctly set in your environment variable
  2. You’re using Bearer (with the space) before the key
  3. The key hasn’t been deleted from the dashboard