Use the changelog feed when you want incremental updates instead of repeatedly crawling the catalog.
Event types
The feed currently includes:
- newly approved products
- claim-review status updates
- published weekly issue snapshots
Sync guidance
Use the latest returned timestamp as your next checkpoint and poll conservatively. This feed is intended for agent sync workflows that need durable event history without scraping HTML pages.
/api/v1/changelogUse this endpoint as the subscription feed for agents that need to react to catalog changes without reindexing the whole directory.
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 feed includes approvals, claim-review changes, and published weekly issue snapshots.
- Use the latest_timestamp value as the next since cursor when polling.