> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shftd2.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Publishers integrate one API: GET https://api.shftd2.com/v1/fragment?partner_id=<account id>&page_url=<page URL>, called from their edge for AI-agent requests only, with the API key in the X-API-Key header, never in the query string.
> A 200 carries the card. A 204 means no card: serve the page unchanged.
> The management API (https://api.shftd2.com/v1/me, /v1/sites, /v1/cards, /v1/keys) is optional tooling for scripting setup. It takes its own management token (Authorization: Bearer ds_mgmt_…). Its limits (120 requests and 60 writes per minute per token) do not apply to the delivery API.
> Delivery logs reach doubleshift only through direct delivery logs (POST https://logs.shftd2.com/v1/beacon with a logs token; the edge library with a logsToken is its provided client, and a custom sender may use the same endpoint) or a Cloudflare Logpush job configured with doubleshift. Otherwise doubleshift sees only its own API activity.

# Reporting

> What the console reporting counts: the calls doubleshift served to AI agents on your pages, by period, site, agent and purpose, fragment, reference and card.

The console's [Reporting](https://app.shftd2.com/reporting) shows the cards doubleshift served on your
pages. It fills up on its own as soon as your edge calls the fragment endpoint: there is nothing to
send.

## What counts

Each call that returns a card (`200`) writes one row: the time, the site, the fragment and its
reference, the card, how the fragment was resolved, the agent and the time the API took. That is a
**served** call.

* A no-fill (`204`) and a refused call (`4xx`, `429`) write no row. The **No fill** figure and the fill
  rate therefore do not measure your no-fills; [Verify and troubleshoot](https://docs.shftd2.com/verify.md) explains a `204`.
* Served means doubleshift produced the card, not that an agent read it or that your edge placed it in
  the page. To check that, see [Verify and troubleshoot](https://docs.shftd2.com/verify.md) and [Delivery logs](https://docs.shftd2.com/delivery-logs.md).
* Demo rows never enter the totals. They are counted apart, with observe-only log rows (**Observed**).

## Periods and filters

Choose **Today** (since 00:00 UTC), **7 days** (the default) or **30 days**, and **All sites** or one
site. The **Last 14 days** chart ignores the period but follows the site filter; its days are UTC days.

## What the reports show

| Report | What it shows |
| - | - |
| Totals | **Delivery attempts**, **Served** with its fill rate, **No fill**. |
| Server processing | Median and 95th percentile of the time the API took to produce a served card, measured inside the API: network time to and from your edge is not included. |
| By agent | Rows per agent family (`openai`, `anthropic`…, or `unidentified`) and purpose: `query` (a user asking now), `search` (an AI search index), `training` (a training crawl), `unknown`. |
| By fragment | Rows per fragment, the 20 largest. |
| By reference | Rows per site and fragment reference, as the reference was at serving time. |
| By resolution | Per site, how the fragment was found; for v1 calls, `rule` (a routing rule) or `default` (the site default). **Top default page keys** lists the sections served by the site default: each is a candidate for a [routing rule](https://docs.shftd2.com/sites.md#default-fragment-and-routing-rules). |
| By card | Served rows per card, the 20 largest. |
| Last 14 days | Rows per day. |

The agent is the one your edge reports in `X-Agent-UA`, else the `agent_ua` query parameter, else the
`User-Agent` of the call ([Choose your edge](https://docs.shftd2.com/integrate.md)); the families and purposes are those of the
[AI agents list](https://docs.shftd2.com/api/agents.md).

Which rows each report reads, when your account has demo or observed rows:

* **By agent**, **By fragment** and **Last 14 days**: every row, demo and observed included.
* **By card**: rows with the served status only, demo included; observed rows never enter it.
* **Delivery attempts**, **Served**, **No fill**, **By reference** and **By resolution**: your edge's
  calls only, without demo or observed rows.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.