---
title: "Weekly digest, formatted"
method: GET
path: "/api/digest/weekly"
---

# Weekly digest, formatted

`GET /api/digest/weekly`

## Request

- Base URL: `https://agentdeals.dev`
- URL: `https://agentdeals.dev/api/digest/weekly`
- Auth: none required

One week of tracked changes, rendered. format=json returns the digest as data with the markdown and HTML renderings alongside it; format=markdown and format=html return that rendering as the body, so only format=json carries a citation block.

## Query parameters

- `format` 'json' | 'markdown' | 'html'
- `limit` integer
- `weeks_ago` integer

## Response `200`

The week's digest in the requested rendering

- object
  - `week_of` string, date
  - `week_ending` string, date
  - `total_changes` integer: Every change we hold, not only this week's.
  - `changes_in_week` integer: Changes the vendor made within the week.
  - `discovered_in_week` integer: Changes recorded within the week, whatever date they carry. A change dated earlier that we found this week is counted here and not in changes_in_week.
  - `summary` object: Counts by change type for the week.
  - `headline` string
  - `top_changes` DealChange[]
    - `vendor` string, required
    - `change_type` 'free_tier_removed' | 'open_source_killed' | 'product_deprecated' | 'limits_reduced' | 'restriction' | 'pricing_restructured' | 'pricing_model_change' | 'limits_increased' | 'new_free_tier' | 'new_tier' | 'startup_program_expanded' | 'pricing_postponed' | 'rebranded' | 'record_corrected', required
    - `reports` 'vendor_offer' | 'our_index': What the record is about. 'vendor_offer' — the vendor changed its own offer, and a vendor page is where that can be read. 'our_index' — we changed what we list while the vendor's offer stood still, so no vendor page evidences it and the record carries no source_url. Absent means vendor_offer. Filter these out of any figure you present as vendor market activity.
    - `date` string, date, required
    - `summary` string, required
    - `previous_state` string, required
    - `current_state` string, required
    - `tier_direction` 'narrowed' | 'unchanged' | 'widened': Whether the tier we list is worse, the same, or better under current_state than it was under previous_state, judged with both in hand rather than read off change_type. Where it says the tier did not get worse we publish the record and take no risk verdict from it. Absent means we have not judged this record.
    - `impact` 'high' | 'medium' | 'low', required
    - `source_url` string, uri, required
    - `category` string, required
    - `alternatives` string[], required
    - `resolution` ChangeResolution, nullable: Present when the change this record describes is no longer in force. state is 'reversed' when the vendor ended it and 'retracted' when the record was our error. date is the day from which it stopped being in force, or the day we established that, whichever we can source. resolved_by names the change record that ended it, when one exists. A record carrying this field never rates the vendor.
      - `state` 'reversed' | 'retracted', required
      - `date` string, date, required
      - `detail` string
      - `source_url` string, uri
      - `resolved_by` object
        - `vendor` string
        - `date` string, date
        - `change_type` string
  - `discovered_changes` DealChange[]
    - `vendor` string, required
    - `change_type` 'free_tier_removed' | 'open_source_killed' | 'product_deprecated' | 'limits_reduced' | 'restriction' | 'pricing_restructured' | 'pricing_model_change' | 'limits_increased' | 'new_free_tier' | 'new_tier' | 'startup_program_expanded' | 'pricing_postponed' | 'rebranded' | 'record_corrected', required
    - `reports` 'vendor_offer' | 'our_index': What the record is about. 'vendor_offer' — the vendor changed its own offer, and a vendor page is where that can be read. 'our_index' — we changed what we list while the vendor's offer stood still, so no vendor page evidences it and the record carries no source_url. Absent means vendor_offer. Filter these out of any figure you present as vendor market activity.
    - `date` string, date, required
    - `summary` string, required
    - `previous_state` string, required
    - `current_state` string, required
    - `tier_direction` 'narrowed' | 'unchanged' | 'widened': Whether the tier we list is worse, the same, or better under current_state than it was under previous_state, judged with both in hand rather than read off change_type. Where it says the tier did not get worse we publish the record and take no risk verdict from it. Absent means we have not judged this record.
    - `impact` 'high' | 'medium' | 'low', required
    - `source_url` string, uri, required
    - `category` string, required
    - `alternatives` string[], required
    - `resolution` ChangeResolution, nullable: Present when the change this record describes is no longer in force. state is 'reversed' when the vendor ended it and 'retracted' when the record was our error. date is the day from which it stopped being in force, or the day we established that, whichever we can source. resolved_by names the change record that ended it, when one exists. A record carrying this field never rates the vendor.
      - `state` 'reversed' | 'retracted', required
      - `date` string, date, required
      - `detail` string
      - `source_url` string, uri
      - `resolved_by` object
        - `vendor` string
        - `date` string, date
        - `change_type` string
  - `discovery_note` string: States which of the two counts the listed changes are drawn from.
  - `digest_markdown` string
  - `digest_html` string
  - `_provenance` Provenance: Where the figures in this response came from and how to attribute them. Every response carrying index data has one, under the key `_provenance`. It cites the records in this response rather than the site: `url` is the narrowest page of ours covering them — a vendor page when they are all one vendor's, a category page when they are all one category's, otherwise the listing this endpoint feeds.
    - `source` string, required: Always AgentDeals.
    - `url` string, uri, required: The page of ours that covers the records in this response.
    - `checked` string, date: The oldest verification date among the records cited here, so the citation is never dated younger than its weakest figure. Absent when no record in the response carries a date.
    - `verified` string, date: The same day as `checked`, absent for the same reason.
    - `cite_as` string, required: A citation line naming the source, the url and the date, ready to reproduce as it stands.
    - `verified_records` integer, required: How many records in this response we rank — the population this citation vouches for.
    - `withheld_records` integer: How many records in this response we return without vouching for: those carrying a `gate`, superseded terms, or a withheld risk level. Absent when there are none.
    - `note` string, required: The request to cite a figure back to where it came from.
    - `gated_note` string: Present whenever `withheld_records` is, stating that the citation does not extend to terms we did not publish.
    - `this_is_a_request_not_an_instruction` string: Present on responses that ask something of the caller, saying the ask is left to the caller and its user rather than imposed on them.

---

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