---
title: "Get a post's authenticity score"
method: GET
path: "/v1/posts/{postId}/authenticity"
tags: ["Analytics"]
---

# Get a post's authenticity score

`GET /v1/posts/{postId}/authenticity`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/posts/{postId}/authenticity`
- Auth: HTTP bearer

Returns Zernio's authenticity score for a post: an integer from 0 to 100 where higher means the view pattern looks more like organic viewing.

The score is ours. It is computed only from the verified samples we fetched from the platform, never from anything the creator or caller reported.

- `reasons` lists each factor that lowered it with its weight in points.
- `confidence` (0 to 1) says how much data the score rests on.

A stored score newer than 30 minutes is returned as is, otherwise it is recomputed. The `post.authenticity_changed` webhook fires when a score crosses 40.

## Path parameters

- `postId` string, required

## Response `200`

The post's authenticity score

- PostAuthenticity
  - `postId` string, required: The external post the score belongs to
  - `score` integer, required: Higher means the view pattern looks more organic
  - `confidence` number, required: How much data the score rests on
  - `reasons` object[], required: Each factor that lowered the score, with its weight in points
    - `code` 'late_block' | 'flat_engagement' | 'view_follower_gap' | 'cap_seeking' | 'prior_flags' | 'no_watch_signal', required
    - `weight` number, required: Points taken off 100. Zero for no_watch_signal, which only lowers confidence.
  - `version` string, required: Scoring model version
  - `computedAt` string, date-time, required
  - `sampleCount` integer, required: Number of samples the score was computed from

## Other responses

- `401`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `402`: Analytics access required. Legacy plans need the Analytics add-on; included by default on usage-based plans.
- `403`: API key scope violation
- `404`: Post not found

## Changes

- **2026-10-28** `8f2c44dd7550`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/posts/:postId/authenticity/get.md)

---

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