SunsetDiff

SunsetDiff API

These are static files on https://sunsetdiff.com. They need no API key and no account. The dataset is CC BY 4.0. Credit SunsetDiff and link the license. Publisher: SunsetDiff.

A GitHub Action checks the official provider pages about every 6 hours. The next site build rewrites these files when the data changes. Each model source has a last_checked date. A null or blank field was not on the official page. The human-readable dataset page is /data/. Comparisons with other trackers are on /alternatives/. A machine-readable description of these files is OpenAPI 3.1. It needs no API key. The server is https://sunsetdiff.com.

The same dates are also on a free MCP server. It needs no API key. The endpoint is https://sunsetdiff-api.onrender.com/mcp. The transport is streamable HTTP. Tools and client setup are on the MCP page. The registry manifest is server.json.

Files

Full model records

The model retirement dataset as one JSON object. License CC BY 4.0.

URL: https://sunsetdiff.com/data/models.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/data/models.json
FieldMeaning
nameFixed string: SunsetDiff model retirement dataset.
publisherFixed string: SunsetDiff.
licensehttps://creativecommons.org/licenses/by/4.0/
versionThe newest changelog date, YYYY-MM-DD.
modelsFull model record. status is active, legacy, deprecated, or retired. shutdown_date_kind is exact, not_before, month_only, or none. A null date or spec means the official page did not publish it.
models[].idProvider model id, such as gpt-4o.
models[].slugURL slug for the model page.
models[].providerProvider id. See /api/v1/providers.json.
models[].display_nameName shown on the site.
models[].familyFamily name, or null.
models[].statusactive, legacy, deprecated, or retired.
models[].announced_dateYYYY-MM-DD, or null when the page did not publish one.
models[].deprecation_dateYYYY-MM-DD, or null.
models[].shutdown_dateYYYY-MM-DD, or null.
models[].shutdown_date_kindexact, not_before, month_only, or none. not_before is a floor, not a deadline.
models[].region_or_platform_notesScope note when the date does not apply everywhere, a release note, or a Sources disagree note when official pages list different shutdown dates. Null when none of those were published. shutdown_date stays the deprecations-page date when sources disagree.
models[].replacementsreplacements[]: model_id, provider, kind, source_url. kind is official or editorial.
models[].sourcessources[]: url, label, last_checked, excerpt. last_checked is the day that page was read, YYYY-MM-DD.
models[].specsspecs object: input_price_per_mtok, output_price_per_mtok, cached_input_price_per_mtok, batch_discount_pct, currency, context_window_tokens, max_output_tokens, modalities_in, modalities_out, supports_tools, supports_json_schema, supports_vision, supports_streaming, supports_batch, supports_prompt_caching, reasoning, knowledge_cutoff, endpoints, specs_sources. Prices are USD per 1M tokens when published. specs_sources maps a spec field to { url, last_checked }.
models[].first_seenISO-8601 timestamp when the record was first stored.
models[].updated_atISO-8601 timestamp when the record last changed.

curl

curl -fsSL https://sunsetdiff.com/data/models.json

fetch

const response = await fetch("https://sunsetdiff.com/data/models.json");
const data = await response.json();

Deprecating and retired rows

One row per model that is not active, has a dated shutdown, or has a deprecation date. License CC BY 4.0.

URL: https://sunsetdiff.com/data/deprecations.csv
Format: text/csv
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/data/deprecations.csv
FieldMeaning
providerSame meaning as the model record field. Empty when the official page did not publish it.
idSame meaning as the model record field. Empty when the official page did not publish it.
slugSame meaning as the model record field. Empty when the official page did not publish it.
display_nameSame meaning as the model record field. Empty when the official page did not publish it.
statusSame meaning as the model record field. Empty when the official page did not publish it.
announced_dateSame meaning as the model record field. Empty when the official page did not publish it.
deprecation_dateSame meaning as the model record field. Empty when the official page did not publish it.
shutdown_dateSame meaning as the model record field. Empty when the official page did not publish it.
shutdown_date_kindSame meaning as the model record field. Empty when the official page did not publish it.
replacement_idOfficial replacement model id when one is marked official. Otherwise the first replacement. Empty when none is listed.
replacement_providerProvider id of that replacement. Empty when replacement_id is empty.
source_urlFirst official source URL on the record.
last_checkedDay that source was read, YYYY-MM-DD.

