← Developer docs

The model release API · v1

Catch the next
model release.

A source-backed feed for your apps, agents, and alerts.
No sign-up. No API key. Just one request.

AnthropicOpenAIGooglexAIMistralDeepSeekCohereQwen

01 / Start here

One URL. Recent releases.

Open JSON ↗
GEThttps://www.aidatahub.io/api/latest-models

Returns official releases dated today or in the previous six UTC days. No key, install, or pagination. Select a provider to add a real server-side query filter.

Loading recent releases…

const response = await fetch('https://www.aidatahub.io/api/latest-models');
if (!response.ok) throw new Error(`Latest models: HTTP ${response.status}`);
const { models, status } = await response.json();
if (status !== 'ok') console.warn('A source check is delayed.');
console.log(models);

These examples call /api/latest-models directly. ?provider=anthropic and the other provider IDs in the selector filter at the API. Provider IDs are case-insensitive. Unknown filters return HTTP 400.

See the exact JSON response
Waiting for the feed.

02 / Follow what’s new

Alerts without the noise.

For a no-code option, add our RSS feed to your reader or an RSS-triggered automation. It contains newly detected official releases, excluding initial history and catalog listings.

For reliable alerts, use the full history feed and download the tiny JavaScript client. Poll every 15 minutes. Save the first set of IDs without sending alerts. On later checks, process unseen official releases whose baseline is false.

import { FEED_URL, findNewReleases } from './model-releases-client-v1.mjs';

// Your app supplies durable storage and notification delivery.
const savedIds = await loadSeenIds(); // null on first run; otherwise string[]
const response = await fetch(FEED_URL, { signal: AbortSignal.timeout(15000) });
if (!response.ok) throw new Error('Feed request failed');
const { releases, seenIds } = findNewReleases(await response.json(), savedIds);
for (const release of releases) {
  await sendAlert(release); // deduplicate by release.id at your destination
}
await saveSeenIds(seenIds); // save only AFTER successful delivery

This integration outline requires your own loadSeenIds, sendAlert, and saveSeenIds functions. Persist IDs across restarts. A failed delivery must not advance the checkpoint; retries can repeat earlier deliveries, so the destination should also deduplicate by ID. A date cutoff or limited result set can miss delayed releases.

Send the last response’s ETag as If-None-Match on later requests. A 304 has no body: keep your previous data. On errors, retain your checkpoint and retry with backoff. The tiny client uses normal HTTP caching; custom conditional requests belong in your integration.

03 / The contract

Small API. Clear fields.

JSON Schema ↗

The simple endpoint returns generatedAt, from, through, provider, status, count, and models. An empty models array means no recognized releases in that period. status: "degraded" means a source check failed; inspect the full feed for details. Check that generatedAt is recent before treating an empty result as complete.

Full history feed

Use /api/model-releases.json for older releases, OpenRouter listings, source health, and alert IDs. It returns the entire archive; query parameters do not filter it.

The response has schemaVersion: 1, generatedAt, initializedAt, pollIntervalSeconds, coverage, sources, and events. Optional links point to these docs, the schema, client, and RSS. Unknown additive fields should be ignored.

Events are ordered by release or listing date, newest first. They are not ordered by detection time. The feed contains the collected archive; it does not paginate.

Event fields
FieldMeaning
idStable event identifier. Deduplicate alerts with this value.
typerelease = official announcement; listing = OpenRouter catalog entry.
provider / modelId / nameProvider, source model identifier, and display name.
releasedAt / listedAtProvider release date or catalog listing date (YYYY-MM-DD); either can be null.
publishedAtWhen this event first entered our feed. Use this for arrival-time filtering.
firstSeenAt / updatedAtFirst detection and most recent revision, as UTC timestamps.
baselinetrue for history imported on a source’s first successful scan. Do not alert on it.
revisionIncreases when an existing event changes. Corrections keep the same id.
availabilitypreview, limited, see-source, or openrouter. Check the source for access.
sourceId / sourceUrl / evidenceSource identity, supporting link, and excerpt.
summary / modelKeyShort description and internal normalized model identity.

JavaScript client options

getModelReleases({ provider, type, limit, since, signal }) fetches the feed and returns events, count, total, generatedAt, sources, and stale. HTTP errors and unsupported feeds throw. selectReleases(feed, options) filters an already loaded feed.

  • provider: exact name, case-insensitive. Omit for all.
  • type: release (default), listing, or all.
  • limit: integer 1–1,000; default 10. total counts all matches before this limit.
  • since: exclusive cutoff on publishedAt; ISO date or timestamp with timezone. Omit for all dates.
  • signal: optional AbortSignal. Default timeout: 15 seconds.

04 / Know the limits

Evidence, with a heartbeat.

What we cover

Dated official release notes and announcements from Anthropic, OpenAI, Google, xAI, Mistral, DeepSeek, Cohere, Qwen, plus a separate OpenRouter listing stream. This is not every model release on the internet. A listing date is not a launch date; preview and restricted-access models are included.

When data arrives

Source checks run every 15 minutes. Source delays, outages, and format changes can delay or miss a release. The CDN caches the historical feed for up to 60 seconds; the simple endpoint also uses cached files. There is no realtime or uptime guarantee.

When a source fails

Collected history is preserved. Inspect each source’s status, lastSuccessAt, lastAttemptAt, and error. The client marks data stale if a source fails or a successful check or feed timestamp is at least an hour old. Silence is not proof of no releases.

Free to read

No authentication or per-user quota. Poll no more often than every 15 minutes and share one cached response across your users. Browser requests are supported with CORS. There is no hosted webhook or email service; deliver alerts through your own workflow.

Provider marks identify the source organizations. AIDataHub is independent and is not endorsed by these providers.