Skip to main content

Changelog

Events: time zones from the venue​

November 1, 2026.

  • Event times now carry the venue's time zone. When a source lists a real region zone (for example America/New_York) we keep it; otherwise we use the zone of the venue's location. when.timezone is therefore present on more events. A fixed label from the source, such as EST, stays when the venue cannot be placed. when.timezone is still omitted when an event has none of these. The clock of such a floating event is what its source gave, which for a Facebook event without a location is UTC.
  • An event whose zone is newly known has its instants corrected once, at its next update, and is announced with one event.item.updated webhook. Stored events are not re-zoned in bulk.
  • Facebook event times are now converted into the venue's zone. The instants do not change; the events gain a zone.
  • A Facebook event mapped from now on that runs 24 hours or more and ends on a later day is one ongoing event from its first day's start to its last day's end, with or without a location.
  • An end before the start now falls on the next day, so an overnight event is one entry that ends the next morning. An end equal to the start means no end. A stored event corrects only when its times next change or it regenerates.

Events: every image we found​

October 31, 2026.

  • Event items now carry up to six images per event from every image we found, not only the official ones. An image from a curator, a media outlet or a site we could not identify is served with usage: "reference_only": it is there for reference, so credit its source and do not republish it as your own.
  • usage has a new value, reference_only. If your client validates usage against a fixed list, add it. usage tells you what you may do with each image: cover_eligible (an official image, may be the event image), display_with_attribution (show it with its source) or reference_only. Official images come first, and the cover is a reference_only image only when no official image shows the event.
  • Existing events gain these images only when we process them again; there is no one-off update of every event.
  • Every image is still served only as a signed, expiring link (url, expiresAt), with its source.

Feeds: how a feed's status was set​

October 30, 2026.

  • Event feed create and update (POST /feeds/events, PATCH /feeds/events/{id}) no longer take enabledSource or enabledReason. Values you send are ignored; responses still carry both.
  • Enabling or disabling a news feed through PATCH /feeds/news/{id} now records enabledSource: "override" with enabledReason "Enabled through the API" or "Disabled through the API", as it does for event feeds.

Feeds: enabling, catch-up and news feed responses​

October 2026.

  • Event feeds created through POST /feeds/events start disabled, and enabled: true on create is a 422. Add an include filter, then PATCH the feed with enabled: true.
  • Enabling a feed, or adding or enabling a source on an enabled feed, brings in the last 14 days from that source once.
  • News feed responses carry organizationId, enabled, enabledSource and enabledReason, and no longer carry newsFeedSource.

Event and news feeds: set up your feeds through the API​

October 2026. See Feed Configuration.

You can now decide what your event and news feeds carry, and add their websites, through the API, with no request to our team.

  • Processors (/processors): our built-ins (completeness, event labels, event category, cover, official source, price, news content type) and your own, from templates: a question of your own (custom), an area (area_match, area_relevance) or a feed's relevance. A processor records answers; it never includes or excludes anything.
  • Filters (/feeds/{type}/{id}/filters): include and exclude rules on a feed, on processor outputs. An item is in the feed when no exclude filter matches and at least one include filter does, so your own include widens the feed. The safety floor always applies and is not listed.
  • Opt-in filters and sets (/opt-in-filters, /opt-in-filter-sets, /feeds/{type}/{id}/filter-sets/{setKey}): our ready-made filters, which you add or remove but cannot edit, and the Community events, Standard news and Creator social sets. See Opt-in filters.
  • Areas: places by name, resolved when you write them (422 AREA_PLACES_UNRESOLVED with candidates when a name is not exactly one place), place ids that round-trip, and circles; an area you read can be sent back unchanged. See Areas.
  • Sources (/feeds/{type}/{id}/sources): one source shape for event and news feeds. You add websites with { "type": "site", "url": … } (the whole domain); you can list, enable, disable and remove every source. The earlier bodies (sourceType with sourceId, domain, url or username) are gone; other source types are a 422 SOURCE_TYPE_NOT_ALLOWED, and our team adds them on request. A sourceId of another feed is now a 404.
  • Limits: requests that search places (POST and PATCH /processors with a place given by name, or by an id none of your areas holds) are limited to 30 a minute per organization, and site adds to your event and news feeds to 30 a minute per organization together. Over a limit the request is a 429 RATE_LIMITED with a Retry-After header. See Areas and Sources.
  • New event feeds start with the completeness opt-in filter.
  • Every change to filters and processors applies going forward only: to new items, and to items already in a feed when they next change.

News feeds: a new item shape​

October 2026. See The item for every field.

The news feed item now says who published it, which places it is about, and carries images that we host and that keep working.

  • New fields: addedToFeedAt, publisher, author, original, about and media.
  • Gone: imageUrl, createdAt, source, the include parameter and the /v0/feeds/news endpoint. There is no replacement endpoint: /feeds/news/{feedId}/items is the one endpoint.
  • updatedAt now moves only when a change is announced by a webhook.
  • New list filters: addedSince, addedUntil, updatedSince, publishedSince, publishedUntil, hasCover and orderBy. since and until return 400; use addedSince and addedUntil.
  • Images are moderated, hosted by us and available for 30 days after the item enters the feed. A feed can change this with config.media.retentionDaysAfterAdded (1 to 365).
  • news.item.updated changedFields are now title, description, url, publishedAt, publisher, author, original, about and media. image is gone. Webhook payloads carry ids only, as before.

News feeds: news.item.updated and news.item.removed​

Rolling out from October 25, 2026.

News feeds now decide which articles they carry the same way event feeds do, and that adds two webhooks to news feeds.

If your destination is subscribed to news.*, news.item.* or *, you will start to receive:

  • news.item.updated when what you see in a feed item changes: its title, description, link, publication time or image. An article the publisher edits now updates the same item instead of arriving as a new one.
  • news.item.removed when an article leaves a feed because it no longer passes the feed's filters or the safety floor excludes it, and when a feed is deleted, for each article you were sent news.item.added for (a deletion's removals arrive about 10 to 30 minutes after it). Its data.id is the feed item id you received in news.item.added: match the removal on it.

If your destination subscribes to news.item.added only, nothing changes for you. Articles you already received are not announced again. You never receive a removal for an article you were not sent news.item.added for.

Before the rollout, make sure your handler accepts these two types (or answers 2xx and ignores them), and fetch the item again on every news.item.updated. See News feed changes.

Also changing for news feeds:

  • Every article is labelled with 14 content types, and our team sets up each feed's filters on them. See Which Articles a Feed Carries.
  • A safety floor on the article's text applies to every news feed. The config.contentModeration setting is gone, and the API refuses it with 400.
  • Enabling a news feed through PATCH needs at least one include filter, and is refused with 422 without one.
  • A feed's area counts only places inside it. A statewide or national story reaches a local feed only when our team has set the feed up to judge whether the story is about the region.