Every priority fix returned by the audit API now includes two extra fields: plain_english, one sentence with no jargon, and who_fixes_it, which is developer, content or marketing. Agencies can put the output in front of a client without rewriting it first.

The problem this solves

An audit is written for whoever will make the change. "Add a <link rel="canonical"> tag" is a clear instruction to a developer and means nothing to the person paying the invoice. Agencies end up translating every finding by hand before a report goes out, and that translation is the slowest part of producing one.

What the fields look like

Each item in priorities keeps its existing issue and fix text and gains the two new fields:

{
  "severity": "high",
  "category": "meta",
  "issue": "Missing meta description",
  "fix": "Add a <meta name=\"description\"> tag of 120-160 characters",
  "plain_english": "The page has no summary for search results, so Google picks a random snippet that may not make people click.",
  "who_fixes_it": "content"
}

The technical text is still there for the person doing the work. The plain sentence is there for the person approving it.

Three ways agencies use it

Client reports. Lead with plain_english, and put fix underneath in smaller type. The client reads the top line and the developer reads the second.

Splitting the work. Group the list by who_fixes_it and you have three task lists: one for the developer, one for whoever writes the copy, and one for marketing. A report becomes a set of assignments.

Quoting. Developer items are usually billable hours. Content items are often something the client can do themselves. Sorting by owner shows which is which before you write the estimate.

It is not written by a model

The sentences come from fixed templates, one per check. The same audit always produces the same sentence, and a sentence can only reuse numbers that are already in the finding, such as a word count or the number of images missing alt text. Nothing is invented about the site, which matters when the text is going to a client under your name.

Where it shows up

  • GET /audit and batch audits, on every item in priorities
  • GET /geo/audit, on the AI-readability recommendations
  • Hosted reports at /report/yourdomain.com
  • PDF, Markdown and CSV exports, including white-label reports on Pro and Ultra

The fields are additive. Existing keys are unchanged, so code that ignores unknown keys keeps working. The Python and Node SDKs, the n8n node and the MCP server all pass them through.

Try it

curl "https://seoscoreapi.com/audit?url=https://example.com" \
  -H "X-API-Key: YOUR_KEY" | jq '.priorities[] | {plain_english, who_fixes_it}'

The free tier includes two audits a day. Paid plans start at $5 a month, and the agencies page covers the reporting features in more detail.

Frequently asked questions

Do I need to change my integration?

No. The two fields are added to each priority. Nothing else in the response changed.

Which plans include the fields?

All of them, including the free tier.

Can I edit the wording?

The API returns the standard sentence. Your own report template can show it, change it or leave it out.