Getting started

SEODiff scans public URLs, groups findings by template, and returns deterministic pass/fail signals for CI and monitoring.

Quick path (5 steps)

  1. Create/sign in to your account at /app.
  2. Create an API key in the dashboard account area.
  3. Run POST /api/v1/validate against a public preview URL.
  4. Use the returned report_url to review findings.
  5. Add the same call to CI for every PR.

1) Requirements

2) Authentication header

Most API endpoints use Bearer auth:

Authorization: Bearer <api_key>

3) Run your first validation scan

POST /api/v1/validate is the easiest endpoint to automate: it can wait for completion and returns a pass/fail decision plus artifact links.

curl -sS -X POST "https://api.seodiff.io/api/v1/validate" \
  -H "Authorization: Bearer $SEODIFF_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "base_url": "https://preview.example.com",
    "preset": "fast",
    "fail_on": "fetch_errors,non200_status,schema_missing_required,placeholder_hits",
    "max_issue_rate": 10,
    "wait": true,
    "timeout_seconds": 180
  }'

Response fields to check first

Tip: use the report jump links

The HTML report includes jump links/TOC so you can quickly find key sections like template drift, issue deltas, and (when JS rendering is available) JS vs HTML and hydration drift.

4) Add CI/CD

Most teams scan preview deployments on every PR. Start with the workflow in CI/CD docs.

5) Add monitoring (optional but recommended)

Monitoring runs scheduled scans on production and creates incidents when drift/regressions appear. Start in dashboard or API. See Monitoring docs.

Common issues

Public URL requirement

SEODiff must be able to fetch the URL directly. For pull requests, preview deployments are recommended so humans and automation review the same URL.

Next