Use the changelog to inspect recent changes without scraping catalog pages. It is built from currently approved products and the published weekly issue archive; it is not a durable log of every historical change.
Item types
product_approved: the recorded approval date of a currently approved listingclaim_review_updated: the currently recorded claim-review status and dateweekly_issue_published: a published weekly issue snapshot
Earlier claim revisions, removals, and rejected submissions are not included.
Filtering and limits
since accepts an ISO-8601 timestamp and includes items strictly newer than that
value. Results are sorted newest first. limit defaults to 50 and caps at 100.
total is the number of returned items, not the total number of matching changes.
latest_timestamp is the newest timestamp in the returned items, or null when
there are no results.
Synchronization guidance
Store item IDs to deduplicate overlapping polls. If total equals limit, the
response may be truncated. Advancing since directly to latest_timestamp in
that case can skip older unseen items. The endpoint has no pagination cursor to
recover those omitted items.
Reconcile periodically with the paginated products endpoint
and the weekly issue archive. Treat the changelog as a recent
change signal, rather than a complete source for lossless synchronization.
/api/v1/changelogPoll this capped snapshot for recent approvals, current claim-review records, and published weekly issues. Reconcile the catalog separately when complete synchronization is required.
Auth
No API keys. No account auth. Public JSON endpoints only.
Review model
Read-only endpoint over approved catalog and issue archive data.
Cache
Dynamic server response.
Example request
curl "https://www.madewithstack.com/api/v1/changelog?since=2026-03-01T00:00:00.000Z&limit=25"
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
since | ISO-8601 timestamp | No | Return only changes strictly newer than this timestamp. |
limit | number | No | Maximum number of changelog items to return. Defaults to 50 and caps at 100. |
Responses
Success
Returns a time-ordered change feed suitable for polling.
{
"items": [
{
"id": "string",
"type": "product_approved",
"timestamp": "string",
"product": {
"slug": "agentflow",
"name": "AgentFlow",
"listing_url": "https://www.madewithstack.com/product/agentflow",
"website_url": "https://agentflow.dev"
},
"approved_at": "2026-03-11T09:15:00.000Z"
}
],
"total": 1,
"limit": 50,
"since": null,
"latest_timestamp": "2026-03-11T09:15:00.000Z"
}Error codes
| Code | Status | Meaning |
|---|---|---|
VALIDATION_ERROR | 400 | Missing, malformed, or unsupported request data. |
INTERNAL_ERROR | 500 | Unexpected server error. Retry later. |
Operational notes
- Call this on a schedule, optionally with a since timestamp, to track approvals, verification changes, and weekly issue publications.
- This snapshot includes approvals and the latest recorded claim reviews of currently approved products, plus published weekly issues. It does not preserve every revision or record removals.
- latest_timestamp is the newest returned timestamp, not a pagination cursor. If total equals limit, results may be truncated; advancing since can skip unseen items.