---
title: "Future-dated changes and stated deadlines, with a countdown"
method: GET
path: "/api/deadlines"
---

# Future-dated changes and stated deadlines, with a countdown

`GET /api/deadlines`

## Request

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

Two kinds of entry, soonest first, each with the number of days remaining. A change record: every tracked change whose date is still ahead of today, returned as the record. A stated deadline: a date later than today that a sentence names in a listing's description or conditions, or in the summary of a change record dated today or earlier that is still in force, where that text also uses a deadline word such as shut down, retire, discontinue, deprecate, until or through. A stated deadline carries that sentence as its summary, and a stated_in field, which a change record does not. There is at most one stated deadline per vendor and date, none within a day of a future-dated change record of the same vendor, and where a vendor has stated deadlines on two consecutive days only the later is returned. Use it to find the deadlines a stack is about to run into rather than the ones it has already passed.

## Query parameters

- `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'

## Response `200`

Future-dated changes and stated deadlines ordered by date

- object
  - `deadlines` union[]
    - union
      - object
        - `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
        - `countdown_days` integer: Whole days from today, UTC, to the date on the record.
      - object
        - `vendor` string, required
        - `category` string, required
        - `date` string, date, required: The date the sentence names.
        - `summary` string, required: The sentence that names the date, as our listing or change record writes it.
        - `source_url` string, uri, nullable, required: Where that sentence's text comes from: the link of the listing condition that states it (the listing's own URL where the condition has none), the listing's URL for its description, or the source_url of the change record whose summary states it. Null when that text has none.
        - `stated_in` 'listing' | 'record', required: listing: a listing's description or one of its conditions states the date. record: the summary of a change record dated today or earlier states it.
        - `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': Present only when stated_in is record: the type of the change record whose summary states the date. Absent when stated_in is listing.
        - `record_date` string, date: Present only when stated_in is record: the date of the change record whose summary states the date.
        - `countdown_days` integer, required: Whole days from today, UTC, to the date the sentence names.
  - `count` integer
  - `_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)