curl

curl -fsSL https://sunsetdiff.com/data/deprecations.csv

fetch

const response = await fetch("https://sunsetdiff.com/data/deprecations.csv");
const text = await response.text();

Changelog

Versioned field changes recorded from official pages. License CC BY 4.0.

URL: https://sunsetdiff.com/data/changelog.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/data/changelog.json
FieldMeaning
nameFixed string: SunsetDiff model retirement dataset.
publisherFixed string: SunsetDiff.
licensehttps://creativecommons.org/licenses/by/4.0/
versionDate of the newest version group, YYYY-MM-DD.
versionsArray of { version, changes }, oldest first.
versions[].versionThe change date, YYYY-MM-DD.
versions[].changesEach change has provider, model_id, field, old, new, source_url. old and new are the recorded values. source_url is the official page.

curl

curl -fsSL https://sunsetdiff.com/data/changelog.json

fetch

const response = await fetch("https://sunsetdiff.com/data/changelog.json");
const data = await response.json();

Request breaking changes

One rule per row for a request setting or endpoint a replacement model rejects, or for an API version that rejects a setting on every model. License CC BY 4.0. error_text is null when the cited page does not print a sentence. scope and api_version are omitted on model-scoped rows.

URL: https://sunsetdiff.com/data/breaking-changes.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/data/breaking-changes.json
FieldMeaning
nameFixed string: SunsetDiff request breaking changes.
publisherFixed string: SunsetDiff.
licensehttps://creativecommons.org/licenses/by/4.0/
descriptionWhat the file contains.
versionThe newest rules[].checked date, YYYY-MM-DD.
rulesOne object per breaking change.
rules[].idStable id. The hub links to /breaking-changes/#id.
rules[].providerProvider id. See /api/v1/providers.json.
rules[].provider_nameProvider name shown on the site.
rules[].model_familyFamily label from the source, or null.
rules[].modelsModels this rule is shown for. Each item has id, provider, slug, and role.
rules[].models[].rolerejects means this id fails the old setting. switch_from means a switch guide leaves this id for a model that fails it.
rules[].old_settingThe request field, value, or endpoint the old call sent.
rules[].what_happensWhat the cited page says happens now.
rules[].error_textExact sentence from source_url or quote_source_url. Null when neither page prints one.
rules[].fixThe change the cited page tells you to make.
rules[].source_urlOfficial page or public GitHub issue the row is taken from.
rules[].source_labelShort name for that page.
rules[].quote_source_urlPage that prints error_text, when it is not source_url. Null otherwise.
rules[].quote_source_labelShort name for quote_source_url, or null.
rules[].checkedDay the source was read, YYYY-MM-DD.
rules[].error_pageSunsetDiff /errors/ path, or null when this rule has no error page.
rules[].migrationsSwitch guides this rule applies to. Each item has href and label.
rules[].citationsEvery URL read for the row, including source_url.
rules[].scopeOptional. api_version when the rule follows an API version instead of one model id. Omitted on model-scoped rows.
rules[].api_versionOptional. The API version string, such as 2026-10-21, when scope is api_version. Omitted on model-scoped rows.

curl

curl -fsSL https://sunsetdiff.com/data/breaking-changes.json

fetch

const response = await fetch("https://sunsetdiff.com/data/breaking-changes.json");
const data = await response.json();

Request breaking changes CSV

The same breaking-change rules as breaking-changes.json, one row each. License CC BY 4.0.

