# Provider keys

> The provider keys SerpDad needs, the optional connections, how keys are stored and checked, and the spend cap, approval line and low-balance pause that guard your spending.

**In short:** SerpDad runs on your own provider accounts. You need a DataForSEO key and one AI provider key before a run can start. Providers bill you directly at their own prices, and SerpDad adds no markup.

## Why your own keys

A provider key is your own credential for a provider's API. SerpDad uses your key for every provider call it makes for your workspace. It never falls back to a SerpDad key for your work. This means:

- You pay each provider its own price, with no markup.
- You see an estimate before every run and the actual cost after it.
- Data bought with your key stays in your workspace. Other workspaces never read it.

Manage keys in **Workspace > Provider keys**. Only the Owner and Admins can add, replace, check or delete keys.

## Required keys

| Provider | What SerpDad uses it for | What you paste |
|---|---|---|
| DataForSEO | The top 10 Google results and search volumes your plans are built from | API login and API password from DataForSEO's API Access page |
| One AI provider | Reading each search result and writing your briefs and drafts | Provider, API key and model |

A run cannot be approved until both keys pass a live check. The top bar shows a Keys pill, for example "2 of 2 valid".

### Supported AI providers

| Provider | Listed as |
|---|---|
| OpenRouter | Recommended. One key reaches every model SerpDad offers. |
| Anthropic | Under "Other providers" |
| OpenAI | Under "Other providers" |
| Z.AI (GLM) | Under "Other providers" |
| Moonshot (Kimi) | Under "Other providers" |

You pick a model from a fixed list of models SerpDad has tested. There is no custom base address. If a model leaves the list, SerpDad marks the key and pauses runs that need it with a message telling you to pick another model.

## Optional connections

| Connection | What it adds | Where you connect it |
|---|---|---|
| Google Search Console | Your site's clicks, impressions and positions. Read-only: SerpDad never changes anything in Search Console. | **Workspace > Search Console**, per project |
| Ahrefs | Imports keyword ideas or the keywords a site ranks for, from your own Ahrefs account. Needs an Ahrefs API v3 key, which comes with Ahrefs Lite or higher. Ahrefs charges the units to your Ahrefs plan. | **Workspace > Provider keys** |
| Spiral | The voice pass, which rewrites drafts in your voice. Optional. A separate Spiral account is suggested, because a Spiral key opens the whole account. | **Workspace > Provider keys**, then **Voice** |
| Google Sheets | The "Import from Google Sheets" workflow block, on a read-only Google grant | **Workspace > Connections** |

The Image maker workflow block makes article images on your OpenRouter key. See [Jobs and workflows](../workflows/).

## How keys are stored

- Keys are encrypted with a key separate from the rest of the app. Each key is bound to your workspace and provider.
- Keys are write-only. After you save a key, the browser only sees the provider, the last 4 characters, the status, the balance and dates.
- Keys never appear in logs, emails, links or error messages.
- Replacing or deleting a saved key asks for your password again.
- You can save keys up to 10 times an hour, per user and per workspace.
- The Owner gets an email when someone else changes a key.

## How keys are checked

1. When you save a key, SerpDad runs a free or near-free check with the provider. A failed check refuses the save with a fixed message, for example to use the DataForSEO API password and not the dashboard password.
2. If the provider cannot be reached, SerpDad saves the key as "Not checked yet" and tries again.
3. Every saved key is checked again each night.

Key statuses you may see:

| Status | What to do |
|---|---|
| Not checked yet | Wait, or select "Check key again" |
| Working | Nothing |
| Refused by the provider | Copy the key again and save it |
| Out of funds | Add funds at the provider, then check the key again |
| Spend limit reached | Raise the limit at the provider, or wait for it to reset |
| Blocked until checked | Check the key again |
| Paused by SerpDad | SerpDad paused keys for safety. Follow the notice. |

## Spend controls

Set these in **Workspace > Provider keys > Spend cap and approval**. They apply to every project in the workspace.

| Control | Default | What it does |
|---|---|---|
| Monthly spend cap | $50.00 a month (suggested). Leave blank for no cap. | Approval checks the estimate plus this month's spend against the cap. A run that would pass the cap pauses. |
| Owner approval above | $25.00 per run | A run estimated above this waits for an Owner or Admin to approve it. |
| Low-balance pause | DataForSEO balance below $2.00 | The run pauses and asks you to top up. |

Owners and Admins get one email at 50% and one at 90% of the cap each month. Set a spend limit at each provider too, as a second guard.

A paused run waits 72 hours. Fix the key, then select "Check key again" and the run resumes. It fetches only what is still missing, so nothing is paid twice. If nobody fixes it in 72 hours, the run fails cleanly and your old plan stays live.

## Typical cost per 1,000 keywords

These are SerpDad's estimates from provider price pages checked on 2026-10-16. They are not yet measured on live keys. Your cost gate always shows the estimate for your own run and accounts.

| Line | Provider | Estimate per 1,000 keywords |
|---|---|---|
| Top 10 results | DataForSEO | $0.60 standard, $1.20 priority |
| Search volume | DataForSEO | $0.06 |
| Secondary keywords, 20 per page | DataForSEO | about $2.16; $0 when off |
| Page classification | AI provider | $0.75 to $5.00 |
| 5 automatic briefs | AI provider | about $0.35 (about $0.07 each) |
| **Total with 5 briefs** | | **about $3.95 to $8.15** |

Results SerpDad already fetched in your workspace in the last 30 days are reused at no cost.

## Related

- [Quickstart](../quickstart/)
- [Run a plan](../run-a-plan/)
- [Billing](../billing/)
- [Workspace and team](../workspace-and-team/)
- [Measure](../measure/)
