Skip to content

API keys

SeoFreshUp uses your own API keys for all third-party services. Here’s a complete list of which keys do what, where to get them, and which are mandatory vs optional.

Mandatory

KeyPurposeWhere to getFree tier
OpenRouter API keyAll AI features (audit, rewrite, image gen)openrouter.ai/keysPay-as-you-go, $5 minimum top-up

Without OpenRouter, no AI feature works. The plugin will show clear error messages telling you to configure it.

KeyPurposeWhere to getFree tier
Firecrawl API keyScrape external URLs for “info-card” enrichment during rewritefirecrawl.dev500 scrapes/month free
Google Safe Browsing keyDetect malware/phishing in outbound linksconsole.cloud.google.com10k req/day free

Without Firecrawl, the URL enrichment feature in the rewrite modal is hidden (other features still work).

Optional (extra threat detection)

KeyPurposeWhere to getFree tier
VirusTotalCross-check outbound URLs against 70+ AV enginesvirustotal.com4 req/min free
PhishTankVerified phishing listphishtank.comFree
URLhaus auth keyHigher rate limits on malware detectionauth.abuse.chFree
Cloudflare token + account ID(planned) Cloudflare Workers AI integrationdash.cloudflare.com

Without these, the outbound link scan still works using public endpoints (Sucuri SiteCheck, URLhaus anonymous, HTTP HEAD).

Configuration screen

In the WordPress admin: 🌿 SeoFreshUp → Settings → API Keys & Models

Each key has:

  • Password input with 👁 Show/hide toggle
  • 🔌 Test the key button (calls a free endpoint to verify the key is valid)
  • Inline help text with a link to the provider’s signup page

Storage

All keys are stored in the wp_options table:

Option nameKey
lws_audit_openrouter_keyOpenRouter
lws_audit_firecrawl_keyFirecrawl
lws_audit_google_safebrowsing_keySafe Browsing
lws_audit_virustotal_keyVirusTotal
lws_audit_phishtank_keyPhishTank
lws_audit_urlhaus_keyURLhaus
lws_audit_cloudflare_tokenCloudflare token
lws_audit_cloudflare_accountCloudflare account

Stored as plain text (not encrypted). For maximum security, ensure your WP database is encrypted at rest (most managed hosting does this — LWS, Kinsta, WP Engine, etc.).

Testing all keys at once

The Settings → Requirements sub-tab runs a connectivity test for OpenRouter + Firecrawl + Google (every 5 min, cached). Green = working, red = blocked. See Troubleshooting → Connectivity if anything is red.

Rotating keys

If you suspect a key was leaked:

  1. Go to the provider’s dashboard, revoke the old key, create a new one
  2. Paste the new key in Settings → API Keys & Models
  3. Save
  4. Old key stops working immediately on the provider’s side

What’s next?