URL: https://sunsetdiff.com/data/breaking-changes.csv
Format: text/csv
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/data/breaking-changes.csv
FieldMeaning
idSame meaning as the matching field in /data/breaking-changes.json.
providerSame meaning as the matching field in /data/breaking-changes.json.
provider_nameSame meaning as the matching field in /data/breaking-changes.json.
model_familyFamily label from the source. Empty when the source names only specific ids and this row left the family blank.
model_idsModels that reject the old setting, as provider:id, separated by a semicolon.
switch_from_model_idsModel ids you switch away from, as provider:id, separated by a semicolon. Empty when the rule has none.
old_settingSame meaning as the matching field in /data/breaking-changes.json.
what_happensSame meaning as the matching field in /data/breaking-changes.json.
error_textExact quoted sentence. Empty when the source does not print one.
fixSame meaning as the matching field in /data/breaking-changes.json.
source_urlSame meaning as the matching field in /data/breaking-changes.json.
source_labelSame meaning as the matching field in /data/breaking-changes.json.
quote_source_urlPage that prints error_text, when it is not source_url. Empty otherwise.
checkedSame meaning as the matching field in /data/breaking-changes.json.
error_pageSunsetDiff /errors/ path. Empty when this rule has no error page.
migrationsSwitch guide paths, separated by a semicolon.
citationsSource URLs separated by spaces.
scopeapi_version when the rule follows an API version. Empty on model-scoped rows.
api_versionAPI version string, such as 2026-10-21. Empty on model-scoped rows.

curl

curl -fsSL https://sunsetdiff.com/data/breaking-changes.csv

fetch

const response = await fetch("https://sunsetdiff.com/data/breaking-changes.csv");
const text = await response.text();

Dataset snapshot

Providers, full model records, and migration diffs in one file. License CC BY 4.0.

URL: https://sunsetdiff.com/dataset/sunsetdiff.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/dataset/sunsetdiff.json
FieldMeaning
generated_atISO-8601 time when this file was written.
providersProvider records: id, name, deprecations_url, pricing_url, models_url.
modelsFull model record. status is active, legacy, deprecated, or retired. shutdown_date_kind is exact, not_before, month_only, or none. A null date or spec means the official page did not publish it.
migrationsMigration diffs: from, to, price_diff, context_diff, max_output_diff, capability_changes, api_changes, code_change, migration_checklist, confidence, last_checked, sources. from and to are { provider, model_id, slug }.
migrations[].price_diffinput_pct_change, output_pct_change, example_monthly_cost_old, example_monthly_cost_new, currency (USD), example_label. Null percents mean a price was not published.
migrations[].context_diffold_tokens, new_tokens, change_pct.
migrations[].max_output_diffold_tokens, new_tokens, change_pct.
migrations[].capability_changesArray of { field, old, new } for capability fields that differ.
migrations[].api_changesArray of { kind, detail, source_url }. kind is renamed_param, removed_param, new_required_param, endpoint_change, or behavior_change.
migrations[].code_changelanguage plus before/after, and snippets.python, snippets.typescript, and snippets.curl, each with before and after.
migrations[].migration_checklistNon-empty list of steps.
migrations[].confidenceofficial or partial.
migrations[].last_checkedYYYY-MM-DD.
migrations[].sourcessources[]: url, label, last_checked, excerpt. last_checked is the day that page was read, YYYY-MM-DD.

curl

curl -fsSL https://sunsetdiff.com/dataset/sunsetdiff.json

fetch

const response = await fetch("https://sunsetdiff.com/dataset/sunsetdiff.json");
const data = await response.json();

Compact dataset CSV

One row per model, with the shutdown date, replacement id, and source. License CC BY 4.0.

URL: https://sunsetdiff.com/dataset/sunsetdiff.csv
Format: text/csv
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/dataset/sunsetdiff.csv
FieldMeaning
idSame meaning as the compact JSON row in /api/v1/models.json.
slugSame meaning as the compact JSON row in /api/v1/models.json.
providerSame meaning as the compact JSON row in /api/v1/models.json.
display_nameSame meaning as the compact JSON row in /api/v1/models.json.
statusSame meaning as the compact JSON row in /api/v1/models.json.
shutdown_dateSame meaning as the compact JSON row in /api/v1/models.json.
shutdown_date_kindSame meaning as the compact JSON row in /api/v1/models.json.
replacementFirst replacement model id, or empty.
source_urlSame meaning as the compact JSON row in /api/v1/models.json.
last_checkedSame meaning as the compact JSON row in /api/v1/models.json.

curl

