---
title: "Read link counts per website"
method: POST
path: "/v1/commands/get_link_summary"
tags: ["Reports and exports"]
---

# Read link counts per website

`POST /v1/commands/get_link_summary`

## Request

- Base URL: `https://app.agentlinkops.com`
- URL: `https://app.agentlinkops.com/v1/commands/get_link_summary`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Shared command transport. All logical arguments in JSON; no query or Idempotency-Key header. See canonical operation reference.

## Headers

- `X-Workspace-ID` string

## Request body

- GetLinkSummaryInput
  - `projectId` string: project ID from create/list.
  - `days` integer

## Response `200`

Command result, including queued admission.

- GetLinkSummaryOutput
  - `schema_version` 1, required
  - `workspace_id` string, required: Workspace that owns this record.
  - `project_id` string, nullable, required: Project that owns this record.
  - `as_of` string, required
  - `period` object, required
    - `days` integer, required
    - `from` string, required
    - `to` string, required
  - `totals` object, required
    - `prospect` integer
    - `by_intent` object
    - `by_outreach_status` object
    - `links` integer, required
    - `live` integer, required
    - `missing` integer, required
    - `couldnt_check` integer, required
    - `paused` integer, required
    - `not_checked_yet` integer, required
    - `last_checked_at` string, nullable, required: Oldest recorded latest attempt among active watches in the selected scope; null when none has an attempt. Never-checked and paused watches do not contribute. This includes inconclusive attempts and does not establish presence.
    - `latest_check_at` string, nullable: Newest recorded attempt among active watches in the selected scope; null when none has an attempt. Never-checked and paused watches do not contribute. This includes inconclusive attempts and does not establish presence.
    - `found` integer, nullable, required
    - `back` integer, nullable
    - `lost` integer, nullable, required
    - `went_missing` integer, nullable: Count of retained events classified as missing in the selected UTC period, separate from placement-lost events. Null without events:read; read changes_complete for retention and scan limits.
  - `websites` object[], required
    - `project_id` string, required: Project that owns this record.
    - `domain` string, nullable, required
    - `name` string, nullable, required
    - `prospect` integer
    - `by_intent` object
    - `by_outreach_status` object
    - `links` integer, required
    - `live` integer, required
    - `missing` integer, required
    - `couldnt_check` integer, required
    - `paused` integer, required
    - `not_checked_yet` integer, required
    - `last_checked_at` string, nullable, required: Oldest recorded latest attempt among active watches in the selected scope; null when none has an attempt. Never-checked and paused watches do not contribute. This includes inconclusive attempts and does not establish presence.
    - `latest_check_at` string, nullable: Newest recorded attempt among active watches in the selected scope; null when none has an attempt. Never-checked and paused watches do not contribute. This includes inconclusive attempts and does not establish presence.
    - `found` integer, nullable, required
    - `back` integer, nullable
    - `lost` integer, nullable, required
    - `went_missing` integer, nullable: Count of retained events classified as missing in the selected UTC period, separate from placement-lost events. Null without events:read; read changes_complete for retention and scan limits.
  - `websites_truncated` boolean, required
  - `daily` object[], nullable, required
    - `day` string, required
    - `found` integer, required
    - `back` integer
    - `lost` integer, required
    - `went_missing` integer: Count of retained events classified as missing on this UTC day, separate from placement-lost events. This field applies when the daily array exists; read changes_complete for retention and scan limits.
  - `changes_complete` boolean, nullable, required
  - `statuses` string[], required

## Other responses

- `429`: Request-rate or usage refusal. Inspect error.code and recovery details before retrying.
- `default`: Error envelope. Non-configuration 5xx messages are masked and details omitted; allowlisted configuration errors retain static operator recovery.

## Changes

- **2026-10-20** `1bf30c2912b2`: 6 info
  - added the optional property `totals/by_intent` to the response with the `200` status
  - added the optional property `totals/by_outreach_status` to the response with the `200` status
  - added the optional property `totals/prospect` to the response with the `200` status
  - added the optional property `websites/items/by_intent` to the response with the `200` status
  - …2 more

[Operation history](https://skmtc.dev/agentlinkops/apis/agentlinkops-http-api/changes/v1/commands/get_link_summary/post.md)

---

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