---
title: "Get E-E-A-T analysis results"
method: GET
path: "/api/v1/eeat"
tags: ["v1", "In-guide features"]
---

# Get E-E-A-T analysis results

`GET /api/v1/eeat`

## Request

- Base URL: `https://app.serpmantics.com` (the document declares no server; this is the origin it was published from)
- URL: `https://app.serpmantics.com/api/v1/eeat`
- Auth: HTTP bearer

Retrieves the result of an E-E-A-T analysis.

`guideId` is **always required**: access is granted on the guide, so a request without it
is answered with `404 Guide not found`. `eeatId` is an optional filter on top of it: pass it
to fetch one specific analysis of that guide, omit it to fetch the latest one.
An `eeatId` that does not belong to `guideId` is answered with `404`, never with the
other account's data.

Poll this endpoint until `status` is `done` (results available) or `failed`.

## Query parameters

- `guideId` string, required
- `eeatId` string

## Response `200`

Analysis successfully retrieved

- object
  - `success` boolean
  - `data` object
    - `status` 'none' | 'pending' | 'started' | 'analyzing' | 'done' | 'failed': Status of the analysis
    - `article_context` object: Detected context of the analyzed article (only when status is `done`). Note the snake_case, here and in `primary_purpose`: this handler serves the backend body verbatim (`data: served`), and the backend builds it with `to_dict()`, which emits the dataclass field names. It is documented as it is actually served, not as it reads best.
      - `type` string
      - `niche` string
      - `primary_purpose` string
    - `article` object: Scores of the analyzed article (only when status is `done`)
      - `scores` object: Individual E-E-A-T scores (each between 0 and 10)
        - `experience` number
        - `expertise` number
        - `authoritativeness` number
        - `trustworthiness` number
      - `overall` number: Overall E-E-A-T score (between 0 and 10)
    - `analysis` object: Detailed assessment per dimension (only when status is `done`)
      - `experience` object
        - `assessment` string
      - `expertise` object
        - `assessment` string
      - `authoritativeness` object
        - `assessment` string
      - `trustworthiness` object
        - `assessment` string
    - `summary` object[]: List of strengths identified in the article (only when status is `done`)
      - `title` string
      - `detail` string
    - `suggestions` string[]: List of suggestions to improve the article (only when status is `done`)

## Other responses

- `401`: Unauthorized - Invalid API key or user doesn't have access to the guide
- `404`: Guide not found (including when `guideId` is missing or malformed), or the requested `eeatId` is unknown, or malformed, or it does not belong to the guide given in `guideId`. The three `eeatId` cases are deliberately indistinguishable, same status and same body `{ success: false, error: "EEAT audit not found" }`: telling them apart would confirm the existence of someone else's analysis.
- `410`: Guide expired. Guides are locked 180 days after their creation, because the Google results they are built on are no longer representative. The body is `{ success: false, error: "Guide expired", expiresAt: "<ISO 8601 expiry date>" }`. Definitive: do not retry, create a new guide on the same keyword. No token is consumed by this refusal.
- `500`: Internal server error

---

[API](https://skmtc.dev/serpmantics/apis/api-serpmantics.md) · [All operations](https://skmtc.dev/serpmantics/apis/api-serpmantics/llms.txt) · [OpenAPI document](https://skmtc.dev/serpmantics/apis/api-serpmantics/revisions/e71b28ef35a8?raw)