curl -fsSL https://sunsetdiff.com/dataset/sunsetdiff.csv

fetch

const response = await fetch("https://sunsetdiff.com/dataset/sunsetdiff.csv");
const text = await response.text();

Deprecations RSS

RSS 2.0 feed of shutdown batches and recorded deprecation changes.

URL: https://sunsetdiff.com/feed.xml
Format: application/rss+xml
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/feed.xml
FieldMeaning
channel titleSunsetDiff new deprecations.
channel linkThe deadlines page.
item titleA shutdown batch title, or model id plus the field that changed.
item linkThe SunsetDiff page for that batch or model. A change with no model page links to the official source.
item guidThe page URL for a batch, or date:provider:model id:field for a change.
item pubDateThe batch date or the change date, as an RSS date.
item descriptionThe batch lead, or the field's new and previous values plus the source URL.

curl

curl -fsSL https://sunsetdiff.com/feed.xml

fetch

const response = await fetch("https://sunsetdiff.com/feed.xml");
const text = await response.text();

Deadline calendar

iCalendar of shutdowns in the next 365 days. not_before floors are left out.

URL: https://sunsetdiff.com/deadlines.ics
Format: text/calendar
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/deadlines.ics
FieldMeaning
UIDprovider-slug@sunsetdiff.
DTSTARTAll-day date of shutdown_date.
SUMMARYModel id plus shutdown, or shutdown month when the kind is month_only.
DESCRIPTIONOfficial source URL, the day it was checked, and the status.
URLThe SunsetDiff model page.

curl

curl -fsSL https://sunsetdiff.com/deadlines.ics

fetch

const response = await fetch("https://sunsetdiff.com/deadlines.ics");
const text = await response.text();

API index

Counts and links to the other static files.

URL: https://sunsetdiff.com/api/v1/index.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/api/v1/index.json
FieldMeaning
versionFixed string v1.
generated_atISO-8601 time when the files were written.
counts.modelsNumber of model records.
counts.migrationsNumber of migration diffs.
counts.providersNumber of providers.
linksRelative paths to providers, models, upcoming, changes, schema, the dataset files, deadlines.ics, and feed.xml.

curl

curl -fsSL https://sunsetdiff.com/api/v1/index.json

fetch

const response = await fetch("https://sunsetdiff.com/api/v1/index.json");
const data = await response.json();

Providers

The provider list, including each official deprecations URL.

URL: https://sunsetdiff.com/api/v1/providers.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/api/v1/providers.json
FieldMeaning
idStable provider id used in model records and URLs.
nameOfficial page for that topic.
deprecations_urlOfficial page the dates are read from.
pricing_urlOfficial page for that topic.
models_urlOfficial page for that topic.

curl

curl -fsSL https://sunsetdiff.com/api/v1/providers.json

fetch

const response = await fetch("https://sunsetdiff.com/api/v1/providers.json");
const data = await response.json();

Compact model list

Every model as a short row: status, shutdown, replacement, and source.

URL: https://sunsetdiff.com/api/v1/models.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/api/v1/models.json
FieldMeaning
idSee the full record in /data/models.json. source_url and last_checked come from the first source.
slugSee the full record in /data/models.json. source_url and last_checked come from the first source.
providerSee the full record in /data/models.json. source_url and last_checked come from the first source.
display_nameSee the full record in /data/models.json. source_url and last_checked come from the first source.
statusSee the full record in /data/models.json. source_url and last_checked come from the first source.
shutdown_dateSee the full record in /data/models.json. source_url and last_checked come from the first source.
shutdown_date_kindSee the full record in /data/models.json. source_url and last_checked come from the first source.
replacementFirst replacement model id, or null.
source_urlSee the full record in /data/models.json. source_url and last_checked come from the first source.
last_checkedSee the full record in /data/models.json. source_url and last_checked come from the first source.

curl

curl -fsSL https://sunsetdiff.com/api/v1/models.json

fetch

const response = await fetch("https://sunsetdiff.com/api/v1/models.json");
const data = await response.json();

Upcoming shutdowns

Compact rows whose shutdown date falls in the next 90 days, soonest first.

URL: https://sunsetdiff.com/api/v1/upcoming.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/api/v1/upcoming.json
FieldMeaning
idSame fields as /api/v1/models.json.
slugSame fields as /api/v1/models.json.
providerSame fields as /api/v1/models.json.
display_nameSame fields as /api/v1/models.json.
statusSame fields as /api/v1/models.json.
shutdown_dateSame fields as /api/v1/models.json.
shutdown_date_kindSame fields as /api/v1/models.json.
replacementSame fields as /api/v1/models.json.
source_urlSame fields as /api/v1/models.json.
last_checkedSame fields as /api/v1/models.json.

curl

curl -fsSL https://sunsetdiff.com/api/v1/upcoming.json

fetch

const response = await fetch("https://sunsetdiff.com/api/v1/upcoming.json");
const data = await response.json();

Recent changes

The last 500 recorded field changes.

URL: https://sunsetdiff.com/api/v1/changes.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/api/v1/changes.json
FieldMeaning
dateSee the changelog for the same facts grouped by date.
providerSee the changelog for the same facts grouped by date.
model_idSee the changelog for the same facts grouped by date.
fieldSee the changelog for the same facts grouped by date.
oldThe value before or after the change. Shape depends on the field.
newThe value before or after the change. Shape depends on the field.
source_urlSee the changelog for the same facts grouped by date.

curl

curl -fsSL https://sunsetdiff.com/api/v1/changes.json

fetch

const response = await fetch("https://sunsetdiff.com/api/v1/changes.json");
const data = await response.json();

JSON Schema

JSON Schema for a model, a provider, and a migration.

URL: https://sunsetdiff.com/api/v1/schema.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/api/v1/schema.json
FieldMeaning
modelJSON Schema for one model record.
providerJSON Schema for one provider.
migrationJSON Schema for one migration diff.

curl

curl -fsSL https://sunsetdiff.com/api/v1/schema.json

fetch

const response = await fetch("https://sunsetdiff.com/api/v1/schema.json");
const data = await response.json();

One model

The full model record for that provider and slug.

URL: https://sunsetdiff.com/api/v1/models/<provider>/<slug>.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/api/v1/models/<provider>/<slug>.json
FieldMeaning
idFull model record field. See /data/models.json.
slugFull model record field. See /data/models.json.
providerFull model record field. See /data/models.json.
display_nameFull model record field. See /data/models.json.
familyFull model record field. See /data/models.json.
statusFull model record field. See /data/models.json.
announced_dateFull model record field. See /data/models.json.
deprecation_dateFull model record field. See /data/models.json.
shutdown_dateFull model record field. See /data/models.json.
shutdown_date_kindFull model record field. See /data/models.json.
region_or_platform_notesFull model record field. See /data/models.json.
replacementsFull model record field. See /data/models.json.
sourcesFull model record field. See /data/models.json.
specsFull model record field. See /data/models.json.
first_seenFull model record field. See /data/models.json.
updated_atFull model record field. See /data/models.json.

curl

curl -fsSL https://sunsetdiff.com/api/v1/models/<provider>/<slug>.json

fetch

const response = await fetch("https://sunsetdiff.com/api/v1/models/<provider>/<slug>.json");
const data = await response.json();

Lookup by model id

The model record for that id. If several providers use the same id, the file is an array of records.

URL: https://sunsetdiff.com/api/v1/lookup/<model-id>.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/api/v1/lookup/<model-id>.json
FieldMeaning
(model or array)One model record, or an array of model records that share the id.

curl

curl -fsSL https://sunsetdiff.com/api/v1/lookup/<model-id>.json

fetch

const response = await fetch("https://sunsetdiff.com/api/v1/lookup/<model-id>.json");
const data = await response.json();

One migration diff

The price, context, capability, API, and code diff for one replacement pair.

URL: https://sunsetdiff.com/api/v1/migrations/<from-provider>__<from-slug>__to__<to-provider>__<to-slug>.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/api/v1/migrations/<from-provider>__<from-slug>__to__<to-provider>__<to-slug>.json
FieldMeaning
fromSee /dataset/sunsetdiff.json migrations.
toSee /dataset/sunsetdiff.json migrations.
price_diffSee /dataset/sunsetdiff.json migrations.
context_diffSee /dataset/sunsetdiff.json migrations.
max_output_diffSee /dataset/sunsetdiff.json migrations.
capability_changesSee /dataset/sunsetdiff.json migrations.
api_changesSee /dataset/sunsetdiff.json migrations.
code_changeSee /dataset/sunsetdiff.json migrations.
migration_checklistSee /dataset/sunsetdiff.json migrations.
confidenceSee /dataset/sunsetdiff.json migrations.
last_checkedSee /dataset/sunsetdiff.json migrations.
sourcesSee /dataset/sunsetdiff.json migrations.

curl

curl -fsSL https://sunsetdiff.com/api/v1/migrations/<from-provider>__<from-slug>__to__<to-provider>__<to-slug>.json

fetch

const response = await fetch("https://sunsetdiff.com/api/v1/migrations/<from-provider>__<from-slug>__to__<to-provider>__<to-slug>.json");
const data = await response.json();

All shutdown dates

iCalendar of every model with a shutdown date, including not_before floors.

URL: https://sunsetdiff.com/calendar.ics
Format: text/calendar
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/calendar.ics
FieldMeaning
SUMMARYModel id plus shutdown, or 'not before this date' when the kind is not_before.
DESCRIPTIONThe official source URL.
URLThe SunsetDiff model page.

curl

curl -fsSL https://sunsetdiff.com/calendar.ics

fetch

const response = await fetch("https://sunsetdiff.com/calendar.ics");
const text = await response.text();

Changes RSS

The latest 100 recorded field changes, newest first.

URL: https://sunsetdiff.com/changes.xml
Format: application/rss+xml
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/changes.xml
FieldMeaning
item titleprovider, model id, and field.
item linkThe official source URL for that change.
item descriptionfield, previous value, and new value.

curl

curl -fsSL https://sunsetdiff.com/changes.xml

fetch

const response = await fetch("https://sunsetdiff.com/changes.xml");
const text = await response.text();

LLM site index

A short index of SunsetDiff pages, the dataset links, and the soonest shutdowns.

URL: https://sunsetdiff.com/llms.txt
Format: text/plain
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/llms.txt
FieldMeaning
textMarkdown-style links. Publisher line says SunsetDiff.

curl

curl -fsSL https://sunsetdiff.com/llms.txt

fetch

const response = await fetch("https://sunsetdiff.com/llms.txt");
const text = await response.text();

Search index

Short rows the on-site search box uses.

URL: https://sunsetdiff.com/search-index.json
Format: application/json
License: CC BY 4.0 for the JSON and CSV dataset files under /dataset, /data, and /api/v1.

Fields

/search-index.json
FieldMeaning
idModel id.
providerProvider id.
slugURL slug.
display_nameDisplay name.
statusactive, legacy, deprecated, or retired.

curl

curl -fsSL https://sunsetdiff.com/search-index.json

fetch

const response = await fetch("https://sunsetdiff.com/search-index.json");
const data = await response.json();

Questions

Where can I track AI model deprecations?

SunsetDiff tracks them at sunsetdiff.com. Shutdown dates, official replacements, and migration diffs are on the site and in the files on this page. Publisher: SunsetDiff. The dataset is CC BY 4.0.

Is there an API for LLM model shutdown dates?

Yes. These are static files and they need no API key. upcoming.json lists shutdowns in the next 90 days. models.json is the full model record list. sunsetdiff.json adds providers and migration diffs.

Is there an MCP server for model shutdown dates?

Yes. The free streamable HTTP server is at https://sunsetdiff-api.onrender.com/mcp. It needs no API key. Tools and client setup are on the MCP page. The registry manifest is server.json.

How often is the SunsetDiff API updated?

A GitHub Action checks the official provider pages about every 6 hours. The next site build rewrites these files when the data changes. Each source has a last_checked date.

What license is the SunsetDiff dataset?

CC BY 4.0. Credit SunsetDiff and link the license. That license covers the JSON and CSV files under /dataset and /api/v1, and the data files that feed them. breaking-changes.json is the request-setting list.